Instalar Nexterm con Docker: gestión autoalojada de SSH, VNC y RDP
Instala Nexterm con Docker Compose para gestionar SSH, VNC y RDP autoalojados. Guía paso a paso con proxy inverso Traefik, configuración del cifrado y consejos de seguridad.
Actualizado Publicado 11 min de lectura

Nexterm es una plataforma de gestión de servidores autoalojada y de código abierto para conexiones SSH, VNC, RDP, Telnet, SFTP y FTP. En la v1.2.2-BETA, con casi 5.000 estrellas en GitHub y licencia MIT, ya ha superado la fase experimental. Es apta para producción, siempre que hagas copias de seguridad de tus datos y fijes las versiones. Esta guía cubre una instalación completa de Nexterm con Docker usando Docker Compose con proxy inverso Traefik, la configuración obligatoria de la clave de cifrado y el endurecimiento de seguridad que necesitas antes de abrirla a la red.
¿Qué es Nexterm?
Nexterm es un panel de gestión de servidores basado en web que consolida SSH, VNC, RDP, Telnet, SFTP y FTP en una sola interfaz. Lo despliegas como un contenedor Docker, apuntas el navegador hacia él y gestionas todas tus conexiones remotas desde un solo lugar. Soporta OIDC SSO, LDAP, passkeys, 2FA, registro de auditoría, grabaciones de sesión y permisos basados en roles (añadidos en v1.2.2). Hay clientes de escritorio para Windows, macOS y Linux, una app móvil para Android y iOS, y un cliente CLI (nt) para los puristas del terminal.
Si estás comparando paneles de gestión de servidores autoalojados, Nexterm cubre más protocolos que la mayoría de las alternativas con una huella de recursos menor. También vale la pena mirar herramientas alternativas de gestión SSH como Termix si quieres algo con una arquitectura diferente.
Características de Nexterm
- Multiprotocolo: SSH, VNC, RDP, Telnet, SFTP, FTP, todo desde un panel
- Seguridad: 2FA (TOTP), passkeys, OIDC SSO, LDAP, cifrado en reposo del lado del servidor, registro de auditoría, permisos basados en roles, claves API
- Gestión de sesiones: vista dividida, grabaciones de sesión, sesión en ventana emergente/compartida en vivo, túneles de puertos, jump hosts
- Snippets y scripts dinámicos: comandos rápidos, scripts, importación de config SSH (implementada por completo desde v1.0.3)
- Apps de escritorio y móviles: conector de escritorio (Win/Mac/Linux), app móvil (Android/iOS) para VNC/RDP/SFTP, cliente CLI (
nt) - Monitorización del servidor e IA: monitorización de servidores integrada (v1.0.4+), integración de IA para asistencia en el terminal
- Infraestructura: organizaciones, etiquetas, búsqueda difusa, internacionalización, temas personalizables, Nerd Fonts, gestión de Proxmox LXC/QEMU
Si estás montando un home lab, consulta otros contenedores Docker autoalojados para tu servidor casero para más ideas.
Cómo instalar Nexterm con Docker Compose
Esto usa la imagen oficial nexterm/aio (todo en uno: servidor + cliente web + motor). La antigua imagen germannewsmaker/nexterm está obsoleta. Si migras desde ella, consulta la sección de resolución de problemas más abajo.
Requisitos previos
- VPS o servidor casero: Linux (Ubuntu 22.04+ / Debian 12+). Mínimo 1 vCPU, 512 MB de RAM, 2 GB de disco. Usa Hetzner, Hostinger o Vultr para un VPS barato, o un mini PC como servidor casero
- Docker y Docker Compose instalados. Usa Dockge para gestionar tus stacks de Docker Compose si quieres una interfaz web para tus archivos compose
- Traefik (opcional pero recomendado): para proxy inverso HTTPS con certificados Let’s Encrypt automáticos. Configura Traefik como proxy inverso en Docker o configura Traefik con un certificado wildcard gratuito de Let’s Encrypt
- openssl: necesario para generar la clave de cifrado. Preinstalado en la mayoría de las distros Linux
Los precios de los VPS subieron en todos los proveedores en 2026 — si estás reconsiderando una máquina alquilada, mira qué cambió y cuándo gana un mini PC.
Consumo ligero de recursos
Nexterm es ligero. Un VPS de 1 vCPU / 512 MB es suficiente para gestionar docenas de conexiones. La imagen AIO ocupa ~95 MB comprimida. No necesitas 8 CPU y 16 GB de RAM. Eso era para otra cosa completamente distinta.
Paso 1: Genera tu clave de cifrado
Desde la v1.0.3, Nexterm requiere cifrado del lado del servidor para las contraseñas almacenadas y las claves privadas SSH. La variable de entorno ENCRYPTION_KEY es obligatoria. El contenedor no arrancará sin ella.
openssl rand -hex 32Salida de ejemplo:
a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2Copia esta clave. La pegarás en el archivo docker-compose.
Guarda esta clave en un lugar seguro
Si pierdes la ENCRYPTION_KEY, todas las credenciales almacenadas serán irrecuperables. Guárdala en un gestor de contraseñas. Nunca la subas a git. Los secrets de Docker también son compatibles a través de /run/secrets/encryption_key. Mira cómo gestionar secrets de forma segura con Docker Compose.
Paso 2: Configuración de Docker Compose
Crea un archivo docker-compose.yml:
services:
nexterm:
image: nexterm/aio:latest
environment:
ENCRYPTION_KEY: "your-generated-key-here"
volumes:
- ./nexterm:/app/data
networks:
- traefik-net
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.nexterm.rule=Host(`nexterm.domain.com`)"
- "traefik.http.routers.nexterm.entrypoints=websecure"
- "traefik.http.routers.nexterm.tls.certresolver=letsencrypt"
- "traefik.http.services.nexterm.loadbalancer.server.port=6989"
networks:
traefik-net:
external: trueSustituye nexterm.domain.com por tu dominio real. La red traefik-net debe existir previamente (créala con docker network create traefik-net si es necesario).
La imagen es nexterm/aio:latest, el paquete todo en uno (servidor + cliente web + motor en C) que reemplaza al obsoleto germannewsmaker/nexterm. Pega la clave del Paso 1 en la variable ENCRYPTION_KEY. El volumen ./nexterm:/app/data persiste toda la configuración, las conexiones y las credenciales. Las etiquetas de Traefik enrutan el tráfico de nexterm.domain.com a través de Traefik con TLS automático de Let’s Encrypt en el puerto 6989.
Imágenes Docker
Nexterm distribuye tres imágenes: nexterm/aio (todo en uno, recomendada para la mayoría de usuarios), nexterm/server (solo servidor + cliente web, necesita un motor externo) y nexterm/engine (solo el motor, el servicio de conexiones en C). Para el 95 % de las instalaciones, aio es la opción correcta. Consulta la documentación oficial de instalación.
Paso 3: Arranca el contenedor
docker compose up -dVerifica que está en ejecución:
docker compose ps
docker compose logs nextermVerifica el arranque
Ejecuta docker compose logs nexterm y busca el mensaje de arranque que confirma que el servidor escucha en el puerto 6989. Si usas Traefik, revisa el panel de Traefik. La ruta nexterm debería aparecer bajo tus entrypoints. docker compose ps debería mostrar el estado “Up”.
Si el contenedor se cierra inmediatamente, la causa más común es una ENCRYPTION_KEY ausente o mal formada. Consulta la sección de resolución de problemas más abajo.
Paso 4: Accede a Nexterm y añade tus primeras conexiones
Abre https://nexterm.domain.com en tu navegador (o http://ip-de-tu-servidor:6989 si omitiste el proxy inverso). El primer usuario que crees será el administrador. Tras iniciar sesión, añade conexiones:
- Haz clic en Servers en la barra lateral
- Crea una carpeta (p. ej., “Producción” o “Home Lab”)
- Haz clic en el botón + para añadir una nueva conexión
- Selecciona el protocolo (SSH, RDP, VNC, etc.), introduce el host, el puerto y las credenciales
- Guarda y haz doble clic para conectar


