Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+132
View File
@@ -0,0 +1,132 @@
---
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