Files
2026-06-09 18:40:21 +02:00

6.3 KiB
Raw Permalink Blame History


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

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

    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

Pages Liées