Aller au contenu

Backup GitHub

Chaque projet dans /docker/*/ est synchronisé avec un repo privé GitHub (compte sidy-coder). Le backup fonctionne à deux niveaux :

MécanismeDéclencheurFiabilité
Post-commit hookAutomatique après chaque git commitImmédiat
Cron quotidienTous les jours à 3h du matinFilet de sécurité
Dossier localRepo GitHub
/docker/diarysidy-coder/diary
/docker/kamsidy-coder/kam
/docker/suivisidy-coder/suivi
/docker/traefik-lr9jsidy-coder/infra-traefik
/docker/n8n-rkafsidy-coder/infra-n8n
/docker/n8n-mcpsidy-coder/infra-n8n-mcp
/docker/beszel-p8z2sidy-coder/infra-beszel
/docker/kamctrlsidy-coder/kamctrl
/docker/docssidy-coder/docs

Chaque projet a un hook dans .git/hooks/post-commit qui lance automatiquement git push en arrière-plan après chaque commit :

Fenêtre de terminal
cat /docker/<projet>/.git/hooks/post-commit
Fenêtre de terminal
~/scripts/git-push-all.sh

Ce script parcourt tous les dossiers /docker/*/, vérifie s’il y a des changements non pushés, et les envoie sur GitHub.

Fenêtre de terminal
cat ~/.lab_tracking/git-push.log | tail -20

Certains fichiers contenant des secrets ne sont jamais pushés sur GitHub :

FichierProjetAlternative versionnée
.env (n8n-mcp)n8n-mcp.env.example
.envkamctrlVariables dans docker-compose.yml

Si le VPS est perdu ou si tu travailles sur un nouveau serveur :

Fenêtre de terminal
# 1. Cloner le repo
git clone https://github.com/sidy-coder/<nom-repo> /docker/<nom-projet>
cd /docker/<nom-projet>
# 2. Recréer les fichiers secrets (non versionnés)
# → .env, tokens OAuth, etc. depuis context.md ou le gestionnaire de secrets
# 3. Réinstaller le post-commit hook
cat > .git/hooks/post-commit << 'HOOK'
#!/bin/sh
git push origin $(git branch --show-current) &
HOOK
chmod +x .git/hooks/post-commit
# 4. Démarrer le container
docker compose up -d --build

Le compte GitHub Sidking01 est invité comme collaborateur (permission push) sur tous les repos. En cas de perte d’accès au compte sidy-coder, les repos restent accessibles depuis Sidking01.

Fenêtre de terminal
# Vérifier les collaborateurs d'un repo
gh api repos/sidy-coder/<repo>/collaborators --jq '.[].login'