Bruno Charest 5bc12d0729
Some checks failed
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
Add terminal session management with heartbeat monitoring, idle timeout detection, session reuse logic, and command history panel UI with search and filtering capabilities
2025-12-18 13:49:40 -05:00
..

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: 1440 pour 24h).
  • SSH_USER : L'utilisateur pour les connexions Ansible.
  • NTFY_* : La configuration des notifications (optionnel).

Flux de login dans un déploiement Docker

  1. Démarrer la stack

    docker compose up -d --build
    
  2. 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"
      }'
    
  3. 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)
    
  4. Appeler l'API depuis lextérieur du container :

    curl -H "Authorization: Bearer $TOKEN" http://localhost:8008/api/hosts
    

Note : Dès quun utilisateur existe dans la base, les appels avec X-API-Key ne sont plus autorisés. Toute lAPI 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_HOST
  • REGISTRY_PORT
  • IMAGE_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