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)
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# 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` |
|
||||
Reference in New Issue
Block a user