L'intégration Forgejo (« Créer un ticket » depuis un message de contact,
issue #81) restait invisible en prod Docker : `docker-compose.yml` ne
listait pas `FORGEJO_BASE_URL` / `FORGEJO_TOKEN` / `FORGEJO_REPO` dans le
bloc `environment:` du service `app`, et `**/.env` est `.dockerignore`d — le
process API ne voyait donc jamais ces variables, `ForgejoService.isConfigured()`
renvoyait `false` et le bouton restait masqué sur `/admin/messages`.
- `docker-compose.yml` : les 3 `FORGEJO_*` passées au conteneur via
`${VAR:-}`, même forme que `ADMIN_JWT_SECRET` / `INTERNAL_WORKER_SECRET`.
- `config/env.ts` : `blankAsUnset` sur les 3 champs — `${VAR:-}` arrive
comme `""` quand le `.env` du stack laisse la variable vide ; sans ça une
valeur vide ferait échouer `.url()` / la regex `owner/repo` et planter
`envSchema.parse()` au boot. Même parade que `COOKIE_SECURE`. `envSchema`
exporté pour le test.
- `.env.example` (racine) : documente les 3 variables au niveau compose.
- `apps/api/test/env.test.ts` : blanc = absent, + non-régression sur une
valeur non vide mais mal formée.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>