Home / Docs / Deployment

Deployment

Two deployment modes: embedded UI (recommended, v0.7.0+) where a single xe binary serves everything, or legacy stack with Caddy as reverse proxy.

Embedded UI (Recommended)

Single binary deployment. No Caddy, no static file rsync, no separate builds. The xe binary embeds the web UI via //go:embed.

xe node --ui --wallet --provide \
  -dial /ip4/45.77.226.208/tcp/9000/p2p/12D3KooWSm1c... \
  -api-bind 0.0.0.0 \
  -ssh-port 2222

Legacy Architecture (Caddy + pm2)

                    ┌─────────────┐
                    │   Caddy     │ :80/:443
                    └──────┬──────┘
              ┌────────────┼────────────┬────────────┐
              ▼            ▼            ▼            ▼
        /api/*       /wallet/*     /docs/*         /*
     ┌─────────┐   ┌──────────┐  ┌──────────┐  ┌──────────┐
     │ xe-node │   │  Static  │  │  Static  │  │  Static  │
     │  :8080  │   │  wallet/ │  │  docs/   │  │ explorer/│
     └─────────┘   └──────────┘  └──────────┘  └──────────┘

Bootstrap Node Setup

Ubuntu 24.04 with Caddy, Node.js 22, pm2, QEMU, Lima. The setup-node.sh script automates installation.

Directory Layout

/opt/xe/deploy/.env, ecosystem.config.js
/opt/xe/web/explorer/, wallet/, docs/
/etc/caddy/Caddyfile
/usr/local/bin/xe-node
/var/lib/xe-node/badger/, host.key, node.key, lima/, images/

Data Directory

PathContent
badger/BadgerDB database
host.keylibp2p identity
node.keyNode account key
ssh_host_keySSH gateway host key
lima/Lima VM state
lima-templates/Lima YAML templates
images/VM base images

Provider Node Setup

Bare-metal provider using systemd instead of pm2. No Caddy or web interfaces needed.

Bootstrap Peers

/ip4/45.77.226.208/tcp/9000/p2p/12D3KooWSm1c8hj3EfnBFNXSW8ELcFN2fxqigDn5FTeQwSVoa4LC
/ip4/192.248.176.245/tcp/9000/p2p/12D3KooWJgnFGZZ5y8zKJ64yV9hT8WqctCnWXvbzcNiowoRzEr9w
/ip4/144.202.4.117/tcp/9000/p2p/12D3KooWDBc6s7pPW8jhix5LsG9wRgzuGN1Ur8zcbE2T94aJSnsD
NodeLocationIP
ldnLondon45.77.226.208
ffmFrankfurt192.248.176.245
nycNew York144.202.4.117

Current Providers

HostvCPUsMemoryDisk
bm1 (Frankfurt)48 GB50 GB
bm2 (London)816 GB100 GB

CI/CD Pipeline

Push to master → Build (per repo) → Deploy (parallel to 3 hosts)
  core:     go build → scp binary → pm2 restart
  explorer: npm build → rsync → /opt/xe/web/explorer/
  wallet:   npm build → rsync → /opt/xe/web/wallet/
  docs:     mkdocs build → rsync → /opt/xe/web/docs/