Instalación y configuración del servidor RustDesk en un VPS: creación de una alternativa segura a TeamViewer
TL;DR
En esta guía, examinamos el proceso de despliegue de su propio servidor RustDesk (servidores ID y Relay) en un servidor virtual con Linux. Esto permite prescindir por completo de soluciones propietarias de terceros, como TeamViewer o AnyDesk, garantizando la máxima privacidad, sin límites de tiempo de sesión y con una latencia mínima al ubicar el servidor en una localización óptima. Configuraremos la parte del servidor mediante Docker Compose, protegeremos la conexión con cifrado NaCl y configuraremos el firewall para un funcionamiento seguro en 2026.
- Control total: Sus datos y direcciones ID no pasan por los servidores centralizados de los desarrolladores.
- Rendimiento: El uso de un servidor Relay propio elimina los retrasos característicos de los servidores públicos gratuitos.
- Seguridad: El cifrado obligatorio y el funcionamiento mediante clave privada excluyen el acceso no autorizado.
- Ahorro: Una solución self-hosted basada en VPS resulta mucho más económica que las licencias corporativas de software comercial.
- Flexibilidad: Posibilidad de personalización según las necesidades del equipo o para uso personal.
1. Qué estamos configurando y por qué: ventajas de RustDesk
Esquema: 1. Qué estamos configurando y por qué: ventajas de RustDesk
En el entorno digital actual, las herramientas de acceso remoto se han vuelto críticas tanto para empresas como para usuarios particulares. Sin embargo, las soluciones populares como TeamViewer, AnyDesk o Microsoft Remote Desktop (RDP) presentan una serie de inconvenientes significativos: desde el alto coste de las licencias hasta bloqueos repentinos de sesiones y riesgos potenciales de seguridad asociados al almacenamiento de datos en servidores ajenos. RustDesk es una alternativa de código abierto (open-source) que permite desplegar su propia infraestructura de escritorio remoto.
La tarea principal que resolvemos en esta guía es la instalación de los componentes del servidor hbbs (servidor de ID para el registro de clientes) y hbbr (servidor Relay para la transferencia de tráfico si la conexión P2P directa no es posible). Cuando utiliza los servidores públicos de RustDesk, comparte recursos con miles de otros usuarios, lo que provoca retrasos. Un servidor propio en un VPS garantiza que todo el ancho de banda le pertenezca exclusivamente a usted.
¿Por qué elegir una solución self-hosted en un VPS?
- Privacidad: Su lista de dispositivos e historial de conexiones se almacenan únicamente en su servidor.
- Sin problemas de NAT: Un VPS con una dirección IP pública actúa como intermediario, permitiendo la conexión a ordenadores detrás de routers complejos y firewalls corporativos.
- Velocidad: Al elegir un servidor en el centro de datos más cercano, minimiza la latencia de entrada, algo crítico para un trabajo fluido.
2. Qué configuración de VPS se necesita para esta tarea
Esquema: 2. Qué configuración de VPS se necesita para esta tarea
RustDesk es un software extremadamente ligero. La carga principal recae en la red, no en el procesador ni en el disco. No obstante, para un funcionamiento estable bajo distribuciones modernas de Linux (como Ubuntu 24.04 o 26.04 LTS), se requieren ciertos recursos.
| Característica |
Requisitos mínimos |
Recomendado (para equipos) |
| Procesador (CPU) |
1 núcleo (Shared) |
2 núcleos (Dedicated threads) |
| Memoria RAM |
1 GB |
2-4 GB |
| Espacio en disco |
10 GB SSD/NVMe |
40 GB SSD (para logs y grabaciones de sesiones) |
| Red |
100 Mbit/s, tráfico ilimitado |
1 Gbit/s, canal prioritario |
| Dirección IP |
1 x IPv4 (obligatorio) |
IPv4 + IPv6 |
Para la mayoría de las tareas, desde dar soporte a familiares hasta administrar un pequeño parque de servidores, es suficiente con un nivel inicial de recursos. Puede alquilar un VPS adecuado que cubra todas las necesidades de RustDesk y permita ejecutar en paralelo utilidades adicionales de monitoreo.
¿Cuándo vale la pena considerar un servidor dedicado? Si planea usar RustDesk para transmitir vídeo de alta calidad, trabajar con gráficos pesados a través de escritorio remoto 24/7 o si el número de sesiones simultáneas supera las 50-100. En los demás casos, la virtualización (KVM) funciona perfectamente.
Ubicación del servidor: Este es el parámetro más importante. Si usted se encuentra en una ciudad y se conecta a un ordenador en otra, lo ideal es que el servidor esté en una de esas ubicaciones o en un punto intermedio. Cuanto menor sea el ping entre el cliente, el servidor y el host, mayor será la fluidez del cursor del ratón.
3. Preparación del servidor: configuraciones básicas de seguridad
Esquema: 3. Preparación del servidor: configuraciones básicas de seguridad
Antes de instalar RustDesk, es necesario preparar el sistema operativo. Utilizaremos Ubuntu por ser la distribución más estándar y documentada.
En primer lugar, actualizaremos los paquetes a su estado más reciente:
sudo apt update && sudo apt upgrade -y
Crearemos un usuario independiente con privilegios sudo para no trabajar como root. Este es un estándar de seguridad para 2026:
# Creamos el usuario
sudo adduser rustadmin
# Lo añadimos al grupo sudo
sudo usermod -aG sudo rustadmin
# Cambiamos al usuario
su - rustadmin
La configuración del firewall (UFW) es una etapa crítica. RustDesk utiliza varios puertos para diferentes tareas. Necesitamos abrirlos:
- 21115 (TCP): Pruebas de NAT.
- 21116 (TCP/UDP): Servidor de ID principal (TCP para consultas, UDP para heartbeat/registro de ID).
- 21117 (TCP): Servidor Relay (transferencia de datos).
- 21118/21119 (TCP): Cliente web y soporte de WebSocket (si planea usar la versión de navegador).
sudo ufw allow 22/tcp
sudo ufw allow 21115:21119/tcp
sudo ufw allow 21116/udp
sudo ufw enable
Para protegerse contra ataques de fuerza bruta en SSH, recomendamos instalar Fail2Ban:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
4. Instalación de Docker y dependencias necesarias
Esquema: 4. Instalación de Docker y dependencias necesarias
El uso de Docker es la forma más fiable de desplegar RustDesk. Esto aísla la aplicación del sistema y simplifica el proceso de actualización. En 2026, Docker Compose es el estándar de facto para la orquestación de pequeños servicios self-hosted.
Instalaremos Docker a través del repositorio oficial:
# Instalación de dependencias
sudo apt install ca-certificates curl gnupg lsb-release -y
# Adición de la clave GPG
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Configuración del repositorio
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalación de Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
Verificaremos que la instalación sea correcta:
docker --version && docker compose version
5. Instalación paso a paso del servidor RustDesk (hbbs y hbbr)
Esquema: 5. Instalación paso a paso del servidor RustDesk (hbbs y hbbr)
Crearemos un directorio para el proyecto y describiremos la configuración en el archivo docker-compose.yml. Esto permitirá ejecutar ambos componentes necesarios con un solo comando.
mkdir ~/rustdesk-server && cd ~/rustdesk-server
nano docker-compose.yml
Inserte el siguiente contenido en el archivo. Reemplace rustdesk.example.com por la IP de su VPS o su dominio:
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r rustdesk.example.com:21117 -k _
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: host
restart: unless-stopped
Análisis de los parámetros:
hbbs -r <host>:21117: Indica al servidor de ID la dirección del servidor Relay. Esto es crítico para el enrutamiento correcto del tráfico.
-k _: Esta bandera obliga al servidor a requerir el uso obligatorio de una clave pública al conectar clientes. Esto protege su servidor del uso no autorizado por parte de terceros.
network_mode: host: Se utiliza para obtener el máximo rendimiento y evitar problemas con el redireccionamiento de puertos UDP dentro de la red de Docker.
Iniciemos los contenedores:
docker compose up -d
6. Configuración de cifrado y autorización por clave
Esquema: 6. Configuración de cifrado y autorización por clave
Después del primer inicio, aparecerán las claves de cifrado en el directorio ./data. Necesitamos el archivo con la extensión .pub. Esta es precisamente la clave que introduciremos en la configuración del cliente.
cat ./data/id_ed25519.pub
Copie la salida de este comando. Sin esta clave, nadie podrá conectarse a través de su servidor, incluso si conoce su dirección IP. Esto implementa una arquitectura Zero-Trust, donde el servidor es solo un intermediario que no tiene acceso al contenido de la sesión.
¿Por qué es esto importante? En las versiones públicas de RustDesk, el cifrado puede ser opcional. En nuestra configuración, lo hemos hecho obligatorio. Todo el tráfico entre el operador y el host remoto se cifra mediante la biblioteca NaCl (libsodium), lo que hace que la interceptación de datos no tenga sentido.
7. Ajuste fino del cliente y optimización de la red
Esquema: 7. Ajuste fino del cliente y optimización de la red
Ahora que el servidor está en funcionamiento, es necesario configurar la aplicación cliente en los dispositivos (Windows, macOS, Linux, Android o iOS).
- Abra RustDesk en su ordenador.
- Vaya a Configuración (Settings) -> Red (Network).
- Haga clic en "Desbloquear configuración de red" (Unlock network settings).
- En el campo Servidor ID (ID Server) introduzca la dirección IP o el dominio de su VPS.
- En el campo Servidor Relay (Relay Server) introduzca la misma dirección (el puerto 21117 se añadirá automáticamente si no se especifica lo contrario).
- En el campo Key pegue el contenido del archivo
id_ed25519.pub que obtuvimos en el paso anterior.
- Haga clic en "Aplicar" (Apply).
Si todo está configurado correctamente, aparecerá el estado "Ready" con un indicador verde en la parte inferior de la ventana de RustDesk. Ahora puede compartir este mismo ID y contraseña (o configurar una contraseña permanente) para acceder al dispositivo remoto.
Optimización para conexiones lentas: Si trabaja a través de internet móvil, seleccione el códec VP9 o AV1 (si el hardware lo admite) en la configuración de la sesión y establezca el modo "Optimize reaction time". Esto reducirá la tasa de bits manteniendo la capacidad de respuesta de la interfaz.
8. Copias de seguridad, monitoreo y mantenimiento del sistema
Esquema: 8. Copias de seguridad, monitoreo y mantenimiento del sistema
El servidor RustDesk prácticamente no requiere mantenimiento, pero para garantizar una fiabilidad del 99.9%, conviene implementar prácticas básicas de operación.
Copia de seguridad de datos
Lo más importante es guardar las claves y la base de datos de IDs. Si pierde el archivo id_ed25519 (clave privada), tendrá que volver a configurar todos los clientes, ya que la clave pública cambiará.
# Script sencillo de copia de seguridad en un archivo
tar -czvf rustdesk_backup_$(date +%F).tar.gz ~/rustdesk-server/data
Se recomienda configurar una tarea cron para copiar semanalmente este archivo a un almacenamiento externo (por ejemplo, S3 u otro VPS).
Actualización del servidor
Para actualizar RustDesk a la última versión, basta con ejecutar:
cd ~/rustdesk-server
docker compose pull
docker compose up -d
Monitoreo
Para rastrear el estado del servidor, puede utilizar una comprobación de puertos sencilla. Si el puerto 21116 (UDP) no responde, significa que el servidor de ID se ha caído y los clientes no podrán encontrarse entre sí.
9. Troubleshooting + FAQ: solución de problemas comunes
¿Por qué el estado del cliente es "Not Ready"?
Con mayor frecuencia, esto se debe a puertos cerrados en el lado del VPS. Asegúrese de que su proveedor no esté bloqueando el tráfico entrante a nivel del panel de control externo (Security Groups). Verifique el estado de UFW: sudo ufw status. También asegúrese de que en la configuración del cliente, en el campo Key, no haya espacios adicionales o caracteres de nueva línea.
¿Qué latencia se considera normal?
Al trabajar dentro de una misma región (por ejemplo, Europa-Europa), la latencia debería ser de 20-50 ms. Si el ping es superior a 150 ms, el trabajo será incómodo. En este caso, compruebe la carga de la CPU en el VPS y asegúrese de no estar utilizando un servidor Relay público por error.
¿Se puede usar un dominio en lugar de una IP?
Sí, es recomendable. Si la IP de su VPS cambia, no tendrá que volver a configurar todos los clientes. Simplemente actualice el registro A en el DNS de su dominio.
¿Cómo limitar la lista de personas que tienen acceso al servidor?
RustDesk Server Pro (versión de pago) admite ACL detallados. En la versión gratuita que hemos instalado, la protección se basa en el conocimiento de la Key. No comparta la clave pública con terceros. Adicionalmente, puede restringir el acceso a nivel de UFW, permitiendo conexiones solo desde direcciones IP específicas, si estas son estáticas.
¿Qué configuración de VPS es la mínima adecuada?
Es suficiente con un mínimo de 1 núcleo de CPU y 1 GB de memoria RAM. RustDesk está escrito en Rust, lo que garantiza una alta eficiencia en el uso de la memoria. El recurso principal es el ancho de banda de la red. Para un trabajo cómodo de 2-3 usuarios simultáneos, incluso la tarifa más económica será suficiente.
¿Qué elegir: VPS o dedicado para esta tarea?
Para el 95% de los escenarios (soporte personal, administración de hasta 200 PC), un VPS es la elección ideal. Un servidor dedicado solo debe considerarse si está construyendo un servicio global de soporte remoto con miles de sesiones simultáneas, donde se requiere un ancho de banda garantizado de 1-10 Gbps sin la influencia de "vecinos" en el hipervisor.
10. Conclusiones y próximos pasos
Hemos desplegado con éxito nuestro propio servidor RustDesk, asegurando la independencia de los servicios en la nube extranjeros y las restricciones corporativas. Ahora dispone de un canal de comunicación seguro que está totalmente bajo su control, desde las claves de cifrado hasta los registros de conexión.
Como próximos pasos para optimizar la infraestructura, recomendamos:
- Configurar su propio Address Book (libreta de direcciones) si tiene muchos dispositivos.
- Desplegar el cliente web para acceder a los escritorios directamente desde el navegador sin instalar software.
- Integrar el monitoreo (por ejemplo, Prometheus + Grafana) para rastrear el tráfico de red y la carga en el servidor Relay.
Recuerde que la seguridad de las soluciones self-hosted es un proceso continuo. Actualice regularmente las imágenes de Docker y esté atento a las actualizaciones de seguridad de su sistema operativo en el VPS.