RustDesk y RustDesk Web Client
En este documento vamos ver el despliegue completo de la solución RustDesk, como muchos ya la conoceréis la mejor solución open source para controles remotos, la alternativa gratuita a TeamViewer. En el post veremos cómo hacer tu propia instalación local, donde sin necesidad de terceros, tengas tu propio control.
Lo dicho, comenzaremos el documento desplegando el servidor de RustDesk en nuestra infraestructura, para luego desplegar los clientes de RustDesk ya preconfigurados en los equipos que queramos controlar remotamente de nuestra organización, sean los PCs de los usuarios para ofrecerles soporte mediante un control remoto, o para conectarnos a nuestros servidores. Al final, desplegaremos también el servicio RustDesk Web Client, que como su nombre indica y te podrás imaginar, es un cliente web de RustDesk, para poder conectar a cualquier equipo desde una web, así de fácil.
Por supuesto, en principio todo es local, funcionará en tu red; pero si vas a querer conectarte a los equipos desde Internet (si estás fuera de la organización), o los equipos a controlar están fuera, entonces vas a tener que abrir unos puertos en tu firewall perimetral para permitir el acceso. Siendo los puertos necesarios del 21115tcp al 21117tcp, así como el 21116udp; y si vas a querer usar RustDesk Web Client, entonces también del 21118tcp al 21119tcp.
Veréis que rapidito todo, y gracias a Docker, ya que vamos a desplegar los servicios de RustDesk en contenedores de Docker, así que para comenzar el documento necesitarás una máquina Linux, un Ubuntu Server está bien, con Docker instalado y Docker Compose, así como lo habitual, un nombre de máquina establecido, dirección IP estática, NTP… y, empezamos!
Para desplegar el servidor de RustDesk bastará con crear su fichero docker-compose.yml, yo lo meteré en una carpeta que crearé llamada ‘rustdesk’ en mi home. Os dejo el ejemplo que viene en la documentación oficial, tendremos en cuenta que si querremos acceso desde el exterior deberemos indicar nuestro FQDN en el ‘command’ del contenedor ‘hbbs’:
version: '3' services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:latest ports: - 21115:21115 - 21116:21116 - 21116:21116/udp - 21118:21118 #command: hbbs command: hbbs -r FQDN.DOMINIO.ESO:21117 volumes: - ./data:/root networks: - rustdesk-net depends_on: - hbbr restart: unless-stopped hbbr: container_name: hbbr image: rustdesk/rustdesk-server:latest ports: - 21117:21117 - 21119:21119 command: hbbr volumes: - ./data:/root networks: - rustdesk-net restart: unless-stopped networks: rustdesk-net: external: false
Una vez creado y guardado el fichero es hora de desplegar los contenedores de RustDesk, lo hacemos ejecutando:
sudo docker compose up -d
Listo! Ya tenemos el servidor corriendo :-), lo siguiente será desplegar los clientes de RustDesk,
Podremos descargar el cliente de RustDesk desde su GitHub, hay cliente para Windows, Linux, Mac y Android entre otros. La instalación del cliente no tiene ningún misterio, siguiente, siguiente, y una vez instalado quedará funcional, pero con los servidores públicos de RustDesk, y no con el nuestro propio.
El uso del cliente de RustDesk veréis que es muy sencillo, es igual que TeamViewer.
Para ello, tendremos que ir a “Ajustes” > “Red” y ahí cumplimentaremos el “Servidor de IDs” y la “Key” que la podremos obtener del fichero ‘/home/usuario/rustdesk/data/id_ed25519.pub’ (o vaya, donde se haya montado el volumen de datos del contenedor). Aplicamos y listo. También podríamos copiarnos esta configuración que acabos de realizar pulsando sobre el icono de ‘copiar’ para desplegarla en el resto de equipos de manera más rápida.
Para desplegar el cliente de RustDesk de manera masiva en equipos Windows podríamos basarnos en este script llamado ‘instala_rustdesk.cmd’, que se podrá ejecutar mediante una GPO para desplegarlo de manera desatendida y dejarlo ya configurado. A tener en cuenta que podríamos indicar una contraseña de acceso manual, así como pegaremos el churro exportado con la configuración de RustDesk obtenido en el paso anterior.
@echo off if not exist "C:\Program Files\RustDesk\" ( set rustdesk_pw=CONTRASEÑA__DE_ACCESO_MANUAL set rustdesk_cfg="CHURRO_EXPORTADO_CON_LA_CONFIGURACIÓN_DE_RUSTDESK" rustdesk-1.2.3-1-x86_64.exe --silent-install timeout /t 20 cd "C:\Program Files\RustDesk\" rustdesk.exe --install-service timeout /t 20 for /f "delims=" %%i in ('rustdesk.exe --get-id ^| more') do set rustdesk_id=%%i rustdesk.exe --config %rustdesk_cfg% rustdesk.exe --password %rustdesk_pw% ) else ( echo RustDesk ya esta instalado. El script no se ejecutará. )
O incluso podrías renombrar el ejecutable del instalador cliente de RustDesk a este formato para también que se instale de manera desatendida: ‘rustdesk-host=FQDN_O_IP_SERVIDOR_RUSTDESK,key=CLAVE_PUBLICA.exe’
Quedando ya lista también la parte de los clientes 🙂
Si nos interesa disponer de un sitio web para poder acceder a los equipos de RustDesk podremos usar RustDesk Web Client; así, si no disponemos del cliente de RustDesk instalado localmente para conectarnos a otro puesto, usaremos la web.
Podremos bajarnos la única imagen de Docker que hay publicada por ahora, ejecutando:
sudo docker pull keyurbhole/flutter_web_desk:v1.0.0 sudo docker run -p 5000:5000 keyurbhole/flutter_web_desk:v1.0.0
Una vez haya arrancado, ya podremos abrir un navegador al puerto que indicamos, en este caso al 5000tcp.
Deberemos configurar en la esquina superior derecha los datos de nuestro “ID server” y la “Key”, como si se tratase de otro cliente de RustDesk.
Y probaremos a introducir el ID del equipo remoto para conectarnos,
Introducimos la contraseña de acceso que hemos indicado en el cliente de RustDesk del equipo remoto…
¡Y listo! tenemos también el acceso web remoto a escritorios de PC’s, equipos o servidores, como sea, nuestra solución interna, segura y open source! La verdad que es una maravilla, hace y cumple lo que dice!
Sé que soy un cansino, pero como siempre, espero que este post te haya podido servir para algo, si has llegado hasta aquí leyendo, al menos te mando un saludete; deseando que os vaya lo mejor posible, cuidaros y ser felices!