Antes de empezar, tu dominio tiene que apuntar a la IP del VPS con un registro A (cómo hacerlo). Sin eso, el certificado no se puede emitir. En los ejemplos, el dominio es midominio.com.
1. Instala Nginx y abre los puertos
apt install -y nginx
ufw allow 'Nginx Full'
Si abres la IP del VPS en el navegador, ya verás la página de bienvenida de Nginx.
2. Tu web
mkdir -p /var/www/midominio
echo '<h1>¡Funciona!</h1>' > /var/www/midominio/index.html
Crea /etc/nginx/sites-available/midominio:
server {
listen 80;
server_name midominio.com www.midominio.com;
root /var/www/midominio;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
ln -s /etc/nginx/sites-available/midominio /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
nginx -t revisa que no haya errores antes de aplicar nada.
3. El certificado SSL
apt install -y certbot python3-certbot-nginx
certbot --nginx -d midominio.com -d www.midominio.com
Te pedirá un correo (para avisarte si algo falla) y que aceptes las condiciones. Certbot configura Nginx solo, incluida la redirección de HTTP a HTTPS.
4. Renovación automática
Los certificados duran 90 días y certbot los renueva solo. Comprueba que la renovación funcionará:
certbot renew --dry-run
Si algo falla
- Certbot no puede validar el dominio: revisa con
nslookup midominio.comque apunta a tu IP y que el puerto 80 está abierto. - Cloudflare: con la nube naranja también funciona; si da problemas al emitir, pon la nube en gris, emite el certificado y vuelve a ponerla en naranja.
- Errores 502: si Nginx hace de proxy a una aplicación (Node, PHP...), esa aplicación no está arrancada o escucha en otro puerto.