Instalación paso a paso
Pon tu app en línea, sin saber programar
Esta es la versión detallada y a prueba de tropiezos. Cada comando está listo para copiar, cada paso te dice qué deberías ver, y al lado de los puntos delicados hay un “si algo falla” con la solución. Síguela en orden y de arriba hacia abajo.
La llave de la IA
Para que Manu IA responda con Claude.
Subir y encender
La app corriendo en tu VPS.
Cuentas reales
Login y base de datos (Supabase).
Dominio + candado
app.academiaprotraders.com con 🔒
Con A y B ya tienes la app viva. C y D son mejoras que puedes agregar después, otro día, sin prisa.
Antes de empezar
No abras nada todavía. Primero ten a la mano las cosas de abajo y lee el mini-glosario. Te va a ahorrar la mitad de los tropiezos.
Ten a la mano tus datos del VPS
El VPS es tu servidor (donde ya vive academiaprotraders.com). Necesitas 3 cosas de él, que te dio tu proveedor por correo cuando lo contrataste:
- La IP del servidor — un número como
185.22.14.203 - El usuario de acceso — casi siempre
root(a vecesubuntu) - La contraseña (o el archivo de llave
.pem) de ese usuario
Si no los encuentras, entra al panel de tu proveedor (Hostinger, Contabo, DigitalOcean, etc.) → sección del servidor → ahí aparecen la IP y la opción de resetear la contraseña de root.
🆘 No sé cuál es mi proveedor ni mi IP
Busca en tu correo el asunto donde te dieron el hosting/servidor. Palabras clave: “VPS”, “acceso root”, “SSH”, “tu servidor está listo”. Ahí viene la IP. Si tu web academiaprotraders.com está en un hosting compartido (no un VPS), esta app necesita un VPS aparte — cuéntame y te digo cómo conseguir uno barato.
Instala los 2 programas que vas a usar
1) Para escribir comandos en el servidor:
- Windows: ya tienes PowerShell (búscalo en el menú inicio). No necesitas instalar nada. Alternativa: PuTTY.
- Mac: ya tienes Terminal (Cmd+Espacio, escribe “Terminal”).
2) Para subir los archivos de la app:
- Windows / Mac: descarga FileZilla (gratis). Es como un explorador de archivos que copia de tu compu al servidor arrastrando.
Ten la carpeta protraders-vps descargada
Es el paquete de la app que te entregué. Descomprímela si viene en .zip. Al abrirla deberías ver estos archivos:
protraders-vps/
├── server.js · el motor de la app
├── package.json
├── .env.example
├── deploy.sh · instalador automático
├── supabase-schema.sql
└── public/
├── index.html · la app en sí
├── manifest.json
├── sw.js
└── icons/
Aprende estas 5 palabras (30 segundos)
Van a aparecer todo el rato. No necesitas más que esto:
- VPS
- Tu servidor en internet. Una computadora encendida 24/7 donde vive tu app.
- SSH
- La forma de “entrar” a tu VPS para darle órdenes escribiendo comandos.
- Comando
- Una línea que escribes (o pegas) y ejecutas con Enter. El servidor la obedece.
- PM2
- Un “vigilante” que mantiene tu app encendida aunque cierres la ventana o el servidor se reinicie.
- Supabase
- El servicio gratis que guarda las cuentas de tus usuarios en la nube (Parte C).
- DNS
- La “agenda telefónica” de internet: conecta tu dominio con la IP de tu VPS (Parte D).
La llave de la IA (Anthropic)
Manu IA responde usando Claude (el mismo modelo con el que hablas conmigo). Para eso necesita una “llave” privada. Aquí la creas. Es un texto largo que empieza con sk-ant-.
Crea tu cuenta en Anthropic
- Abre console.anthropic.com
- Clic en Sign up (arriba a la derecha)
- Regístrate con tu correo o con Google
- Abre el correo de confirmación que te llega y confirma
Agrega saldo ($10 USD)
- Menú izquierdo → Billing (facturación)
- Clic en Buy credits (comprar créditos)
- Agrega $10 USD con tu tarjeta
Crea la llave y guárdala YA
- Menú izquierdo → API Keys
- Clic en Create Key
- Ponle un nombre, ej.
protraders-app - Clic en Create Key
sk-ant-.... No se vuelve a mostrar nunca. Si la pierdes, no pasa nada: borras esa y creas otra.🆘 Cerré la ventana y no copié la llave
Tranquilo. Vuelve a API Keys, borra la llave que creaste (icono de basura) y crea una nueva con Create Key. Esta vez cópiala antes de cerrar.
sk-ant-... guardada en un lugar seguro. Guárdala, la usarás en el paso B4.Subir la app y encenderla
Aquí copias la app a tu servidor y la enciendes. Al final vas a poder abrirla en el navegador. Tómalo con calma: es copiar-pegar, un paso a la vez.
Conéctate al VPS con FileZilla
Abre FileZilla. Arriba del todo hay 4 casillas. Llénalas así:
- Servidor: la IP de tu VPS (ej.
185.22.14.203) - Nombre de usuario: tu usuario (ej.
root) - Contraseña: tu contraseña
- Puerto:
22
Clic en Conexión rápida. Si te sale una ventana de “clave desconocida del host”, marca “Confiar siempre” y acepta — es normal la primera vez.
Estado: Conexión establecida, esperando el mensaje de bienvenida... Estado: Conectado
En el panel derecho aparecen los archivos del servidor.
🆘 No conecta / error crítico
Error crítico: no se pudo conectar → revisa que la IP y el puerto 22 estén bien escritos, y que el usuario/contraseña sean correctos.
Authentication failed → contraseña incorrecta. Resetéala desde el panel de tu proveedor y vuelve a intentar.
Se queda “conectando…” eternamente → tu proveedor puede tener un firewall bloqueando el puerto 22, o la IP es de otra cosa. Verifica la IP en el panel.
Sube la carpeta a /var/www/
- En el panel derecho (el servidor), en la barra de ruta escribe
/var/www/y pulsa Enter. Si no existe, clic derecho en un espacio vacío → Crear directorio → escribewww→ entra en él. - En el panel izquierdo (tu compu), navega hasta donde tienes la carpeta
protraders-vps. - Arrastra la carpeta
protraders-vpscompleta desde la izquierda hacia el panel derecho. - Espera 1–2 minutos a que suba todo. Abajo verás la cola de archivos vaciándose.
/var/www/protraders-vps/🆘 “Permission denied” al subir
Tu usuario no tiene permiso para escribir ahí. Lo más fácil: sube la carpeta a /root/ (o a tu carpeta personal) en vez de /var/www/, y luego en los comandos usa esa ruta. O conéctate como root. Si te trabas aquí, dime tu usuario y te doy la ruta exacta.
Entra al VPS por SSH (comandos)
Abre PowerShell (Windows) o Terminal (Mac). Pega esto, cambiando usuario y la IP por los tuyos:
ssh usuario@LA-IP-DE-TU-VPS
Pulsa Enter. La primera vez pregunta Are you sure...? → escribe yes y Enter. Luego pide la contraseña.
Welcome to Ubuntu 22.04 LTS ... root@servidor:~#
Ese # parpadeando significa que ya estás dentro del servidor. 🎉
🆘 Errores comunes al conectar
Permission denied (publickey,password) → contraseña incorrecta, o tu VPS usa llave .pem. Con .pem el comando es ssh -i ruta/llave.pem usuario@IP.
Connection refused o timed out → IP equivocada o puerto 22 bloqueado. Verifica la IP en el panel del proveedor.
Windows: ssh no se reconoce → usa PowerShell (no CMD), o instala PuTTY.
Pega tu llave de la IA en el archivo .env
Ya dentro del VPS, ejecuta estos comandos uno por uno (pega, Enter, siguiente):
cd /var/www/protraders-vps
cp .env.example .env
nano .env
Se abre el editor nano. Verás dos líneas. En nano, el símbolo ^ significa la tecla Ctrl. Haz esto:
- Con las flechas, ve al final de la línea
ANTHROPIC_API_KEY=sk-ant-pega-aqui... - Borra el texto de ejemplo después del
=(tecla Suprimir / Backspace) - Pega tu llave real: clic derecho del mouse (o Ctrl+Shift+V)
Debe quedar así (tu llave real, sin espacios):
ANTHROPIC_API_KEY=sk-ant-api03-XXXXXXXXXXXX...
PORT=3000
Para guardar y salir de nano:
- Ctrl+O (guardar)
- Enter (confirmar el nombre)
- Ctrl+X (salir)
🆘 nano se ve raro / me perdí
Si te enredaste, sal sin guardar con Ctrl+X y, si pregunta, pulsa N. Luego vuelve a abrir con nano .env y empieza de nuevo con calma.
Ojo: no dejes espacios alrededor del =. Correcto: ANTHROPIC_API_KEY=sk-ant-...
Ejecuta el instalador automático
Un solo comando lo hace todo: instala Node.js, las dependencias, enciende la app con PM2 y abre el puerto:
bash deploy.sh
✓ DESPLIEGUE COMPLETO Tu app está corriendo en: http://TU-IP:3000
🆘 El instalador dio error
Permission denied al correr deploy.sh → prueba bash deploy.sh (con “bash” delante, como está arriba). Si aún falla, chmod +x deploy.sh y reintenta.
command not found a mitad → el script instala Node solo; si no pudo, corre sudo apt-get update y vuelve a lanzar bash deploy.sh.
EADDRINUSE / port 3000 in use → algo ya usa el puerto. Corre pm2 delete all y reintenta.
Si sale otro error, copia las últimas 15 líneas tal cual y mándamelas.
Ábrela en el navegador
En tu compu o tu teléfono, abre esta dirección (con tu IP real):
http://LA-IP-DE-TU-VPS:3000
Deberías ver la pantalla de bienvenida con el logo ProTraders y luego “BIENVENIDO A LA ACADEMIA PROTRADERS”. Puedes tocar “Crear cuenta” y probar el modo demo.
🆘 La página no abre
Vuelve a la ventana de SSH y revisa que la app esté viva:
pm2 status→ la líneaprotradersdebe decir online (verde). Si dice errored, mira el detalle conpm2 logs protraders.curl http://localhost:3000/api/health→ debe responder{"ok":true,"keyConfigured":true}.
Si curl responde bien pero desde el navegador no abre, es el firewall bloqueando el puerto 3000. Corre: sudo ufw allow 3000 y reintenta.
Cuentas reales con Supabase
Sin esto, cada usuario guarda sus datos solo en su navegador. Con esto: cuentas reales, login con Google/correo y una base de datos en la nube compartida. Es gratis.
Crea tu proyecto en Supabase
- Abre supabase.com → Start your project
- Regístrate con GitHub o con tu correo
- En el panel, clic en New project
Configúralo así:
- Name:
protraders-academia - Database Password: genera una fuerte y guárdala (por si algún día la necesitas)
- Region: South America (São Paulo) — la más cercana a Colombia
- Plan: Free
Clic en Create new project y espera 2–3 min a que se cree.
Crea las tablas (correr el SQL)
- Menú lateral de Supabase → SQL Editor (icono
<>) - Clic en + New query
- En tu compu, abre el archivo
supabase-schema.sqlcon el Bloc de notas / TextEdit - Selecciona todo (Ctrl+A) y copia (Ctrl+C)
- Pégalo en el editor de Supabase (Ctrl+V)
- Clic en Run (abajo a la derecha, o Ctrl+Enter)
Success. No rows returned.
Verifica: menú → Table Editor. Deben aparecer 4 tablas: profiles, trades, manu_chat, comm_messages.
Copia la URL y la llave pública
- Menú → engranaje Settings → API
- Copia el Project URL — algo como
https://abcdefgh.supabase.co - Copia la llave anon / public — un texto largo que empieza con
eyJ...
service_role. Esa es de administrador y nunca debe ir en la app. Solo la anon / public.Pégalas en la app y vuelve a subir
Método fácil: editas el archivo en tu compu y lo re-subes con FileZilla.
- En tu compu, abre
protraders-vps/public/index.htmlcon el Bloc de notas (Windows) o TextEdit en modo texto plano (Mac) - Busca (Ctrl+F):
const SUPABASE = { - Pega tus valores entre las comillas, así:
const SUPABASE = {
url: 'https://abcdefgh.supabase.co',
anonKey: 'eyJhbGciOiJIUzI1NiIs...',
};
- Guarda el archivo
- Con FileZilla, sube ese
index.htmla/var/www/protraders-vps/public/(reemplaza el que está ahí) - En la ventana de SSH, reinicia la app:
pm2 restart protraders
pm2 restart protraders y en el navegador un refresco forzado (Ctrl+Shift+R) para ver lo nuevo.(Opcional) Entrar sin confirmar correo
Para que tus usuarios entren al instante al registrarse:
- Supabase → Authentication → Providers → Email
- Desactiva Confirm email
- Save
🔵 Quiero también botón “Entrar con Google”
Es un paso extra con Google Cloud. Resumen: creas credenciales OAuth en console.cloud.google.com, pones como redirect URI exactamente https://TU-URL.supabase.co/auth/v1/callback, y pegas el Client ID y Client Secret en Supabase → Authentication → Providers → Google. El error #1 aquí es una URL de redirección mal copiada (una barra / de más). Si lo vas a hacer, dime y te guío pantalla por pantalla.
Prueba que se crean cuentas de verdad
Abre de nuevo http://TU-IP:3000, toca Crear cuenta y regístrate. Luego, en Supabase → Authentication → Users, deberías verte a ti mismo en la lista.
🆘 Me registro pero no aparece en Supabase
Casi siempre es la URL o la llave mal pegadas en el paso C4. Revisa que estén completas, sin espacios, y que sea la llave anon (no service_role). Vuelve a guardar, re-sube el index.html y pm2 restart protraders.
Tu dominio con candado 🔒
Para que tu app tenga una dirección profesional y el candado de seguridad (HTTPS). Se hace una sola vez y el certificado se renueva solo.
Apunta el subdominio a tu VPS
Entra al panel donde administras academiaprotraders.com → sección DNS / Registros DNS. Añade un registro:
- Tipo: A
- Nombre / Host:
app - Valor / Apunta a: la IP de tu VPS
- TTL: por defecto (o 3600)
Guarda. Ahora hay que esperar a que se propague (de 5 a 30 min). Verifícalo con este comando en SSH — cuando responda con la IP de tu VPS, está listo:
ping app.academiaprotraders.com
Instala Nginx y Certbot
En SSH, uno por uno:
sudo apt-get update
sudo apt-get install -y nginx certbot python3-certbot-nginx
Configura Nginx
Abre el archivo de configuración:
sudo nano /etc/nginx/sites-available/protraders
Pega exactamente esto (clic derecho → pegar):
server {
server_name app.academiaprotraders.com;
client_max_body_size 5M;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Guarda y sal: Ctrl+O → Enter → Ctrl+X
Activa la configuración
Uno por uno:
sudo ln -s /etc/nginx/sites-available/protraders /etc/nginx/sites-enabled/
sudo nginx -t
syntax is ok test is successful
sudo systemctl reload nginx
🆘 nginx -t da error
Casi siempre es un carácter mal pegado en el paso D3. Vuelve a abrir sudo nano /etc/nginx/sites-available/protraders, borra todo y vuelve a pegar el bloque con el botón “Copiar”. Guarda y repite sudo nginx -t.
Instala el candado (HTTPS)
sudo certbot --nginx -d app.academiaprotraders.com
Te preguntará:
- Tu email real → escríbelo y Enter
- Aceptar términos → escribe A y Enter
- Compartir email con EFF → N y Enter (o Y si quieres)
Congratulations! You have successfully enabled https://app.academiaprotraders.com
🆘 Certbot falló
DNS problem / NXDOMAIN o Timeout → el DNS aún no propagó. Espera 15–30 min más, verifica con ping app.academiaprotraders.com (paso D1) y reintenta el mismo comando.
Could not bind to port 80 → algo usa el puerto 80. Corre sudo systemctl stop apache2 y reintenta certbot.
Compruébalo
Abre en el navegador https://app.academiaprotraders.com. Deberías ver el candado 🔒 a la izquierda de la dirección y tu app cargando.
🆘 Comandos de rescate
Guárdalos. Sirven para cualquier momento en que algo se comporte raro. Se ejecutan en la ventana de SSH.
Ver qué está pasando (logs en vivo)
pm2 logs protradersSal con Ctrl+C.
Reiniciar la app tras un cambio
pm2 restart protraders¿Está corriendo?
pm2 statusDebe decir online en verde.
¿El motor responde? (la llave está bien)
curl http://localhost:3000/api/healthIdeal: {"ok":true,"keyConfigured":true}
- En qué paso te trabaste (ej. “B5”)
- El comando exacto que ejecutaste
- El mensaje de error tal cual (copia-pega, no lo describas con tus palabras)