133 lines
6.1 KiB
Markdown
133 lines
6.1 KiB
Markdown
---
|
|
title: GitSave
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, backups, git, github, gitlab, go, mit]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Backups, https://github.com/TimWitzdam/GitSave]
|
|
---
|
|
|
|
# 💾 GitSave
|
|
|
|
> **Le backup de dépôts Git avec une UI web** : planifiez la sauvegarde automatique de vos repos GitHub, GitLab ou Gitea et explorez-les depuis un navigateur.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | (GitHub) |
|
|
| **GitHub** | [TimWitzdam/GitSave](https://github.com/TimWitzdam/GitSave) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go |
|
|
| **Étoiles GitHub** | 312 ⭐ |
|
|
| **Dernière MAJ** | 2026-06-07 |
|
|
| **Catégorie** | [[cat-backups|Backups]] |
|
|
|
|
## 📝 Description
|
|
|
|
**GitSave** est, comme [[app-git-sync]], un **miroir automatisé de dépôts Git** — mais avec une **UI web** qui le distingue. Vous ajoutez vos dépôts, GitSave les clone (`git clone --mirror`) à intervalle régulier, et vous pouvez **consulter la liste des miroirs, leur date de dernière synchro, leur taille, et déclencher un refresh manuel** depuis le navigateur.
|
|
|
|
Cas d'usage typiques :
|
|
|
|
- ✅ **Sauvegarder ses propres projets** hébergés sur GitHub.com en local sur son NAS
|
|
- ✅ **Archiver des dépôts externes** qui pourraient disparaître (projets open source, wiki personnel, dotfiles d'un dev)
|
|
- ✅ **Miroir d'une instance Gitea / GitLab self-hosted** vers un autre serveur (DR)
|
|
- ✅ **Clone initial** automatique quand on ajoute un nouveau repo (pas besoin de cron manuel)
|
|
- ✅ **UI web** listant tous les repos backupés, leur état, leur dernière synchro
|
|
- ✅ **Planification** par repo (intervalle personnalisable, ou « on-demand only »)
|
|
- ✅ **Providers supportés** : GitHub, GitLab.com, GitLab self-hosted, Gitea, et tout ce qui parle Git+HTTP/SSH
|
|
- ✅ **Authentification** par token (PAT) ou clé SSH
|
|
- ✅ **Binaire Go statique** : déploiement trivial, conteneur léger (~20 Mo)
|
|
|
|
**Public cible** : utilisateurs qui veulent **voir leurs backups Git** sans aller fouiller dans un dossier de miroirs. La différence avec [[app-git-sync]] est essentiellement l'**UI web** et un peu plus de « features clés en main ».
|
|
|
|
## 🚀 Installation
|
|
|
|
### Docker Compose
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
gitsave:
|
|
image: ghcr.io/timwitzdam/gitsave:latest
|
|
container_name: gitsave
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080" # UI web
|
|
volumes:
|
|
- gitsave-data:/data
|
|
- gitsave-config:/config
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- GITSAVE_SECRET_KEY=changez-moi
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.gitsave.rule=Host(`gitsave.example.com`)"
|
|
- "traefik.http.routers.gitsave.entrypoints=websecure"
|
|
- "traefik.http.routers.gitsave.tls.certresolver=letsencrypt"
|
|
|
|
volumes:
|
|
gitsave-data:
|
|
gitsave-config:
|
|
```
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Démarrer** : `docker compose up -d`, puis `https://gitsave.example.com`.
|
|
2. **Créer le compte admin** au premier lancement.
|
|
3. **Ajouter une source** (Providers > Add) : par ex. GitHub.com, en collant un PAT (Personal Access Token) avec scope `repo`.
|
|
4. **Sélectionner les dépôts à sauvegarder** : soit tous, soit une sélection manuelle.
|
|
5. **Définir la fréquence** : par défaut toutes les 6h, modifiable par repo.
|
|
6. **Vérifier** : la page d'accueil doit afficher les miroirs avec leur date de dernière synchro ; tester une synchro manuelle sur un repo pour valider.
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
- [[app-git-sync]] — même usage, **sans UI**, plus minimaliste.
|
|
- **Gitea Mirror** — fonctionnalité native si vous avez Gitea.
|
|
- **GitLab Pull Mirror** — natif en EE.
|
|
- **restic / borg sur les dossiers clonés** — pour chiffrer et dédupliquer les miroirs une fois clonés.
|
|
- **OneDev** — plateforme DevOps avec mirror built-in.
|
|
|
|
### Comparaison GitSave vs autres
|
|
|
|
| Critère | GitSave | Git-Sync | Gitea Mirror | onefetch |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| UI web | ✅ | ❌ | ✅ | ❌ (CLI) |
|
|
| Setup | Très simple | Simple | Moyen | Simple |
|
|
| Multi-provider | ✅ | ✅ | Gitea only | N/A |
|
|
| Planification | ✅ | ✅ | ✅ | Manuel |
|
|
| Notifications | Webhook | Webhook | UI | ❌ |
|
|
| Léger | ✅ | Très léger | Lourd | ✅ |
|
|
|
|
**Verdict** : GitSave est **le choix par défaut** si vous voulez **une UI** pour visualiser vos backups Git. Si vous êtes à l'aise avec un fichier YAML et que vous n'avez pas besoin de voir un dashboard, [[app-git-sync]] est plus léger.
|
|
|
|
### Propriétaires
|
|
- **GitHub Pro/Enterprise backup** — pas de backup officiel, juste un export manuel.
|
|
- **BackHub** — service commercial de backup GitHub (cloud, hors self-hosted).
|
|
- **GitLab Premium** — mirror features intégrées.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- **Règle 3-2-1** : GitSave ne fait qu'**une copie locale** de vos dépôts. Combinez avec [[app-restic]] / [[app-borg]] / [[app-kopia]] pour chiffrer le dossier `gitsave-data` et l'envoyer vers un S3 / B2 / SFTP distant. Voir [[strategie-backup-321]].
|
|
- **Chiffrement** : les miroirs sont stockés **en clair** sur disque (dépôts Git bare classiques). Si vos dépôts contiennent des secrets historiques (anciens tokens commités, etc.), chiffrez le volume `gitsave-data` au niveau OS, ou chiffrez via un backup par-dessus.
|
|
- **Tokens d'accès** : stockez les PAT GitHub / GitLab dans les variables d'environnement ou le fichier de config de GitSave, pas en clair dans un compose versionné. Voir [[securisation-home-lab]].
|
|
- **Test de restauration** : tous les trimestres, clonez un de vos miroirs (`git clone /data/repos/myrepo.git`) sur une autre machine pour valider qu'il est cohérent et que `git fsck` est clean.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub TimWitzdam/GitSave](https://github.com/TimWitzdam/GitSave)
|
|
- [Documentation](https://github.com/TimWitzdam/GitSave#readme)
|
|
|
|
## Pages Liées
|
|
- [[cat-backups]] — Catégorie Backups
|
|
- [[strategie-backup-321]] — Règle 3-2-1
|
|
- [[app-restic]] — Pour chiffrer les miroirs
|
|
- [[app-borg]] — Alternative à Restic
|
|
- [[app-kopia]] — Backup avec UI
|
|
- [[app-portainer]] — Gestion conteneurs
|
|
- [[securisation-home-lab]] — Bonnes pratiques
|