La refonte de ce matin posait une convention. Une convention qu'on n'outille pas tient tant que quelqu'un y pense : c'est le raisonnement de D-70, applique au corpus documentaire. Etat de depart mesure : 2 documents sur 34 declaraient leur lecteur. Les 32 autres disaient leur SUJET — ce qui avait enfoui le runbook de reprise le plus utile du depot au §6 de autorisation.md. Les 38 le declarent desormais, lecteur determine document par document et non colle au gabarit : l'exploitant (devis, migration de tenant, cycle de vie, gabarit d'or), le mainteneur (conceptions, registres, carte), le lecteur externe (ecosysteme-chezlepro), l'agent IA (MISE-A-JOUR-CODEX-CLAUDE). Deux exemptions DERIVEES, pas listees — un chemin en dur aurait vieilli a la premiere page ajoutee : un document qui s'annonce genere, et un fragment sans titre. Les 13 exemptes verifies un par un ; aucun document ecrit a la main n'est exempte par accident. La preuve ne lit que l'EN-TETE, ce qui empeche frontiere-opnsense.md et plan-et-generation.md — qui parlent de generation dans leur corps — d'etre exemptes a tort. Eprouvee dans les deux sens. Elle a echoue seule des sa premiere execution en nommant deux documents que mon inventaire avait manques (docs/audit/). Puis test negatif delibere : declaration retiree de meta-classe.md -> ECHEC la nommant ; restauree -> OK. Ce qu'elle ne teste pas : que le lecteur declare soit le BON. Ca se juge en revue ; elle garantit qu'on a du y penser. P01–P34. Comptes perimes corriges au passage (AGENTS.md et devis-services.md annoncaient encore 30 preuves). Verifie : prouver.py 0 (34 OK), plan-recette inchange. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.4 KiB
Appliquer le thème Alliance Boréale à une forge Forgejo hors flotte
Pour qui : l'exploitant d'une forge Forgejo hors de la flotte Set-OPS.
Procédure manuelle, pour une instance Forgejo qui n'est pas gérée par Set-OPS — typiquement la forge historique qui héberge ce dépôt et son wiki.
Pour une forge de la flotte (
forge-01), ne rien faire à la main : passerserveur_forgejo_branding: trueet déployer le groupeserveur_forgejo. Le rôle copie exactement les mêmes fichiers.
Ce que ça couvre
Forgejo n'offre aucun réglage web pour le CSS personnalisé : il faut déposer un fichier sur le serveur. Une fois en place, la feuille est injectée sur toutes les pages — dépôts, tickets, code, README et wiki. Le wiki n'a pas de thème distinct, il hérite du même habillage.
Prérequis
- accès root (ou
sudo) sur la machine qui exécute Forgejo ; - connaître le répertoire
customde l'instance ; - une fenêtre où redémarrer le service est acceptable (quelques secondes d'indisponibilité).
Trouver le répertoire custom :
# 1. déclaré explicitement ?
grep -iE '^\s*(CUSTOM_PATH|ROOT)\s*=' /etc/forgejo/app.ini
# 2. ou par la variable d'environnement du service
systemctl show forgejo -p Environment | tr ' ' '\n' | grep -i custom
# 3. défaut usuel des paquets / installs binaires
ls -d /var/lib/forgejo/custom 2>/dev/null
Les fichiers
Les deux fichiers vivent déjà dans ce dépôt — ne pas en faire de copie :
| Fichier du dépôt | Destination sur la forge |
|---|---|
roles/serveur_forgejo/files/custom/public/assets/css/alliance.css |
<custom>/public/assets/css/alliance.css |
roles/serveur_forgejo/files/custom/templates/custom/header.tmpl |
<custom>/templates/custom/header.tmpl |
Optionnels, si l'on veut aussi le logo et la favicon étoile :
files/custom/public/assets/img/{logo,favicon}.svg → <custom>/public/assets/img/.
Pose
Depuis une copie locale du dépôt, en remplaçant FORGE et CUSTOM :
FORGE=root@forge.exemple.ca # hôte de la forge
CUSTOM=/var/lib/forgejo/custom # répertoire custom trouvé plus haut
SRC=roles/serveur_forgejo/files/custom
scp "$SRC/public/assets/css/alliance.css" "$FORGE:/tmp/alliance.css"
Puis sur la forge :
CUSTOM=/var/lib/forgejo/custom
OWNER=git:git # utilisateur du service (souvent git ou forgejo)
install -D -o $OWNER -m 0644 /tmp/alliance.css "$CUSTOM/public/assets/css/alliance.css"
Injecter la feuille — l'étape à ne pas rater
header.tmpl est injecté dans le <head> de toutes les pages.
⚠️ Si le fichier existe déjà, ne pas l'écraser : une autre personnalisation y vit peut-être. Y ajouter la ligne.
CUSTOM=/var/lib/forgejo/custom
LINK='<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/alliance.css?v=1">'
TPL="$CUSTOM/templates/custom/header.tmpl"
if [ -f "$TPL" ]; then
grep -qF 'alliance.css' "$TPL" || printf '%s\n' "$LINK" >> "$TPL"
else
install -D -o git:git -m 0644 /dev/null "$TPL"
printf '%s\n' "$LINK" > "$TPL"
fi
systemctl restart forgejo
Vérifier
# la feuille est servie (200, type CSS)
curl -sI https://forge.exemple.ca/assets/css/alliance.css | head -3
# elle est bien référencée dans le <head> d'une page de wiki
curl -s https://forge.exemple.ca/<proprio>/<depot>/wiki | grep -o 'alliance\.css[^"]*'
À l'œil, sur une page de wiki en thème sombre : fond bleu nuit avec une nappe magenta à droite et verte en bas à gauche, filet d'aurore sous les titres, code en ligne en teal.
Le ciel nocturne ne s'applique qu'aux thèmes sombres (forgejo-dark, forgejo-auto).
En thème clair, seules les couleurs d'accent changent — c'est voulu.
Revenir en arrière
CUSTOM=/var/lib/forgejo/custom
sed -i '/alliance\.css/d' "$CUSTOM/templates/custom/header.tmpl"
rm -f "$CUSTOM/public/assets/css/alliance.css"
systemctl restart forgejo
Après une mise à jour de Forgejo
alliance.css est en deux sections (cf. roles/serveur_forgejo/README.md) :
- §1 Variables — surcharge de variables de couleur officielles. Ne casse pas.
- §2 Décor — s'appuie sur des classes internes (
.markup h1,.markup blockquote…). À revérifier après chaque montée de version majeure. Si quelque chose déraille, supprimer §2 ramène au thème sobre sans rien perdre d'essentiel.