Set-OPS-Public/roles/serveur_forgejo
Daniel Allaire bef0655112 le site reconstruit depuis zero : 7/7, 0 echec, et seize corrections
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
2026-09-12 19:08:31 -04:00
..
defaults frontiere posee, et cinq sondes qui disaient faux 2026-09-10 10:27:12 -04:00
files forgejo : epingle 16.0.2, et le verificateur accepte la cle PRIMAIRE 2026-08-11 01:04:16 -04:00
handlers Rendre le dry-run (--check) fiable sur les rôles applicatifs 2026-07-01 21:01:53 -04:00
meta le site reconstruit depuis zero : 7/7, 0 echec, et seize corrections 2026-09-12 19:08:31 -04:00
tasks sondes : les six premieres, et le patron qui les rend eprouvables 2026-09-10 02:48:55 -04:00
templates frontiere posee, et cinq sondes qui disaient faux 2026-09-10 10:27:12 -04:00
README.md forgejo : apprendre SQLite, et retirer ce qui ne servait pas 2026-08-22 13:10:05 -04:00

serveur_forgejo

Forge Git Forgejo (binaire officiel) — dépôts Git, CI, revue de code.

Rôle

  • Installe le binaire Forgejo (version épinglée, lien symbolique courant), utilisateur git.
  • Crée l'arborescence (/var/lib/forgejo, /etc/forgejo).
  • Base PostgreSQL via le registre (instance/plan/bases-donnees.yml, entrée forgejo).
  • app.ini : serveur derrière nginx (HTTP_ADDR=127.0.0.1, ROOT_URL https), DB, secrets, mailer vers serveur_postfix, inscription désactivée, INSTALL_LOCK (pas d'assistant web).
  • Service systemd + création du compte administrateur initial (une fois).

Secrets requis (Vault)

serveur_forgejo_secret_key: "{{ vault_forgejo_secret_key }}"        # forgejo generate secret SECRET_KEY
serveur_forgejo_internal_token: "{{ vault_forgejo_internal_token }}" # forgejo generate secret INTERNAL_TOKEN
serveur_forgejo_admin_password: "{{ vault_forgejo_admin }}"
vault_bd_forgejo: "..."   # mot de passe BD (partage avec serveur_postgresql)

Variables principales

Variable Défaut Rôle
serveur_forgejo_version 10.0.0 Version (à vérifier/bumper)
serveur_forgejo_hostname forge.exemple.internal Domaine (via nginx)
serveur_forgejo_db_host 10.0.13.11 data-01

Identité visuelle (thème Alliance Boréale)

Désactivée par défaut : serveur_forgejo_branding: false. À true, le rôle copie files/custom/ vers {{ serveur_forgejo_data }}/custom/ — logo, favicon, page d'accueil et la feuille public/assets/css/alliance.css, injectée sur toutes les pages par templates/custom/header.tmpl.

Le wiki n'a donc pas de thème distinct : Forgejo le rend avec le même habillage, et la feuille le couvre au même titre que les dépôts, les tickets et les README.

alliance.css est en deux sections, de risque différent :

Section Contenu Risque État
§1 Variables surcharge des variables de couleur officielles (--color-primary, --color-body…) Sûr — aucune classe interne touchée, résiste aux mises à jour Éprouvé sur forge-01 (CHANGELOG 2026-07-03 : alliance.css servi, cyan aurore rendu)
§2 Décor fond aurore (body), filet sous les titres, citations, tableaux et code en ligne du contenu rendu (.markup) Fragile — sélecteurs internes de Forgejo, à revérifier après chaque montée de version majeure Jamais rendu — ajouté le 2026-07-21, validé en syntaxe CSS seulement

Supprimer §2 ramène au thème sobre d'origine : §1 se suffit à elle-même.

Le ciel nocturne ne s'applique qu'aux thèmes sombres (theme-forgejo-dark, theme-forgejo-auto) pour ne pas casser le thème clair.

Pour une forge hors flotte (instance Forgejo non gérée par Set-OPS), la pose manuelle des mêmes fichiers est décrite dans docs/theme-forgejo-hors-flotte.md.

Notes / limites

  • Version à confirmer sur forgejo.org/download ; l'URL suit le motif officiel des releases.
  • Le site nginx publiant Forgejo se déclare côté serveur_nginx.
  • Mailer en SMTP simple vers le relais interne (sans TLS pour l'instant).
  • forge-01 a existé, puis a été supprimée. L'hôte est donc etat: planifie dans instance/plan/serveurs.yml (état actuel) alors que CHANGELOG.md (2026-07-03) affirme le branding « prouvé sur forge-01 » (état passé, accueil 200, alliance.css servi). Les deux disent vrai : ce n'est pas une contradiction, c'est un enregistrement historique face à un état courant. La preuve reste valable — elle ne sera simplement rejouable qu'après recréation de l'hôte.

Prérequis

  • Dépendances serveur_postgresql, serveur_nginx, serveur_postfix (cf. docs/dependances-groupes.yml).

Quelle base de données — serveur_forgejo_bd

Valeur Ce que ça donne
postgres (défaut) la base vit dans le registre du plan, sur un serveur dédié : une VM, une zone, un secret, une sauvegarde
sqlite un fichier sous serveur_forgejo_data — aucun serveur, aucun secret de base, aucune entrée au registre

sqlite est le défaut documenté de Forgejo pour une petite instance. Il a été ajouté le 2026-08-22 parce qu'une offre forge destinée à un petit organisme exigeait une VM PostgreSQL entière pour une base que trois personnes sollicitent.

Ce que ça change ailleurs : rien. Le job de sauvegarde serveur_forgejo emporte déjà serveur_forgejo_data, où le fichier se trouve. Et P35 lit l'interrupteur : elle n'attend aucune entrée de registre quand la base est un fichier.

Une valeur inconnue est refusée au début du rôle, plutôt que de retomber en silence sur PostgreSQL — qui déploierait le contraire de ce qu'on croyait choisir.