SITE-Chezlepro n avait jamais ete rase. La limite qu on repetait partout — l infrastructure d accueil n a jamais ete reconstruite depuis zero — se lisait comme de la prudence. C etait seize defauts que rien d autre n aurait pu reveler. Un locataire naît dans un monde deja peuple : le site lui fournit paquets, noms, genome, heure et depot. Un site n a personne au-dessus, sauf sa frontiere. Onze des seize murs viennent de la. DEUX CAPACITES QUI N EXISTAIENT PAS. make site-raser — rien ne detruisait les machines du site, donc la limite etait un trou d outillage. make forge-amorcer — la forge naît vide et le runner y clone ; l amorcage part du poste, seul endroit qui detienne alors le genome. TROIS GARDES QUI VERIFIAIENT LA FORME. La plus couteuse des familles : elles donnent l apparence d une verification. Le resolveur comparait des adresses au lieu de mesurer si la resolution aboutit, et protegeait ainsi l etat casse. L administration etait reconnue a son port. Un flux a deux paires n obtenait qu une branche. UN ECART DE SECURITE. Le PostgreSQL du site servait le certificat auto-signe de Debian, sans reseaux autorises ni hostssl — invisible tant qu aucun client n exigeait la verification. Le defaut n a pas casse la construction : la construction a revele le defaut. UN ACCES ACCIDENTEL. Celui de l exploitant tenait au chevauchement d adressage que le renumerotage a supprime. Separer les index n a pas cause le probleme, il a retire le hasard qui le masquait. La sequence du premier jour est ecrite : runbooks §9, avec les seize murs et ce que chacun enseigne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
66 lines
3.1 KiB
YAML
66 lines
3.1 KiB
YAML
---
|
|
# 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.
|
|
- sens: ingress
|
|
port: 3000
|
|
protocole: tcp
|
|
pair: edge
|
|
chiffrement: clair
|
|
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)."
|