La forge nommait infra-mail-01 en dur comme relais : une machine de locataire, absente du site. Elle derive maintenant son relais du groupe serveur_postfix. Le relais du site admet les machines dont un role declare un flux vers lui, lues dans le registre des flux (aujourd'hui la forge). Deploye au site ; un courriel de mot de passe oublie est arrive et a servi. Aussi : forge-comptes ne compte plus de changement en mode plan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
98 lines
3.9 KiB
Django/Jinja
98 lines
3.9 KiB
Django/Jinja
; Gere par Set-OPS (role serveur_forgejo). Ne pas editer a la main.
|
|
APP_NAME = {{ serveur_forgejo_app_name }}
|
|
RUN_USER = {{ serveur_forgejo_utilisateur }}
|
|
RUN_MODE = prod
|
|
WORK_PATH = {{ serveur_forgejo_data }}
|
|
|
|
[server]
|
|
DOMAIN = {{ serveur_forgejo_hostname }}
|
|
{# ROOT_URL EST GRAVEE DANS LES URL DE CLONAGE, les webhooks et les courriels. Un port
|
|
qui n'est pas celui du schema y reste pour toujours : chaque ecosysteme descendant
|
|
porterait `:3000` dans son `origin`. On ne l'ecrit donc que s'il est vraiment atypique. #}
|
|
ROOT_URL = https://{{ serveur_forgejo_hostname }}{{ (':' ~ serveur_forgejo_http_port | string) if (serveur_forgejo_tls and serveur_forgejo_http_port | int != 443) else '' }}/
|
|
HTTP_ADDR = {{ serveur_forgejo_http_addr }}
|
|
HTTP_PORT = {{ serveur_forgejo_http_port }}
|
|
{% if serveur_forgejo_tls %}
|
|
; TLS SERVI PAR LA FORGE ELLE-MEME : il n'y a pas d'edge devant elle. Le certificat est
|
|
; celui de la MACHINE, pose et renouvele par `client_pki` depuis l'AC interne.
|
|
PROTOCOL = https
|
|
CERT_FILE = {{ serveur_forgejo_tls_cert }}
|
|
KEY_FILE = {{ serveur_forgejo_tls_cle }}
|
|
{% endif %}
|
|
SSH_DOMAIN = {{ serveur_forgejo_hostname }}
|
|
|
|
[database]
|
|
{% if serveur_forgejo_bd == 'sqlite' %}
|
|
; Un FICHIER, pas un serveur. Il vit dans les donnees de Forgejo, donc la sauvegarde
|
|
; existante l'emporte deja — rien de special a prevoir.
|
|
DB_TYPE = sqlite3
|
|
PATH = {{ serveur_forgejo_db_chemin }}
|
|
{% else %}
|
|
DB_TYPE = postgres
|
|
HOST = {{ serveur_forgejo_db_host }}:{{ serveur_forgejo_db_port | default(5432) }}
|
|
NAME = {{ serveur_forgejo_entree.base }}
|
|
USER = {{ serveur_forgejo_entree.proprietaire }}
|
|
PASSWD = {{ serveur_forgejo_db_password }}
|
|
SSL_MODE = {{ serveur_forgejo_db_sslmode | default('disable') }}
|
|
{% endif %}
|
|
|
|
[security]
|
|
INSTALL_LOCK = true
|
|
SECRET_KEY = {{ serveur_forgejo_secret_key }}
|
|
INTERNAL_TOKEN = {{ serveur_forgejo_internal_token }}
|
|
|
|
[service]
|
|
{% if serveur_forgejo_oidc_actif %}
|
|
; Identites depuis l'annuaire via le SSO uniquement : pas d'inscription locale,
|
|
; mais auto-enregistrement des utilisateurs OIDC.
|
|
DISABLE_REGISTRATION = false
|
|
ALLOW_ONLY_EXTERNAL_REGISTRATION = true
|
|
{# `| bool` obligatoire : sans lui, une valeur transmise en CHAINE (« false » via
|
|
`-e`, ou un group_vars non typé) est vraie au sens Jinja et le bloc ne sort JAMAIS —
|
|
la connexion locale resterait ouverte en silence. Verifie par rendu reel. #}
|
|
{% if not serveur_forgejo_connexion_locale | bool %}
|
|
; Connexion interne fermee : le SSO est le seul chemin. Le compte local
|
|
; survit et se rattrape par `forgejo admin user change-password` (sudo).
|
|
ENABLE_INTERNAL_SIGNIN = false
|
|
ENABLE_BASIC_AUTHENTICATION = false
|
|
{% endif %}
|
|
{% else %}
|
|
DISABLE_REGISTRATION = true
|
|
{% endif %}
|
|
|
|
{% if serveur_forgejo_oidc_actif %}
|
|
[oauth2_client]
|
|
ENABLE_AUTO_REGISTRATION = true
|
|
USERNAME = preferred_username
|
|
ACCOUNT_LINKING = auto
|
|
{% endif %}
|
|
|
|
[mailer]
|
|
ENABLED = {{ 'true' if serveur_forgejo_smtp else 'false' }}
|
|
PROTOCOL = smtp
|
|
SMTP_ADDR = {{ serveur_forgejo_smtp }}
|
|
SMTP_PORT = 25
|
|
FROM = forge@{{ domaine_interne }}
|
|
|
|
[ui]
|
|
DEFAULT_THEME = {{ serveur_forgejo_theme }}
|
|
|
|
[ui.meta]
|
|
DESCRIPTION = {{ serveur_forgejo_meta_description }}
|
|
|
|
; --- Secret JWT : appartient au SERVICE, relu par le role -------------------------
|
|
; Forgejo genere ce secret au premier demarrage et l'ajoute lui-meme a la fin du
|
|
; fichier. Le gabarit ne le portait pas : chaque rendu l'EFFACAIT donc, Forgejo en
|
|
; generait un nouveau au redemarrage, et le passage suivant recommencait — autrement dit,
|
|
; chaque deploiement faisait tourner le secret JWT de la forge et invalidait les jetons
|
|
; qu'elle avait emis. Trouve par le passage d'idempotence du 2026-08-09 : seule ligne
|
|
; differente entre deux rendus.
|
|
;
|
|
; Le role le RELIT avant de rendre (tache « Relire le secret JWT ») et le repose ici.
|
|
; Vide au premier deploiement : Forgejo le genere alors, et les rendus suivants le
|
|
; conservent.
|
|
[oauth2]
|
|
{% if serveur_forgejo_jwt_secret | default("") %}
|
|
JWT_SECRET = {{ serveur_forgejo_jwt_secret }}
|
|
{% endif %}
|
|
|