Après l’installation, Forgejo est fonctionnel mais ouvert : n’importe qui peut créer un compte et les fichiers de configuration ne sont pas encore protégés. Cette page couvre les réglages indispensables avant de mettre votre instance en production.
La configuration de Forgejo repose sur un fichier INI : /etc/forgejo/app.ini. Vous pouvez le
modifier directement (après avoir arrêté le service) ou passer par l’interface “Administration du site”.
Comprendre app.ini
Section intitulée « Comprendre app.ini »app.ini est divisé en sections entre crochets ([server], [database], etc.). Chaque section
regroupe les paramètres d’un sous-système. Voici un fichier minimal commenté :
APP_NAME = Mon Instance ForgejoRUN_USER = gitWORK_PATH = /var/lib/forgejoRUN_MODE = prod ; prod ou dev (dev active les logs détaillés)
[database]DB_TYPE = sqlite3PATH = /var/lib/forgejo/data/forgejo.db
[server]SSH_DOMAIN = git.exemple.comDOMAIN = git.exemple.comHTTP_PORT = 3000ROOT_URL = https://git.exemple.com/OFFLINE_MODE = trueLFS_START_SERVER = true
[service]DISABLE_REGISTRATION = true ; Désactiver les inscriptions publiques
[log]MODE = fileLEVEL = InfoOpérations de configuration essentielles
Section intitulée « Opérations de configuration essentielles »1. Désactiver les inscriptions publiques
Section intitulée « 1. Désactiver les inscriptions publiques »Par défaut, Forgejo permet à n’importe qui de créer un compte. Sur une instance interne, désactivez cette option immédiatement.
[service]DISABLE_REGISTRATION = trueSi vous avez besoin d’inviter des utilisateurs ponctuellement sans ouvrir les inscriptions, activez les tokens d’invitation :
[service]DISABLE_REGISTRATION = trueALLOW_ONLY_INTERNAL_REGISTRATION = falseL’administrateur peut alors créer des liens d’invitation dans Administration > Utilisateurs.
2. Configurer le serveur HTTP et SSH
Section intitulée « 2. Configurer le serveur HTTP et SSH »Ajustez les paramètres [server] pour correspondre à votre domaine réel :
[server]# Domaine utilisé pour les URLs de clonage SSHSSH_DOMAIN = git.exemple.com# Domaine pour les liens HTTPSDOMAIN = git.exemple.com# URL complète (avec slash final obligatoire)ROOT_URL = https://git.exemple.com/HTTP_PORT = 3000OFFLINE_MODE = true# Activer le stockage Git LFSLFS_START_SERVER = trueLFS_JWT_SECRET = <généré automatiquement à l'init>3. Configurer l’envoi d’emails
Section intitulée « 3. Configurer l’envoi d’emails »Sans configuration mailer, Forgejo ne peut pas envoyer les emails de confirmation ou de réinitialisation de mot de passe.
[mailer]ENABLED = trueFROM = "Forgejo <noreply@exemple.com>"PROTOCOL = smtp+starttlsSMTP_ADDR = smtp.exemple.comSMTP_PORT = 587USER = noreply@exemple.comPASSWD = votre-mot-de-passe[mailer]ENABLED = falseDans ce cas, les nouvelles inscriptions doivent être activées manuellement par l’administrateur dans Administration > Utilisateurs.
4. Sécuriser les fichiers de configuration
Section intitulée « 4. Sécuriser les fichiers de configuration »Après toute modification de app.ini, vérifiez que les permissions restent correctes :
sudo chmod 750 /etc/forgejosudo chmod 640 /etc/forgejo/app.inisudo chown root:git /etc/forgejosudo chown git:git /etc/forgejo/app.iniGestion des utilisateurs en ligne de commande
Section intitulée « Gestion des utilisateurs en ligne de commande »Quand l’interface web n’est pas accessible (après un verrouillage ou pour l’automatisation), la CLI Forgejo permet de gérer les utilisateurs.
Créer un utilisateur administrateur
Section intitulée « Créer un utilisateur administrateur »sudo -u git forgejo admin user create \ -w /var/lib/forgejo \ -c /etc/forgejo/app.ini \ --username forgejoadmin \ --password "VotreMotDePasse!" \ --email admin@exemple.com \ --adminRéinitialiser un mot de passe
Section intitulée « Réinitialiser un mot de passe »sudo -u git forgejo admin user change-password \ -w /var/lib/forgejo \ -c /etc/forgejo/app.ini \ --username forgejoadmin \ --password "NouveauMotDePasse!"Lister les utilisateurs
Section intitulée « Lister les utilisateurs »sudo -u git forgejo admin user list \ -w /var/lib/forgejo \ -c /etc/forgejo/app.iniConfiguration via l’interface web d’administration
Section intitulée « Configuration via l’interface web d’administration »Les paramètres modifiables sans toucher à app.ini sont accessibles dans
Administration du site (icône d’engrenage en haut à droite) :
| Chemin | Paramètre |
|---|---|
| Administration > Paramètres | Mode d’inscription, taille max des dépôts |
| Administration > Utilisateurs | Créer, désactiver, promouvoir administrateur |
| Administration > Organisations | Gérer les organisations |
| Administration > Hooks | Gits hooks globaux |
| Administration > Tâches de maintenance | Nettoyer le cache, regénérer les hooks |
Personnaliser l’interface (optionnel)
Section intitulée « Personnaliser l’interface (optionnel) »Forgejo supporte la personnalisation via le répertoire custom/ :
# Créer le répertoire de personnalisationsudo mkdir -p /var/lib/forgejo/custom/templatessudo chown -R git:git /var/lib/forgejo/custom/Pour remplacer un template, copiez-le depuis les sources de Forgejo dans custom/templates/
avec le même chemin relatif. Les surcharges CSS vont dans custom/public/css/.
Dépannage
Section intitulée « Dépannage »Le service démarre mais l’interface affiche une erreur
Section intitulée « Le service démarre mais l’interface affiche une erreur »sudo journalctl -u forgejo.service -n 50 --no-pagerPour augmenter le niveau de log temporairement, ajoutez dans app.ini :
[log]LEVEL = DebugRedémarrez, reproduisez l’erreur, puis repassez à Info.
ROOT_URL mal configurée
Section intitulée « ROOT_URL mal configurée »Si les liens dans les emails ou les URLs de clonage sont incorrects, vérifiez :
sudo grep ROOT_URL /etc/forgejo/app.iniLa valeur doit correspondre exactement à l’URL publique de votre instance,
avec le slash final : https://git.exemple.com/.
À retenir
Section intitulée « À retenir »- Toute modification de
app.ininécessite un redémarrage du service DISABLE_REGISTRATION = trueest indispensable sur une instance non publique- Le pattern CLI Forgejo :
sudo -u git forgejo <cmd> -w /var/lib/forgejo -c /etc/forgejo/app.ini - Les permissions correctes :
/etc/forgejoen750,app.inien640 ROOT_URLdoit correspondre exactement à l’URL publique (slash final compris)