Prerequisites
- A Linux server with:
- Docker and Docker Compose v2.0+ installed
- 2GB RAM minimum (4GB recommended)
- 10GB disk space
- A domain name pointing to your server
- SSL certificate (we’ll use Caddy for automatic HTTPS)
- One authentication method:
Step 1: Prepare Your Server
SSH into your server and install Docker if not already installed:Step 2: Configure Authentication
Choose one of these options:Option A: OAuth
Update your OAuth application callback URLs to use your domain:- GitHub
- Google
- Authorization callback URL:
https://your-domain.com/v1/oauth/github/callback
Option B: Bootstrap Local Auth
If you do not want to configure OAuth yet, you can bootstrap a single local admin login:Step 3: Create Environment File
Generate a secure JWT secret:.env.remote in the repository root:
.env.remote
Step 4: Create Production Docker Compose
Createdocker-compose.prod.yml in the crates/remote directory:
docker-compose.prod.yml
Step 5: Create Caddyfile
Create aCaddyfile in the crates/remote directory for automatic HTTPS (core app/API):
Caddyfile
This base deployment serves the main Cloud app/API only. Relay/tunnel support is optional and requires additional relay routing plus wildcard DNS/TLS for your relay domain.
Step 6: Deploy
The first build takes 10-15 minutes. Subsequent deployments are faster as Docker caches the build layers.
Step 7: Verify Deployment
- Open
https://your-domain.comin your browser - You should see the Vibe Kanban Cloud login page
- Sign in with your configured auth method
- Create your first organisation and project
Optional: Enable Relay/Tunnel in Production
Relay/tunnel support requires:- A running
relay-serverservice - Reverse proxy routing for both
relay.your-domain.comand*.relay.your-domain.com - A wildcard certificate for
*.relay.your-domain.com(or equivalent managed TLS at your edge) VITE_RELAY_API_BASE_URLset to your public relay API base URL before buildingremote-server
Add relay-server to docker compose
docker-compose.prod.yml
Add relay proxy routes
Your reverse proxy must route:relay.your-domain.com->relay-server:8082*.relay.your-domain.com->relay-server:8082
Updating
To update to a new version:Backup and Restore
Backup Database
Restore Database
Monitoring
View Logs
Check Service Health
Troubleshooting
SSL certificate issues
SSL certificate issues
Caddy automatically obtains SSL certificates from Let’s Encrypt. Ensure:
- Your domain’s DNS is correctly pointing to your server
- Ports 80 and 443 are open in your firewall
- Your domain is correctly set in the environment
Database connection refused
Database connection refused
The server may start before the database is ready. Check:
ElectricSQL fails to connect
ElectricSQL fails to connect
ElectricSQL requires the
electric_sync database user, which the Remote Server creates automatically on first startup. If ElectricSQL cannot connect:- Check that the Remote Server started successfully and ran its migrations
- Verify
ELECTRIC_ROLE_PASSWORDmatches in both your.env.remoteand the Electric service config - Restart ElectricSQL after the Remote Server is healthy:
Out of memory errors
Out of memory errors
If the build fails with memory errors, you may need a server with more RAM or add swap: