6.3 KiB
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 |
| License | MIT |
| Langage | TypeScript (Node.js) |
| Étoiles GitHub | 696 ⭐ |
| Dernière MAJ | 2026-06-07 |
| Catégorie | [[cat-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 --forcede 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 --mirrorpour 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
# 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.yamlet les logs. Pas besoin de le mettre derrière Traefik.
⚙️ Configuration Initiale
-
Préparer un fichier
config.yamllistant vos dépôts :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 -
Générer un token (GitHub PAT, GitLab token) si vos dépôts sont privés.
-
Monter le dossier
repos/sur un volume persistant (sinon tout part au reboot). -
Démarrer :
docker compose up -dpuisdocker logs -f git-syncpour vérifier le premier clone. -
Ajouter une notification (optionnel) : webhook Discord/Slack dans la config pour être alerté en cas d'échec.
-
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 dansconfig.yamlversionné. 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
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é