Deploy wrkin.space on your own VPS with Docker Compose, GHCR images, and TLS.
Last updated June 7, 2026
Production uses compose.prod.yaml, which runs:
Images for app, collab, and migrate are published to GHCR on version tags.
wrkin.space) with DNS pointing at your server80 and 443 open to the internetA / AAAA records at the server./opt/wrkin-space..env for production secrets and URLs.The full runbook lives in docs/server-setup.md in the repository.
Beyond database and storage, production typically needs:
| Variable | Purpose |
|---|---|
ORIGIN | Public HTTPS URL (e.g. https://wrkin.example.com) |
BETTER_AUTH_SECRET | 32+ character secret for sessions |
PUBLIC_COLLAB_WS_URL | Public WebSocket URL for Docs (e.g. wss://wrkin.example.com/collab) |
S3_* | Object storage for uploads (MinIO in compose or external S3) |
Email (recommended before relying on password reset):
| Variable | Purpose |
|---|---|
RESEND_API_KEY | Resend API transport (simplest option) |
or SMTP_* | Self-hosted or relay SMTP instead of Resend |
Without outbound email, signup-by-password works but password reset and invite emails will not deliver. Configure DKIM/SPF/DMARC on your sending domain when using a custom domain.
Email (recommended for hosted cloud — password reset, verification, invites):
| Variable | Purpose |
|---|---|
RESEND_API_KEY | Resend API key from resend.com/api-keys |
EMAIL_FROM | Verified sender, e.g. wrkin.space <hello@mail.wrkin.space> |
Without these, signup still works but verification/reset/invite emails will not send. /api/health reports emailConfigured: false. Community self-hosters do not use Resend — see product docs.
Stripe (hosted billing only): STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_PLUS, STRIPE_PRICE_PRO — not required for pure self-hosted community installs without billing.
See .env.example in the repo for the full list.
Tagged releases trigger .github/workflows/release.yml, which builds and pushes container images. On the host, pull the new tag and restart services.
PUBLIC_COLLAB_WS_URL)backup/ service in compose)pnpm db:seed on a dev/staging instance only — never against production data you care aboutOnce deployed, follow Getting started to create teams and wrkspaces.
Custom card schemas
Configure card fields, board layout, and presets with the Cards setup wizard.
Docker Compose (dev services)
Understand the local Docker stack for Postgres, MinIO, and supporting services.
Docs library
Folders, collaborative pages, file uploads, and external links in one library grid.