--- # Flux réseau de Forgejo (forge Git). Voir docs/flux-conception.md. flux: # LE PORT DE LA FORGE N'EST PAS LE MÊME PARTOUT (2026-08-25). # # `3000` est le port qu'elle écoute DERRIÈRE un edge, en clair : le nginx termine le TLS # et lui parle sur la boucle locale. C'était vrai de toutes les forges tant qu'il y avait # toujours un edge devant. # # La forge du SITE n'en a pas — le site n'a pas d'edge — et sert son propre TLS sur le # port du schéma, `443`. Écrire `3000` en dur ici serait donc devenu faux pour elle, # sans que rien ne le signale : ce flux ne traverse pas la frontière, donc aucun devis # ne s'en plaint. Une déclaration fausse qui ne gêne personne est une déclaration qui # dérive jusqu'au jour où quelqu'un s'y fie. # # `derive` dit la vérité : le port vient de `serveur_forgejo_http_port`, et # `verifier_ports` sait qu'il n'y a pas d'écoute fixe à comparer. # DEUX ENTREES, PARCE QUE CE SONT DEUX SITUATIONS — pas une ligne qui dirait « ça # dépend ». Le vocabulaire des flux n'a pas de mot pour l'indécision, et c'est tant # mieux : un flux se lit pour savoir ce qui circule et comment. Une valeur ambiguë # rendrait l'audit impossible sans aller lire le déploiement. # # ET LA SITUATION SE LIT DANS LE REGLAGE (2026-09-30) : la premiere seulement si la forge ne # sert pas son propre TLS. Au site (`serveur_forgejo_tls: true`), elle ecoute 443 et rien # sur 3000 ; la regle restait posee parce que le site a un edge — et la sonde # `connectivite` la montrait coupee chaque minute. - sens: ingress port: 3000 protocole: tcp pair: edge chiffrement: clair seulement_si: {variable: serveur_forgejo_tls, egal: false} raison: >- Interface web + Git HTTP derrière un edge : le nginx termine le TLS et parle en clair à la forge. C'est le cas de tout tenant. - sens: ingress port: derive protocole: tcp # `admin` EN PLUS DE `flotte` (2026-09-12). Sans edge devant elle, la forge du SITE # n'etait joignable que par les machines de l'ecosysteme — jamais par l'exploitant. # Ca passait inapercu tant que son plan d'administration vivait dans le supernet d'un # locataire, que les expositions acceptent deja. Une fois le site sorti de ce # supernet, l'exploitant ne pouvait plus ni amorcer sa forge ni y pousser le genome. # # `admin` se resout depuis `nftables_admin_ssh` : un ecosysteme qui ne declare aucun # administrateur n'emet aucune regle, et c'est le comportement voulu — une source # vide ouvrirait le port a tous. pair: [flotte, admin] chiffrement: tls raison: >- Sans edge devant elle — la forge du SITE — elle sert son propre TLS sur le port du schéma (443), avec le certificat de la machine. `derive` parce que le port vient de `serveur_forgejo_http_port` : écrire 3000 en dur ici serait faux pour elle, et rien ne le signalerait puisque ce flux ne traverse pas la frontière. - sens: egress port: 5432 protocole: tcp pair: serveur_postgresql chiffrement: tls-requis raison: "Base de données Forgejo (verify-full)." - sens: egress port: 25 protocole: tcp pair: serveur_postfix chiffrement: starttls raison: "Notifications courriel (relais via le MTA Postfix)." - sens: egress port: 443 protocole: tcp pair: edge chiffrement: tls-requis raison: "Découverte OIDC et jetons auprès de Keycloak (via son FQDN publié à l'edge)."