# =============================================================================
# FORGEJO — configuration NON sensible
# =============================================================================
# Seul POSTGRES_PASSWORD est chiffré (secrets.env.yaml, injecté par
# `sops exec-env`). Le secret client Authentik n'est pas ici : il n'est pas lu
# par le conteneur, il se saisit une fois via `forgejo admin auth add-oauth`.
#
# Ce fichier ne contient QUE ce que les conteneurs consomment. La version
# d'image et les règles Traefik sont en dur dans docker-compose.yml :
# `env_file:` n'alimente pas l'interpolation ${...}, et une version en dur est
# détectée par Renovate.
# =============================================================================

# --- Base de données ---
# POSTGRES_* est lu par le conteneur postgres ET par le script de sauvegarde,
# qui fait `docker exec printenv POSTGRES_DB / POSTGRES_USER`. FORGEJO__database__*
# est lu par l'application. Les deux jeux doivent porter la MÊME valeur.
POSTGRES_USER=forgejo
POSTGRES_DB=forgejo

FORGEJO__database__DB_TYPE=postgres
FORGEJO__database__HOST=postgres:5432
FORGEJO__database__NAME=forgejo
FORGEJO__database__USER=forgejo

# --- Conteneur ---
USER_UID=1000
USER_GID=1000
TZ=Europe/Paris

# --- URL publique ---
# ROOT_URL est recopié dans les URL de clone affichées, dans les webhooks et
# dans le redirect OIDC : le changer suppose de reprendre le provider Authentik
# et de recréer les webhooks.
FORGEJO__server__DOMAIN=forge.opytex.org
FORGEJO__server__ROOT_URL=https://forge.opytex.org/
FORGEJO__server__SSH_DOMAIN=forge.opytex.org
FORGEJO__server__SSH_PORT=2223
FORGEJO__server__SSH_LISTEN_PORT=22

# --- Cache ---
# `cache` est le service Valkey de CETTE stack, et doit lui rester réservé :
# deux forges partageant un même Redis se volent leurs événements, avec des
# symptômes trompeurs (`AesDecrypt invalid decrypted base64 string`).
FORGEJO__cache__ENABLED=true
FORGEJO__cache__ADAPTER=redis
FORGEJO__cache__HOST=redis://cache:6379/0?pool_size=100&idle_timeout=180s
FORGEJO__cache__ITEM_TTL=24h

# --- Inscriptions & SSO (Authentik) ---
# Combinaison volontaire et contre-intuitive : DISABLE_REGISTRATION=true
# bloquerait AUSSI l'auto-création via OIDC, et plus personne ne pourrait
# entrer. C'est ALLOW_ONLY_EXTERNAL_REGISTRATION qui interdit l'inscription
# locale tout en laissant passer Authentik.
FORGEJO__service__DISABLE_REGISTRATION=false
FORGEJO__service__ALLOW_ONLY_EXTERNAL_REGISTRATION=true
FORGEJO__service__SHOW_REGISTRATION_BUTTON=false
FORGEJO__openid__ENABLE_OPENID_SIGNIN=false
FORGEJO__oauth2_client__ENABLE_AUTO_REGISTRATION=true
FORGEJO__oauth2_client__ACCOUNT_LINKING=auto
FORGEJO__oauth2_client__USERNAME=nickname
FORGEJO__oauth2_client__UPDATE_AVATAR=true

# --- Actions & registre de paquets ---
# Le registre est une dépendance vivante de l'infra : stacks/plesna.opytex.org
# tire une image depuis cette forge. Explicite pour éviter toute désactivation
# par inadvertance.
FORGEJO__actions__ENABLED=true
FORGEJO__packages__ENABLED=true

# --- Courriel (relais interne postfix, réseau `smtp`) ---
FORGEJO__mailer__ENABLED=true
FORGEJO__mailer__PROTOCOL=smtp
FORGEJO__mailer__SMTP_ADDR=postfix
FORGEJO__mailer__SMTP_PORT=25
FORGEJO__mailer__FROM=noreply@opytex.org

# --- Divers ---
FORGEJO__repository__DEFAULT_BRANCH=main
FORGEJO__security__INSTALL_LOCK=true
