From 89e13118bf853a81a5282f86a901f7eb598ab5d5 Mon Sep 17 00:00:00 2001 From: Johnny Date: Fri, 27 Feb 2026 14:02:40 +0000 Subject: [PATCH] Ajouter lisezmoi.md --- lisezmoi.md | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 lisezmoi.md diff --git a/lisezmoi.md b/lisezmoi.md new file mode 100644 index 0000000..e8c6231 --- /dev/null +++ b/lisezmoi.md @@ -0,0 +1,248 @@ +# 🟠 gitea-backup + +> Script Bash professionnel de **sauvegarde et restauration complĂšte de Gitea** — base de donnĂ©es, dĂ©pĂŽts Git, LFS, avatars, attachments, configuration `app.ini`, clĂ©s SSH — avec menu interactif et planification cron intĂ©grĂ©e. + +--- + +## ✹ FonctionnalitĂ©s + +| FonctionnalitĂ© | DĂ©tail | +|---|---| +| đŸ’Ÿ **Sauvegarde complĂšte** | DB + dĂ©pĂŽts Git + LFS + avatars + attachments + config | +| 🔄 **Restauration interactive** | Menu avec 5 modes de restauration ciblĂ©e | +| đŸ—„ïž **Multi-base de donnĂ©es** | PostgreSQL, MySQL/MariaDB, SQLite3 — auto-dĂ©tection via `app.ini` | +| 🧰 **`gitea dump` natif** | IntĂ©gration optionnelle de la commande officielle Gitea en complĂ©ment | +| ⏰ **Planification cron** | FrĂ©quences prĂ©dĂ©finies ou expression personnalisĂ©e + notifications email | +| 📋 **Manifest d'archive** | Version Gitea, stats dĂ©pĂŽts, taille LFS, extrait `app.ini` | +| 🔁 **Rotation automatique** | Conservation configurable des N derniĂšres archives | +| đŸ›Ąïž **ArrĂȘt/relance automatique** | Gitea est stoppĂ© proprement avant restauration, relancĂ© aprĂšs | +| 🔑 **ClĂ©s SSH incluses** | Sauvegarde du rĂ©pertoire `.ssh` de l'utilisateur Gitea | +| 📝 **Journal** | Logging horodatĂ© dans `/var/log/gitea-backup.log` | + +--- + +## 📋 PrĂ©requis + +- OS : Debian / Ubuntu / RHEL / CentOS +- Bash ≄ 4.0 +- Droits : **root** (sudo) +- Commandes requises : `tar`, `gzip`, `awk`, `find`, `stat` +- Selon votre base de donnĂ©es : + - PostgreSQL → `pg_dump`, `pg_restore`, `psql` + - MySQL/MariaDB → `mysqldump`, `mysql` + - SQLite3 → `sqlite3` +- Optionnel : binaire `gitea` accessible pour le dump natif + +--- + +## 🚀 Installation + +```bash +# Cloner le dĂ©pĂŽt +git clone https://git.h3campus.fr/Johnny/Redmine.git /opt/scripts/gitea-backup +cd /opt/scripts/gitea-backup + +# Rendre le script exĂ©cutable +chmod +x gitea-backup.sh + +# Copier et configurer le fichier .env +cp .env.gitea.example .env.gitea +nano .env.gitea +``` + +--- + +## ⚙ Configuration — fichier `.env.gitea` + +```ini +# Utilisateur systĂšme Gitea +GITEA_USER=git + +# RĂ©pertoire d'installation du binaire +GITEA_ROOT=/opt/gitea + +# RĂ©pertoire de travail (repositories, data, log...) +GITEA_WORK_DIR=/var/lib/gitea + +# Chemin vers app.ini (obligatoire) +GITEA_CONF=/etc/gitea/app.ini + +# Chemin vers le binaire gitea +GITEA_BINARY=/usr/local/bin/gitea + +# Dossier de stockage des archives +BACKUP_DIR=/opt/Backups/gitea + +# Nombre d'archives Ă  conserver +KEEP_BACKUPS=7 + +# Inclure les logs dans la sauvegarde +INCLUDE_LOG=false + +# Activer le dump natif "gitea dump" en complĂ©ment +USE_NATIVE_DUMP=true + +# Surcharge DB optionnelle (auto-dĂ©tectĂ©e depuis app.ini par dĂ©faut) +# DB_TYPE=postgresql +# DB_HOST=localhost +# DB_PORT=5432 +# DB_NAME=gitea +# DB_USER=gitea +# DB_PASS=motdepasse +``` + +> Les valeurs `DB_*` sont **auto-dĂ©tectĂ©es** depuis `app.ini`. Ne les renseigner que pour surcharger ou si la dĂ©tection Ă©choue. + +--- + +## 📖 Utilisation + +### Menu interactif (recommandĂ©) + +```bash +sudo ./gitea-backup.sh +``` + +``` + [1] CrĂ©er une sauvegarde — Sauvegarde complĂšte (DB + dĂ©pĂŽts + donnĂ©es + config) + [2] Restaurer — Menu interactif de restauration + [3] Lister les sauvegardes — Voir les archives disponibles + [4] Planification Cron — GĂ©rer les sauvegardes automatiques + [5] Afficher l'aide — Documentation complĂšte + [0] Quitter +``` + +### Commandes directes + +```bash +sudo ./gitea-backup.sh backup # Lancer une sauvegarde +sudo ./gitea-backup.sh restore # Menu de restauration +sudo ./gitea-backup.sh list # Lister les archives +sudo ./gitea-backup.sh cron # GĂ©rer la planification cron +sudo ./gitea-backup.sh help # Aide +``` + +--- + +## đŸ’Ÿ Contenu d'une archive de sauvegarde + +Chaque archive `gitea_backup_YYYYMMDD_HHMMSS.tar.gz` contient : + +``` +gitea_backup_20260227_030000.tar.gz +├── database.sql ← dump complet de la base de donnĂ©es (PostgreSQL/MySQL) +├── database.db ← copie binaire (SQLite uniquement) +├── manifest.txt ← version Gitea, stats dĂ©pĂŽts, extrait app.ini +├── config/ +│ ├── app.ini ← configuration principale Gitea +│ ├── ssh_keys/ ← clĂ©s SSH de l'utilisateur Gitea +│ └── .env.gitea.backup ← copie du fichier .env +├── repositories.tar.gz ← tous les dĂ©pĂŽts Git (bare repos) +├── data.tar.gz ← avatars, attachments, LFS, tokens +└── native_dump/ ← archive gitea dump officielle (si USE_NATIVE_DUMP=true) + └── gitea_native_dump.zip +``` + +--- + +## 🔄 Modes de restauration + +| Mode | DB | DĂ©pĂŽts | DonnĂ©es | Config | +|---|:---:|:---:|:---:|:---:| +| **ComplĂšte** | ✅ | ✅ | ✅ | ✅ | +| **Base de donnĂ©es uniquement** | ✅ | ❌ | ❌ | ❌ | +| **DĂ©pĂŽts Git uniquement** | ❌ | ✅ | ❌ | ❌ | +| **DonnĂ©es uniquement** (avatars, LFS...) | ❌ | ❌ | ✅ | ❌ | +| **Configuration uniquement** (app.ini + SSH) | ❌ | ❌ | ❌ | ✅ | + +> ⚠ Le service Gitea est **automatiquement arrĂȘtĂ©** avant la restauration et **redĂ©marrĂ©** Ă  la fin (modes 1 Ă  4). +> ⚠ Les dossiers remplacĂ©s sont renommĂ©s `.pre_restore_TIMESTAMP` comme filet de sĂ©curitĂ©. + +--- + +## ⏰ Planification automatique (Cron) + +Via le menu `[4]` ou `sudo ./gitea-backup.sh cron` : + +| Option | Expression | Description | +|---|---|---| +| Quotidienne | `0 3 * * *` | Tous les jours Ă  03h00 | +| Biquotidienne | `0 3,15 * * *` | À 03h00 et 15h00 | +| Hebdomadaire | `0 3 * * 1` | Tous les lundis Ă  03h00 | +| Mensuelle | `0 3 1 * *` | Le 1er du mois Ă  03h00 | +| PersonnalisĂ©e | `` | Saisie manuelle validĂ©e | + +Exemple d'entrĂ©e installĂ©e : + +```cron +MAILTO=admin@exemple.fr +0 3 * * * /opt/scripts/gitea-backup/gitea-backup.sh backup # gitea-backup-auto +``` + +--- + +## 📁 Structure du dĂ©pĂŽt + +``` +gitea-backup/ +├── gitea-backup.sh ← script principal +├── .env.gitea.example ← modĂšle de configuration +├── README.md ← cette documentation +└── LICENSE ← licence MIT +``` + +--- + +## 🔒 SĂ©curitĂ© + +- Le fichier `.env.gitea` contient des mots de passe — **ne jamais le committer**. +- Ajouter au `.gitignore` : + ```bash + echo ".env.gitea" >> .gitignore + ``` +- Restreindre l'accĂšs au dossier de sauvegardes : + ```bash + chmod 700 /opt/Backups/gitea + ``` +- `app.ini` peut contenir des secrets (clĂ©s JWT, mots de passe SMTP) — les archives sont sensibles. + +--- + +## 🐛 DĂ©pannage + +**Erreur `gitea dump` Ă©choue** +Le script bascule automatiquement sur la mĂ©thode manuelle. VĂ©rifier que `GITEA_BINARY` est correct et que l'utilisateur `GITEA_USER` a les droits nĂ©cessaires. + +**La dĂ©tection DB Ă©choue** +Forcer manuellement `DB_TYPE`, `DB_NAME`, `DB_USER`, `DB_PASS` dans `.env.gitea`. + +**Permissions aprĂšs restauration** +```bash +chown -R git:git /var/lib/gitea +chmod 750 /etc/gitea +chmod 640 /etc/gitea/app.ini +``` + +**Gitea ne redĂ©marre pas aprĂšs restauration** +```bash +systemctl status gitea +journalctl -u gitea -n 50 +``` + +**Consulter les logs de sauvegarde** +```bash +tail -f /var/log/gitea-backup.log +``` + +--- + +## đŸ‘€ Auteur + +**Johnny Fontaine** — [j.fontaine@h3campus.fr](mailto:j.fontaine@h3campus.fr) +H3 Campus — [https://git.h3campus.fr/Johnny/Redmine](https://git.h3campus.fr/Johnny/Redmine) + +--- + +## 📄 Licence + +Ce projet est distribuĂ© sous licence **MIT**. Voir le fichier [LICENSE](LICENSE) pour plus de dĂ©tails. \ No newline at end of file