#!/bin/bash # Script pour configurer Let's Encrypt pour 4nk.network # À exécuter une fois que le DNS est configuré set -e DOMAIN="4nk.network" EMAIL="admin@4nk.network" NGINX_CONF="/etc/nginx/sites-available/4nk.network.conf" BACKUP_CONF="/etc/nginx/sites-available/4nk.network.conf.backup" echo "🔧 Configuration Let's Encrypt pour $DOMAIN" echo "==============================================" # Vérifier que le domaine pointe vers ce serveur (prise en charge IPv4/IPv6) echo "📡 Vérification DNS (A/AAAA) et IP publique (v4/v6)..." # Récupère les enregistrements DNS A et AAAA DOMAIN_IPV4S=$(dig +short A $DOMAIN | tr '\n' ' ' | sed 's/ *$//') DOMAIN_IPV6S=$(dig +short AAAA $DOMAIN | tr '\n' ' ' | sed 's/ *$//') # Récupère les IP publiques du serveur (si existantes) SERVER_IPV4=$(curl -4 -s https://api.ipify.org || true) SERVER_IPV6=$(curl -6 -s https://api64.ipify.org || true) echo " Domaine A: ${DOMAIN_IPV4S:-none}" echo " Domaine AAAA: ${DOMAIN_IPV6S:-none}" echo " Serveur v4: ${SERVER_IPV4:-none}" echo " Serveur v6: ${SERVER_IPV6:-none}" DNS_OK=false # Correspondance IPv4 si disponible if [ -n "$SERVER_IPV4" ] && echo "$DOMAIN_IPV4S" | grep -q "\b$SERVER_IPV4\b"; then DNS_OK=true fi # Correspondance IPv6 si disponible if [ -n "$SERVER_IPV6" ] && echo "$DOMAIN_IPV6S" | grep -q "\b$SERVER_IPV6\b"; then DNS_OK=true fi if [ "$DNS_OK" != true ]; then echo "❌ Erreur: Le domaine $DOMAIN ne pointe pas vers l'IP publique de ce serveur" echo " Vérifiez les enregistrements DNS A et/ou AAAA selon votre connectivité." exit 1 fi echo "✅ DNS configuré correctement (A/AAAA)" # Sauvegarder la configuration actuelle echo "💾 Sauvegarde de la configuration nginx..." sudo cp "$NGINX_CONF" "$BACKUP_CONF" # Créer une configuration temporaire pour certbot echo "🔧 Création de la configuration temporaire..." sudo tee /tmp/4nk.network-temp.conf > /dev/null </dev/null 2>&1; then (crontab -l 2>/dev/null; echo "0 12 * * * /usr/bin/certbot renew --quiet") | crontab - echo " Cron installé pour le renouvellement quotidien." else echo " 'crontab' indisponible. Certbot a déjà installé un timer systemd (recommandé)." echo " Vous pouvez vérifier via: systemctl list-timers | grep certbot" fi else echo "❌ Erreur lors de la génération des certificats" echo "🔄 Restauration de la configuration de sauvegarde..." sudo cp "$BACKUP_CONF" "$NGINX_CONF" sudo systemctl reload nginx exit 1 fi echo "" echo "📋 Résumé de la configuration:" echo " - Domaine: $DOMAIN et www.$DOMAIN" echo " - Redirection HTTP → HTTPS" echo " - Certificats SSL Let's Encrypt" echo " - Headers de sécurité activés" echo " - Renouvellement automatique configuré" echo "" echo "🌐 Testez votre site: https://$DOMAIN"