Recensement apres l'echec du passage d'idempotence : 9 get_url sans aucune
garde, 1 avec.
Les quatre artefacts epingles (forgejo, keycloak, nextcloud, oauth2-proxy)
sont immuables PAR CONSTRUCTION — leur chemin de destination porte la version.
Les retelecharger n'a aucun sens, les recontacter encore moins. Gardes par une
verification d'existence.
Restent cinq cles de signature apt et un trousseau .deb, recuperes a chaque
passage : cinq serveurs externes x quatorze hotes = 70 allers-retours par
deploiement. Les garder supprimerait la dependance au prix de ne plus detecter
une rotation ; une cle tournee casse apt bruyamment, donc l'oubli se voit.
Arbitrage a rendre — pas a moi.
Sur une plateforme souveraine la question merite d'etre posee : combien de
serveurs tiers doivent etre joignables pour redeployer ce qu'on possede deja ?
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
oauth2-proxy fonctionne devant Icinga Web 2 : 302 vers Keycloak, qui federe
LDAP. Quatre defauts leves, dont trois du meme motif — un nom construit par
convention d'un cote, declare de l'autre.
1. Le secret de cookie etait en base64 STANDARD. oauth2-proxy decode en
url-safe : le decodage echoue, il retombe sur la chaine brute et se plaint de
sa LONGUEUR, jamais de l'encodage. Garde ajoutee qui refuse + et /.
2. L'issuer etait fabrique (`keycloak.<domaine>`), un nom que rien ne publie.
Le plan expose `auth.<domaine>` — c'est ce nom que le DNS resout et que nginx
sert. Derive desormais du champ `expose`.
3. Keycloak s'annoncait sous ce meme nom invente : « issuer did not match ».
Meme correctif a la source.
4. Le pare-feu est-ouest bloquait l'edge : nginx ne declarait son 443 qu'avec
`pair: externe`, que le devis est-ouest saute (il releve de la frontiere).
Le flux existait d'un seul cote et la matrice etait satisfaite. nginx declare
maintenant aussi son 443 depuis la flotte.
obs-01 et mon-01 deployees. 7 cibles Prometheus up, scrutees en TLS a travers
cinq zones du VRF.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
oauth2-proxy (v7.15.3) place Keycloak devant toute app sans OIDC natif
(auth external, utilisateur via en-tête). Rôle paramétrable, réutilisable.
Éprouvé devant icingaweb2 (backend=external, X-Forwarded-Preferred-Username).
Prouvé : testmail → oauth2-proxy → Keycloak → icingaweb2 /dashboard,
connecté. Ferme le gap LDAP-direct d'icingaweb2.
Réglages appris : insecure_oidc_allow_unverified_email (IdP interne) ;
reverse-proxy passe X-Forwarded-* pas X-Auth-Request-* ; handler nginx en
restart (pas reload) — un changement d'adresse d'écoute n'est pas pris par
un reload gracieux.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>