5.3 KiB
5.3 KiB
Scripts Gitea — Auto-Update, Backup & Déploiement Cron
Trois scripts pour la maintenance automatisée de Gitea Docker.
🚀 Installation rapide
# Cloner les scripts
git clone https://git.dracodev.net/Outils/gitea-scripts.git ~/scripts
# Installer dans le cron (interactif)
bash ~/scripts/install_cron.sh
# Ou forcer sans confirmation
bash ~/scripts/install_cron.sh --force
📋 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
- Récupère le digest SHA256 de l'image actuelle
docker compose pullpour télécharger la dernière version- Compare les digests → si identique, rien à faire
- Si différent : backup rapide DB →
docker compose up -d→ vérification santé - 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.
🚀 install_cron.sh — Déploiement automatisé
Installe (ou désinstalle) les crons d'un seul coup.
Commandes
bash install_cron.sh # Installation interactive
bash install_cron.sh --force # Sans confirmation
bash install_cron.sh --uninstall # Retirer du cron
bash install_cron.sh --status # Vérifier l'état
Paramètres configurables
| Variable | Défaut | Description |
|---|---|---|
SCRIPTS_DIR |
$HOME/scripts |
Dossier des scripts |
CRON_BACKUP_SCHEDULE |
0 2 * * * |
Horaire backup |
CRON_UPDATE_SCHEDULE |
0 4 * * * |
Horaire update |
BACKUP_LOG |
/var/log/gitea-backup-cron.log |
Log backup |
UPDATE_LOG |
/var/log/gitea-update-cron.log |
Log update |
Gestion propre
Le script ajoute un bloc marqué dans la crontab :
# >>> GITEA SCRIPTS (managed by install_cron.sh) <<<
0 2 * * * /home/bruno/scripts/gitea-backup.sh >> /var/log/gitea-backup-cron.log 2>&1
0 4 * * * /home/bruno/scripts/gitea-auto-update.sh >> /var/log/gitea-update-cron.log 2>&1
# >>> END GITEA SCRIPTS <<<
Le --uninstall retire uniquement ce bloc, sans toucher au reste de la crontab.
🔧 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 |