7.0 KiB
7.0 KiB
🔐 Sécurisation du Repository pour Portainer
⚖️ Public vs Privé : Que choisir ?
✅ Repository PUBLIC (Recommandé pour un portfolio)
Avantages :
- ✅ Déploiement plus simple (pas d'authentification)
- ✅ Pas de gestion de tokens
- ✅ Bon pour votre CV (montre votre code)
- ✅ Open source = crédibilité
Points d'attention :
- ⚠️ Ne JAMAIS commit de secrets (API keys, mots de passe)
- ⚠️ Utiliser des variables d'environnement pour les configs sensibles
- ⚠️ Vérifier le
.gitignoreavant de push
Fichiers à NE JAMAIS commit :
.env
.env.local
.env.production
secrets/
*.key
*.pem
config/database.yml
🔒 Repository PRIVÉ (Si vous avez du code propriétaire)
Avantages :
- 🔒 Code source non visible publiquement
- 🔒 Contrôle d'accès granulaire
- 🔒 Adapté aux projets clients
Inconvénients :
- Configuration plus complexe
- Besoin de gérer des tokens/clés SSH
🔑 Méthodes d'authentification pour dépôt PRIVÉ
Méthode 1 : Personal Access Token (PAT) - Plus simple
Étape 1 : Créer le token sur GitHub
- Connectez-vous à GitHub
- Settings → Developer settings → Personal access tokens → Tokens (classic)
- Generate new token (classic)
- Configuration :
- Note :
Portainer Portfolio Deploy - Expiration :
90 daysouNo expiration(moins sécurisé) - Scopes : Cochez uniquement :
- ✅
repo(Full control of private repositories)
- ✅
- Note :
- Generate token
- ⚠️ COPIEZ le token immédiatement (commence par
ghp_)- Vous ne pourrez plus le voir après !
Étape 2 : Utiliser le token dans Portainer
- Dans Portainer : Stacks → + Add stack
- Repository URL :
https://github.com/kinou-p/portfolio-website - ✅ Cochez "Authentication"
- Remplissez :
Username: kinou-p Personal Access Token: ghp_xxxxxxxxxxxxxxxxxxxx
Étape 3 : Sécuriser le token
- ⚠️ Ne partagez JAMAIS ce token
- 🔄 Régénérez-le régulièrement (tous les 3 mois)
- 📝 Stockez-le dans un gestionnaire de mots de passe (1Password, Bitwarden)
Méthode 2 : SSH Deploy Key - Plus sécurisé
Étape 1 : Générer une paire de clés SSH
Sur votre serveur Docker :
# Générer une clé SSH dédiée
ssh-keygen -t ed25519 -C "portainer-deploy-portfolio" -f ~/.ssh/portainer_portfolio
# NE METTEZ PAS de passphrase (appuyez sur Entrée 2 fois)
# Vérifier que les clés sont créées
ls -la ~/.ssh/portainer_portfolio*
# Vous devez voir :
# portainer_portfolio (clé privée)
# portainer_portfolio.pub (clé publique)
Étape 2 : Ajouter la clé publique sur GitHub
# Afficher la clé publique
cat ~/.ssh/portainer_portfolio.pub
Copiez la sortie (commence par ssh-ed25519 AAAAC3...)
- Sur GitHub : Repository → Settings → Deploy keys
- Add deploy key
- Configuration :
Title: Portainer Deploy Key: [Collez la clé publique] ❌ Allow write access (décoché - read-only suffit) - Add key
Étape 3 : Utiliser la clé dans Portainer
# Afficher la clé PRIVÉE
cat ~/.ssh/portainer_portfolio
Copiez TOUTE la sortie (de -----BEGIN OPENSSH PRIVATE KEY----- jusqu'à -----END OPENSSH PRIVATE KEY-----)
- Dans Portainer : Stacks → + Add stack
- Repository configuration :
Repository URL: git@github.com:kinou-p/portfolio-website.git Repository reference: refs/heads/main - ✅ Cochez "Authentication"
- Sélectionnez "SSH"
- Collez la clé privée complète dans le champ
🔒 Bonnes pratiques de sécurité
1. Utiliser des variables d'environnement
Ne jamais commit de secrets dans le code. Utilisez .env :
# .env (NE JAMAIS COMMIT)
GTM_ID=GTM-5V6TCG4C
API_KEY=secret_key_here
DATABASE_URL=postgresql://user:pass@localhost/db
Dans Portainer, ajoutez ces variables dans la Stack :
- Stack → Environment variables → + add variable
2. Fichier .gitignore robuste
Assurez-vous que votre .gitignore contient :
# Secrets
.env
.env.*
!.env.example
*.key
*.pem
secrets/
credentials/
# Système
.DS_Store
Thumbs.db
desktop.ini
# IDE
.vscode/
.idea/
*.swp
*.swo
# Build
node_modules/
dist/
build/
.cache/
# Logs
*.log
logs/
3. Vérifier avant de commit
# Vérifier ce qui va être commit
git status
# Vérifier qu'aucun secret n'est présent
git diff
# Si vous avez commit un secret par erreur :
# 1. Supprimez-le du code
# 2. Changez le secret (token, API key, etc.)
# 3. Faites un commit correctif
# 4. Le secret restera dans l'historique Git !
# Utilisez git filter-branch ou BFG Repo-Cleaner pour l'effacer
4. Rotation des secrets
- 🔄 Régénérez les tokens tous les 90 jours
- 🔄 Changez les clés SSH si elles sont compromises
- 🔄 Révoquez immédiatement tout token exposé
🎯 Recommandation finale
Pour un portfolio personnel comme le vôtre :
✅ Gardez le repository PUBLIC
Raisons :
- Pas de secrets sensibles (juste un site vitrine)
- Plus simple à déployer
- Bon pour votre profil GitHub
- Permet aux recruteurs de voir votre code
Configuration sécurisée :
✅ .gitignore complet
✅ Pas de .env committed
✅ Variables d'environnement dans Portainer
✅ Tokens d'API en variables d'environnement seulement
🔒 Passez en PRIVÉ seulement si :
- Vous avez du code propriétaire
- C'est un projet client
- Vous testez des features non prêtes
📋 Checklist de sécurité
Avant de rendre votre repo public :
- Vérifier
.gitignorecomplet - Aucun fichier
.envcommitted - Aucune API key dans le code
- Pas de mots de passe en dur
- Pas de tokens GitHub/AWS/etc.
- Vérifier l'historique Git :
git log -p | grep -i "password\|token\|key" - Supprimer les fichiers sensibles de l'historique si nécessaire
- Tester le déploiement Portainer
🆘 J'ai commit un secret par erreur !
🚨 Action immédiate :
- Changez le secret (régénérez la clé API, token, etc.)
- Supprimez-le du code et commit
- Nettoyez l'historique Git (le secret reste dans l'historique !)
# Option 1 : BFG Repo-Cleaner (plus simple)
# Téléchargez : https://rtyley.github.io/bfg-repo-cleaner/
java -jar bfg.jar --replace-text secrets.txt # fichier avec les secrets à remplacer
# Option 2 : git filter-branch (manuel)
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch chemin/vers/fichier" \
--prune-empty --tag-name-filter cat -- --all
# Force push
git push origin --force --all
- Notifiez l'équipe si c'est un projet collaboratif
📞 Besoin d'aide ?
Bonne sécurisation ! 🔒✨