La forge exige STARTTLS et verifie le certificat du relais. Le relais du site exige le TLS en entree, verifie le serveur joint en sortie (autorites publiques, lues avant le chroot), et journalise chaque session TLS. Mesure sur un envoi reel : TLS 1.3 sur les deux troncons, remis. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
101 lines
4.1 KiB
Django/Jinja
101 lines
4.1 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' }}
|
|
{# STARTTLS EXIGE, CERTIFICAT VERIFIE (2026-10-12). `smtp` seul remettait en clair :
|
|
Forgejo le signalait (« insecure SMTP protocol to non-local address »). Le relais
|
|
porte un certificat de l'autorite de l'ecosysteme, que la machine reconnait. #}
|
|
PROTOCOL = smtp+starttls
|
|
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 %}
|
|
|