85 lines
2.9 KiB
YAML
85 lines
2.9 KiB
YAML
# bob
|
|
# https://github.com/caddymanager
|
|
---
|
|
name: caddymanager
|
|
|
|
networks:
|
|
caddymanager:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
mongodb_data: # Only used when MongoDB profile is active
|
|
sqlite_data: # SQLite database storage
|
|
|
|
services:
|
|
# MongoDB database for persistent storage (optional - SQLite is used by default)
|
|
mongodb:
|
|
image: mongo:8.0
|
|
container_name: caddymanager-mongodb
|
|
restart: unless-stopped
|
|
environment:
|
|
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME:-mongoadmin}
|
|
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD:-someSecretPassword} # Change for production!
|
|
ports:
|
|
- "27017:27017" # Expose for local dev, remove for production
|
|
volumes:
|
|
- mongodb_data:/data/db
|
|
networks:
|
|
- caddymanager
|
|
profiles:
|
|
- mongodb # Use 'docker-compose --profile mongodb up' to include MongoDB
|
|
|
|
# Backend API server
|
|
backend:
|
|
image: caddymanager/caddymanager-backend:latest
|
|
container_name: caddymanager-backend
|
|
restart: unless-stopped
|
|
environment:
|
|
- PORT=3000
|
|
# Database Engine Configuration (defaults to SQLite)
|
|
- DB_ENGINE=sqlite # Options: 'sqlite' or 'mongodb'
|
|
# SQLite Configuration (used when DB_ENGINE=sqlite)
|
|
- SQLITE_DB_PATH=/app/data/caddymanager.sqlite
|
|
# MongoDB Configuration (used when DB_ENGINE=mongodb)
|
|
- MONGODB_URI=mongodb://$${MONGO_USERNAME:-mongoadmin}:$${MONGO_PASSWORD:-someSecretPassword}@mongodb:27017/caddymanager?authSource=admin
|
|
- CORS_ORIGIN=http://localhost:80
|
|
- LOG_LEVEL=debug
|
|
- CADDY_SANDBOX_URL=http://localhost:2019
|
|
- PING_INTERVAL=30000
|
|
- PING_TIMEOUT=2000
|
|
- AUDIT_LOG_MAX_SIZE_MB=100
|
|
- AUDIT_LOG_RETENTION_DAYS=90
|
|
- METRICS_HISTORY_MAX=1000 # Optional: max number of in-memory metric history snapshots to keep
|
|
- JWT_SECRET=YPKCVW8qEEshVN6BHPb6tq4YdhQpdQrR
|
|
- JWT_EXPIRATION=24h
|
|
# Backend is now only accessible through frontend proxy
|
|
volumes:
|
|
- sqlite_data:/app/data # SQLite database storage
|
|
networks:
|
|
- caddymanager
|
|
|
|
# Frontend web UI
|
|
frontend:
|
|
image: caddymanager/caddymanager-frontend:latest
|
|
container_name: caddymanager-frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
- BACKEND_HOST=backend:3000
|
|
- APP_NAME=Caddy Manager
|
|
- DARK_MODE=true
|
|
ports:
|
|
# - "80:80" # Expose web UI
|
|
- 20125:80
|
|
networks:
|
|
- caddymanager
|
|
|
|
# Notes:
|
|
# - SQLite is the default database engine - no additional setup required!
|
|
# - To use MongoDB instead, set DB_ENGINE=mongodb and start with: docker-compose --profile mongodb up
|
|
# - For production, use strong passwords and consider secrets management.
|
|
# - The backend uses SQLite by default, storing data in a persistent volume.
|
|
# - The frontend proxies all /api/* requests to the backend service.
|
|
# - Backend is not directly exposed - all API access goes through the frontend proxy.
|