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.

Cómo montar una web con Nginx y HTTPS gratis en un VPS
  • 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.