From 7af7808f48fc73378fea58b905d6c58a250dd9aa Mon Sep 17 00:00:00 2001 From: alkatrazz Date: Tue, 7 Jul 2026 11:40:24 +0200 Subject: [PATCH] =?UTF-8?q?docs(readme):=20section=20=C2=AB=20Acc=C3=A8s?= =?UTF-8?q?=20&=20authentification=20=C2=BB=20+=20index=20admin/=20=C3=A0?= =?UTF-8?q?=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README principal : nouvelle section Authentik/Guacamole (hub SSO, URLs LAN/Internet, user console, VPN dormant), rôles Ansible manquants dans l'arborescence, roadmap et vault mis à jour - admin/README.md : entrées navigation + tables (auth-portal, wireguard, satisfactory) Co-Authored-By: Claude Fable 5 --- README.md | 46 +++++++++++++++++++++++++++++++++++++++++++--- admin/README.md | 8 ++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index aadcc92..2ea66ac 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,37 @@ calling) pour répondre à partir de données réelles. --- +## Accès & authentification + +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. + +``` +Utilisateur ──▶ Authentik (hub + login unique) ──SSO──▶ Guacamole ──SSH──▶ s01 / g01 + (LAN ou Internet) (console dans le navigateur) +``` + +| Service | LAN | Internet | +|---|---|---| +| **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) | + +- **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. + +📖 [Architecture & pièges](admin/k8s/auth-portal.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) + +--- + ## Infrastructure ### Machines @@ -177,7 +208,11 @@ calling) pour répondre à partir de données réelles. │ ├── minio # ⚠️ placeholder vide — service non déployé │ ├── postgresql # Base de données │ ├── qdrant # Base vectorielle -│ └── hermes_auto_improve # Worker analyse doc + trigger server :9095 +│ ├── hermes_auto_improve # Worker analyse doc + trigger server :9095 +│ ├── hermes_exec # Exécuteur d'actions vocales (jeton, :9096) +│ ├── console_user # User `console` sans sudo (consoles SSH du portail) +│ ├── wireguard # VPN accès distant (51820/udp — dormant) +│ └── satisfactory_server # Serveur de jeu dédié sur gpu-01 (:7777) ├── hermes-skills/ # Skills Hermes versionnés │ ├── funk/ │ │ ├── agent-delegation/ # Délégation ask-agent (system/monitor/brain) @@ -196,7 +231,8 @@ calling) pour répondre à partir de données réelles. ├── talos/ # Cluster Kubernetes (talhelper) └── k8s/ # Workloads ArgoCD ├── infra/ # monitoring, nfs-provisioner (Traefik + MetalLB via helm au bootstrap) - └── apps/ # Open WebUI, n8n, STT, SearXNG, Ghostfolio, external-services + └── apps/ # Open WebUI, n8n, STT, SearXNG, Ghostfolio, finlab, + # Authentik + Guacamole (portail, ns auth), external-services ``` --- @@ -256,7 +292,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 : `vault_anthropic_api_key`, `vault_pg_hermes_password`, `vault_pg_litellm_password`, `vault_pg_n8n_password`, `vault_pg_openwebui_password`, `vault_pg_ghostfolio_password`, `vault_postfix_relay_password`, `vault_n8n_api_key`. +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. --- @@ -292,5 +328,9 @@ Elle est gérée automatiquement par le rôle Ansible `llama_server`. - [x] Modèle d'embedding dédié — nomic-embed-text sur gpu-01 `:1238` (utilisé par la mémoire STT **et le RAG**) - [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] VPN WireGuard sur s01 (profils admin/invité) — dormant, prêt à activer - [ ] WOL compute nodes (configuration BIOS) - [ ] Route statique Freebox +- [ ] TLS sur l'exposition Internet (vrai domaine + Let's Encrypt) / MFA Authentik diff --git a/admin/README.md b/admin/README.md index c238bbe..0103e06 100644 --- a/admin/README.md +++ b/admin/README.md @@ -13,6 +13,10 @@ | Voir les métriques / alertes | [k8s/monitoring.md](k8s/monitoring.md) | | Problème réseau / nftables | [infra/reseau.md](infra/reseau.md) | | Problème NFS / stockage | [infra/nfs.md](infra/nfs.md) | +| Gérer les utilisateurs du portail (créer/révoquer/assigner) | [k8s/auth-portal-admin.md](k8s/auth-portal-admin.md) | +| Portail consoles / SSO — architecture & pièges | [k8s/auth-portal.md](k8s/auth-portal.md) | +| Accès distant VPN (WireGuard, dormant) | [infra/wireguard.md](infra/wireguard.md) | +| Serveur de jeu Satisfactory | [ops/satisfactory.md](ops/satisfactory.md) | | Incident passé | [incidents.md](incidents.md) | --- @@ -34,6 +38,7 @@ | [ops/cluster.md](ops/cluster.md) | `funk-start`, `funk-stop`, `funk-status` — démarrage/arrêt cluster complet | | [ops/ansible.md](ops/ansible.md) | Commandes Ansible — ping, apply, vault, debug, facts | | [ops/systeme.md](ops/systeme.md) | Services systemd, logs, ressources, NetworkManager, dnf | +| [ops/satisfactory.md](ops/satisfactory.md) | Serveur dédié Satisfactory sur gpu-01 — accès, saves, pièges | --- @@ -46,6 +51,7 @@ | [infra/dnsmasq.md](infra/dnsmasq.md) | DNS local `lab.local` — résolution, logs, ajout d'entrées | | [infra/ssh.md](infra/ssh.md) | Connexions SSH — alias, jump host, transfert de fichiers | | [infra/email.md](infra/email.md) | Postfix relay — SMTP sortant via Gmail (App Password) | +| [infra/wireguard.md](infra/wireguard.md) | VPN WireGuard sur s01 — accès distant (dormant : pas de redirection Freebox) | --- @@ -59,6 +65,8 @@ | [k8s/n8n.md](k8s/n8n.md) | n8n — automatisation, workflows actifs, credentials | | [k8s/open-webui.md](k8s/open-webui.md) | Open WebUI — chat web, backend LiteLLM | | [k8s/ghostfolio.md](k8s/ghostfolio.md) | Ghostfolio — suivi de portefeuille (PostgreSQL s01 + Redis) | +| [k8s/auth-portal.md](k8s/auth-portal.md) | Authentik + Guacamole — architecture, déploiement, accès Internet, pièges | +| [k8s/auth-portal-admin.md](k8s/auth-portal-admin.md) | Portail — administration : utilisateurs, machines, apps du hub, révocation | | [k8s/k9s.md](k8s/k9s.md) | k9s — TUI de gestion du cluster | ---