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
- A Linux box you control — a small cloud VPS or a machine at home.
- Docker (with the Compose plugin).
- A domain name, with DNS you can edit.
1. Install Docker
On a fresh Ubuntu/Debian box:
curl -fsSL https://get.docker.com | sh systemctl enable --now docker2. 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 -dThat 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 -dHow 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.