Self-hosting

highseas runs on the open-source Workers runtime (workerd) inside Docker — no Cloudflare account required. If you can run a container, you can run your own instance. A €5/month VPS is plenty.

What you need

1. Install Docker

On a fresh Ubuntu/Debian box:

curl -fsSL https://get.docker.com | sh systemctl enable --now docker

2. Point your domain at the box

Add an A record for your domain to the box's public IP. Use a plain DNS-only record — if your DNS provider offers a proxy/CDN toggle (an orange cloud), turn it off, or automatic TLS can't complete.

yourdomain.social    A    <your-box-ip>

3. Configure and start

highseas ships a docker-compose.yml and a Caddy config under apps/highseas/web/selfhost/. Set your domain, then bring the stack up:

docker compose up -d

That starts two containers: the highseas app (workerd via Miniflare) and Caddy in front of it. Caddy automatically obtains a Let's Encrypt certificate for your domain and terminates HTTPS — no manual cert wrangling. Your instance applies its database migrations on first boot.

4. You're live

Open https://yourdomain.social. That's a full instance, served over HTTPS, ready to federate. From here see Federation to connect to the wider network.

Updating

Pull the latest image and roll the containers — your data persists in a Docker volume:

docker compose pull docker compose up -d

How it works underneath

The same app bundle that powers highseas.social is baked into a container and run on workerd, the open-source runtime behind Cloudflare Workers. A small runner boots it from its config, wires its storage (a built-in database, object storage and durable state), and serves plain HTTP that Caddy fronts. Nothing in the stack depends on a hosted cloud — it is yours, top to bottom.