📋 Requisitos previos Paso 1

Antes de instalar, comprueba que tu sistema tiene todo lo necesario.

Node.js 18 o superior instaladoDescarga: nodejs.org | Verifica: node --version
npm 8+ (viene con Node.js)Verifica: npm --version
Puerto 8080 disponible (o el que configures)Verifica: netstat -an | findstr 8080 (Windows) o lsof -i:8080 (Linux/Mac)
Navegador moderno: Chrome 88+, Edge 88+, Firefox 85+Para WebRTC y getDisplayMedia
(Opcional) Python 3.8+ para el agente de controlSolo necesario para control de ratón/teclado remoto
🔍 Comprobación automática
Servidor accesible
API responde
WebSocket activo

💻 Instalación local Paso 2

Instala y arranca el servidor en tu máquina en menos de 2 minutos.

Instalación WindowsBAT
# Opción A: Usar el lanzador incluido TS.bat # Doble clic → opción I para instalar → opción 6 para arrancar # Opción B: Manual en CMD cd C:\ruta\a\TerminalServer npm install node server.js
Instalación Linux / MacBash
cd /ruta/a/TerminalServer npm install node server.js # Accede en: open http://localhost:8080
Si todo va bien verás: TerminalServer.es corriendo en http://localhost:8080
Si el puerto 8080 está ocupado, cambia PORT=8081 en tu archivo .env

⚙ Configuración .env Paso 3

Copia .env.example a .env y ajusta los valores. Generamos las claves automáticamente aquí:

Copiar plantillaBash
cp .env.example .env # Linux/Mac copy .env.example .env # Windows
🔑 Configuración básica
PORT
JWT_SECRET
NODE_ENV

🚀 Producción VPS Paso 4

Despliega en un VPS Ubuntu/Debian. Recomendamos Ubuntu 22.04 LTS con al menos 1GB RAM.

Setup servidor UbuntuBash
# 1. Instalar Node.js 20 LTS curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs git nginx # 2. Instalar PM2 (process manager) sudo npm install -g pm2 # 3. Clonar / subir el proyecto cd /var/www && sudo mkdir terminalserver sudo chown $USER:$USER terminalserver # Sube los archivos con scp, rsync o git # 4. Instalar dependencias y configurar cd /var/www/terminalserver npm install cp .env.example .env && nano .env # 5. Arrancar con PM2 pm2 start ecosystem.config.js --env production pm2 save pm2 startup # Ejecuta el comando que muestra

🐳 Docker Paso 5

La forma más rápida de desplegar en producción. Incluye Nginx y SSL automático.

Docker básicoBash
docker-compose up -d # Ver logs docker-compose logs -f # Detener docker-compose down
Con Nginx + SSL (certbot)Bash
# Edita docker-compose.yml y añade tu dominio nano docker-compose.yml docker-compose --profile prod up -d # El certificado SSL se genera automáticamente

🔒 SSL + Nginx Paso 6

Configura HTTPS y un dominio propio. Requiere un dominio apuntando a tu servidor.

nginx.confNginx
server { listen 80; server_name tudominio.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name tudominio.com; ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem; # Proxy al servidor Node.js location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 3600; } }
Certificado SSL gratuito (Let's Encrypt)Bash
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d tudominio.com # Sigue el asistente. El certificado se renueva automáticamente.

📧 Configurar Email Paso 7

Activa los emails para bienvenida, tickets, alertas y reseteo de contraseña.

Gmail requiere activar Verificación en 2 pasos y crear una Contraseña de aplicación en myaccount.google.com → Seguridad → Contraseñas de aplicaciones.
.env — Gmail
EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_SECURE=false EMAIL_USER=tu@gmail.com EMAIL_PASS=xxxx xxxx xxxx xxxx EMAIL_FROM=TerminalServer <tu@gmail.com>
Resend es la opción más fácil: 3.000 emails/mes gratis, alta entregabilidad, sin configurar Gmail. Regístrate en resend.com.
.env — Resend
RESEND_API_KEY=re_xxxxxxxxxxxx
.env — SMTP genérico
EMAIL_HOST=mail.tuservidor.com EMAIL_PORT=587 EMAIL_USER=noreply@tudominio.com EMAIL_PASS=tu_contraseña EMAIL_FROM=TerminalServer <noreply@tudominio.com>
Instalar Nodemailer y probarBash
npm install nodemailer # Luego en el admin: Admin → Cola de Email → "Enviar prueba"

🧪 Test del sistema Paso 8

Verifica que todo funciona correctamente antes de usar en producción.

Diagnóstico completo del sistema
🌐 Servidor HTTPPendiente
🔌 WebSocketPendiente
🔑 API AuthPendiente
📊 API AdminPendiente
📧 Email configPendiente
🔒 HTTPS activoPendiente
📱 PWA manifestPendiente
✅ Lista de verificación final
Puedo acceder a /app y ver el panelLa pantalla no se queda en negro
El login funciona con admin@terminalserver.esCredenciales por defecto
Puedo compartir pantalla y obtener un código de 6 dígitos
El panel de Admin carga correctamente en /admin
He cambiado la contraseña del admin por defecto
He configurado el archivo .env con mis valores
(Producción) HTTPS funciona con mi dominio
(Producción) PM2 o Docker reinicia el servidor automáticamente