**Motivations:** - Complete documentation for dashboard, domains, ports and environment configuration - Add new services (ClamAV API, Watermark API) to the infrastructure - Enhance dashboard with new pages and improved functionality - Improve deployment scripts and service configurations **Root causes:** - Missing comprehensive documentation for infrastructure setup - Need for antivirus scanning service integration - Need for watermark service integration - Dashboard required additional pages and features **Correctifs:** - Added comprehensive documentation in docs/ (DASHBOARD.md, DOMAINS_AND_PORTS.md, ENVIRONMENT.md) - Updated systemd service files with proper environment variables - Enhanced nginx proxy configuration script - Updated maintenance documentation **Evolutions:** - Added new ClamAV API service (api-clamav) for file scanning - Added new Watermark API service (api-filigrane) for document watermarking - Enhanced signet-dashboard with new learn.html page - Improved dashboard UI with better styles and navigation - Enhanced app.js with new functionality and better error handling - Updated API documentation page with complete endpoint descriptions - Added deployment scripts for watermark and nginx configuration - Updated hash and UTXO lists with latest data - Enhanced server.js with new routes and improved Bitcoin RPC integration **Pages affectées:** - docs/DASHBOARD.md: New comprehensive dashboard documentation - docs/DOMAINS_AND_PORTS.md: New infrastructure domains and ports documentation - docs/ENVIRONMENT.md: New environment variables documentation - docs/MAINTENANCE.md: Updated maintenance procedures - docs/README.md: Updated main documentation - signet-dashboard/public/app.js: Enhanced with new features - signet-dashboard/public/styles.css: Improved styling - signet-dashboard/public/index.html: Enhanced main page - signet-dashboard/public/learn.html: New educational page - signet-dashboard/public/api-docs.html: Enhanced API documentation - signet-dashboard/public/hash-list.html: Updated hash list page - signet-dashboard/public/utxo-list.html: Updated UTXO list page - signet-dashboard/public/join-signet.html: Updated join signet page - signet-dashboard/src/server.js: Enhanced server with new routes - signet-dashboard/start.sh: Updated startup script - signet-dashboard/signet-dashboard.service: Updated systemd service - api-anchorage/anchorage-api.service: Updated systemd service - api-faucet/faucet-api.service: Updated systemd service - configure-nginx-proxy.sh: Enhanced nginx configuration script - add-watermark-certificate.sh: New watermark certificate script - deploy-watermark-nginx.sh: New deployment script - api-clamav/: New ClamAV API service - api-filigrane/: New Watermark API service - hash_list.txt, utxo_list.txt: Updated with latest data - anchor_count.txt: Updated anchor count
133 lines
4.1 KiB
Bash
Executable File
133 lines
4.1 KiB
Bash
Executable File
#!/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 ""
|