Skip to content

Docker & Self-Hosting

Running Zenso on your local infrastructure takes less than two minutes using Docker Compose.

Create a directory for Zenso and save the following configuration file:

services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: zenso
POSTGRES_USER: zenso
POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme_secure_password}
volumes:
- postgres_data:/var/lib/postgresql/data
zenso-api:
image: ghcr.io/zensoink/zenso-api:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
PORT: 3000
DATABASE_URL: postgresql://zenso:${DB_PASSWORD:-changeme_secure_password}@postgres:5432/zenso
FRONTEND_URL: http://${HOST_IP:-localhost}:8080
ZENSO_ALLOW_PRIVATE_NETWORKS: "true"
depends_on:
- postgres
zenso-panel:
image: ghcr.io/zensoink/zenso-panel:latest
restart: unless-stopped
ports:
- "8080:80"
depends_on:
- zenso-api
volumes:
postgres_data:

Run the container stack in detached mode:

Terminal window
docker compose up -d

Verify that all containers are healthy by checking docker compose ps.

All user settings, screens, layouts, and widget configurations are securely stored inside the named Docker volume postgres_data. Regular volume backups guarantee simple migration between servers.