Skip to content
← All runbooks

Deploy & launch

DNS Provisioning

Records to configure for useatrium.me via your registrar (Namecheap, Cloudflare, etc.).

Required records

TypeHostValue / TargetTTLNotes
CNAMEverifycname.vercel-dns.com300Production frontend
CNAMEverify-stagingcname.vercel-dns.com300Staging preview
Acodex<DROPLET_IP>300Caddy auto-TLS → :3000
Atablet<DROPLET_IP>300Caddy auto-TLS → :3001
CNAMEstatusatrium-protocol.github.io300Upptime status page
A@Vercel IP (76.76.21.21)300Root domain redirect
TXT@v=spf1 include:_spf.google.com ~all3600Email (if using Google Workspace)

Replace <DROPLET_IP> with the IP printed by scripts/provision-do-droplet.sh.

Step-by-step (Namecheap)

  1. Log in → Domain List → useatrium.me → Advanced DNS.
  2. Add each record from the table above.
  3. Save all changes.

Vercel custom domains

After DNS records propagate:

  1. Vercel dashboard → Project (atrium-verify) → Settings → Domains.
  2. Add verify.useatrium.me → assign to Production.
  3. Add verify-staging.useatrium.me → assign to Preview (branch: staging).
  4. Vercel will verify DNS automatically.

Verification

# Each should resolve correctly
nslookup verify.useatrium.me
nslookup codex.useatrium.me
nslookup tablet.useatrium.me
nslookup status.useatrium.me

# TLS check (after Caddy is running on droplet)
curl -I https://codex.useatrium.me/healthz
curl -I https://tablet.useatrium.me/healthz

Caddyfile reference

The droplet runs Caddy as reverse proxy. See services/codex/Caddyfile and runbooks/caddy-on-droplet.md for installation.

Combined Caddyfile installed at /etc/caddy/Caddyfile:

codex.useatrium.me {
  reverse_proxy localhost:3000
}

tablet.useatrium.me {
  reverse_proxy localhost:3001
}

Caddy handles TLS certificate provisioning via Let's Encrypt ACME automatically.