El hosting compartido es fácil, pero un VPS te da velocidad, acceso root y ningún vecino ruidoso. Esta guía lleva un servidor Ubuntu 24.04 o 22.04 nuevo hasta un sitio web HTTPS en vivo con Nginx, en unos veinte minutos. Todos los comandos se pueden copiar tal cual.
Qué necesitas
- Un VPS con al menos 1 vCPU y 1 GB de RAM (nuestros planes básicos bastan para la mayoría de los sitios pequeños).
- Un nombre de dominio apuntado a la dirección IP del servidor (consulta nuestra guía sobre apuntar un dominio a un VPS).
- Acceso SSH como usuario sudo. Si el servidor es nuevo, haz primero el refuerzo básico.
1. Instala Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
Abre la dirección IP de tu servidor en un navegador. Deberías ver la página de bienvenida por defecto de Nginx. Si no es así, comprueba que tu cortafuegos permita los puertos 80 y 443:
sudo ufw allow "Nginx Full"
sudo ufw status
2. Crea la carpeta del sitio
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html
Sustituye example.com por tu propio dominio en todo el proceso.
3. Añade un bloque server
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Actívalo, prueba la configuración y recarga:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Añade HTTPS gratis con Let's Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot edita tu bloque server, redirige HTTP a HTTPS e instala un temporizador que renueva el certificado automáticamente. Comprueba el temporizador con systemctl list-timers | grep certbot.
5. Hazlo más rápido
Activa la compresión y la caché del navegador para los archivos estáticos. Añade esto dentro del bloque server:
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public";
}
Recarga Nginx después. Para sitios dinámicos como WordPress, instala PHP-FPM y pásale las peticiones .php, o pon un plugin de caché por delante.
Problemas comunes
- 403 Forbidden: Nginx no puede leer la carpeta. Comprueba la propiedad y que todos los directorios padre sean ejecutables (
chmod o+x). - Certbot falla: el dominio aún no apunta al servidor, o el puerto 80 está bloqueado.
- Sigue apareciendo la página por defecto: elimina
/etc/nginx/sites-enabled/defaulty recarga.