Aller au contenu
Culture DevOps medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Configuration initiale de Forgejo

8 min de lecture

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”.

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 Forgejo
RUN_USER = git
WORK_PATH = /var/lib/forgejo
RUN_MODE = prod ; prod ou dev (dev active les logs détaillés)
[database]
DB_TYPE = sqlite3
PATH = /var/lib/forgejo/data/forgejo.db
[server]
SSH_DOMAIN = git.exemple.com
DOMAIN = git.exemple.com
HTTP_PORT = 3000
ROOT_URL = https://git.exemple.com/
OFFLINE_MODE = true
LFS_START_SERVER = true
[service]
DISABLE_REGISTRATION = true ; Désactiver les inscriptions publiques
[log]
MODE = file
LEVEL = Info

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 = true

Si vous avez besoin d’inviter des utilisateurs ponctuellement sans ouvrir les inscriptions, activez les tokens d’invitation :

[service]
DISABLE_REGISTRATION = true
ALLOW_ONLY_INTERNAL_REGISTRATION = false

L’administrateur peut alors créer des liens d’invitation dans Administration > Utilisateurs.

Ajustez les paramètres [server] pour correspondre à votre domaine réel :

[server]
# Domaine utilisé pour les URLs de clonage SSH
SSH_DOMAIN = git.exemple.com
# Domaine pour les liens HTTPS
DOMAIN = git.exemple.com
# URL complète (avec slash final obligatoire)
ROOT_URL = https://git.exemple.com/
HTTP_PORT = 3000
OFFLINE_MODE = true
# Activer le stockage Git LFS
LFS_START_SERVER = true
LFS_JWT_SECRET = <généré automatiquement à l'init>

Sans configuration mailer, Forgejo ne peut pas envoyer les emails de confirmation ou de réinitialisation de mot de passe.

[mailer]
ENABLED = true
FROM = "Forgejo <noreply@exemple.com>"
PROTOCOL = smtp+starttls
SMTP_ADDR = smtp.exemple.com
SMTP_PORT = 587
USER = noreply@exemple.com
PASSWD = votre-mot-de-passe

Après toute modification de app.ini, vérifiez que les permissions restent correctes :

Fenêtre de terminal
sudo chmod 750 /etc/forgejo
sudo chmod 640 /etc/forgejo/app.ini
sudo chown root:git /etc/forgejo
sudo chown git:git /etc/forgejo/app.ini

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.

Fenêtre de terminal
sudo -u git forgejo admin user create \
-w /var/lib/forgejo \
-c /etc/forgejo/app.ini \
--username forgejoadmin \
--password "VotreMotDePasse!" \
--email admin@exemple.com \
--admin
Fenêtre de terminal
sudo -u git forgejo admin user change-password \
-w /var/lib/forgejo \
-c /etc/forgejo/app.ini \
--username forgejoadmin \
--password "NouveauMotDePasse!"
Fenêtre de terminal
sudo -u git forgejo admin user list \
-w /var/lib/forgejo \
-c /etc/forgejo/app.ini

Configuration 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) :

CheminParamètre
Administration > ParamètresMode d’inscription, taille max des dépôts
Administration > UtilisateursCréer, désactiver, promouvoir administrateur
Administration > OrganisationsGérer les organisations
Administration > HooksGits hooks globaux
Administration > Tâches de maintenanceNettoyer le cache, regénérer les hooks

Forgejo supporte la personnalisation via le répertoire custom/ :

Fenêtre de terminal
# Créer le répertoire de personnalisation
sudo mkdir -p /var/lib/forgejo/custom/templates
sudo 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/.

Le service démarre mais l’interface affiche une erreur

Section intitulée « Le service démarre mais l’interface affiche une erreur »
Fenêtre de terminal
sudo journalctl -u forgejo.service -n 50 --no-pager

Pour augmenter le niveau de log temporairement, ajoutez dans app.ini :

[log]
LEVEL = Debug

Redémarrez, reproduisez l’erreur, puis repassez à Info.

Si les liens dans les emails ou les URLs de clonage sont incorrects, vérifiez :

Fenêtre de terminal
sudo grep ROOT_URL /etc/forgejo/app.ini

La valeur doit correspondre exactement à l’URL publique de votre instance, avec le slash final : https://git.exemple.com/.

  • Toute modification de app.ini nécessite un redémarrage du service
  • DISABLE_REGISTRATION = true est 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/forgejo en 750, app.ini en 640
  • ROOT_URL doit correspondre exactement à l’URL publique (slash final compris)

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn