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