#!/bin/bash # Script de déploiement de la configuration nginx pour watermark.certificator.4nkweb.com # Usage: # - Sur le proxy: sudo ./deploy-watermark-nginx.sh # - Depuis une autre machine: ssh ncantu@192.168.1.100 'sudo bash -s' < deploy-watermark-nginx.sh set -e PROXY_HOST="192.168.1.100" PROXY_USER="ncantu" DOMAIN="watermark.certificator.4nkweb.com" SERVICE_IP="192.168.1.105" SERVICE_PORT="3022" NGINX_SITES_AVAILABLE="/etc/nginx/sites-available" NGINX_SITES_ENABLED="/etc/nginx/sites-enabled" echo "=== Déploiement de la configuration nginx pour ${DOMAIN} ===" echo "" # Vérifier les permissions if [ "$EUID" -ne 0 ]; then if command -v sudo &> /dev/null && sudo -n true 2>/dev/null; then echo "✅ Utilisation de sudo" SUDO_CMD="sudo" else echo "⚠️ Ce script nécessite les permissions root" echo " Utilisez: sudo $0" exit 1 fi else SUDO_CMD="" fi # Vérifier Nginx if ! command -v nginx &> /dev/null && [ ! -f /usr/sbin/nginx ] && [ ! -f /usr/bin/nginx ]; then echo "❌ Nginx n'est pas installé" exit 1 fi echo "✅ Nginx trouvé" # Vérifier Certbot if ! command -v certbot &> /dev/null && [ ! -f /usr/bin/certbot ]; then echo "⚠️ Certbot n'est pas installé. Installation..." ${SUDO_CMD} apt-get update ${SUDO_CMD} apt-get install -y certbot python3-certbot-nginx fi echo "✅ Certbot trouvé" # Créer la configuration nginx echo "" echo "📝 Création de la configuration nginx pour ${DOMAIN}..." ${SUDO_CMD} tee "${NGINX_SITES_AVAILABLE}/${DOMAIN}" > /dev/null << EOF # API Watermark Bitcoin Signet server { listen 80; server_name ${DOMAIN}; # Logs access_log /var/log/nginx/${DOMAIN}.access.log; error_log /var/log/nginx/${DOMAIN}.error.log; # Proxy vers le service Node.js (port ${SERVICE_PORT}) # Note: Les services tournent sur ${SERVICE_IP} location / { proxy_pass http://${SERVICE_IP}:${SERVICE_PORT}; proxy_http_version 1.1; proxy_set_header Upgrade \$http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme; proxy_cache_bypass \$http_upgrade; proxy_read_timeout 300s; proxy_connect_timeout 75s; } } EOF # Activer le site echo "🔗 Activation du site..." ${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/${DOMAIN}" "${NGINX_SITES_ENABLED}/${DOMAIN}" # Tester la configuration echo "" echo "🔍 Test de la configuration nginx..." if ${SUDO_CMD} nginx -t; then echo "✅ Configuration nginx valide" else echo "❌ Erreur dans la configuration nginx" exit 1 fi # Recharger nginx (HTTP uniquement pour l'instant) echo "" echo "🔄 Rechargement de nginx (configuration HTTP)..." ${SUDO_CMD} systemctl reload nginx || ${SUDO_CMD} service nginx reload # Générer le certificat SSL echo "" echo "🔐 Génération du certificat SSL pour ${DOMAIN}..." echo " Certbot va automatiquement créer la configuration HTTPS" echo "" if ${SUDO_CMD} certbot --nginx -d "${DOMAIN}" --non-interactive --agree-tos --email admin@4nkweb.com --redirect; then echo "✅ Certificat SSL généré et configuration HTTPS créée" else echo "⚠️ Erreur lors de la génération du certificat" echo " Vous pouvez le générer manuellement avec:" echo " sudo certbot --nginx -d ${DOMAIN}" exit 1 fi # Recharger nginx final echo "" echo "🔄 Rechargement final de nginx..." ${SUDO_CMD} systemctl reload nginx || ${SUDO_CMD} service nginx reload echo "" echo "✅ Déploiement terminé avec succès !" echo "" echo "📋 Résumé:" echo " - ${DOMAIN} -> http://${SERVICE_IP}:${SERVICE_PORT}" echo " - HTTPS activé avec redirection automatique" echo "" echo "🔍 Vérification:" echo " - Test HTTP: curl -I http://${DOMAIN}/health" echo " - Test HTTPS: curl -I https://${DOMAIN}/health" echo " - Status nginx: sudo systemctl status nginx" echo " - Logs: sudo tail -f /var/log/nginx/${DOMAIN}.error.log" echo ""