🔧 Installazione Nginx
sudo apt update
sudo apt install nginx-full -y
Verifica:
nginx -v
systemctl status nginx
🧩 Integrazione Nginx in Webmin
Accedi a Webmin
Vai in
Webmin Configuration → Webmin ModulesInstalla il modulo Nginx (third-party)
Se compare un errore, installa la dipendenza mancante:
sudo apt install libhtml-parser-perl -y
sudo systemctl restart webmin
✅ Dopo il riavvio, Nginx comparirà in “Servers”.
Nota: il modulo Webmin è solo di gestione, non influisce su Certbot.
✅ Procedura completa Certbot + Nginx (Webroot)
1️⃣ Installare Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx
2️⃣ Creare la cartella per i challenge ACME
sudo mkdir -p /var/www/certbot
sudo chown www-data:www-data /var/www/certbot
sudo chmod 755 /var/www/certbot
3️⃣ Configurare Nginx per la sfida ACME ( porta 80)
In ogni server block HTTP (porta 80) è **fondamentale** inserire la gestione della sfida ACME prima del reindirizzamento generale su HTTPS.
> ⚠️ **Perché è necessario?**
> Certbot utilizza la porta 80 HTTP per verificare che tu sia davvero il proprietario del dominio (sfida ACME `webroot`).
> Se reindirizzi **tutto** il traffico su HTTPS senza escludere il percorso `/.well-known/acme-challenge/`, Let's Encrypt non riuscirà a leggere il file temporaneo di verifica. Risultato: **il primo rilascio e i rinnovi automatici falliranno**.
**Configurazione da inserire in Nginx:**
server {
listen 80;
server_name miodominio.freeddns.org;
# Gestione sfida Certbot su HTTP (NON rimuovere: serve ai rinnovi automatici)
location ^~ /.well-known/acme-challenge/ {
root /var/www/certbot;
allow all;
}
# Redirect automatico a HTTPS per tutto il resto
location / {
return 301 https://$host$request_uri;
}
}
4️⃣ Richiedere il certificato (primo rilascio)
sudo certbot certonly \
--webroot \
-w /var/www/certbot \
-d tuo-dominio.freeddns.org
📌 Più domini:
-d dominio1.example \
-d dominio2.example
5️⃣ Percorso certificati
I certificati verranno creati in:
/etc/letsencrypt/live/tuo-dominio.freeddns.org/
File principali:
fullchain.pem
privkey.pem
6️⃣ Rinnovo automatico (già attivo)
Certbot installa automaticamente:
systemd timer oppure
cron job
Test:
sudo certbot renew --dry-run
Rinnovo forzato:
sudo certbot renew --force-renewal
7️⃣ Reload automatico Nginx dopo rinnovo (consigliato)
Hook di deploy:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/nginx-reload.sh
Contenuto:
#!/bin/bash
systemctl reload nginx
Permessi:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/nginx-reload.sh