45c89821782ff9f7b417f6b941408f71f0b9591d
📘 Gesthub
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.
🌐 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
Description
Languages
Python
33.3%
CSS
32%
JavaScript
24.8%
HTML
9.3%
Dockerfile
0.6%