3.4 KiB
Docker Configuration for Homelab Automation
Ce dossier contient tous les fichiers nécessaires pour conteneuriser et déployer l'application Homelab Automation API.
Structure du dossier
- Dockerfile : Définition de l'image Docker.
- docker-compose.yml : Définition de la stack (Container API + Volumes).
- .env.example : Modèle de configuration des variables d'environnement.
- init.sh : Script d'initialisation de l'environnement local.
- build-img.ps1 : Script PowerShell pour construire l'image (optimisé pour WSL).
- deploy-img.sh / .ps1 : Scripts pour pousser l'image vers un registre Docker privé.
- maj.sh : Script pour mettre à jour la stack depuis le registre.
Prérequis
- Docker Engine & Docker Compose
- Pour Windows : WSL 2 activé (recommandé pour les scripts .ps1)
Installation et Démarrage
1. Initialisation
Lancez le script d'initialisation pour préparer le fichier .env et les répertoires de données :
# Dans le dossier docker/
bash init.sh
Ensuite, éditez le fichier .env généré pour configurer :
API_KEY: Clé API legacy (facultative, utilisée seulement avant la création du premier utilisateur).JWT_SECRET_KEY: Clé secrète utilisée pour signer les tokens JWT (à changer impérativement en production).JWT_EXPIRE_MINUTES: Durée de validité des tokens (en minutes, ex:1440pour 24h).SSH_USER: L'utilisateur pour les connexions Ansible.NTFY_*: La configuration des notifications (optionnel).
Flux de login dans un déploiement Docker
-
Démarrer la stack
docker compose up -d --build -
Créer le premier utilisateur admin (une seule fois, si aucun utilisateur n'existe encore) :
curl -X POST "http://localhost:8008/api/auth/setup" \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "motdepasse-securise", "display_name": "Administrateur" }' -
Se connecter et récupérer un token JWT :
TOKEN=$(curl -s -X POST "http://localhost:8008/api/auth/login/json" \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "motdepasse-securise"}' | jq -r .access_token) -
Appeler l'API depuis l’extérieur du container :
curl -H "Authorization: Bearer $TOKEN" http://localhost:8008/api/hosts
Note : Dès qu’un utilisateur existe dans la base, les appels avec
X-API-Keyne sont plus autorisés. Toute l’API passe par les tokens JWT.
2. Démarrage (Local)
Pour lancer l'application localement avec Docker Compose :
docker compose up -d --build
L'API sera accessible sur http://localhost:8008.
Construction et Déploiement (Avancé)
Si vous utilisez un registre Docker privé (ex: Nexus, Harbor, Registry local), vous pouvez utiliser les scripts de build et de déploiement.
Configuration du Registre
Modifiez les variables dans .env (ou laissez les valeurs par défaut si elles conviennent) :
REGISTRY_HOSTREGISTRY_PORTIMAGE_NAME
Construction
Sous Windows (via PowerShell) :
.\build-img.ps1
Sous Linux :
docker build -f Dockerfile -t homelab-automation-api:latest ..
Déploiement
Pousse l'image vers le registre configuré :
.\deploy-img.ps1
Mise à jour
Sur le serveur de destination, pour tirer la dernière image et redémarrer :
./maj.sh