6.2 KiB
📘 Gesthub
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 tableaudit_log, et une suite de 34 tests automatisés (voirweb/tests/). Cette version sert de support technique au dossier de certification RNCP 36463 (CDAN) : voirdocs/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 --buildLancer 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 :
🧱 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 d’annonces 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 automatiqueflask: Application web backendmariadb: Base de donnéeskeycloak: SSO + gestion utilisateursmattermost: Chat et gestion de tâches (type Trello)
Réseau utilisé : gesthub_gesthub
🔐 Authentification Keycloak
✅ Étapes :
-
Création du realm
Gesthub -
Ajout des clients (Flask et Mattermost)
-
Activation
OpenID Connect -
Configuration des Redirect URIs
- Exemples :
- Flask →
https://dashboard.ninolbt.com/login/callback - Mattermost →
https://mattermost.ninolbt.com/signup/openid/complete
- Flask →
- Exemples :
-
Pour les utilisateurs
/admin, on utilise le groupe/admindans 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 d’annonces 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