feat: ajout documentation Nginx Proxy Manager et scripts de déploiement

- Documentation complète pour Nginx Proxy Manager (docs/10-configuration-nginx-proxy-manager.md)
- Script get-npm-token.sh pour générer automatiquement les tokens API
- Exemple complet de .woodpecker.yml avec logique inline de déploiement
- Documentation déploiement applications avec URLs dynamiques (docs/09-deploiement-applications.md)
- Script deploy.sh comme alternative optionnelle
- Mise à jour README avec références aux nouvelles documentations
This commit is contained in:
2025-12-24 18:14:48 +01:00
parent 4aa46fbbbb
commit 9132aeb5d1
8 changed files with 1844 additions and 0 deletions

86
scripts/get-npm-token.sh Executable file
View File

@ -0,0 +1,86 @@
#!/bin/bash
# get-npm-token.sh - Génère un token API pour Nginx Proxy Manager
# Usage: ./get-npm-token.sh [NPM_URL] [EMAIL]
set -e
NPM_URL=${1:-"http://localhost:81"}
EMAIL=${2:-"admin@example.com"}
echo "Génération du token API pour Nginx Proxy Manager..."
echo "URL: ${NPM_URL}"
echo "Email: ${EMAIL}"
echo ""
# Demander le mot de passe de manière sécurisée
read -sp "Mot de passe: " PASSWORD
echo ""
# Vérifier que curl est disponible
if ! command -v curl &> /dev/null; then
echo "❌ curl n'est pas installé"
exit 1
fi
# Vérifier que jq est disponible
if ! command -v jq &> /dev/null; then
echo "⚠️ jq n'est pas installé, installation..."
if command -v apk &> /dev/null; then
apk add --no-cache jq 2>/dev/null || echo "Impossible d'installer jq"
elif command -v apt-get &> /dev/null; then
apt-get update && apt-get install -y jq 2>/dev/null || echo "Impossible d'installer jq"
else
echo "❌ Veuillez installer jq manuellement"
exit 1
fi
fi
# Obtenir le token
echo "Connexion à l'API..."
RESPONSE=$(curl -s -X POST "${NPM_URL}/api/tokens" \
-H "Content-Type: application/json" \
-d "{
\"identity\": \"${EMAIL}\",
\"secret\": \"${PASSWORD}\"
}")
# Vérifier les erreurs HTTP
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST "${NPM_URL}/api/tokens" \
-H "Content-Type: application/json" \
-d "{
\"identity\": \"${EMAIL}\",
\"secret\": \"${PASSWORD}\"
}")
if [ "${HTTP_CODE}" != "200" ] && [ "${HTTP_CODE}" != "201" ]; then
echo "❌ Erreur HTTP ${HTTP_CODE}"
echo "Réponse: ${RESPONSE}"
exit 1
fi
# Extraire le token
TOKEN=$(echo "${RESPONSE}" | jq -r '.token' 2>/dev/null)
if [ "${TOKEN}" = "null" ] || [ -z "${TOKEN}" ]; then
echo "❌ Erreur lors de la génération du token"
echo "Réponse: ${RESPONSE}"
exit 1
fi
echo ""
echo "✅ Token généré avec succès !"
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Token: ${TOKEN}"
echo "═══════════════════════════════════════════════════════════"
echo ""
echo "📝 Pour l'utiliser dans Woodpecker CI :"
echo " 1. Allez dans Woodpecker > Settings > Secrets"
echo " 2. Ajoutez NPM_API_TOKEN avec la valeur ci-dessus"
echo " 3. Ajoutez NPM_API_URL avec la valeur: ${NPM_URL}"
echo ""
echo "🧪 Test du token :"
echo " curl -H \"Authorization: Bearer ${TOKEN}\" \\"
echo " ${NPM_URL}/api/nginx/proxy-hosts"
echo ""