# 📘 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 : > ```bash > 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`) : > ```bash > 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 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 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 : ```bash 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](https://github.com/mattermost/mattermost/issues/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` : ```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 ```bash docker compose up --build -d ``` Si besoin : ```bash 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