Guides
Self-host with Docker
Run the community edition on your own infrastructure.
The community edition (AGPL-3.0) is a complete chat platform you can run anywhere Docker runs. Enterprise add-ons live in a separate private repo behind a license key.
Prerequisites
- Docker 24+ and docker compose v2
- 2 vCPU, 4 GB RAM minimum (8 GB recommended)
- A domain pointed at your server (for TLS)
Install
git clone https://github.com/singlink/singlink
cd singlink
cp .env.example .env
# edit .env: AUTH_SECRET, DATABASE_URL, REDIS_URL, S3_*
docker compose up -dBy default this brings up Postgres (with pgvector), Redis, MinIO, web, ws, and worker. Run docker compose ps to verify all five containers are healthy.
Initial setup
docker compose exec web pnpm db:migrate deploy
docker compose exec web pnpm db:seed # optional demo tenantReverse proxy
Put nginx (or Caddy) in front. Both /api/* and /v1/ws need to hit the same origin to share cookies. The WS endpoint requires upgrade headers:
location /v1/ws {
proxy_pass http://ws:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
}Backups
- Postgres —
pg_dumpdaily; this includes everything except S3 attachments - S3 / MinIO — use bucket versioning or
rclone syncto another region - Redis — ephemeral (queues), no backup needed; jobs replay on restart
Upgrades
git fetch && git checkout v0.x.y
docker compose pull
docker compose up -d
docker compose exec web pnpm db:migrate deployMigrations are forward-compatible; we won't break a running instance with a breaking schema change without a major version bump.