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

Mettre à jour Forgejo

9 min de lecture

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.

Depuis la version 7.0.0, Forgejo suit le versioning sémantique (MAJEUR.MINEUR.PATCH) :

Type de versionFréquenceSupport
Stable~toutes les 3 semainesDurée d’un cycle
LTS (Long Term Support)4 fois par an15 mois
ExperimentalEn continuAucun
  1. 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.8
    sudo systemctl status forgejo.service | grep Active
  2. 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.ini

    La commande répond Flushed en quelques secondes. Si elle échoue, le service n’est peut-être pas démarré — vérifiez avec sudo systemctl status forgejo.service.

  3. 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.service
    sudo -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).zip

    Vérifiez que le ZIP est bien créé :

    Fenêtre de terminal
    ls -lh /var/lib/forgejo/backups/forgejo-pre-upgrade-*.zip
  4. Télécharger le nouveau binaire

    Remplacez NEW_VERSION par 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"
  5. 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 /tmp
    sha256sum -c "forgejo-${NEW_VERSION}.sha256"
    # forgejo-14.1.0-linux-amd64: OK

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

  6. 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/forgejo
    sudo chmod 755 /usr/local/bin/forgejo
    # Confirmer la version installée
    forgejo --version
  7. Démarrer le service

    Fenêtre de terminal
    sudo systemctl start forgejo.service
    # Attendre quelques secondes pour les migrations de base de données
    sleep 5
    sudo systemctl status forgejo.service
  8. Lancer le diagnostic complet

    forgejo doctor check vé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.ini

    Sur 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és OK.

    En cas d’avertissement (non bloquant), rejouer avec --fix pour 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
Fenêtre de terminal
# Version active
forgejo --version
# Service en cours
sudo systemctl is-active forgejo.service
# Accès HTTP
curl -sw "%{http_code}" http://localhost:3000/ -o /dev/null
# 200
# Logs récents sans erreur
sudo journalctl -u forgejo.service --no-pager -n 20

Si le service ne redémarre pas ou si l’interface est inaccessible après la mise à jour :

  1. Arrêter le service

    Fenêtre de terminal
    sudo systemctl stop forgejo.service
  2. Réinstaller l’ancien binaire

    Si vous avez conservé l’ancien binaire (recommandé) :

    Fenêtre de terminal
    # Exemple : remettre la version 14.0.3
    sudo cp /tmp/forgejo-14.0.3-linux-amd64 /usr/local/bin/forgejo
    sudo chmod 755 /usr/local/bin/forgejo
    forgejo --version
  3. 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
  4. Relancer le service

    Fenêtre de terminal
    sudo systemctl start forgejo.service
    curl -sw "%{http_code}" http://localhost:3000/ -o /dev/null
Fenêtre de terminal
sudo journalctl -u forgejo.service -n 50 --no-pager

Causes fréquentes après une mise à jour :

MessageCauseSolution
database migration failedMigration interrompueRestaurer le backup pré-upgrade, puis réessayer
incompatible configurationClé app.ini supprimée dans la nouvelle versionConsulter le changelog Forgejo
permission deniedDroits du binaire incorrectssudo chmod 755 /usr/local/bin/forgejo

Les warnings (non bloquants) peuvent souvent être résolus automatiquement :

Fenêtre de terminal
sudo -u git forgejo doctor check --all --fix \
-w /var/lib/forgejo \
-c /etc/forgejo/app.ini

Pour les erreurs persistantes, augmentez le niveau de log pour le diagnostic :

# Dans /etc/forgejo/app.ini
[log]
LEVEL = Debug

Relancez le service et reprovoquez l’erreur, puis consultez les logs :

Fenêtre de terminal
sudo journalctl -u forgejo.service --no-pager | grep -i "error\|fatal"

Remettez LEVEL = Info après le diagnostic.

  • 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-queuesdumpstop → binaire → startdoctor check
  • Ne jamais sauter une version majeure (ex. de v13 à v15 : passer par v14 d’abord)
  • forgejo doctor check --all exécute 29 contrôles d’intégrité — tous doivent être OK
  • Conserver le backup pré-upgrade jusqu’à confirmation que la nouvelle version est stable

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