Cómo montar una web con Nginx y HTTPS gratis en un VPS
Con un VPS puedes servir tu propia web con Nginx y HTTPS gratuito. Esta guía instala Nginx, enlaza tu dominio y emite el certificado con Certbot, que además lo renueva solo.

- Crea un registro DNS de tipo A que apunte tu dominio a la IP del VPS.
- Abre los puertos 80 y 443 antes de pedir el certificado.
- Certbot configura HTTPS en Nginx y programa la renovación automática.
- Si usas Cloudflare, déjalo en "solo DNS" mientras emites el certificado.
Lo que necesitas
- Un VPS con Ubuntu o Debian y un usuario con
sudo(primeros pasos). - Un dominio y acceso a su DNS.
- Los puertos 80 y 443 abiertos (firewall).
Apuntar el dominio al VPS
En el DNS de tu dominio crea un registro A con tu dominio (y otro para www) apuntando a la IP de tu VPS, que ves en Resumen. Espera unos minutos a que se propague.
Si tu dominio está en Cloudflare, pon el registro en solo DNS (nube gris) mientras emites el certificado y actívalo después si quieres.
Instalar Nginx
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
Si usas UFW, deja pasar la web:
sudo ufw allow "Nginx Full"
Abre http://TU_DOMINIO en el navegador: debería salir la página de bienvenida de Nginx.
Crear el sitio
sudo mkdir -p /var/www/midominio.com
sudo nano /var/www/midominio.com/index.html
Pon cualquier HTML (por ejemplo <h1>Hola</h1>). Luego crea la configuración del sitio:
server {
listen 80;
server_name midominio.com www.midominio.com;
root /var/www/midominio.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
sudo ln -s /etc/nginx/sites-available/midominio.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
nginx -t comprueba la configuración antes de aplicarla: si da error, no recargues y revisa el archivo.
HTTPS con Certbot
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d midominio.com -d www.midominio.com
Certbot te pide un correo, que aceptes los términos y si quieres redirigir HTTP a HTTPS (di que sí). Cuando termina, tu web ya funciona en https://.
Renovación automática
El paquete programa la renovación solo. Pruébala sin renovar de verdad:
sudo certbot renew --dry-run
Si acaba sin errores, no tienes que hacer nada más.
Para webs en PHP, Node, React, Astro o Python sin gestionar un servidor, mira nuestro Web Hosting: publicas tu dominio sin tocar el DNS.
Preguntas frecuentes
¿El certificado es de verdad gratis?
Sí, Let's Encrypt es gratuito. Dura 90 días y Certbot lo renueva solo.
Certbot falla al verificar el dominio
Comprueba que el registro A apunta a la IP correcta, que los puertos 80 y 443 están abiertos y, si usas Cloudflare, que no está en modo proxy durante la emisión.
¿Puedo alojar varias webs?
Sí: crea un archivo en sites-available por dominio con su server_name y su carpeta, y emite un certificado para cada uno.