Skip to content

Custom Domains ​

Quick Setup ​

  1. Add your domain to exodus.yml:
yaml
targets:
  default:
    server: my-vps
    domain:
      - example.com
      - www.example.com
  1. Add DNS records at your registrar:
TypeNameValue
A@YOUR_SERVER_IP
AwwwYOUR_SERVER_IP
  1. Deploy:
bash
exodus deploy

DNS Propagation ​

DNS changes can take 1-48 hours to propagate globally. Most propagate within 5-30 minutes.

Deploy After DNS

SSL certificates are provisioned on first deploy. If DNS hasn't propagated yet, SSL will fail. Wait for DNS to resolve, then redeploy.

Common Providers ​

Cloudflare ​

  1. Go to DNS settings
  2. Add A record: @ → YOUR_SERVER_IP
  3. Add A record: www → YOUR_SERVER_IP

Cloudflare Proxy

If using Cloudflare proxy (orange cloud), set SSL/TLS mode to Full or Full (Strict) to avoid redirect loops.

Namecheap ​

  1. Go to Domain List → Manage → Advanced DNS
  2. Add A record: @ → YOUR_SERVER_IP
  3. Add A record: www → YOUR_SERVER_IP

GoDaddy ​

  1. Go to My Products → DNS
  2. Add A record: @ → YOUR_SERVER_IP
  3. Add A record: www → YOUR_SERVER_IP

Google Domains / Squarespace ​

  1. Go to DNS settings
  2. Add A record: @ → YOUR_SERVER_IP
  3. Add A record: www → YOUR_SERVER_IP

Subdomains ​

For subdomains like app.example.com:

yaml
targets:
  default:
    domain:
      - app.example.com

DNS record:

TypeNameValue
AappYOUR_SERVER_IP

Multiple Domains ​

Point multiple domains to the same project:

yaml
targets:
  default:
    domain:
      - example.com
      - www.example.com
      - myapp.io
      - www.myapp.io

Each domain needs its own A records pointing to your server.

Wildcard Domains ​

Not currently supported. Add each subdomain explicitly.

Troubleshooting ​

ERR_SSL_PROTOCOL_ERROR / SSL_ERROR_RX_RECORD_TOO_LONG ​

SSL certificate failed to provision. DNS wasn't ready when you deployed.

Fix: Wait for DNS propagation, then redeploy:

bash
exodus deploy

ERR_TOO_MANY_REDIRECTS (HTTP 301/302 loop) ​

Cloudflare proxy with wrong SSL setting.

Fix: Set Cloudflare SSL/TLS mode to Full or Full (Strict).

ERR_CONNECTION_REFUSED / ERR_CONNECTION_TIMED_OUT ​

Domain not pointing to your server, or firewall blocking.

Fix:

  1. Verify DNS: dig example.com +short should return your server IP
  2. Check firewall: exodus ssh then sudo ufw status

502 Bad Gateway ​

Container crashed or not running.

Fix:

bash
exodus ps      # Check if container is running
exodus logs    # Check for errors
exodus restart # Restart container

404 Not Found ​

Caddy not configured for this domain.

Fix: Redeploy to regenerate Caddy config:

bash
exodus deploy

DNS Not Resolving (NXDOMAIN) ​

  1. Check DNS records are correct at registrar
  2. Wait for propagation (check dnschecker.org)
  3. Verify: dig example.com +short

Wrong IP / Old Site Showing ​

Cached DNS records. Wait for TTL to expire, or flush local DNS:

bash
# macOS
sudo dscacheutil -flushcache

# Linux
sudo systemd-resolve --flush-caches

# Windows
ipconfig /flushdns