Red host vs red bridge: ¿cuál deberías usar?
La documentación oficial de Nexterm recomienda network_mode: host porque habilita Wake-on-LAN y la conectividad localhost con el host Docker. Pero la red host implica que las etiquetas del proveedor Docker de Traefik no funcionarán. Necesitarías un proveedor de archivos o un proxy inverso diferente.
Para la mayoría de los lectores de bitdoze con un stack Traefik existente, la red bridge (la configuración anterior) es la opción práctica. Usa la red host solo si necesitas Wake-on-LAN o acceso a servidores en localhost y no usas el proveedor Docker de Traefik.
Red bridge + Traefik
Lo que obtienes: funciona con tu proveedor Docker de Traefik existente. TLS automático mediante etiquetas de Let’s Encrypt. Integración limpia con traefik-net.
Lo que pierdes: sin soporte de Wake-on-LAN. Sin conectividad directa a localhost del host Docker desde dentro del contenedor. Los servidores de destino deben ser accesibles desde la red bridge de Docker.
Esta es la configuración del Paso 2 anterior.
Red host
Lo que obtienes: acceso completo a la pila de red del host. Wake-on-LAN funciona. Conecta directamente a servicios localhost del host.
Lo que pierdes: las etiquetas Docker de Traefik no funcionan. Tendrás que configurar el proxy inverso mediante un proveedor de archivos, o usar Nginx/Caddy con configuración estática. El puerto 6989 queda expuesto en todas las interfaces del host por defecto.
services:
nexterm:
image: nexterm/aio:latest
environment:
ENCRYPTION_KEY: "your-generated-key-here"
network_mode: host
restart: always
volumes:
- ./nexterm:/app/dataSi usas la red host en un VPS público, restringe el puerto 6989 con UFW/iptables o ponlo detrás de una VPN.
Usuarios de Cloudflare Tunnel
Si ejecutas Nexterm detrás de un Cloudflare Tunnel, asegúrate de que el proxy de WebSocket esté habilitado. Nexterm usa WebSocket para las sesiones de terminal. Sin él, obtendrás una conexión que se cae inmediatamente. Consulta la documentación oficial del proxy inverso.
Endurecimiento y notas de producción
Software en beta
Nexterm todavía está en beta (v1.2.x). Haz siempre una copia de seguridad de tu directorio de datos antes de actualizar. Pueden producirse cambios que rompan la compatibilidad entre versiones.
Haz copias de seguridad antes de actualizar. Nexterm está en beta. Puede haber pérdida de datos entre saltos de versión importantes. Haz siempre una copia de seguridad del directorio de datos ./nexterm antes de descargar una nueva imagen:
docker compose down
cp -r ./nexterm ./nexterm-backup-$(date +%Y%m%d)
docker compose pull
docker compose up -dGestión de ENCRYPTION_KEY. Guarda la clave en un gestor de contraseñas. Nunca la subas a git ni la pegues en foros públicos. Si la pierdes, todas las credenciales almacenadas serán irrecuperables. Los secrets de Docker son compatibles. Monta en /run/secrets/encryption_key en lugar de usar la variable de entorno. Aprende más sobre cómo gestionar secrets de forma segura con Docker Compose.
Cortafuegos. Si usas el modo de red host en un VPS público, el puerto 6989 queda expuesto directamente en todas las interfaces. Usa UFW o iptables para restringir el acceso, o pon Nexterm detrás de un proxy inverso. Si usas Hetzner, lee cómo securizar tu servidor Docker. Para un endurecimiento más amplio del VPS, securiza tu VPS con CrowdSec.
Consumo de recursos. Nexterm suele funcionar con menos de 200 MB de RAM. La imagen AIO ocupa ~95 MB comprimida. No necesita mucho. Un VPS pequeño maneja docenas de conexiones.
Actualizaciones periódicas. Revisa los lanzamientos de GitHub periódicamente. Usa nexterm/aio:latest para actualizar automáticamente al hacer pull, o fija una versión específica como nexterm/aio:1.2.2-BETA para mayor estabilidad.
Resolución de problemas comunes
El contenedor no arranca (falta ENCRYPTION_KEY)
Síntoma: el contenedor se cierra inmediatamente después de docker compose up -d.
Solución: asegúrate de que ENCRYPTION_KEY esté definida en la sección environment de tu archivo docker-compose. Revisa los logs:
docker compose logs nextermSi ves errores relacionados con el cifrado, regenera la clave con openssl rand -hex 32 y reinicia.
Verificación: docker compose ps debería mostrar el estado “Up” tras la corrección.
No se puede conectar por SSH desde Nexterm
Síntoma: tiempo de espera agotado o conexión rechazada al intentar SSH a un servidor de destino.
Solución: si usas la red bridge, verifica que el destino sea accesible desde el contenedor:
docker compose exec nexterm ping target-ipRevisa las reglas del cortafuegos en el servidor de destino. Si el destino está en una red diferente, la red bridge de Docker podría no tener ruta hacia él.
Verificación: revisa los logs de Nexterm en busca de errores de conexión del motor.
RDP/VNC muestra una pantalla negra
Síntoma: conecta al servidor remoto pero muestra una pantalla negra.
Solución: para RDP, intenta ajustar el método de seguridad. Desde la v1.2.2, Nexterm soporta configuración de NLA y Kerberos. Para VNC, verifica que el servidor VNC esté en ejecución y aceptando conexiones en el destino. Algunos servidores VNC solo aceptan conexiones desde localhost por defecto.
Errores de WebSocket del proxy inverso
Síntoma: el terminal conecta pero se desconecta inmediatamente.
Solución: Nexterm requiere soporte de WebSocket. Si usas Nginx como proxy inverso, añade estas cabeceras:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";Para Cloudflare, habilita el proxy de WebSocket en el panel. Consulta la documentación oficial del proxy inverso.
Migración desde la antigua imagen germannewsmaker/nexterm
Síntoma: cambiar a nexterm/aio:latest falla o los datos parecen incompatibles.
Solución: primero haz una copia de seguridad de tu directorio de datos ./nexterm. Cambia la imagen en docker-compose:
# old (deprecated)
image: germannewsmaker/nexterm:1.0.1-OPEN-PREVIEW
# new
image: nexterm/aio:latestSi el contenedor no arranca tras el cambio (problemas de migración del cifrado con datos anteriores a la 1.0.3), empieza de cero: borra el directorio ./nexterm y vuelve a añadir tus conexiones manualmente. Las notas de la versión v1.2.1-BETA advierten que la migración desde versiones muy antiguas puede ser inestable.
Conclusión
Nexterm en la v1.2.2-BETA es una plataforma de gestión de servidores autoalojada capaz y ligera. La instalación de Nexterm con Docker mediante Docker Compose te da SSH, VNC, RDP, Telnet y SFTP desde un único panel web, con cifrado en reposo adecuado, soporte de 2FA/passkeys y grabación de sesiones. Funciona cómodamente en un VPS pequeño y se integra bien con Traefik para acceso HTTPS.
Si estás explorando el tema, consulta los paneles de gestión de servidores autoalojados para una comparación más amplia, o mira herramientas alternativas de gestión SSH como Termix para otras ventajas e inconvenientes.
Visita la documentación de Nexterm

