Esta guía contiene todos los comandos exactos para tomar tu proyecto local y ponerlo en vivo en tu VPS de Hostinger.
Conéctate a tu VPS como root:
ssh root@<TU_IP_DEL_VPS>Actualiza el sistema e instala las herramientas base:
apt update && apt upgrade -y
apt install -y curl git nginx certbot python3-certbot-nginx build-essentialInstala Node.js (v20 LTS):
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejsInstala PM2 (Gestor de procesos para mantener el Backend vivo):
npm install -g pm2Tienes dos opciones. Opción A (Git) es la recomendada. Opción B (SCP) si no quieres usar Git.
Sube tu código a GitHub/GitLab (privado o público). Luego en el VPS:
cd /var/www
git clone https://github.com/TU_USUARIO/TrackYourself.git protocol
cd protocolAbre una terminal PowerShell en la carpeta de tu proyecto (C:\Proyectos\TrackYourself) y corre:
(Reemplaza <IP> con la IP de tu VPS)
# Sube todo EXCEPTO node_modules y .git
scp -r src backend public package.json tsconfig.json vite.config.ts index.html postcss.config.js tailwind.config.js root@<IP>:/var/www/protocolNota: Tendrás que crear la carpeta /var/www/protocol primero en el VPS.
En el VPS, ve a la carpeta del backend e instala:
cd /var/www/protocol/backend
npm installConfigura las variables de entorno:
# Crea el archivo .env
nano .env
# Pega esto dentro:
# PORT=4000
# JWT_SECRET="TU_SECRETO_SUPER_SEGURO"
# DATABASE_URL="file:./dev.db"(Guarda con Ctrl+O, Enter, Ctrl+X)
Prepara la Base de Datos y Compila:
npx prisma generate
npx prisma migrate deploy
npm run buildArranca el Backend con PM2:
pm2 start dist/index.js --name "protocol-api"
pm2 save
pm2 startup(Ahora tu API está viva en el puerto 4000)
En el VPS, ve a la raíz del proyecto y construye la app:
cd /var/www/protocol
npm install
# Crea el archivo .env para el frontend (Requerido para la API de Ejercicios)
nano .env
# Pega: VITE_RAPIDAPI_KEY="TU_CLAVE_DE_RAPIDAPI"
# (Si no tienes clave, la app usará datos de prueba, pero es mejor ponerla vacía o real)
npm run buildEsto generará una carpeta dist con tu app optimizada.
Vamos a decirle a Nginx que sirva tu Frontend y redirija las peticiones /api al Backend.
Crea el archivo de configuración:
nano /etc/nginx/sites-available/protocolPega el siguiente contenido (reemplaza tu-dominio.com por tu dominio real, o usa _ si solo tienes IP):
server {
listen 80;
server_name tu-dominio.com www.tu-dominio.com;
root /var/www/protocol/dist;
index index.html;
# Frontend (React SPA)
location / {
try_files $uri $uri/ /index.html;
}
# Backend (API Proxy)
location /api {
proxy_pass http://localhost:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}Activa el sitio y recarga Nginx:
ln -s /etc/nginx/sites-available/protocol /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default # Borra el default si existe
nginx -t # Verifica que no haya errores
systemctl restart nginx-
DNS: Ve a tu proveedor de dominios (Namecheap, GoDaddy, Hostinger) y crea un A Record:
- Host:
@ - Value:
TU_IP_DEL_VPS
- Host:
-
SSL (HTTPS): En el VPS, corre:
certbot --nginx -d tu-dominio.com -d www.tu-dominio.com
Sigue las instrucciones y selecciona la opción "2" (Redirect) si te pregunta.
Tu app Protocol debería estar accesible en https://tu-dominio.com.
- Ver logs del Backend:
pm2 logs protocol-api - Reiniciar Backend:
pm2 restart protocol-api - Ver estado servicios:
pm2 status - Actualizar cambios Frontend:
git pull(o subir archivos nuevos)npm run build