Les deux services n'etaient pas encore deployes : les cabler maintenant vaut mieux que les corriger apres. `porte_par` passe de `aucun` a `claim-groupe`. Forgejo recoit --group-claim-name + --admin-group, et sa tache passe de « creer si absent » a add-oauth OU update-oauth : le meme defaut que la federation Keycloak — cree une fois, jamais corrige — l'attendait sinon. Nextcloud recoit --mapping-groups + --group-provisioning, plus une tache qui verse les membres du groupe d'habilitation dans le groupe interne `admin` : etre dans un groupe projete ne donne aucun pouvoir en soi. Le maillon qui manquait aux deux : AUCUN mapper de protocole n'emettait le claim. Les groupes existaient dans le realm et n'apparaissaient dans aucun jeton — un cablage correct des deux cotes et rien au milieu. `oidc-group-membership-mapper` pose sur les trois clients, `full.path=false` pour que le claim porte `sysadmin` et non `/sysadmin`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
79 lines
4.6 KiB
YAML
79 lines
4.6 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') }}"
|
|
serveur_forgejo_oidc_discovery: "https://keycloak.{{ domaine_interne }}/realms/{{ serveur_forgejo_oidc_realm }}/.well-known/openid-configuration"
|
|
|
|
# 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"
|