RustDesk: Escritorio Remoto Self-Hosted en Linux
RustDesk es una alternativa open-source a TeamViewer y AnyDesk que permite desplegar tu propio servidor de escritorio remoto con control total sobre los datos. Al alojar el servidor relay en tu propio VPS o servidor baremetal, eliminas la dependencia de servicios externos y garantizas la privacidad de las conexiones. Esta guía cubre la instalación completa del servidor RustDesk y la configuración de clientes en Linux.
Requisitos Previos
- VPS o servidor baremetal con Ubuntu 20.04+, Debian 11+ o CentOS 8+
- Mínimo 1 GB de RAM y 1 vCPU (2 GB recomendados para múltiples usuarios)
- IP pública estática
- Docker y Docker Compose instalados
- Puertos 21115-21119 (TCP/UDP) y 8000 (TCP) abiertos
Instalación del Servidor RustDesk
El servidor RustDesk consta de dos componentes:
- hbbs: Servidor de ID y señalización (rendezvous server)
- hbbr: Servidor relay para conexiones cuando el P2P no es posible
Instalación sin Docker
# Descargar los binarios del servidor RustDesk
RUSTDESK_VERSION="1.1.10"
wget https://github.com/rustdesk/rustdesk-server/releases/download/${RUSTDESK_VERSION}/rustdesk-server-linux-amd64.zip
# Extraer los binarios
unzip rustdesk-server-linux-amd64.zip
cd rustdesk-server-linux-amd64
# Mover los binarios al sistema
sudo mv hbbs hbbr /usr/local/bin/
sudo chmod +x /usr/local/bin/hbbs /usr/local/bin/hbbr
# Crear directorio de datos
sudo mkdir -p /var/lib/rustdesk
Crear servicios systemd para hbbs y hbbr:
# Servicio para hbbs (servidor de señalización)
sudo tee /etc/systemd/system/rustdesk-hbbs.service << 'EOF'
[Unit]
Description=RustDesk Rendezvous Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/rustdesk
ExecStart=/usr/local/bin/hbbs -r IP-PUBLICA-DEL-SERVIDOR
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# Servicio para hbbr (servidor relay)
sudo tee /etc/systemd/system/rustdesk-hbbr.service << 'EOF'
[Unit]
Description=RustDesk Relay Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/rustdesk
ExecStart=/usr/local/bin/hbbr
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# Habilitar e iniciar los servicios
sudo systemctl daemon-reload
sudo systemctl enable --now rustdesk-hbbs rustdesk-hbbr
# Verificar el estado
sudo systemctl status rustdesk-hbbs rustdesk-hbbr
Configuración con Docker Compose
La forma recomendada de desplegar RustDesk Server usando Docker:
# Crear directorio del proyecto
mkdir -p ~/rustdesk && cd ~/rustdesk
# Crear archivo docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r IP-PUBLICA-DEL-SERVIDOR:21117
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
EOF
# Iniciar los servicios
docker compose up -d
# Ver los logs
docker compose logs -f
Configuración del Cifrado
Al iniciar por primera vez, RustDesk genera automáticamente un par de claves para el cifrado. Obtener la clave pública:
# Si usas instalación directa
cat /var/lib/rustdesk/id_ed25519.pub
# Si usas Docker
cat ~/rustdesk/data/id_ed25519.pub
# Copiar la clave pública (se necesita para configurar los clientes)
# La clave tiene el formato: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
Para generar un nuevo par de claves manualmente:
# Generar claves manualmente (opcional)
cd /var/lib/rustdesk # o ~/rustdesk/data
hbbs --genkeypair
# Verificar los archivos generados
ls -la id_ed25519*
Configuración del Cliente RustDesk
Descargar el cliente RustDesk desde rustdesk.com para cualquier plataforma.
En el cliente, configurar el servidor self-hosted:
- Abrir RustDesk > Ajustes (icono de engranaje)
- Ir a "Red"
- En "Servidor ID/Relay":
IP-PUBLICA-DEL-SERVIDORo el dominio - En "Clave": pegar el contenido de
id_ed25519.pub - Guardar y reiniciar el cliente
Para configuración masiva mediante archivo de configuración:
# En Linux, el archivo de configuración del cliente está en:
~/.config/rustdesk/RustDesk2.toml
# Configuración de ejemplo
cat > ~/.config/rustdesk/RustDesk2.toml << 'EOF'
rendezvous_server = 'IP-PUBLICA-DEL-SERVIDOR'
nat_type = 1
serial = 0
[options]
custom-rendezvous-server = 'IP-PUBLICA-DEL-SERVIDOR'
key = 'TU_CLAVE_PUBLICA_AQUI='
relay-server = 'IP-PUBLICA-DEL-SERVIDOR'
api-server = 'http://IP-PUBLICA-DEL-SERVIDOR:21114'
EOF
Acceso Desatendido
Configurar acceso sin supervisión en máquinas remotas:
# Establecer contraseña permanente en el cliente Linux
rustdesk --password TU_CONTRASENA_SEGURA
# Verificar el ID del dispositivo
rustdesk --get-id
# Conectar a un dispositivo remoto desde la línea de comandos
rustdesk --connect ID-DEL-DISPOSITIVO
# Iniciar RustDesk en modo servicio (para acceso siempre disponible)
sudo systemctl enable rustdesk
sudo systemctl start rustdesk
Para automatizar la instalación y configuración del cliente en múltiples máquinas:
#!/bin/bash
# Script de instalación masiva del cliente RustDesk
SERVIDOR="IP-DEL-SERVIDOR"
CLAVE="TU_CLAVE_PUBLICA="
CONTRASENA="contrasena-segura-123"
# Instalar el cliente
wget -O /tmp/rustdesk.deb "https://github.com/rustdesk/rustdesk/releases/download/1.2.6/rustdesk-1.2.6-x86_64.deb"
sudo dpkg -i /tmp/rustdesk.deb
sudo apt-get install -f -y
# Configurar el servidor
rustdesk --config "config=eyJzZXJ2ZXIiOiAiSVAifQ=="
# Establecer contraseña de acceso
rustdesk --password "$CONTRASENA"
echo "RustDesk instalado y configurado. ID: $(rustdesk --get-id)"
Configuración del Firewall
Abrir los puertos necesarios:
# UFW (Ubuntu/Debian)
sudo ufw allow 21115/tcp comment "RustDesk NAT test"
sudo ufw allow 21116/tcp comment "RustDesk ID server TCP"
sudo ufw allow 21116/udp comment "RustDesk ID server UDP"
sudo ufw allow 21117/tcp comment "RustDesk relay"
sudo ufw allow 21118/tcp comment "RustDesk WebSocket"
sudo ufw allow 21119/tcp comment "RustDesk WebSocket SSL"
sudo ufw reload
# firewalld (CentOS/Rocky)
sudo firewall-cmd --permanent --add-port=21115-21119/tcp
sudo firewall-cmd --permanent --add-port=21116/udp
sudo firewall-cmd --reload
# Verificar que los puertos están escuchando
sudo ss -tlnp | grep -E "211(15|16|17|18|19)"
Despliegue Empresarial
Para entornos empresariales con múltiples usuarios y gestión centralizada:
# RustDesk Pro (versión de pago) incluye panel web de administración
# Para la versión open-source, el panel básico está en el puerto 21114
# Ver estadísticas del servidor
docker exec hbbs /usr/bin/hbbs --help
# Monitorear conexiones activas
docker exec hbbr cat /proc/net/tcp | wc -l
# Revisar logs de conexiones
docker compose logs hbbr | grep "relay from"
# Backup de la configuración y claves
tar -czf rustdesk-backup-$(date +%Y%m%d).tar.gz ~/rustdesk/data/
Solución de Problemas
El cliente no puede conectar al servidor:
# Verificar que los servicios están activos
docker compose ps
# o
sudo systemctl status rustdesk-hbbs rustdesk-hbbr
# Probar conectividad a los puertos
nc -zv IP-SERVIDOR 21116
nc -zv IP-SERVIDOR 21117
# Ver logs en tiempo real
docker compose logs -f hbbs
El cliente muestra "Connection failed" o "Timeout":
# Verificar que la clave pública es correcta
cat ~/rustdesk/data/id_ed25519.pub
# Comprobar la configuración del cliente (debe coincidir exactamente)
# La clave no debe tener espacios ni saltos de línea adicionales
# Reiniciar los servicios
docker compose restart
Alta latencia en las conexiones:
# Verificar si se usa relay o conexión directa (P2P es más rápido)
# Los logs del cliente muestran "relay" o "direct" en la conexión
# Si siempre usa relay, revisar configuración NAT
# Asegurarse de que el servidor tiene IP pública accesible
Conclusión
RustDesk self-hosted proporciona una solución de escritorio remoto privada y sin límites de usuarios, con cifrado de extremo a extremo garantizado. Al controlar tu propio servidor relay en un VPS, obtienes mayor velocidad para conexiones locales y total independencia de servicios de terceros para tu infraestructura de acceso remoto.


