--- 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