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