Deploy Lurker on DigitalOcean (one-shot)
Stand up a public, HTTPS-enabled Lurker on a fresh DigitalOcean droplet from a single pasted script — no SSH required.
Steps
- Create a droplet — the Docker Marketplace image at the smallest size is fine (vanilla Ubuntu 24.04 LTS works too).
- At droplet creation, expand Additional Options and enable User Scripts (DigitalOcean's label for cloud-init user data — older guides call it "User data" or "Startup scripts"). Paste in the contents of
deploy/digitalocean-cloud-init.sh, after filling in the two required values near the top of the script —LURKER_DOMAIN(your domain, e.g.irc.yourdomain.com) andADMIN_EMAIL(your email address). - Once the droplet exists, copy its public IP and add a DNS
Arecord pointing your domain at it. - Give it a few minutes, then visit your domain.
You don't need the droplet's IP before creating it: the droplet boots and starts Caddy before DNS exists, and Caddy keeps retrying Let's Encrypt until your A record resolves — so HTTPS comes up automatically a few minutes after you set the DNS record. (If you'd rather the certificate be ready the moment the droplet boots, reserve a Reserved IP first, point DNS at it, then create the droplet and assign that Reserved IP.)
Passkeys and web push notifications are configured automatically — the deploy derives the WebAuthn and push settings from your domain and email — so you can enable them per device from Lurker's in-app settings without touching the server.
Deploy progress is logged to /var/log/lurker-deploy.log on the droplet.
Updating
SSH in (or open the DigitalOcean web console) and run:
cd /opt/lurker
docker compose pull && docker compose up -dThe deploy script records the Caddy overlay in .env, so docker compose picks it up automatically — no -f flags needed. Your data/ directory is left untouched.
Going further
For backups, admin-password recovery, and other operational details, see the self-hosting guide.