Avant de commencer, ton domaine doit pointer vers l'IP du VPS avec un enregistrement A (comment faire). Sans ça, le certificat ne peut pas être émis. Dans les exemples, le domaine est mondomaine.fr.
1. Installe Nginx et ouvre les ports
apt install -y nginx
ufw allow 'Nginx Full'
Si tu ouvres l'IP du VPS dans le navigateur, tu verras déjà la page d'accueil de Nginx.
2. Ton site
mkdir -p /var/www/mondomaine
echo '<h1>Ça marche !</h1>' > /var/www/mondomaine/index.html
Crée /etc/nginx/sites-available/mondomaine :
server {
listen 80;
server_name mondomaine.fr www.mondomaine.fr;
root /var/www/mondomaine;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
ln -s /etc/nginx/sites-available/mondomaine /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
nginx -t vérifie qu'il n'y a pas d'erreur avant d'appliquer quoi que ce soit.
3. Le certificat SSL
apt install -y certbot python3-certbot-nginx
certbot --nginx -d mondomaine.fr -d www.mondomaine.fr
Il te demandera une adresse e-mail (pour te prévenir si quelque chose échoue) et d'accepter les conditions. Certbot configure Nginx tout seul, redirection de HTTP vers HTTPS comprise.
4. Renouvellement automatique
Les certificats durent 90 jours et certbot les renouvelle tout seul. Vérifie que le renouvellement fonctionnera :
certbot renew --dry-run
Si quelque chose échoue
- Certbot n'arrive pas à valider le domaine : vérifie avec
nslookup mondomaine.frqu'il pointe vers ton IP et que le port 80 est ouvert. - Cloudflare : ça marche aussi avec le nuage orange ; si l'émission pose problème, mets le nuage en gris, émets le certificat et remets-le en orange.
- Erreurs 502 : si Nginx sert de proxy à une application (Node, PHP...), cette application n'est pas lancée ou écoute sur un autre port.