Self-Hosting
Visiban is designed for self-hosting. Your data stays on your infrastructure.
Requirements
A Linux server with Docker and Docker Compose v2. Minimum 2 vCPU / 4 GB RAM / 40 GB SSD — 1 GB RAM is not enough and will OOM under load.
Quick start
- 1
Clone the repo
git clone --branch v1.0.0 https://gitlab.com/visiban/visiban && cd visiban - 2
Configure environment
cp .env.example .env # Edit .env — set DJANGO_SECRET_KEY and SITE_DOMAIN at minimum - 3
Start the stack
docker compose up --build -d - 4
Retrieve the one-time admin password
docker compose exec backend cat /tmp/visiban_admin_password - 5
Open the app
# Visit http://localhost:5173 and sign in with the password above
Production deployment
For production, use docker-compose.prod.yml which adds an Nginx reverse proxy, serves the built frontend as static files, and uses daphne (ASGI) for WebSocket support.
docker compose -f docker-compose.prod.yml up --build -d .env before starting the stack. Missing any one will cause API failures or keep the WebSocket stuck on Reconnecting.
ALLOWED_HOSTS— your hostname or IP (e.g.192.168.1.100orboards.example.com)CORS_ALLOWED_ORIGINS— full origin the browser uses (e.g.http://192.168.1.100:8080orhttps://boards.example.com)SITE_DOMAIN— hostname for OAuth callback URLsFRONTEND_URL— full URL allauth redirects to after OAuth login
TLS termination can be handled by Nginx with Let's Encrypt — see the full installation guide for the complete production checklist.
Kubernetes / Helm
A Helm chart is included in the repository under helm/visiban/.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm dependency update helm/visiban
# Copy the secret values template and fill in your credentials
cp helm/visiban/values.secret.yaml.example helm/visiban/values.secret.yaml
# Edit values.secret.yaml — set djangoSecretKey and postgresql.auth.password
helm install visiban helm/visiban \
--namespace visiban --create-namespace \
-f helm/visiban/values.secret.yaml \
--set ingress.host=boards.example.com \
--set backend.settings.allowedHosts=boards.example.com \
--set backend.settings.corsAllowedOrigins=https://boards.example.com \
--set backend.settings.frontendUrl=https://boards.example.com \
--set backend.settings.siteDomain=boards.example.com After install, retrieve the one-time admin password:
kubectl exec -n visiban $(kubectl get pods -n visiban -l app.kubernetes.io/component=backend -o jsonpath='{.items[0].metadata.name}') \
-- cat /run/visiban/admin_password Need the complete guide? The full documentation covers upgrades, backups, OAuth setup, environment variables, and more.
Read the Full Docs →