cyberviseurblog10-toolkit-github-coolify-autodeploy

T-01-04 — GitHub + Coolify auto-deploy : ce que contient le bundle (et pourquoi il vaut 47 €)

En mars 2025, 23 000 repos GitHub ont exécuté du code malveillant pendant 6 heures. Le vecteur : une action GitHub Actions référencée par tag, pas par SHA. Si tu utilises uses: tj-actions/changed-files@v1 dans tes workflows, cette attaque t'aurait touché.

Codecov, en 2021, c'est le même scénario par un autre biais : un outil d'upload bash, compromis en amont, exfiltrait les variables d'environnement CI de toutes les entreprises qui l'utilisaient. Clés AWS, tokens API, secrets de déploiement — tout partait vers un serveur externe, silencieusement.

Ces deux incidents ont un point commun : ils ne ciblaient pas des systèmes mal codés. Ils ciblaient des chaînes CI/CD sans durcissement. Un repo GitHub classique, des workflows par tag, un webhook sans signature — c'est exactement la surface d'attaque qu'ils exploitaient.

T-01-04 est le toolkit qui corrige ça.


Ce que fait T-01-04 en une phrase

T-01-04 transforme un repo GitHub fraîchement créé en chaîne CI/CD prod-ready : 3 branches, GitHub App scope-restricted en lieu et place d'un PAT, workflows GitHub Actions avec actions pinnées par SHA, branch protection prod avec CI requise, webhook HMAC SHA-256 vers Coolify, et gitleaks en pre-commit pour ne jamais committer un secret par erreur.

Après setup (~30 min) : tu fais git push origin prod, la CI tourne, Coolify reçoit un webhook signé, pull le code via la GitHub App, build et démarre l'app. Ton site est en ligne. Si quelque chose échoue à n'importe quelle étape, une issue GitHub est créée automatiquement avec le runbook de diagnostic.

Prérequis obligatoires : T-01-01 (Coolify hardened actif sur ton VPS) et T-01-02 (DNS + TLS sur le domaine cible). Sans Coolify accessible en HTTPS, le webhook n'a nulle part où aller.


Ce que contient le bundle : 24 fichiers, 7 catégories

CatégorieCe qui est livréRôle
Workflows CI/CDci.yml (app-agnostic, 6 jobs) + deploy-prod.yml + deploy-staging.yml + 3 exemples caller (Next.js, Astro, Node Express)Pipeline complet avec actions pinnées par SHA — jamais par tag
Branch protectionbranch-protection-prod.json + branch-protection-staging.jsonPayloads API GitHub : CI requise, linear history, allow_force_pushes: false
GitHub Appsetup-github-app.sh (manifest flow + CSRF state + callback localhost)Scope "selected repositories" par défaut — jamais un PAT en clair
Webhook HMACIntégré dans deploy-prod.yml + rotate-webhook-secret.sh (rotation 2-side)Signature SHA-256, comparaison constant-time, rotation documentée 90j
Sécurité statique.gitleaks.toml (patterns webhook, Infisical, Cloudflare, GitHub PAT) + CODEOWNERS + pull_request_template.md + ISSUE_TEMPLATE/deploy-bloque.mdDétection secrets en pre-commit, review forcée, runbook crisis
Scripts setupsetup-repo.sh + .ps1, configure-coolify-source.sh, configure-branch-protection.sh, deploy-prod-manual.shInit repo + 3 branches + configuration idempotente API GitHub et Coolify
Renovaterenovate.jsonAuto-PR pour les mises à jour de dépendances, groupe dédié pour les actions GitHub

La documentation : un manuel utilisateur de 19 sections (~1 069 lignes) qui couvre de "c'est quoi Git" jusqu'à "rollback prod en moins de 2 minutes", une checklist pré/post installation de 30+ items, une vidéo tutoriel de 18-22 min démo complète.


Pour qui est ce toolkit

Tu es vibe-coder solo. Tu génères du code avec Claude ou Cursor, tu as des projets sur GitHub, tu déploies sur un VPS avec Coolify. Tu veux un pipeline reproductible que tu branches sur chaque nouveau projet en 30 minutes — sans devenir DevOps à plein temps.

Tu es infopreneur avec plusieurs landing pages ou sites de formation. Tu multiplies les repos et tu veux la même chaîne CI/CD partout. ci.yml est app-agnostic : tu copies le caller, tu adaptes 5 lignes, c'est prêt.

Tu as déjà eu un push direct qui a cassé ta prod. Ou tu t'es retrouvé à faire scp sur le serveur à 23h en espérant que ça marche. T-01-04 pose la garde-fou qui rend ça impossible sur la branche prod.

Tu as lu le rapport tj-actions ou Codecov et tu as réalisé que tes workflows utilisent des tags, pas des SHA. C'est le gap précis que ce toolkit comble.

Ce n'est pas le bon toolkit si :

  • Tu déploies sur Vercel ou Netlify uniquement — le webhook HMAC et la GitHub App Coolify n'ont pas de sens dans ce contexte.
  • Tu n'as pas encore T-01-01 actif. Coolify doit être accessible en HTTPS pour recevoir les webhooks.
  • Tu n'as pas de compte GitHub avec 2FA TOTP activé. SMS ne suffit pas.
  • Tu gères une équipe de 10+ développeurs avec un DevOps dédié et une compliance enterprise — T-01-04 est calibré solo ou petite équipe.

Ce que ça remplace

