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
+141
View File
@@ -0,0 +1,141 @@
---
title: Git-Sync
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, backups, git, github, gitlab, typescript, mit]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Backups, https://github.com/AkashRajpurohit/git-sync]
---
# 💾 Git-Sync
> **Le « cron + git push » clé en main** : sauvegardez automatiquement vos dépôts GitHub, GitLab, Gitea sur un intervalle régulier, sans script maison.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [AkashRajpurohit/git-sync](https://github.com/AkashRajpurohit/git-sync) |
| **License** | MIT |
| **Langage** | TypeScript (Node.js) |
| **Étoiles GitHub** | 696 ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-backups|Backups]] |
## 📝 Description
**Git-Sync** est un **service léger qui clone et met à jour périodiquement une liste de dépôts Git** vers un dossier local ou un volume. C'est volontairement simple : pas d'UI, pas de base de données, juste un fichier de configuration et un cron interne qui fait `git clone` / `git pull` en boucle.
L'idée : vous avez des dépôts critiques (configs, dotfiles, wikis, code personnel) hébergés sur GitHub, GitLab.com ou un **GitLab self-hosted** / **Gitea** et vous voulez une **copie locale à jour** sur votre NAS, en cas de :
- ✅ Perte d'accès au compte GitHub (compte suspendu, 2FA perdu, org supprimée)
- ✅ Suppression accidentelle d'un dépôt (le `git push --force` de trop)
- ✅ Besoin d'un miroir local pour restaurer rapidement sans dépendre d'Internet
- ✅ Archivage d'archives d'un projet avant qu'il ne disparaisse
-**Multi-comptes** : vous pouvez mixer GitHub.com + GitLab self-hosted + Gitea
-**Notifications** sur échec (Discord, Telegram, Slack via webhook)
-**Mode miroir** : `git clone --mirror` pour préserver toutes les branches et tags
-**Schedules** : intervalle configurable par dépôt
-**Léger** : conteneur Node minimal (~50 Mo RAM)
-**Logs structurés** en JSON
**Public cible** : développeurs, admins système, **homelabbers** qui veulent un **miroir local automatisé** de leurs dépôts critiques sans écrire de cron maison.
## 🚀 Installation
### Docker Compose
```yaml
# docker-compose.yml
version: '3.8'
services:
git-sync:
image: ghcr.io/akashrajpurohit/git-sync:latest
container_name: git-sync
restart: unless-stopped
volumes:
- ./repos:/repos # Miroirs locaux
- ./config.yaml:/app/config.yaml:ro
environment:
- TZ=Europe/Paris
- CONFIG_PATH=/app/config.yaml
labels:
- "traefik.enable=false" # Pas d'UI : pas besoin d'exposer en HTTPS
volumes:
repos:
```
> ️ Git-Sync **n'expose pas d'UI web** : tout se passe via le fichier `config.yaml` et les logs. Pas besoin de le mettre derrière Traefik.
## ⚙️ Configuration Initiale
1. **Préparer un fichier `config.yaml`** listant vos dépôts :
```yaml
repos:
- name: mon-dotfiles
url: https://github.com/Velli/dotfiles.git
interval: 3600 # sync toutes les heures
mirror: true
- name: wiki
url: https://gitlab.example.com/root/wiki.git
interval: 86400 # sync quotidienne
```
2. **Générer un token** (GitHub PAT, GitLab token) si vos dépôts sont privés.
3. **Monter le dossier `repos/`** sur un volume persistant (sinon tout part au reboot).
4. **Démarrer** : `docker compose up -d` puis `docker logs -f git-sync` pour vérifier le premier clone.
5. **Ajouter une notification** (optionnel) : webhook Discord/Slack dans la config pour être alerté en cas d'échec.
6. **Programmer un test** : simuler un repo supprimé en local et vérifier que le miroir contient bien les derniers commits.
## 🔄 Alternatives
### Open Source
- **Gitea mirror** — fonctionnalité native de Gitea, plus complet mais nécessite Gitea.
- **git-mirror** (gogs/gogs) — script Python minimaliste.
- **GitLab Pull Mirror** — natif si vous avez une instance GitLab self-hosted.
- **restic / borg sur les dossiers clonés** — pour chiffrer et dédupliquer les miroirs.
- [[app-gitsave]] — autre outil dédié à la sauvegarde de repos Git, avec UI web.
### Comparaison Git-Sync vs autres
| Critère | Git-Sync | GitSave | Gitea Mirror | git-mirror |
| :--- | :--- | :--- | :--- | :--- |
| UI web | ❌ | ✅ | ✅ | ❌ |
| Config | YAML | YAML/Web | UI | CLI |
| Notifications | Webhook | Oui | Oui | ❌ |
| Multi-provider | ✅ | ✅ | Gitea only | ✅ |
| Légèreté | Très léger | Moyen | Lourd | Léger |
| Lissage | Cron interne | Schedules | Schedules | Cron externe |
**Verdict** : Git-Sync est **le plus simple et le plus léger** des outils de mirroring Git. Si vous voulez une UI web ou des fonctionnalités plus poussées, voir [[app-gitsave]].
### Propriétaires
- **GitHub Pro backup** — pas de backup officiel proposé par GitHub (à part le local clone).
- **GitLab Premium** — mirror features intégrées mais self-hosted uniquement en EE.
- **BackHub** — service commercial de backup GitHub (non self-hosted).
## 🔐 Sécurité
- **Règle 3-2-1** : vos miroirs Git-Sync ne sont qu'**une copie locale**. Combinez avec [[app-restic]] / [[app-borg]] / [[app-kopia]] qui chiffreront et envoieront ces miroirs vers un S3 / B2 / SFTP distant.
- **Chiffrement** : les dépôts sont stockés en clair sur disque. Si vos dépôts contiennent des secrets historiques, chiffrez le volume `repos` (LUKS / ZFS) ou compressez-chiffrez via un [[app-restic]] par-dessus.
- **Tokens d'accès** : passez-les via variables d'environnement ou un fichier `.env`, jamais en clair dans `config.yaml` versionné. Voir [[securisation-home-lab]].
- **Test de restauration** : clonez manuellement un de vos miroirs sur une autre machine tous les trimestres pour valider qu'ils sont bien à jour.
## 📚 Ressources
- [GitHub AkashRajpurohit/git-sync](https://github.com/AkashRajpurohit/git-sync)
- [Documentation configuration](https://github.com/AkashRajpurohit/git-sync#configuration)
## Pages Liées
- [[cat-backups]] — Catégorie Backups
- [[strategie-backup-321]] — Règle 3-2-1
- [[app-restic]] — Pour chiffrer et dédupliquer
- [[app-borg]] — Alternative à Restic
- [[app-kopia]] — Backup avec UI
- [[app-portainer]] — Gestion conteneurs
- [[securisation-home-lab]] — Bonnes pratiques sécurité