version: '3.9' # Core + Panel deployment (main server) # Usage: docker compose -f docker-compose.base.yml up -d services: redis: image: redis:7-alpine container_name: nexuma-redis restart: unless-stopped volumes: - redis_data:/data networks: - nexuma core: image: nexuma/core:latest container_name: nexuma-core restart: unless-stopped environment: PORT: 3000 # PostgreSQL — use an external instance or add a postgres service below DB_HOST: your-postgres-host DB_PORT: 5432 DB_USER: postgres DB_PASSWORD: change-me DB_NAME: nexuma # Redis REDIS_HOST: redis REDIS_PORT: 6379 # JWT — use long random strings JWT_SECRET: change-me JWT_REFRESH_SECRET: change-me JWT_EXPIRES_IN: 15m JWT_REFRESH_EXPIRES_IN: 7d # Optional: Telegram bot (enables OAuth login and notifications) # TELEGRAM_BOT_TOKEN: your-bot-token # CORS_ORIGINS: https://your-domain.com ports: - "3000:3000" depends_on: - redis networks: - nexuma healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:3000/health || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 30s panel: image: nexuma/panel:latest container_name: nexuma-panel restart: unless-stopped environment: NUXT_CORE_URL: http://core:3000 ports: - "3010:3000" depends_on: - core networks: - nexuma volumes: redis_data: networks: nexuma: driver: bridge