Introduces centralized configuration management for home lab:
- sync-configs.sh script for pull/push/diff/deploy operations
- hosts.yml inventory tracking 9 hosts (Proxmox, VMs, LXCs, cloud)
- Docker Compose files from all active hosts (sanitized)
- Proxmox VM and LXC configurations for backup reference
- .env.example files for services requiring secrets
All hardcoded secrets replaced with ${VAR} references.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
120 lines
2.7 KiB
YAML
120 lines
2.7 KiB
YAML
version: '3'
|
|
|
|
#networks:
|
|
# nginx-proxy-manager_npm_network:
|
|
# external: true
|
|
|
|
services:
|
|
api:
|
|
# build: .
|
|
image: manticorum67/major-domo-database:dev
|
|
restart: unless-stopped
|
|
container_name: sba_db_api
|
|
volumes:
|
|
- ./storage:/usr/src/app/storage
|
|
- ./logs:/usr/src/app/logs
|
|
ports:
|
|
- 814:80
|
|
networks:
|
|
- default
|
|
# - nginx-proxy-manager_npm_network
|
|
environment:
|
|
- TESTING=False
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- API_TOKEN=${API_TOKEN}
|
|
- TZ=${TZ}
|
|
- WORKERS_PER_CORE=1.5
|
|
- TIMEOUT=120
|
|
- GRACEFUL_TIMEOUT=120
|
|
- DATABASE_TYPE=postgresql
|
|
- POSTGRES_HOST=sba_postgres
|
|
- POSTGRES_DB=${SBA_DATABASE}
|
|
- POSTGRES_USER=${SBA_DB_USER}
|
|
- POSTGRES_PASSWORD=${SBA_DB_USER_PASSWORD}
|
|
- REDIS_HOST=sba_redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_DB=0
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
restart: unless-stopped
|
|
container_name: sba_postgres
|
|
environment:
|
|
- POSTGRES_DB=${SBA_DATABASE}
|
|
- POSTGRES_USER=${SBA_DB_USER}
|
|
- POSTGRES_PASSWORD=${SBA_DB_USER_PASSWORD}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./logs:/var/log/postgresql
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${SBA_DB_USER} -d ${SBA_DATABASE}"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
container_name: sba_redis
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
environment:
|
|
- TZ=${TZ}
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
command: redis-server --appendonly yes
|
|
|
|
adminer:
|
|
image: adminer:latest
|
|
restart: unless-stopped
|
|
container_name: sba_adminer
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
- ADMINER_DEFAULT_SERVER=sba_postgres
|
|
- TZ=${TZ}
|
|
# - ADMINER_DESIGN=pepa-linha-dark
|
|
depends_on:
|
|
- postgres
|
|
|
|
sync-prod:
|
|
image: alpine:latest
|
|
container_name: sba_sync_prod
|
|
volumes:
|
|
- ./scripts:/scripts
|
|
- /home/cal/.ssh:/tmp/ssh:ro
|
|
environment:
|
|
- SBA_DB_USER=${SBA_DB_USER}
|
|
- SBA_DATABASE=${SBA_DATABASE}
|
|
- SBA_DB_USER_PASSWORD=${SBA_DB_USER_PASSWORD}
|
|
command: >
|
|
sh -c "
|
|
cp -r /tmp/ssh /root/.ssh &&
|
|
chmod 700 /root/.ssh &&
|
|
chmod 600 /root/.ssh/* &&
|
|
chown -R root:root /root/.ssh &&
|
|
/scripts/sync_from_prod.sh
|
|
"
|
|
profiles: ["sync"]
|
|
depends_on:
|
|
- postgres
|
|
networks:
|
|
- default
|
|
|
|
volumes:
|
|
postgres_data:
|
|
redis_data:
|