Quick start
From console setup to a first site served over HTTP and HTTPS by an edge node.
Steps
- Complete the setup wizard: create the only account and the default cluster.
- Enroll a node: generate the install command in the console and run it on the node host; once enrolled, the node connects to the node channel over mTLS.
- Create a site: enter its domains, origin, and cache setting; the cluster publishes a new configuration revision.
- Configure DNS: point the site's domains at the edge addresses or the CNAME target listed on the site's Domains tab in the authoritative DNS and wait for the records to take effect.
- Enable HTTPS: click Enable HTTPS on the site's HTTPS tab; HTTPS turns on once the certificate is issued, see HTTPS and certificates.
- Verify: every item of the Launch check on the site's Overview tab passes; check origin fetch and caching with curl.
Node installation, DNS propagation, and certificate issuance each take time that depends on the network and the providers.
Prerequisites
| Item | Requirement |
|---|---|
| Console | Deployed; browsers reach EDGEWEIR_PUBLIC_URL. See Deployment overview |
| Node host | Linux (systemd), amd64 / arm64; reaches EDGEWEIR_PUBLIC_URL and the node channel (TCP 8443 by default); an account with sudo |
| Node inbound ports | TCP 80; TCP 443 once HTTPS is enabled |
| Domain | Its authoritative DNS records can be edited |
| Origin | Reachable from the node; its address is outside special-purpose ranges (private, loopback, and so on) or covered by the origin allow list |
1. Complete the setup wizard
-
Read the setup token from the console log. Docker Compose:
Console host docker compose logs console | grep setupTokenThe log line is JSON: the
setupTokenfield holds the token (prefixews_) and theurlfield the setup page. An uninitialized console prints the same token at every start. For log locations of other deployment methods, see Docker Compose and BaoTa Panel and aaPanel. -
Open
EDGEWEIR_PUBLIC_URLin a browser. An uninitialized console redirects to/setup(Create your account). -
Fill in the form and click Finish.
Field Description Setup token The token from step 1 Name 1–100 characters Email Sign-in email Password 12–128 characters -
Verify: the console signs in and opens Clusters & nodes with the Add node dialog of the cluster
default(the next step); on System settings, the System card shows Setup token as Used {time}.
Objects created by setup:
| Object | Value |
|---|---|
| Account | The account from the form, and the console's only account; for sign-in methods see Account and sign-in |
| Cluster | default with the default node group default; revision #1 published |
| Setup token | Spent; /setup redirects to the sign-in page from then on |
2. Enroll a node
-
Open Clusters & nodes, select the cluster
default, and click Add node (open already after setup; while there is no node, the button at the top of the sidebar is Add node too). The dialog shows the Install command at once: default node groupdefault, valid for 1 hour. -
Optional: open Options, change the fields below, and click Regenerate.
Field Description Node name Optional, at most 64 characters Node group Defaults to the cluster's default node group; shown when the cluster has several Valid for 15 minutes, 1 hour (default), or 24 hours -
Copy the Install command (shown once) and run it on the node host. The warnings and the node channel connection check below the command point out addresses nodes may not reach; see Adding nodes. Command format:
Node host export EDGEWEIR_TOKEN='ewt_…' curl -fsSL https://console.example.com/install.sh | sudo --preserve-env=EDGEWEIR_TOKEN bash -s -- --server https://console.example.com:8443 --ca-sha256 <CA fingerprint> -
Verify: every step of the dialog's Progress completes; the node appears in the node table of Clusters & nodes, Status is Online, and Applied shows In sync.
The token is single-use. For the installer's checks, the download mirror, and failure handling, see Adding nodes.
3. Create a site
-
Open Sites and click New site.
-
Fill in the form.
Field Default Description Name The first domain At most 100 characters Domains None One per line or comma-separated; wildcards as *.example.com; 1–50 domainsOrigin None IP address or host name. Pasting a URL ( https://origin.example.com:8443/app) orhost:portputs the port and protocol into their own fieldsPort 80 (HTTP) / 443 (HTTPS) Origin port Protocol HTTP HTTP or HTTPS Origin Host Same as request Hostsent to the originCaching On When on, creates one cache rule: Path prefix /, TTL (seconds) 3600, Respect origin Cache-Control on (3600 seconds when the origin sends neitherCache-ControlnorExpires) -
Click Create. The site's cluster publishes a new revision and the site page opens. The notice Site created follows the nodes: Rolling out N/M → Live on every node (Canary N/M, all nodes at HH:MM during a configuration canary).
| Rule | Description |
|---|---|
| Cluster | With several clusters, Cluster in the form (default: the oldest); through the API, clusterId. A site cannot change clusters later |
| Domains | Domains are published to the nodes as soon as the site is saved. A domain (name and wildcard flag) belongs to at most one site |
| Origin address | Origins in special-purpose ranges are refused unless the origin allow list covers the range |
| Disabling | Disable on the site's Overview tab: the site is no longer sent to the nodes, which answer HTTP requests for its domains with a 503 disabled page (X-Edgeweir-Error: site-disabled) and fail the TLS handshake of HTTPS requests; DNS records stay. Enable restores it, see Site enabling |
For origin pools, cache rules, and cache keys, see Origins and cache.
4. Configure DNS
Add a record for every site domain in the domain's authoritative DNS.
| DNS steering | Record |
|---|---|
| Not configured (the cluster's DNS is Not managed) | A / AAAA records to the addresses in the Edge addresses card on the site's Domains tab (the scheduling addresses of the cluster's online nodes, copyable), one record per address |
| Configured (the DNS tab of Clusters & nodes) | A CNAME record to the address in the CNAME target card on the site's Domains tab (<site ID>.<cluster domain>). In Automatic mode the card shows Published once the records are written to the provider; in Manual mode create the cluster's records listed on that tab first |
The card lists where each domain resolves now: Points here (every address belongs to a node of the cluster), Points elsewhere, Not resolved, Not checked (the lookup failed, or the nodes have no known address). A wildcard is resolved as edgeweir-check.<domain>. The card and the Launch check resolve again every 30 seconds; Check again beside the card's title resolves now. A recursive resolver's cached answer (also "no such name") holds until its TTL ends.
For lines, health-based removal, and TTL of DNS steering, see Configure DNS steering.
5. Enable HTTPS
- Open the site's HTTPS tab. Fix what the tab lists (for example records from step 4 that are not live yet) and click Check again.
- Click Enable HTTPS. The console requests a certificate for all of the site's domains (a wildcard domain needs a DNS credential first); once issued, the site uses it. To redirect HTTP to HTTPS, turn on Redirect HTTP to HTTPS in the HTTPS settings afterwards.
- The cluster publishes a new revision. Once an enabled site in the cluster uses a certificate, nodes listen on TCP 443.
An uploaded certificate (on the Certificates page) is chosen under Existing certificate on the site's HTTPS tab.
For issuance methods, renewal, TLS, and HTTP/3, see HTTPS and certificates.
6. Verify
-
Check the Launch check on the site's Overview tab; each item leads to its settings:
Item Passes Otherwise DNS pointed N/M Every domain Points here Lists the domains that do not; opens the Domains tab Certificate Certificate covers every domain, or No certificate (HTTP only) Certificate misses domains (listed), Certificate being issued, Certificate issuance failed (with the reason), Certificate expired; opens the HTTPS tab Live on N/M nodes N equals M Shows the window's end during a canary; with No online nodes, enroll a node first; opens the cluster -
Send an HTTP request straight to the node, bypassing DNS. Without DNS steering, the Edge addresses card gives a copyable command per domain (HTTPS when the site's certificate covers the domain); otherwise replace
203.0.113.10below:curl -sI --resolve www.example.com:80:203.0.113.10 http://www.example.com/Expected: the status code matches the origin; the response carries an
X-Cacheheader,MISSon the first request for a path covered by a cache rule. -
Repeat step 2. When the origin response is cacheable, the node answers
X-Cache: HIT. -
With HTTPS enabled:
curl -sI --resolve www.example.com:443:203.0.113.10 https://www.example.com/Use
--resolvefor HTTPS, not-H 'Host: …': the node requires SNI to matchHost. -
Once DNS is live:
dig +short www.example.com curl -sI http://www.example.com/Expected:
digreturns the node address (preceded by the CNAME target with DNS steering);curlmatches step 2.
Troubleshooting
| Symptom | Cause | Action |
|---|---|---|
| Setup shows Invalid setup token | Wrong token, or already used | Read it from the log again; after setup, use the sign-in page |
| Setup shows Setup is already in progress. Retry shortly. | Another setup request is running | Retry shortly |
| Node missing or Offline | Enrollment failed, or the node cannot reach the node channel | See Adding nodes and Ports, reverse proxy, and trusted proxies |
| Node stays Awaiting heartbeat | Enrolled, but the node's agent has not connected to the node channel yet | See Adding nodes |
| Applied shows Apply failed | The node failed to validate or apply the configuration | Hover the badge for the reason |
| Applied shows Upgrade required | The node lacks a capability the configuration needs | Upgrade the node; see Node upgrades |
404 with X-Edgeweir-Error: unknown-host | The domain is not in the node's configuration: revision not applied, or the domain belongs to no site | Check Applied and the Status on the site's Overview tab |
503 with X-Edgeweir-Error: site-disabled | The site is disabled | Enable it on the site's Overview tab |
| HTTPS requests fail in the TLS handshake | The SNI belongs to no site the node serves (an unknown domain, a disabled site), or the site has no certificate or one that does not cover the domain yet | Send the request over HTTP to see the node's answer; check the certificate item of the Launch check |
| A domain in the Launch check Points elsewhere | Its records point at an old server or another CDN, or also hold other addresses | Keep only records for the edge addresses (or the CNAME target) and wait for the old records' TTL |
| A domain in the Launch check is Not resolved | The domain has no record yet, or the CNAME target has no address (the CNAME target card shows No healthy nodes); resolvers that asked before the record existed answer "no such name" for the zone's negative caching time | Add the record; with No healthy nodes, check that the nodes are online with a healthy data plane; then click Check again |
| A domain in the Launch check is Not checked | The lookup timed out, or the cluster's nodes have no known address yet | Check that the nodes are online and report a public address, or configure scheduling addresses on the node |
421 with X-Edgeweir-Error: sni-host-mismatch | SNI and Host of an HTTPS request differ | Use --resolve |
502 with X-Edgeweir-Error: no-origin | No usable origin | Check origin address, port, protocol, and health; see Origins and cache |
508 with X-Edgeweir-Error: loop-detected | The origin points back to a node | Point the origin at the real origin server |
| New site shows Origin address … is in the special-purpose range …, which the origin allow list does not include | The origin is a private, loopback, or similar address | Use a public address, or add the range to the origin allow list |
| New site shows Domain already in use: … | The domain belongs to another site | Use another domain, or remove it from the other site first |