46298871fb
chore(forgejo): archive le mot de passe admin break-glass au vault + doc ( #98 )
...
- vault_forgejo_admin_password (compte local forgejo-admin, accès de secours)
- doc : note DISABLE_REGISTRATION, section break-glass, su-exec git obligatoire
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 23:51:35 +02:00
224c06041e
feat(forgejo): Git self-host en miroir de GitHub (git.funklab.online, SSO Authentik) ( #96 )
...
- k8s/apps/forgejo : deployment (image forgejo:11, config par env), service, PVC nfs,
IngressRoute interne (git.lab.local) + publique (git.funklab.online + middlewares
security-headers/ratelimit), Application ArgoCD (ns ai, recurse)
- base PostgreSQL `forgejo` sur storage-01 (rôle postgresql)
- vault : vault_pg_forgejo_password + vault_forgejo_oauth_client_secret
- doc admin/k8s/forgejo.md (archi, OIDC, création du miroir, pièges) + index + CLAUDE.md
GitHub reste la source de vérité (pull-mirror lecture seule) — ArgoCD inchangé.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 23:20:33 +02:00
502403d0f9
chore(vault): archive le secret OIDC ArgoCD ( #93 )
...
vault_argocd_oidc_client_secret (= secret k8s argocd/argocd-oidc). Différé
lors de la PR #92 pour éviter un conflit d'encrypted blob avec #91 ; ajouté
maintenant que les deux sont mergées.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 17:33:24 +02:00
5e70e72719
feat(apps): Open WebUI (OIDC) + n8n sur le domaine public HTTPS ( #91 )
...
- open-webui : SSO OIDC Authentik (app openwebui) + route
openwebui.funklab.online. Secret vault_openwebui_oauth_client_secret
(= secret k8s ai/open-webui-oauth). Nouveaux comptes en rôle 'user'.
- n8n : route n8n.funklab.online (garde son propre login ; route interne
n8n.lab.local conservée pour le webhook AlertManager)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 17:17:18 +02:00
514cb89579
feat(grafana): SSO OIDC via Authentik + admin par groupe lab-admins ( #86 )
...
- values.yaml monitoring : auth.generic_oauth (auth_url navigateur,
token/api sur le Service interne), root_url, mapping lab-admins→Admin /
sinon Viewer. Login local conservé (break-glass).
- vault : vault_grafana_oauth_client_secret (= secret k8s
monitoring/grafana-oauth-secret, déjà créé)
- doc : runbook « ajouter une app » complété (exemple Grafana concret +
groupe lab-admins) et procédure SQL pour promouvoir un compte SSO admin
Guacamole (appliquée à Alkatrazz)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:11:00 +02:00
bc0e1dd53e
feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) ( #80 )
...
- rôle wireguard : serveur wg0 (10.99.0.0/24) sur storage-01, profils
clients générés dans /etc/wireguard/clients/ (fichier .conf / QR code)
- gateway : filtrage nftables par pair — full (tout le lab) / portal
(uniquement Traefik :80 = portail Guacamole), masquerade VPN→cluster
- dnsmasq : bind-dynamic + écoute wg0 → *.lab.local résolu dans le tunnel
- pairs initiaux : alkatrazz (full), invite-01 (portal)
- vault : clés WireGuard + reprise de l'archive Authentik (remplace #78 )
- doc : admin/infra/wireguard.md (onboarding pair, pièges, exploitation)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:11:43 +02:00
8137830e53
chore(vault): archive secret-key et mdp Redis Authentik ( #78 )
...
Ces deux valeurs ne vivaient que dans le secret k8s auth/authentik-secret
(etcd single control-plane, sans backup) — copie de sûreté dans le vault.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:48:28 +02:00
87b786eb57
feat(auth): annuaire Authentik + portail consoles Guacamole ( #76 )
...
- k8s/apps/authentik : IdP OIDC (auth.lab.local), namespace auth —
server + worker 2026.5.3, Redis in-cluster, PG sur storage-01, PVC media
- k8s/apps/guacamole : portail consoles SSH web s01/g01 (portail.lab.local) —
guacd + webapp 1.6.0, SSO OIDC vers Authentik, Job initdb idempotent
- ansible : rôle console_user (user sans sudo pour les consoles, s01 + g01),
bases PG authentik/guacamole, secrets vault (mdp PG + clé SSH console)
- doc : admin/k8s/auth-portal.md (déploiement, config initiale, pièges)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 21:24:46 +02:00
f0e33c1121
feat(stt): active les actions via Hermes (STT_ACTIONS_ENABLED=true) ( #43 )
...
* feat(stt): active les actions via Hermes (STT_ACTIONS_ENABLED=true)
hermes-exec déployé sur storage-01 (:9096) + secret k8s stt-server-secrets/hermes-exec-token
en place → on active le contexte « agent ». Après déploiement ArgoCD, le contexte
🤖 Agent apparaît dans le sélecteur et les actions (avec confirmation) sont opérationnelles.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs: journal 2026-06-21 + état STT (portail, contextes, intents, actions Hermes)
- progress/2026-06-21.md : récap complet de la journée (portail + santé live, contextes
visualiseur + presets live, intents vocaux, jeton Ghostfolio unifié, actions via Hermes,
ASR Parakeet) + l'incident de merge des PR empilées et sa leçon.
- PROGRESS.md : ligne du jour.
- CLAUDE.md : « État actuel » daté 2026-06-21, ligne STT enrichie.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(vault): ajoute vault_hermes_exec_token (jeton actions hermes-exec, chiffré)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 04:09:35 +02:00
4f1c03df08
feat(ghostfolio): suivi de portefeuille sur k8s (PG s01 + Redis)
...
Nouvel app ArgoCD ghostfolio (namespace ai) : suivi/analyse de portefeuille
boursier. Base PostgreSQL dédiée sur storage-01, Redis in-cluster pour le cache.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:04:19 +02:00
ddff71a0fb
chore(vault+ansible): clé API n8n dans vault + cleanup rôle hermes_auto_improve
...
- vault.yml : ajout vault_n8n_api_key (clé API n8n "claude", label n8n UI)
- hermes_auto_improve tasks : retirer déploiement timer/service daily (scheduling via n8n)
- hermes_auto_improve handlers : retirer handler Reload systemd daemon (inutilisé)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 14:01:46 +02:00
alkatrazz
144c522096
chore: mettre à jour vault Gmail + RAG 339 chunks
...
- vault: App Password Gmail mis à jour pour postfix_relay
- CLAUDE.md: RAG 284 → 339 chunks (ajout docs n8n + open-webui)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:17:08 +02:00
alkatrazz
8da92cb721
feat(postfix): relay SMTP Gmail + suppression règles Conan nftables
...
- postfix_relay: switch Brevo → Gmail SMTP (smtp.gmail.com:587, App Password)
- smtp_generic_maps: réécriture expéditeur root@lab.local → aliyesilkaya93@gmail.com
- nftables: suppression DNAT/NAT Conan Exiles (ports 7777/7778/27015)
- gateway handler: reloaded → restarted (flush complet des règles nft)
- hermes_agent: pip → uv pour installation qdrant-client (venv sans pip binaire)
- CLAUDE.md: corrections funk-cluster, hermes-switch, RAID5, postfix
- docs: admin/infra/email.md — procédure complète relay Gmail
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 16:46:42 +02:00
alkatrazz
b3fce8af5d
feat: initial commit — Ansible roles storage-01/gpu-01 opérationnels
2026-05-12 17:17:03 +02:00