Files
gesthub/README.md
2026-08-21 09:12:02 +02:00

6.2 KiB
Raw Blame History

📘 Gesthub

last-commit

English README

Version v2 (août 2026). Le code a été réorganisé en architecture par couches (routes/, services/, models/), avec les modules Annonces, Fichiers et Planning, une table audit_log, et une suite de 34 tests automatisés (voir web/tests/). Cette version sert de support technique au dossier de certification RNCP 36463 (CDAN) : voir docs/ pour le dossier technique complet (docs/Dossier_technique_GestHub_v2.docx) et les preuves réelles (docs/evidence/ : sorties pytest/flake8/radon, captures d'écran, schémas d'architecture).

Démarrage rapide :

cp web/.env.example web/.env   # renseigner les vraies valeurs
docker compose up -d --build

Lancer les tests (nécessite une base MariaDB de test accessible, voir web/tests/conftest.py) :

cd web && pip install -r requirements.txt
TEST_DB_NAME=gesthub_test DB_USER=... DB_PASSWORD=... DB_HOST=... pytest tests/ -v

Construit avec les outils et les technologies nécessaires :

Flask JSON Keycloak GNU%20Bash MariaDB
Docker Python Mattermost

🧱 Objectif

Créer un site web multi-services (extranet/intranet) avec :

  • Authentification centralisée via Keycloak
  • Reverse proxy Caddy
  • Frontend/backend Flask
  • Chat & Gestion de tâches via Mattermost
  • Gestion dannonces via JSON avec droits /admin (a faire)

🐳 Démarrage du projet

1. Structure Docker

Les services sont définis dans docker-compose.yml :

  • caddy: Reverse proxy + HTTPS automatique
  • flask: Application web backend
  • mariadb: Base de données
  • keycloak: SSO + gestion utilisateurs
  • mattermost: Chat et gestion de tâches (type Trello)

Réseau utilisé : gesthub_gesthub


🔐 Authentification Keycloak

Étapes :

  1. Création du realm Gesthub

  2. Ajout des clients (Flask et Mattermost)

  3. Activation OpenID Connect

  4. Configuration des Redirect URIs

    • Exemples :
      • Flask → https://dashboard.ninolbt.com/login/callback
      • Mattermost → https://mattermost.ninolbt.com/signup/openid/complete
  5. Pour les utilisateurs /admin, on utilise le groupe /admin dans Keycloak.


🍓 Déploiement sur Raspberry Pi (ARM64)

GestHub v2 est prévu pour tourner sur un Raspberry Pi (4 ou 5) avec un OS 64 bits (Raspberry Pi OS 64-bit / Ubuntu Server 64-bit). Vérifier avant tout :

uname -m          # doit afficher aarch64 (sinon : réinstaller l'OS en 64-bit)
docker --version  # installer via https://get.docker.com si absent

Toutes les images de docker-compose.yml sont des images officielles multi-arch (Caddy, MariaDB, Postgres, Keycloak) — Docker sélectionne automatiquement la variante arm64 au pull, rien à changer. Seule exception : mattermost/mattermost-team-edition n'est publiée qu'en linux/amd64 (pas d'image ARM officielle à ce jour — voir mattermost/mattermost#21979). Le compose utilise donc un build communautaire équivalent, ngrie/mattermost-team-edition-arm, à la même version — voir le commentaire dans docker-compose.yml. Sur un hôte amd64 (CI, poste de dev), repasser à l'image officielle mattermost/mattermost-team-edition:9.11.

RAM : la stack complète (Caddy + Flask + MariaDB + Keycloak + 2×Postgres

  • Mattermost) tourne simultanément — prévoir un Pi avec 4 Go de RAM minimum, 8 Go conseillés, et un stockage sur SSD/carte SD rapide (les volumes MariaDB/Postgres sont sensibles aux I/O lentes d'une carte SD classique).

🌐 Reverse Proxy Caddy

🛠️ Caddyfile :

https://dashboard.ninolbt.com {
    reverse_proxy flask:5000
}

https://keycloak.ninolbt.com {
    reverse_proxy keycloak:8080
}

https://mattermost.ninolbt.com {
    reverse_proxy mattermost:8065
}

Volumes persistants :
caddy_data et caddy_config montés dans /data et /config


🧩 Flask

  • back du dashboard
  • Permet la création/modification/suppression dannonces en JSON (en test)
  • Accessible uniquement pour les utilisateurs avec le rôle /admin (via token) (en test)
  • Chargement des assets statiques corrigé avec Caddy

🗂️ Gestion des droits

  • Auth via Keycloak pour Flask, Mattermost, Wekan
  • Vérification des groupes dans Flask (/admin)
  • Redirections correctes avec URLs HTTPS Caddy

📌 Bugs et corrections

  • ⚠️ Redirection Keycloak incorrecte → Corrigé avec bon redirect_uri
  • ⚠️ Assets statiques Flask → corrigé via URL absolue en HTTPS
  • Reverse proxy fonctionne avec tous les services
  • HTTPS opérationnel via Caddy avec certificats Let's Encrypt

🚀 Démarrage

docker compose up --build -d

Si besoin :

docker compose logs -f [service]

📤 Export complet

Pour rendre le projet exportable :

  • Tout est containerisé (Docker)
  • Config Keycloak exporté (JSON disponible dans le dossier export_keycloak)
  • docker-compose.yml, Caddyfile, fichier disponible dans le repo