Files
docker-stack-template/README-gitea-scripts.md
T
bruno 4c47e57559 feat: scripts auto-update et backup pour Gitea Docker
- gitea-auto-update.sh : vérifie quotidiennement les mises à jour Docker
- gitea-backup.sh : backup complet DB+volumes avec script restore auto-généré
- Paramètres configurables via variables d'environnement
- Rétention configurable (jours, hebdo, mensuel)
2026-06-26 11:30:48 -04:00

3.8 KiB

Scripts Gitea — Auto-Update & Backup

Deux scripts pour la maintenance automatisée de Gitea Docker.


📋 Prérequis

  • Docker + Docker Compose
  • curl, tar, gzip, mysqldump (dans le conteneur MySQL)
  • Droits d'écriture sur /NFS/BACKUP/DOCKER/dev-prod/gitea/ (backup)
  • Droits sudo si les volumes sont protégés

🔄 gitea-auto-update.sh

Vérifie quotidiennement si une nouvelle image Docker Gitea est disponible et applique la mise à jour.

Paramètres configurables

Variable Défaut Description
COMPOSE_DIR ~/dev/git/outils/docker/gitea Dossier du docker-compose
COMPOSE_FILE docker-compose.yml Nom du fichier compose
CONTAINER_NAME gitea_server Conteneur Gitea
IMAGE_NAME gitea/gitea Image Docker
IMAGE_TAG latest Tag (version)
HEALTH_CHECK_URL http://localhost:3000 URL vérification santé
HEALTH_CHECK_TIMEOUT 30 Timeout attente (secondes)

Cron recommandé

# Tous les jours à 4h du matin
0 4 * * * /home/openclaw/scripts/gitea-auto-update.sh

Fonctionnement

  1. Récupère le digest SHA256 de l'image actuelle
  2. docker compose pull pour télécharger la dernière version
  3. Compare les digests → si identique, rien à faire
  4. Si différent : backup rapide DB → docker compose up -d → vérification santé
  5. Nettoie les vieilles images Docker (image prune)

💾 gitea-backup.sh

Backup complet et portable de Gitea : DB MySQL + volumes Docker + config.

Paramètres configurables

Variable Défaut Description
BACKUP_DIR /NFS/BACKUP/DOCKER/dev-prod/gitea Destination backups
COMPOSE_DIR ~/dev/git/outils/docker/gitea Dossier docker-compose
DB_CONTAINER gitea_db Conteneur MySQL
DB_NAME gitea Nom base de données
DB_ROOT_PASSWORD gitea Mot de passe root MySQL
VOLUME_DATA /DOCKER_CONFIG/gitea/data Volume data Gitea
VOLUME_MYSQL /DOCKER_CONFIG/gitea/mysql Volume MySQL
RETENTION_DAYS 30 Rétention jours
RETENTION_WEEKLY 4 Backups dimanche conservés
RETENTION_MONTHLY 6 Backups 1er du mois conservés
COMPRESS true Compression gzip
VERIFY_BACKUP true Vérifier intégrité après backup
STOP_CONTAINERS false Arrêter conteneurs (plus sûr)

Cron recommandé

# Tous les jours à 2h du matin
0 2 * * * /home/openclaw/scripts/gitea-backup.sh

Structure d'un backup

/NFS/BACKUP/DOCKER/dev-prod/gitea/
└── gitea-backup-20260626-020000/
    ├── gitea-db.sql.gz         ← Dump MySQL (compressé)
    ├── gitea-data.tar.gz       ← Volume /data (repos, config, thèmes)
    ├── gitea-mysql.tar.gz      ← Volume MySQL (fichiers DB bruts)
    ├── docker-compose.yml      ← Stack Docker
    ├── app.ini                 ← Configuration Gitea
    ├── restore.sh              ← ⭐ Script de restauration automatique
    └── backup-info.txt         ← Métadonnées

Restauration

cd /NFS/BACKUP/DOCKER/dev-prod/gitea/gitea-backup-20260626-020000/

# Dry-run (vérifier sans exécuter)
bash restore.sh --dry-run

# Restauration réelle
bash restore.sh --force

Le script restore.sh est auto-généré à chaque backup et contient TOUT ce qu'il faut pour restaurer sur n'importe quel hôte Docker.


🔧 Surcharger les paramètres

# Exemple : changer le dossier de backup
BACKUP_DIR=/mnt/big-disk/gitea /home/openclaw/scripts/gitea-backup.sh

# Exemple : backup avec arrêt des conteneurs
STOP_CONTAINERS=true /home/openclaw/scripts/gitea-backup.sh

📊 Logs

Script Log
Auto-update /var/log/gitea-update.log
Backup /var/log/gitea-backup.log