# đ 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 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.
---
## đ 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