Set-OPS-Public/roles/serveur_forgejo/README.md
Daniel Allaire aab1bcc83a doc : rangee par lecteur, trois portes d'entree (architecture, setup, usage) et un index
README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas
Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index).
Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis.
QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires.

Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous-
dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:01:54 -04:00

82 lines
4.8 KiB
Markdown

# 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)
```yaml
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/exploitation/theme-forgejo-hors-flotte.md`](../../docs/exploitation/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.