Saltar al contenido principal
Fundamentos de Redes Nivel: Principiante

Cómo publicar una página web que tienes en localhost

El manual definitivo para salir de tu computadora y llevar tu proyecto al mundo con un servidor VPS.

📅 Actualizado: ⏱️ Tiempo de lectura: 8 minutos 🐧 Plataforma: Linux (Ubuntu / Debian) 🌐 Autor: Equipo de Infraestructura de Planeta Nube
Respuesta rápida: ¿Cómo pasar de localhost a Internet?

Para que cualquier persona pueda visitar lo que ves en localhost:5000 o localhost:3000, necesitas cuatro elementos: 1) Un servidor virtual (VPS) con IP pública accesible las 24 horas; 2) Copiar tu código al servidor; 3) Un servidor web inverso como Nginx que reciba el tráfico web en los puertos 80 y 443; y 4) Un nombre de dominio apuntando a la IP de tu VPS con certificado SSL gratuito (Let's Encrypt).

1. Requisitos Previos

Antes de comenzar con los comandos en la terminal, asegúrate de contar con:

  • Tu proyecto web funcionando sin errores en tu máquina local.
  • Un servidor VPS con Linux (en esta guía utilizaremos Ubuntu 22.04 / 24.04 LTS o Debian 12).
  • La dirección IP pública de tu servidor y tus credenciales de acceso root por SSH.
  • Un cliente SSH (la terminal de Windows PowerShell, Terminal de macOS o la consola de Linux).

2. Conexión a tu Servidor VPS por SSH

Abre tu terminal y conéctate a tu servidor reemplazando TU_IP_PUBLICA por la dirección IP provista en tu plan:

ssh root@TU_IP_PUBLICA

Si es la primera vez que te conectas, el sistema te preguntará si deseas confiar en la huella del host (fingerprint). Escribe yes y presiona Enter. Luego introduce la contraseña de tu usuario root.

3. Actualización de Repositorios e Instalación de Nginx

Nginx será el encargado de escuchar las solicitudes web de Internet y entregárselas a tus usuarios de forma ultrarrápida:

sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx

Verifica que el servicio esté corriendo correctamente:

sudo systemctl status nginx

Si abres tu navegador e ingresas http://TU_IP_PUBLICA, deberías ver la página de bienvenida predeterminada de Nginx.

4. Subir los Archivos de tu Proyecto

Existen dos formas estándar de subir tus archivos:

Opción A: Clonar mediante Git (Recomendada)

Si tu código está alojado en un repositorio (como GitHub o GitLab), puedes clonarlo directamente en el servidor:

cd /var/www
sudo git clone https://github.com/tu-usuario/tu-proyecto.git /var/www/tu-proyecto

Opción B: Subir vía SCP desde tu computadora

Desde la terminal de tu computadora local (no dentro del servidor):

scp -r ./mi-carpeta-local root@TU_IP_PUBLICA:/var/www/tu-proyecto

5. Configurar el Bloque de Servidor en Nginx

Crea un archivo de configuración para tu proyecto en el directorio de sitios disponibles:

sudo nano /etc/nginx/sites-available/tu-proyecto.conf

Si tu proyecto es un sitio web estático (HTML/CSS/JS), pega la siguiente configuración:

server {
    listen 80;
    server_name tu-dominio.com www.tu-dominio.com;

    root /var/www/tu-proyecto;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Si tu proyecto es una API o app dinámica (Node.js, .NET, Python) que corre en un puerto interno (por ejemplo el 5000):

server {
    listen 80;
    server_name tu-dominio.com www.tu-dominio.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Habilita el sitio creando un enlace simbólico y reinicia Nginx:

sudo ln -s /etc/nginx/sites-available/tu-proyecto.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

6. Configurar tu Dominio DNS

Ve al panel de control donde compraste tu dominio (o a tu proveedor de DNS como Cloudflare) y crea un registro tipo A apuntando a la IP de tu VPS:

  • Tipo: A
  • Nombre: @ (o tu subdominio)
  • Valor/Destino: TU_IP_PUBLICA
  • TTL: Automático o 300 segundos

7. Activar HTTPS Gratuito con Certbot y Let's Encrypt

Protege la navegación de tus usuarios instalando el certificado SSL oficial con un solo comando:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d tu-dominio.com -d www.tu-dominio.com

Certbot modificará automáticamente tu archivo de Nginx para redirigir todo el tráfico HTTP a HTTPS de forma segura y programará la renovación automática cada 90 días.

Errores Frecuentes y Soluciones

Error 502 Bad Gateway

Ocurre cuando Nginx intenta reenviar el tráfico al puerto local (ej. 5000), pero tu aplicación no está corriendo de fondo. Asegúrate de ejecutarla con un servicio systemd o PM2.

Error de Permisos (403 Forbidden)

Nginx se ejecuta bajo el usuario www-data. Asegura que tenga permisos de lectura sobre tus archivos: sudo chown -R www-data:www-data /var/www/tu-proyecto y sudo chmod -R 755 /var/www/tu-proyecto.

Documentación Oficial Recomendada

Siguientes Pasos

Continúa aprendiendo con nuestras otras guías especializadas:

¿Necesitas un servidor para seguir esta guía?

Con los VPS de Planeta Nube obtienes acceso root completo, almacenamiento SSD rápido y recursos dedicados a un precio accesible en Perú y Latinoamérica.

Ver servidores VPS de Planeta Nube Contratar VPS Inicio