🗂️ Git Manager : Mon relai Git multi-dépôts avec interface web

Gérer plusieurs dépôts Git répartis entre GitHub, GitLab et un NAS local, c'est vite le chaos. Git Manager est l'application Django que j'ai construite pour centraliser tout ça : dashboard, surveillance des remotes, gestion des clés SSH et notifications automatiques — le tout containerisé avec Docker.

Architecture générale

Git Manager se positionne en relai entre ta machine locale et tes remotes. Les dépôts sont montés depuis le système de fichiers hôte, et l'application expose trois couches : une interface Web (dashboard, logs), une API REST avec rate-limiting, et un serveur SSH relai optionnel sur le port 2222.

Fonctionnalités principales

  • Dashboard — vue d'ensemble des dépôts et statuts git
  • Remotes — ajout, édition, push / pull / fetch, test SSH
  • Clés SSH — génération, import, renommage, association aux remotes
  • Surveillance périodique — détection ahead / behind / diverged avec alertes Slack et e-mail
  • Logs filtrables — historique complet des actions git
  • Backup automatique — tag git backup-YYYYMMDD-HHMMSS avant chaque push
  • Thème dark / light — toggle persistant

Captures d'écran

Démarrage rapide avec Docker

Trois commandes suffisent pour démarrer :

cp .env.example .env
# Éditer .env : SECRET_KEY, REPOS_PATH, etc.
docker compose up -d --build

L'interface est accessible sur http://localhost:8000.

Variables d'environnement principales

  • SECRET_KEY — clé secrète Django (obligatoire)
  • REPOS_PATH — chemin hôte des dépôts à monter
  • ENABLE_SSH_SERVER — active le serveur SSH relai (défaut : false)
  • API_TOKEN — token Bearer pour les endpoints API
  • SLACK_WEBHOOK_URL — webhook Slack pour les alertes
  • ALERT_EMAIL_TO — e-mail de destination des alertes
  • CRON_SCHEDULE — fréquence de vérification (défaut : */15 * * * *)

API REST

L'authentification se fait via header Authorization: Bearer <token>. Les endpoints disponibles : GET /api/health/ (healthcheck public), GET /api/status/ (statut de tous les dépôts, 30 req/min), GET /api/repos/ids/ (liste des dépôts, 60 req/min), GET /api/repos/<pk>/ssh/ (config SSH d'un dépôt), GET /api/check-remotes/ (vérification manuelle, login requis).

Commandes utiles

# Vérifier l'état des remotes
python manage.py check_remotes [--verbose] [--alerts-only]

# Synchroniser les dépôts depuis /repos
python manage.py sync_repos [--dry-run]

# Lancer la suite de tests (75 tests)
python manage.py test --verbosity=2

Conclusion

Git Manager répond à un besoin concret : avoir une vue centralisée de tous ses dépôts, savoir lesquels sont en retard sur leurs remotes, et ne plus jamais oublier une clé SSH mal configurée. C'est un projet que j'utilise au quotidien sur mon serveur, et qui va continuer d'évoluer.

Si vous gérez plusieurs dépôts Git et que vous aimez l'auto-hébergement, n'hésitez pas à le tester et à ouvrir des issues ou des PRs sur GitHub.

 

Indroduction

Gérer plusieurs dépôts Git répartis entre GitHub, GitLab et un NAS local, c'est vite le chaos. Git Manager est l'application Django que j'ai construite pour centraliser tout ça : dashboard, surveillance des remotes, gestion des clés SSH et notifications automatiques — le tout containerisé avec Docker.

Le projet est open-source sur GitHub : https://github.com/laurentdu51/git_manager" target="_blank" rel="noopener">laurentdu51/git_manager. Stack : Python 3.12 / Django 4.2, Docker, Gunicorn, SQLite (PostgreSQL optionnel) — sans framework JS, uniquement du vanilla.

Nombre de Lectures : 6
Date de mise en ligne : 05 mai 2026 à 13:00

Les Catégories

Django Serveur Docker NAS

Une Pub