# Deploying Wiz-War The game runs on a single DigitalOcean droplet: one Node process serves the built client and the websocket on port 8787; Caddy in front terminates TLS with automatic certificates. Room files persist in /var/lib/wizwar/rooms and survive deploys and reboots. ## Current production - Droplet: `wizwar` (nyc3, s-1vcpu-1gb, tag `wizwar`), IP 104.236.96.198 - URLs: https://wizwar.kestrelsnest.social (once the Hover A record lands) and https://wizwar.104.236.96.198.sslip.io (always works, zero DNS). Caddy serves both; NOTE: kestrelsnest.social's authoritative DNS is at HOVER (ns1/ns2.hover.com), not DigitalOcean — records must be added there. A matching record also sits in the DO zone in case nameservers ever move. ## Everyday deploys deploy/deploy.sh 104.236.96.198 Builds the client locally, rsyncs the repo (minus node_modules, /data, .git, research), installs dependencies on the droplet, and restarts the service. Games in progress survive: state lives in room files, and clients reconnect automatically. ## New droplet from scratch 1. `doctl compute droplet create wizwar --region nyc3 --size s-1vcpu-1gb \ --image ubuntu-24-04-x64 --ssh-keys --tag-name wizwar --wait` 2. `scp deploy/setup-droplet.sh root@:/root/ && ssh root@ \ "bash /root/setup-droplet.sh wizwar..sslip.io"` 3. `deploy/deploy.sh ` ## Operations - Logs: `ssh root@ journalctl -u wizwar -f` - Restart: `ssh root@ systemctl restart wizwar` - Backup games: `scp -r root@:/var/lib/wizwar/rooms ./rooms-backup`