homelab_automation/docker-compose.yml

77 lines
2.8 KiB
YAML

---
services:
homelab-dashboard:
build:
context: .
dockerfile: Dockerfile
container_name: homelab-automation-dashboard
restart: unless-stopped
ports:
- "8008:8000"
environment:
# Clé API pour l'authentification
- API_KEY=${API_KEY:-dev-key-12345}
# Utilisateur SSH pour Ansible
- SSH_USER=${SSH_USER:-automation}
# Chemin de la clé SSH dans le container
- SSH_KEY_PATH=/app/ssh_keys/id_rsa
# Désactiver la vérification des clés SSH (pour les tests)
- ANSIBLE_HOST_KEY_CHECKING=False
# Timeout SSH
- ANSIBLE_TIMEOUT=30
# Homelab Data folder (monté sur /app/data)
- HOMELAB_DATA_DIR=${HOMELAB_DATA_DIR:-./data}
# SQLite DB path et URL (doivent correspondre à app/models/database.py)
- DB_PATH=/app/data/homelab.db
- DATABASE_URL=sqlite+aiosqlite:////app/data/homelab.db
# Répertoire des logs de tâches (format YYYY/MM/JJ)
- DIR_LOGS_TASKS=/app/tasks_logs
# Ansible inventory
- ANSIBLE_INVENTORY=./ansible/inventory
# Ansible playbooks
- ANSIBLE_PLAYBOOKS=./ansible/playbooks
# Ansible group_vars
- ANSIBLE_GROUP_VARS=./ansible/inventory/group_vars
# Notifications ntfy (peuvent aussi être définies dans .env)
- NTFY_BASE_URL=${NTFY_BASE_URL:-http://localhost:8150}
- NTFY_DEFAULT_TOPIC=${NTFY_DEFAULT_TOPIC:-homelab-events}
- NTFY_ENABLED=${NTFY_ENABLED:-true}
- NTFY_TIMEOUT=${NTFY_TIMEOUT:-5}
- NTFY_USERNAME=${NTFY_USERNAME:-}
- NTFY_PASSWORD=${NTFY_PASSWORD:-}
- NTFY_TOKEN=${NTFY_TOKEN:-}
- NTFY_MSG_TYPE=${NTFY_MSG_TYPE:-ALL}
volumes:
# Volume Docker natif pour la base de données SQLite (évite les problèmes I/O sur Windows)
- homelab_data:/app/data
# Monter l'inventaire Ansible (permet de modifier sans rebuild)
- ${ANSIBLE_INVENTORY:-./ansible/inventory}:/ansible/inventory
# Monter les playbooks (permet de modifier sans rebuild)
- ${ANSIBLE_PLAYBOOKS:-./ansible/playbooks}:/ansible/playbooks
# Monter les variables de groupe
- ${ANSIBLE_GROUP_VARS:-./ansible/inventory/group_vars}:/ansible/inventory/group_vars
# Monter les clés SSH depuis le host
- ${SSH_KEY_DIR:-~/.ssh}:/app/ssh_keys:ro
# Volume pour les logs (optionnel)
- homelab_logs:/app/logs
# Monter le répertoire des logs de tâches depuis le host
- ${DIR_LOGS_TASKS:-./tasks_logs}:/app/tasks_logs
networks:
- homelab-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
homelab-network:
driver: bridge
volumes:
homelab_data:
driver: local
homelab_logs:
driver: local