Getting startedDocker Postgres · Caddy

Setup on a DigitalOceandroplet — Docker flavour

The same droplet in nine guided steps, with Postgres in a container and Caddy issuing TLS on its own. Fill in your variables once and copy the commands — they run from the repo root on your own machine.

Full reference: devops.md in the repo

Step 1 of 9

Get a droplet

You need a fresh Ubuntu droplet to deploy to. Create one on DigitalOcean, note its IP, and come back — everything else happens from your machine.

ImageUbuntu LTS (24.04 or newer), plain image — not the Docker marketplace image. Provisioning installs Docker itself.
Size2 GB RAM or more. This flavour builds the app on the droplet, with the database container running beside it — the 512 MB size that suits the pm2 build-locally flow is tight here, even with the 2 GB of swap provisioning adds.
Authenticationchoose SSH key and add your public key during creation. No key yet? Generate one below first.
After creationcopy the droplet's public IP; it's the first variable in step 3.
Point your domain at itadd a DNS Arecord for the domain you'll use, directed at the droplet's IP, right after creation. Caddy requests the certificate the first time it starts and proves ownership over HTTP, so until DNS resolves to this droplet there is no TLS and the site isn't reachable at your domain. If DNS is on DigitalOcean: Networking → Domains → your domain → A record, hostname @(or a subdomain), directed to the droplet. Records take a few minutes to propagate — adding it now means it's live by the time you deploy.

You don't have to run any of this by hand. Fill in the variables as you go and the last step gives you a summary you can paste into Claude Code, running in your clone of the project — it drives the same devops/ scripts for you.

Run on: your machine — any shell

generate an ssh key (skip if you have one)
ssh-keygen -t ed25519 -f ~/.ssh/id_backflip -C "backflip"cat ~/.ssh/id_backflip.pub

Upload the printed .pub contents in the DigitalOcean panel under Settings → Security → SSH keys, then pick that key when creating the droplet. The private half (~/.ssh/id_backflip) stays on your machine — it's the key path variable in step 3.

Referral link — new DigitalOcean accounts get free starting credit, and it supports this project. Already have a droplet? Skip straight to the next step.

1 / 9

These values stay in this browser tab. The page has no server action and makes no network call — your entries and your place in the wizard are kept in this tab’s session storage only, dropped when the tab closes, and passwords are never stored at all. The only thing that leaves is a command you copy yourself.