Le runbook promettait cette rotation ; le code ne savait pas la faire. Les trois roles ne posaient le mot de passe qu'a la CREATION — regenerer la voute aurait produit le mensonge silencieux corrige toute la journee. Chaque role sait desormais CHANGER un mot de passe existant, idempotent par empreinte du secret applique. Pour Nextcloud le secret passe par l'environnement, pas par la ligne de commande ou il serait visible dans la table des processus. `grafana-cli` ecrivait dans une base FANTOME en annoncant « changed successfully » a chaque fois : il prend `paths.data` a `<homepath>/data`, le paquet Debian range la base dans /var/lib/grafana. Demasque par le champ `updated` du compte, reste a l'heure du deploiement initial malgre quatre reinitialisations « reussies ». Un message de succes n'est pas une preuve ; l'etat l'est. Verifie par authentification reelle : Grafana 200, Nextcloud 200. Forgejo ferme l'API par doctrine (D-41) — seule preuve disponible : le retour de la commande. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
87 lines
5 KiB
YAML
87 lines
5 KiB
YAML
---
|
|
# Version Forgejo : verifier/ajuster sur https://forgejo.org/download/
|
|
serveur_forgejo_version: "10.0.0"
|
|
serveur_forgejo_url: >-
|
|
https://codeberg.org/forgejo/forgejo/releases/download/v{{ serveur_forgejo_version }}/forgejo-{{ serveur_forgejo_version }}-linux-amd64
|
|
|
|
serveur_forgejo_binaire: "/usr/local/bin/forgejo"
|
|
serveur_forgejo_utilisateur: "git"
|
|
serveur_forgejo_data: "/var/lib/forgejo"
|
|
serveur_forgejo_config_dir: "/etc/forgejo"
|
|
serveur_forgejo_config: "/etc/forgejo/app.ini"
|
|
serveur_forgejo_service: "forgejo"
|
|
|
|
# Publication (derriere serveur_nginx, TLS a l'edge).
|
|
serveur_forgejo_hostname: "forge.{{ domaine_interne }}"
|
|
|
|
# --- Identité visuelle (branding, léger). serveur_forgejo_branding=true déploie le
|
|
# dossier custom/ (logo, favicon, accent aurore CSS, page d'accueil brandée).
|
|
serveur_forgejo_app_name: "Forgejo"
|
|
serveur_forgejo_theme: "forgejo-auto"
|
|
serveur_forgejo_meta_description: "Forge git souveraine."
|
|
serveur_forgejo_branding: false
|
|
# Adresse d'ecoute : 0.0.0.0 car l'edge nginx est sur un AUTRE hote (le distant doit
|
|
# joindre le backend). A restreindre par pare-feu (nftables) au reseau interne / a l'edge.
|
|
serveur_forgejo_http_addr: "0.0.0.0"
|
|
serveur_forgejo_http_port: 3000
|
|
|
|
# Base de donnees : resolue depuis le registre par le groupe consommateur.
|
|
serveur_forgejo_groupe: "serveur_forgejo"
|
|
serveur_forgejo_db_host: "" # dérivé (FQDN) par resoudre_base au déploiement
|
|
|
|
# Relais courriel.
|
|
serveur_forgejo_smtp: "infra-mail-01.{{ domaine_interne }}"
|
|
|
|
# Secrets OBLIGATOIRES (Ansible Vault).
|
|
serveur_forgejo_secret_key: "{{ vault_forgejo_secret_key | default('') }}" # rempli depuis la voute (vault_forgejo_secret_key)
|
|
serveur_forgejo_internal_token: "{{ vault_forgejo_internal_token | default('') }}" # rempli depuis la voute (vault_forgejo_internal_token)
|
|
serveur_forgejo_admin_user: "forgejo-admin"
|
|
serveur_forgejo_admin_email: "admin@{{ domaine_interne }}"
|
|
serveur_forgejo_admin_password: "{{ vault_forgejo_admin | default('') }}" # rempli depuis la voute (vault_forgejo_admin)
|
|
|
|
# --- Connexion locale (accès de secours) ---
|
|
# `false` = le formulaire identifiant/mot de passe n'est PAS proposé au repos ; le SSO
|
|
# Keycloak est le seul chemin annoncé. Le compte local continue d'exister : on l'atteint
|
|
# par `sudo` sur l'hôte (voir docs/authentification.md), qui est le mécanisme de secours
|
|
# retenu. Une porte de connexion ouverte en permanence contournerait la politique de mot
|
|
# de passe, le MFA et surtout la révocation centrale — désactiver quelqu'un dans LDAP
|
|
# laisserait le compte local valide, sans que rien ne le signale.
|
|
# Forgejo : `ENABLE_INTERNAL_SIGNIN` n'existe QUE depuis la v10 — verifie sur le
|
|
# suivi amont (issue 7476, close : « This option was added to Forgejo v10 »). Le
|
|
# role epingle 10.0.0, donc le reglage mord. Sur une version anterieure il serait
|
|
# ignore EN SILENCE : c'est le cas ou une garde vaut mieux qu'un commentaire.
|
|
serveur_forgejo_connexion_locale: false
|
|
|
|
# --- SSO OIDC (Keycloak, realm applicatif) — « Se connecter avec <organisation> » ---
|
|
# Requiert client_pki (confiance step_ca) + résolution de l'hôte Keycloak (plancher/DNS).
|
|
# Le client OIDC doit exister dans le realm (serveur_keycloak_clients).
|
|
serveur_forgejo_oidc_actif: true
|
|
serveur_forgejo_oidc_nom: "{{ organisation | default('organisation') | lower | replace(' ', '-') }}" # slug du callback : /user/oauth2/<nom>/callback
|
|
serveur_forgejo_oidc_client_id: "forgejo"
|
|
serveur_forgejo_oidc_client_secret: "{{ vault_forgejo_oidc | default('') }}" # voûte (vault_forgejo_oidc)
|
|
serveur_forgejo_oidc_realm: "{{ identite_realm | default('chezlepro') }}"
|
|
# DERIVE de l'exposition declaree au plan (role `resoudre_idp`). La valeur
|
|
# ci-dessous n'est qu'un REPLI : `keycloak.<domaine>` n'est publie nulle part.
|
|
serveur_forgejo_oidc_repli: >-
|
|
https://keycloak.{{ domaine_interne }}/realms/{{ serveur_forgejo_oidc_realm }}/.well-known/openid-configuration
|
|
serveur_forgejo_oidc_discovery: >-
|
|
{{ resoudre_idp_discovery | default(serveur_forgejo_oidc_repli) }}
|
|
|
|
# TLS vers PostgreSQL (zero-confiance). 'disable' = compat ; 'verify-full' = chiffre + verifie
|
|
# le cert serveur contre le root_ca step-ca (via PGSSLROOTCERT dans l'unite systemd).
|
|
serveur_forgejo_db_sslmode: "disable"
|
|
serveur_forgejo_db_sslrootcert: "/etc/step/certs/root_ca.crt"
|
|
|
|
# --- Habilitation par groupe (D-66) -------------------------------------------
|
|
# Forgejo lit un claim de groupes dans le jeton OIDC et accorde l'administration
|
|
# aux membres d'un groupe nomme. Sans ces reglages, TOUT utilisateur authentifie
|
|
# obtient le niveau par defaut et l'administration reste au compte local de
|
|
# secours — ce que `meta/acces.yml` signalait comme `porte_par: aucun`.
|
|
#
|
|
# Le claim `groups` est celui que Keycloak emet pour les groupes projetes depuis
|
|
# LDAP (group-ldap-mapper). Voir docs/autorisation.md.
|
|
serveur_forgejo_oidc_groupe_claim: "groups"
|
|
serveur_forgejo_oidc_groupe_admin: "sysadmin"
|
|
|
|
# Empreinte du mot de passe admin APPLIQUE (rotation). Voir tasks/main.yml.
|
|
serveur_forgejo_marqueur_admin: "/etc/forgejo/.setops-admin-sha256"
|