--- 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