docs: hub SSO complet sur le domaine public funklab.online (HTTPS) (#94)

Met à jour toute la doc pour l'état final du 2026-07-07 :
- CLAUDE.md : état actuel (hub SSO + domaine/TLS), rôle Traefik versionné,
  secrets OIDC au vault, date
- README : section « Accès & authentification » réécrite (5 apps sur le
  domaine, chaîne DNS/Freebox/Traefik, lab-admins), roadmap, vault
- public-domain.md : tableau des apps déployées (URL, auth, redirect_uri)
  + modes d'intégration (OIDC / Proxy Provider / route seule)
- auth-portal.md : section « Accès externe » → domaine HTTPS (URLs à jour)
- auth-portal-admin.md : URL admin + pièges (slug/discovery 404 ArgoCD)
- guide utilisateur + index admin/ : URLs funklab.online

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-07-07 17:53:22 +02:00 committed by GitHub
parent 502403d0f9
commit a13b5a70cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 92 additions and 55 deletions

View file

@ -133,25 +133,32 @@ calling) pour répondre à partir de données réelles.
L'identité est centralisée dans **Authentik** (IdP OIDC, namespace k8s `auth`) : chaque
personne a **un seul compte**, et sa page « **My applications** » sert de portail — une
tuile par application autorisée, SSO automatique au clic.
tuile par application autorisée, **SSO** automatique au clic. Tout est exposé sur le
domaine public **`funklab.online`** en **HTTPS** (certificats Let's Encrypt).
```
Utilisateur ──▶ Authentik (hub + login unique) ──SSO──▶ Guacamole ──SSH──▶ s01 / g01
(LAN ou Internet) (console dans le navigateur)
Utilisateur ──▶ auth.funklab.online (hub + login unique) ──SSO──▶ app.funklab.online
(LAN ou Internet) (Guacamole, Grafana…)
```
| Service | LAN | Internet |
| Application | URL publique (HTTPS) | Auth |
|---|---|---|
| **Authentik** — hub + annuaire | `http://auth.lab.local` | `http://kaya.freeboxos.fr:9081` |
| **Guacamole** — consoles SSH web | via la tuile du hub | `http://kaya.freeboxos.fr:9080` (via la tuile) |
| **Authentik** — hub + annuaire | `auth.funklab.online` | — |
| **Guacamole** — consoles SSH s01/g01 | `portail.funklab.online` | SSO |
| **Grafana** — dashboards | `grafana.funklab.online` | SSO (`lab-admins`→Admin, sinon Viewer) |
| **Open WebUI** — chat IA | `openwebui.funklab.online` | SSO |
| **Argo CD** — GitOps | `argocd.funklab.online` | SSO (`lab-admins`) |
| **n8n** — automatisation | `n8n.funklab.online` | login natif |
- **Chaîne réseau** : DNS OVH `*.funklab.online → 82.67.223.17` → Freebox `80/443` → s01
(DNAT nftables + rate-limit) → **Traefik** (Let's Encrypt HTTP-01) → l'app. En interne,
dnsmasq résout `*.funklab.online → Traefik` (mêmes URLs sur le LAN, split-horizon).
- **Groupe `lab-admins`** : admin dans toutes les apps ; les autres comptes = accès simple.
- **Accès aux machines** : Guacamole ouvre un terminal SSH **dans le navigateur** vers
storage-01 / gpu-01, sous l'utilisateur **`console`** (sans sudo, clé dédiée — rôle
Ansible `console_user`). Les accès sont assignés par utilisateur et journalisés.
- **Exposition Internet** : redirections Freebox `9081`/`9080` → s01 → DNAT nftables
(rate-limité) → VIPs MetalLB dédiées. Authentification obligatoire dès la porte.
- **Alternative VPN** : un serveur **WireGuard** est prêt sur s01 (profils admin/invité,
filtrage nftables par pair) mais **dormant** — aucune redirection Freebox active.
Ansible `console_user`). Accès assignés par utilisateur et journalisés.
- **Alternative VPN** : un serveur **WireGuard** est prêt sur s01 (profils admin/invité)
mais **dormant** — l'accès distant passe par le domaine public.
### En images
@ -163,6 +170,7 @@ Le parcours utilisateur, du login à la console :
| Login unique. | Une tuile par app autorisée → clic = SSO. | Clic sur une machine → terminal SSH dans le navigateur. |
📖 [Architecture & pièges](admin/k8s/auth-portal.md) ·
🌐 [Domaine public + HTTPS](admin/k8s/public-domain.md) ·
🛠️ [Administration (utilisateurs, apps du hub)](admin/k8s/auth-portal-admin.md) ·
👤 [Guide utilisateur à distribuer](docs/portail-guide-utilisateur.md) ·
🔐 [WireGuard](admin/infra/wireguard.md)
@ -301,7 +309,7 @@ ansible-vault encrypt ansible/group_vars/all/vault.yml
ansible-vault edit ansible/group_vars/all/vault.yml
```
Variables stockées dans le vault : clé API Anthropic, mots de passe PostgreSQL (hermes, litellm, n8n, openwebui, ghostfolio, authentik, guacamole), App Password Gmail, clé API n8n, jeton hermes-exec, clé SSH du user `console`, secrets Authentik (copies des secrets k8s) et clés WireGuard. Liste exhaustive : `CLAUDE.md` § Secrets Ansible Vault.
Variables stockées dans le vault : clé API Anthropic, mots de passe PostgreSQL (hermes, litellm, n8n, openwebui, ghostfolio, authentik, guacamole), App Password Gmail, clé API n8n, jeton hermes-exec, clé SSH du user `console`, secrets Authentik (copies des secrets k8s), **secrets clients OIDC des apps du hub** (grafana, openwebui, argocd) et clés WireGuard. Liste exhaustive : `CLAUDE.md` § Secrets Ansible Vault.
---
@ -338,8 +346,10 @@ Elle est gérée automatiquement par le rôle Ansible `llama_server`.
- [x] Réparer Qdrant — crash-loop résolu 2026-06-17 ; collection `funk-docs` **reconstruite** depuis (436 chunks)
- [x] Re-ingérer le RAG (`rag-ingest`) **basculé sur l'embedding dédié `:1238`** (dim 768)
- [x] Serveur dédié Satisfactory sur gpu-01 (`kaya.freeboxos.fr:7777`, IPv4 full-stack)
- [x] Annuaire **Authentik** + portail consoles **Guacamole** (SSO, namespace `auth`) — hub utilisateur exposé sur Internet (`:9081`/`:9080`, rate-limité)
- [x] Annuaire **Authentik** + portail consoles **Guacamole** (SSO, namespace `auth`)
- [x] VPN WireGuard sur s01 (profils admin/invité) — dormant, prêt à activer
- [x] **Domaine public `funklab.online` + HTTPS** (Let's Encrypt HTTP-01 sur Traefik, DNS OVH wildcard, Freebox 80/443)
- [x] **Hub SSO complet** : Grafana, Open WebUI, Argo CD en OIDC + n8n (login natif) sur `*.funklab.online` ; groupe `lab-admins` = admin partout
- [ ] WOL compute nodes (configuration BIOS)
- [ ] Route statique Freebox
- [ ] TLS sur l'exposition Internet (vrai domaine + Let's Encrypt) / MFA Authentik
- [ ] MFA/TOTP Authentik (durcissement)
- [ ] Proxy Provider Authentik pour exposer les apps sans login (Prometheus, Alertmanager, SearXNG)