📋 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 --versionnpm 8+ (viene con Node.js)Verifica:
npm --versionPuerto 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.jsInstalación Linux / MacBash
cd /ruta/a/TerminalServer
npm install
node server.js
# Accede en:
open http://localhost:8080Si todo va bien verás:
TerminalServer.es corriendo en http://localhost:8080Si 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 downCon 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 negroEl 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
/adminHe 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