- 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
87 lines
2.6 KiB
Bash
Executable File
87 lines
2.6 KiB
Bash
Executable File
#!/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 ""
|
|
|