Le push manuel par FTP ou SCP. Aucune trace, aucun rollback automatique, secrets souvent embarqués dans la commande. Si ça casse, tu debugges à l'aveugle.

Le panel hébergeur qui clone Git. C'est une base correcte, mais ça implique presque toujours un PAT (Personal Access Token) stocké en clair dans Coolify. Un PAT compromis donne accès à tous tes repos, pas seulement celui que tu voulais exposer. La GitHub App de T-01-04 est révocable indépendamment de ton identité GitHub, avec un scope limité aux repos que tu choisis explicitement.

Les workflows GitHub Actions référencés par tag (@v4, @v1, etc.). L'incident tj-actions de mars 2025 a montré qu'un attaquant qui contrôle le repo d'une action populaire peut réattribuer un tag à un commit malveillant. Ton workflow exécute alors du code arbitraire avec accès à tous tes secrets CI. Les SHA de T-01-04 (actions/checkout = 11bd71901..., actions/setup-node = 49933ea5...) ne changent pas sans que tu le valides explicitement via une PR Renovate.


Couverture sécurité : 5 tactiques MITRE ATT&CK

Tactique MITRECe que fait T-01-04
TA0001 Initial AccessWebhook HMAC SHA-256 bloque les triggers arbitraires depuis un attaquant qui connaît l'URL. Branch protection prod bloque le push direct sans CI, même depuis un compte compromis.
TA0003 PersistenceGitHub App avec scope "selected repositories" par défaut. Un attaquant qui compromet l'App n'accède qu'aux repos whitelistés, pas à tout le compte. Révocable indépendamment de l'identité humaine.
TA0005 Defense EvasionActions pinnées par SHA (contre-mesure directe à l'attaque tj-actions). Branch protection empêche la modification du flux de déploiement. Audit log GitHub trace tout push admin.
TA0006 Credential AccessHMAC + scope minimal + SHA pinning réduisent la surface de vol de credentials CI (scénario Codecov/tj-actions). Couverture complète sur ce domaine via T-01-05 (Infisical).
TA0008 Lateral MovementL'install scope whitelist contient le blast radius. Si l'App est compromise, l'attaquant ne peut pas pivoter vers d'autres repos ou services via les mêmes credentials.

Ce que T-01-04 ne couvre pas : auth multi-utilisateur (T-05-01), protection DDoS/WAF (déjà fait via T-01-02 Cloudflare), rotation automatique des secrets (T-01-05 Infisical). Ces lacunes sont documentées — pas dissimulées.


Place dans le parcours B01

T-01-04 est le quatrième toolkit du bundle B01 Foundation. Il a besoin que T-01-01 soit actif (Coolify accessible HTTPS) et que T-01-02 soit en place (ton domaine résout correctement avec TLS). Il s'applique à n'importe quelle app — Next.js (T-01-03), Astro, Node Express, ou tout projet avec un Dockerfile.

Après T-01-04, l'étape naturelle est T-01-05 (Secrets Infisical). La raison concrète : en v1.0, le webhook secret HMAC est stocké localement (Bitwarden ou 1Password recommandés). T-01-05 le place dans Infisical, automatise la rotation 90j avec cron, et élimine la dépendance à un gestionnaire de mots de passe manuel pour les secrets machine. Le script rotate-webhook-secret.sh fourni dans T-01-04 s'articule directement avec Infisical.

La séquence complète B01 : VPS hardened (T-01-01) → DNS + TLS (T-01-02) → repo + CI/CD + auto-deploy (T-01-04) → secrets Infisical (T-01-05). T-01-03 (Next.js boilerplate sécurisé) est l'app type que tu branches sur ce pipeline.


Pricing et garantie

Prix unitaire47 €
FormatZIP téléchargeable + email post-achat + lien vidéo 18-22 min
Garantie14 jours satisfait ou remboursé, sans conditions
SupportEmail 14 jours après achat
Temps d'application~30 min setup + 18-22 min vidéo
NiveauIntermédiaire (Git basique requis, terminal)

En résumé

T-01-04 pose trois choses que la majorité des setups solo n'ont pas : des actions GitHub pinnées par SHA (le vecteur tj-actions ne fonctionne pas), un webhook signé HMAC (un attaquant qui connaît ton URL Coolify ne peut pas déclencher de deploy), et une branch protection prod qui rend le push accidentel ou malveillant impossible sans CI verte.

Ce n'est pas une couche de sécurité supplémentaire sur un pipeline existant. C'est le pipeline. Réutilisable sur tous tes projets futurs, documenté en 19 sections, avec un script de rotation des secrets et un runbook crisis si quelque chose se bloque en prod.


Passer à l'action :

Télécharger T-01-04 — 47 € — repo ZIP + vidéo 18-22 min + support 14 jours.

Bundle B01 Foundation — 97 € — les 5 toolkits complets (T-01-01 à T-01-05), économie de 51 % vs achat unitaire. Si tu pars de zéro ou si tu veux tout sécuriser d'un coup, c'est le point d'entrée.


Article suivant : T-01-05 — Secrets Infisical : rotation automatique, zéro secret en clair, segmentation par service — l'étape qui complète T-01-04 sur la gestion des credentials machine.

Articles liés :


Cet article est gratuit et fait partie de la phase 01 du parcours Cyberviseur. Pour être prévenu·e quand T-01-05 et les prochains modules sortent, inscris-toi à la newsletter — un email tous les 15 jours, jamais de spam, désinscription en un clic.