#!/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 ""