# 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é ```cron # 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é ```cron # 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 ```bash 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 ```bash # 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` |