Edgeweir
Guides

Quick start

From console setup to a first site served over HTTP and HTTPS by an edge node.

Steps

  1. Complete the setup wizard: create the only account and the default cluster.
  2. 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.
  3. Create a site: enter its domains, origin, and cache setting; the cluster publishes a new configuration revision.
  4. 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.
  5. Enable HTTPS: click Enable HTTPS on the site's HTTPS tab; HTTPS turns on once the certificate is issued, see HTTPS and certificates.
  6. 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

ItemRequirement
ConsoleDeployed; browsers reach EDGEWEIR_PUBLIC_URL. See Deployment overview
Node hostLinux (systemd), amd64 / arm64; reaches EDGEWEIR_PUBLIC_URL and the node channel (TCP 8443 by default); an account with sudo
Node inbound portsTCP 80; TCP 443 once HTTPS is enabled
DomainIts authoritative DNS records can be edited
OriginReachable 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

  1. Read the setup token from the console log. Docker Compose:

    Console host
    docker compose logs console | grep setupToken

    The log line is JSON: the setupToken field holds the token (prefix ews_) and the url field 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.

  2. Open EDGEWEIR_PUBLIC_URL in a browser. An uninitialized console redirects to /setup (Create your account).

  3. Fill in the form and click Finish.

    FieldDescription
    Setup tokenThe token from step 1
    Name1–100 characters
    EmailSign-in email
    Password12–128 characters
  4. 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:

ObjectValue
AccountThe account from the form, and the console's only account; for sign-in methods see Account and sign-in
Clusterdefault with the default node group default; revision #1 published
Setup tokenSpent; /setup redirects to the sign-in page from then on

2. Enroll a node

  1. 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 group default, valid for 1 hour.

  2. Optional: open Options, change the fields below, and click Regenerate.

    FieldDescription
    Node nameOptional, at most 64 characters
    Node groupDefaults to the cluster's default node group; shown when the cluster has several
    Valid for15 minutes, 1 hour (default), or 24 hours
  3. 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>
  4. 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

  1. Open Sites and click New site.

  2. Fill in the form.

    FieldDefaultDescription
    NameThe first domainAt most 100 characters
    DomainsNoneOne per line or comma-separated; wildcards as *.example.com; 1–50 domains
    OriginNoneIP address or host name. Pasting a URL (https://origin.example.com:8443/app) or host:port puts the port and protocol into their own fields
    Port80 (HTTP) / 443 (HTTPS)Origin port
    ProtocolHTTPHTTP or HTTPS
    Origin HostSame as requestHost sent to the origin
    CachingOnWhen on, creates one cache rule: Path prefix /, TTL (seconds) 3600, Respect origin Cache-Control on (3600 seconds when the origin sends neither Cache-Control nor Expires)
  3. 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).

RuleDescription
ClusterWith several clusters, Cluster in the form (default: the oldest); through the API, clusterId. A site cannot change clusters later
DomainsDomains 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 addressOrigins in special-purpose ranges are refused unless the origin allow list covers the range
DisablingDisable 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 steeringRecord
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

  1. 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.
  2. 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.
  3. 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

  1. Check the Launch check on the site's Overview tab; each item leads to its settings:

    ItemPassesOtherwise
    DNS pointed N/MEvery domain Points hereLists the domains that do not; opens the Domains tab
    CertificateCertificate 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 nodesN equals MShows the window's end during a canary; with No online nodes, enroll a node first; opens the cluster
  2. 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.10 below:

    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-Cache header, MISS on the first request for a path covered by a cache rule.

  3. Repeat step 2. When the origin response is cacheable, the node answers X-Cache: HIT.

  4. With HTTPS enabled:

    curl -sI --resolve www.example.com:443:203.0.113.10 https://www.example.com/

    Use --resolve for HTTPS, not -H 'Host: …': the node requires SNI to match Host.

  5. Once DNS is live:

    dig +short www.example.com
    curl -sI http://www.example.com/

    Expected: dig returns the node address (preceded by the CNAME target with DNS steering); curl matches step 2.

Troubleshooting

SymptomCauseAction
Setup shows Invalid setup tokenWrong token, or already usedRead 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 runningRetry shortly
Node missing or OfflineEnrollment failed, or the node cannot reach the node channelSee Adding nodes and Ports, reverse proxy, and trusted proxies
Node stays Awaiting heartbeatEnrolled, but the node's agent has not connected to the node channel yetSee Adding nodes
Applied shows Apply failedThe node failed to validate or apply the configurationHover the badge for the reason
Applied shows Upgrade requiredThe node lacks a capability the configuration needsUpgrade the node; see Node upgrades
404 with X-Edgeweir-Error: unknown-hostThe domain is not in the node's configuration: revision not applied, or the domain belongs to no siteCheck Applied and the Status on the site's Overview tab
503 with X-Edgeweir-Error: site-disabledThe site is disabledEnable it on the site's Overview tab
HTTPS requests fail in the TLS handshakeThe 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 yetSend 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 elsewhereIts records point at an old server or another CDN, or also hold other addressesKeep 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 resolvedThe 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 timeAdd 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 checkedThe lookup timed out, or the cluster's nodes have no known address yetCheck that the nodes are online and report a public address, or configure scheduling addresses on the node
421 with X-Edgeweir-Error: sni-host-mismatchSNI and Host of an HTTPS request differUse --resolve
502 with X-Edgeweir-Error: no-originNo usable originCheck origin address, port, protocol, and health; see Origins and cache
508 with X-Edgeweir-Error: loop-detectedThe origin points back to a nodePoint 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 includeThe origin is a private, loopback, or similar addressUse a public address, or add the range to the origin allow list
New site shows Domain already in use: …The domain belongs to another siteUse another domain, or remove it from the other site first
Edit on GitHub

On this page