# Nimbus Self-Hosted Dashboard - Unified Deployment # # Quick Start - No configuration required! # docker-compose up -d # # That's it! Access Nimbus at http://localhost:3000 # # Optional: Create a .env file to customize: # DB_PASSWORD=your-custom-password # Default: nimbus-default-password # JWT_SECRET=your-custom-secret # Auto-generated if not set # # For advanced users who prefer separate containers, see docker-compose.deprecated.yml services: db: image: turboot/nimbus-postgres:18 container_name: nimbus-db restart: unless-stopped environment: POSTGRES_DB: nimbus POSTGRES_USER: nimbus POSTGRES_PASSWORD: ${DB_PASSWORD:-nimbus-default-password} PGDATA: /var/lib/postgresql/data volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U nimbus -d nimbus"] interval: 10s timeout: 5s retries: 5 networks: - nimbus-network nimbus: image: turboot/nimbus:latest container_name: nimbus restart: unless-stopped environment: DB_PASSWORD: ${DB_PASSWORD:-nimbus-default-password} JWT_SECRET: ${JWT_SECRET:-} DB_HOST: db # Public URL for password reset emails and OAuth redirects: # FRONTEND_URL: ${FRONTEND_URL:-http://localhost:3000} # Optional overrides: # DB_PORT: 5432 # DB_USER: nimbus # DB_NAME: nimbus volumes: - uploads_data:/app/backend/uploads ports: - "3000:3000" depends_on: db: condition: service_healthy healthcheck: test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:3000/api/v1/health"] interval: 30s timeout: 10s retries: 5 start_period: 60s networks: - nimbus-network volumes: postgres_data: uploads_data: networks: nimbus-network: driver: bridge