Mettre à jour Forgejo se résume à remplacer un binaire. Mais une mise à jour mal exécutée peut corrompre la base de données ou bloquer le service. Cette procédure, testée en lab avec Forgejo 14.0.3, garantit une mise à jour sécurisée en moins de 10 minutes.
La séquence est toujours la même : vider les queues → sauvegarder → arrêter → remplacer le
binaire (avec vérification SHA256) → démarrer → lancer doctor check.
Comprendre le cycle de versions de Forgejo
Section intitulée « Comprendre le cycle de versions de Forgejo »Depuis la version 7.0.0, Forgejo suit le versioning sémantique (MAJEUR.MINEUR.PATCH) :
| Type de version | Fréquence | Support |
|---|---|---|
| Stable | ~toutes les 3 semaines | Durée d’un cycle |
| LTS (Long Term Support) | 4 fois par an | 15 mois |
| Experimental | En continu | Aucun |
Règles de mise à jour
Section intitulée « Règles de mise à jour »Procédure de mise à jour
Section intitulée « Procédure de mise à jour »-
Vérifier la version actuelle
Fenêtre de terminal forgejo --version# Forgejo version 14.0.3+gitea-1.22.0 (release name 14.0.3) built with go1.25.8sudo systemctl status forgejo.service | grep Active -
Vider les queues internes
Forgejo utilise des files de messages internes pour traiter les tâches asynchrones (webhooks, emails, indexation). Les vider avant l’arrêt évite de perdre des opérations en cours.
Fenêtre de terminal sudo -u git forgejo manager flush-queues \-w /var/lib/forgejo \-c /etc/forgejo/app.iniLa commande répond
Flusheden quelques secondes. Si elle échoue, le service n’est peut-être pas démarré — vérifiez avecsudo systemctl status forgejo.service. -
Créer un backup pré-upgrade
Arrêter le service avant le backup garantit la cohérence des données.
Fenêtre de terminal sudo systemctl stop forgejo.servicesudo -u git forgejo dump \-w /var/lib/forgejo \-c /etc/forgejo/app.ini \-f /var/lib/forgejo/backups/forgejo-pre-upgrade-$(date +%Y%m%d-%H%M).zipVérifiez que le ZIP est bien créé :
Fenêtre de terminal ls -lh /var/lib/forgejo/backups/forgejo-pre-upgrade-*.zip -
Télécharger le nouveau binaire
Remplacez
NEW_VERSIONpar la version cible (ex.14.1.0) :Fenêtre de terminal NEW_VERSION="14.1.0"BASE_URL="https://codeberg.org/forgejo/forgejo/releases/download/v${NEW_VERSION}"wget -O "/tmp/forgejo-${NEW_VERSION}" \"${BASE_URL}/forgejo-${NEW_VERSION}-linux-amd64"wget -O "/tmp/forgejo-${NEW_VERSION}.sha256" \"${BASE_URL}/forgejo-${NEW_VERSION}-linux-amd64.sha256" -
Vérifier l’intégrité du binaire
La vérification SHA256 confirme que le téléchargement est intact et non altéré.
Fenêtre de terminal cd /tmpsha256sum -c "forgejo-${NEW_VERSION}.sha256"# forgejo-14.1.0-linux-amd64: OKSi la vérification échoue (
FAILED), relancez le téléchargement. Ne jamais déployer un binaire dont la somme de contrôle ne correspond pas. -
Remplacer le binaire
Le service est déjà arrêté depuis l’étape 3. Remplacez le binaire en place :
Fenêtre de terminal sudo cp "/tmp/forgejo-${NEW_VERSION}" /usr/local/bin/forgejosudo chmod 755 /usr/local/bin/forgejo# Confirmer la version installéeforgejo --version -
Démarrer le service
Fenêtre de terminal sudo systemctl start forgejo.service# Attendre quelques secondes pour les migrations de base de donnéessleep 5sudo systemctl status forgejo.service -
Lancer le diagnostic complet
forgejo doctor checkvérifie l’intégrité de l’installation : hooks Git, permissions, cohérence de la base de données, dépôts Git, et plus encore.Fenêtre de terminal sudo -u git forgejo doctor check --all \-w /var/lib/forgejo \-c /etc/forgejo/app.iniSur une instance saine, tous les contrôles s’affichent avec
[OK]. Une instance au lab Forgejo 14.0.3 retourne 29 contrôles — tous marquésOK.En cas d’avertissement (non bloquant), rejouer avec
--fixpour laisser Forgejo corriger automatiquement :Fenêtre de terminal sudo -u git forgejo doctor check --all --fix \-w /var/lib/forgejo \-c /etc/forgejo/app.ini
Contrôle de la mise à jour
Section intitulée « Contrôle de la mise à jour »# Version activeforgejo --version
# Service en courssudo systemctl is-active forgejo.service
# Accès HTTPcurl -sw "%{http_code}" http://localhost:3000/ -o /dev/null# 200
# Logs récents sans erreursudo journalctl -u forgejo.service --no-pager -n 20Rollback en cas de problème
Section intitulée « Rollback en cas de problème »Si le service ne redémarre pas ou si l’interface est inaccessible après la mise à jour :
-
Arrêter le service
Fenêtre de terminal sudo systemctl stop forgejo.service -
Réinstaller l’ancien binaire
Si vous avez conservé l’ancien binaire (recommandé) :
Fenêtre de terminal # Exemple : remettre la version 14.0.3sudo cp /tmp/forgejo-14.0.3-linux-amd64 /usr/local/bin/forgejosudo chmod 755 /usr/local/bin/forgejoforgejo --version -
Restaurer depuis le backup pré-upgrade
Si les données ont été altérées, restaurez depuis le backup créé à l’étape 3 :
/docs/services/devops/forgejo/sauvegarder-restaurer/ # Voir le guide de restauration complet -
Relancer le service
Fenêtre de terminal sudo systemctl start forgejo.servicecurl -sw "%{http_code}" http://localhost:3000/ -o /dev/null
Dépannage
Section intitulée « Dépannage »Le service démarre mais plante immédiatement
Section intitulée « Le service démarre mais plante immédiatement »sudo journalctl -u forgejo.service -n 50 --no-pagerCauses fréquentes après une mise à jour :
| Message | Cause | Solution |
|---|---|---|
database migration failed | Migration interrompue | Restaurer le backup pré-upgrade, puis réessayer |
incompatible configuration | Clé app.ini supprimée dans la nouvelle version | Consulter le changelog Forgejo |
permission denied | Droits du binaire incorrects | sudo chmod 755 /usr/local/bin/forgejo |
forgejo doctor check retourne des erreurs
Section intitulée « forgejo doctor check retourne des erreurs »Les warnings (non bloquants) peuvent souvent être résolus automatiquement :
sudo -u git forgejo doctor check --all --fix \ -w /var/lib/forgejo \ -c /etc/forgejo/app.iniPour les erreurs persistantes, augmentez le niveau de log pour le diagnostic :
# Dans /etc/forgejo/app.ini[log]LEVEL = DebugRelancez le service et reprovoquez l’erreur, puis consultez les logs :
sudo journalctl -u forgejo.service --no-pager | grep -i "error\|fatal"Remettez LEVEL = Info après le diagnostic.
À retenir
Section intitulée « À retenir »- La mise à jour Forgejo = remplacer un binaire unique (pas de paquets apt à gérer)
- Toujours vérifier le SHA256 avant de déployer un nouveau binaire
- La séquence sécurisée :
flush-queues→dump→stop→ binaire →start→doctor check - Ne jamais sauter une version majeure (ex. de v13 à v15 : passer par v14 d’abord)
forgejo doctor check --allexécute 29 contrôles d’intégrité — tous doivent êtreOK- Conserver le backup pré-upgrade jusqu’à confirmation que la nouvelle version est stable