Production deployment

Deploy wrkin.space on your own VPS with Docker Compose, GHCR images, and TLS.

Last updated May 27, 2026

Overview

Production uses compose.prod.yaml, which runs:

  • SvelteKit app
  • Hocuspocus collab server
  • Postgres
  • MinIO
  • Caddy (TLS termination)
  • Backup service

Images for app, collab, and migrate are published to GHCR on version tags.

Prerequisites

  • A domain (e.g. wrkin.space) with DNS pointing at your server
  • Ports 80 and 443 open to the internet
  • Docker with Compose v2.20+
  • GHCR read access if images are private

Host setup checklist

  1. Provision a VPS and harden SSH/firewall.
  2. Point DNS A / AAAA records at the server.
  3. Clone the repo to /opt/wrkin-space.
  4. Configure .env for production secrets and URLs.
  5. Authenticate to GHCR if needed.
  6. Run the production compose stack.

The full runbook lives in server-setup.md in the repository.

Deploy workflow

Tagged releases trigger .github/workflows/release.yml, which builds and pushes container images. On the host, pull the new tag and restart services.

After deploy

  • Verify HTTPS loads the app
  • Confirm Docs collaboration connects to the collab WebSocket endpoint
  • Check backups are running on schedule

Product usage

Once deployed, follow Getting started to create teams and wrkspaces.