2.3 : Publier la forge : reverse proxy et HTTPS

Sommaire

Trois scénarios, un même socle

Votre forge tourne, mais elle n’est joignable que depuis le réseau Docker. Il faut maintenant la publier — et surtout ne pas valider l’assistant d’installation avant d’avoir terminé cette leçon, sous peine de figer une mauvaise URL publique.

Je vous propose trois configurations, de la plus simple à la plus complète :

Scénario Pour qui HTTPS
A — Sans reverse proxy Tester en dix minutes, se faire une idée ❌
B — Derrière Nginx Le cas le plus répandu en entreprise ✅
C — Derrière Traefik Ceux qui viennent de la formation Docker ✅

Ces configurations sont des bases à adapter. Votre reverse proxy a probablement déjà sa propre organisation — fichiers inclus, certificats centralisés, conventions de nommage. Prenez les réglages qui comptent, pas le fichier tel quel.

Et quel que soit le scénario, trois réglages font la différence entre une forge qui marche et une forge qui marche vraiment. Commençons par eux, parce qu’ils expliquent tout le reste.


Les trois réglages qui comptent

1. Forgejo doit connaître son adresse publique

Nous l’avons vu en 2.2 : sans ROOT_URL, Forgejo affiche des URL de clonage fausses et ses redirections d’authentification échouent.

- FORGEJO__server__DOMAIN=forge.nordika.local
- FORGEJO__server__ROOT_URL=https://forge.nordika.local/

La valeur doit correspondre exactement à ce que tape l’utilisateur, protocole compris et barre oblique finale incluse.

Effet de bord utile : lorsque ROOT_URL commence par https, Forgejo bascule automatiquement ses cookies de session en mode sécurisé. Vous n’avez rien de plus à faire.

2. La taille maximale des envois

Voici l’erreur que tout le monde rencontre au premier envoi un peu volumineux :

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

413, c’est le reverse proxy qui refuse la requête, pas Forgejo. Nginx limite par défaut le corps des requêtes à 1 Mo — largement suffisant pour une page web, ridicule pour un dépôt Git.

Vos scripts d’administration ne poseront pas de problème. Mais dès que vous migrerez un dépôt existant avec son historique, ou que vous pousserez une image dans le registre en section 10, vous heurterez cette limite.

3. Les proxys de confiance

Celui-ci est plus subtil, et il n’est documenté nulle part en français.

Par défaut, Forgejo ne fait confiance aux en-têtes X-Forwarded-For que s’ils proviennent de 127.0.0.0/8 ou ::1/128. Or votre reverse proxy est un conteneur, avec une adresse dans un réseau Docker. Ses en-têtes sont donc ignorés.