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>
82 lines
4.8 KiB
Markdown
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.
|