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

@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
**Funk** — homelab IA composé d'un cluster Kubernetes (Talos) pour les services applicatifs, d'un hôte d'inférence LLM dédié (gpu-01 / llama-server ROCm), et d'un agent autonome (Hermes Agent) sur storage-01. Stack IaC complète : Ansible + talhelper + ArgoCD.
**État actuel (2026-06-23)** :
**État actuel (2026-07-07)** :
- ✅ Hermes Agent opérationnel — multi-profils (funk-ai/system/monitor/brain)
- ✅ Qdrant réparé (2026-06-17) — fin du crash-loop (segment `funk-docs` corrompu, voir `admin/incidents.md`). La collection RAG `funk-docs` a depuis été **reconstruite** (436 chunks, 🟢 green, embeddings nomic-embed-text dim 768) — `rag-query` opérationnel
- ✅ Monitoring complet — Prometheus + Grafana + AlertManager → webhook Hermes + n8n
@ -21,8 +21,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
- ✅ SearXNG opérationnel — `searxng.lab.local`, namespace `ai`, **méta-moteur de recherche web self-host** (privé, in-cluster) consommé par l'outil `web_search` d'Asa (API JSON). Manifests `k8s/apps/searxng/`
- ✅ Ghostfolio opérationnel — `ghostfolio.lab.local`, namespace `ai`, suivi de portefeuille (PostgreSQL s01 + Redis in-cluster)
- ✅ hermes-auto-improve — analyse quotidienne de `admin/` par Hermes à 22h (n8n → trigger :9095), PR sur `hermes/daily-work`
- 🆕 Annuaire + portail consoles (2026-07-06) — **Authentik** (`auth.lab.local`, IdP OIDC) + **Guacamole** (`portail.lab.local`, consoles SSH web vers s01/g01 via user `console` sans sudo), namespace `auth`. Config initiale (admin Authentik, provider OIDC, connexions) : voir `admin/k8s/auth-portal.md`. **Accès Internet** : Authentik = hub utilisateur (`kaya.freeboxos.fr:9081`, page « My applications ») → SSO vers Guacamole (`:9080`) — VIPs MetalLB `.201`/`.202`, rate-limit nftables, URL canonique publique pour tous (hairpin LAN). Admin quotidienne : `admin/k8s/auth-portal-admin.md` ; guide utilisateur : `docs/portail-guide-utilisateur.md`
- 🆕 WireGuard (2026-07-06) — serveur VPN prêt sur s01 (pairs `full`/`portal`, filtrage nftables) mais **dormant** : pas de redirection Freebox `51820/udp` (choix simplicité 2026-07-07, accès portail via `:9080` direct). Voir `admin/infra/wireguard.md`
- **Hub SSO Authentik + domaine public `funklab.online` (HTTPS)** (2026-07-07) — **Authentik** (`auth.funklab.online`, IdP OIDC, ns `auth`) est le hub : page « My applications » → tuiles → **SSO**. Apps exposées en HTTPS (cert Let's Encrypt par sous-domaine, `*.funklab.online`) : **Guacamole** (`portail.`, consoles SSH s01/g01 via user `console` sans sudo), **Grafana** (`grafana.`, lab-admins→Admin), **Open WebUI** (`openwebui.`), **Argo CD** (`argocd.`, lab-admins→admin) — tous OIDC ; **n8n** (`n8n.`, login natif). Groupe transverse **`lab-admins`** = admin partout. Chaîne : DNS OVH `*.funklab.online → 82.67.223.17` → Freebox `80/443` → s01 (DNAT nftables + rate-limit) → **Traefik** (Let's Encrypt HTTP-01, helm hors ArgoCD) ; dnsmasq split-horizon interne. Les ports historiques `kaya.freeboxos.fr:9080/9081` restent un chemin réseau. Docs : `admin/k8s/public-domain.md` (domaine/TLS), `admin/k8s/auth-portal.md` (archi/pièges), `admin/k8s/auth-portal-admin.md` (admin : users, apps, `lab-admins`), `docs/portail-guide-utilisateur.md` (guide users)
- 🆕 WireGuard (2026-07-06) — serveur VPN prêt sur s01 (pairs `full`/`portal`, filtrage nftables) mais **dormant** : pas de redirection Freebox `51820/udp` (l'accès distant passe par le domaine public HTTPS). Voir `admin/infra/wireguard.md`
- ⏳ WOL compute nodes non configuré (BIOS) — allumage manuel requis
Journal de progression : `PROGRESS.md``progress/YYYY-MM-DD.md`
@ -126,6 +126,7 @@ Variables chiffrées dans `ansible/group_vars/all/vault.yml` :
- `vault_console_ssh_private_key` — clé privée SSH des connexions Guacamole (user `console` sur s01/g01)
- `vault_authentik_secret_key`, `vault_authentik_redis_password` — copies de sûreté des valeurs du secret k8s `auth/authentik-secret`
- `vault_wireguard_server_private_key`, `vault_wireguard_peer_private_keys` — clés WireGuard (serveur + dict par pair)
- `vault_grafana_oauth_client_secret`, `vault_openwebui_oauth_client_secret`, `vault_argocd_oidc_client_secret` — secrets clients OIDC des apps du hub (= secrets k8s `monitoring/grafana-oauth-secret`, `ai/open-webui-oauth`, `argocd/argocd-oidc`)
---
@ -186,10 +187,13 @@ k8s/
│ ├── guacamole/ # namespace: auth — portail consoles SSH web s01/g01 (portail.lab.local)
│ └── {external-services}/ # ExternalName/Endpoints pointant vers storage-01 ou gpu-01
└── infra/ # Helm releases (HelmRelease + values.yaml)
├── monitoring/ # kube-prometheus-stack 85.0.2
├── monitoring/ # kube-prometheus-stack 85.0.2 (+ ingressroute-public.yaml grafana)
├── traefik/ # values.yaml (Let's Encrypt) + redirect.yaml — appliqué par helm upgrade
└── nfs-provisioner/
# ⚠️ Traefik + MetalLB ne sont PAS dans k8s/infra/ : ils sont installés via `helm install`
# lors du bootstrap Talos (voir admin/k8s/talos.md), hors pattern App-of-Apps ArgoCD.
# ⚠️ Traefik + MetalLB ne sont PAS gérés par ArgoCD : installés via `helm install/upgrade`
# (Traefik : values versionnées dans k8s/infra/traefik/, cert Let's Encrypt HTTP-01 ;
# MetalLB : bootstrap Talos). Idem ArgoCD lui-même (k8s/argocd-bootstrap/values.yaml).
# Voir admin/k8s/talos.md et admin/k8s/public-domain.md.
```
### Ajouter un nouveau workload k8s