====== RustDesk ======
RustDesk es un software de acceso remoto y control remoto de código abierto. RustDesk permite a los usuarios conectarse a un dispositivo remoto y controlar su pantalla y teclado. RustDesk es una buena opción para los usuarios que buscan una alternativa gratuita y de código abierto a software de acceso remoto comercial como TeamViewer o [[informatica:software:anydesk|AnyDesk]].
* [[https://rustdesk.com/|Web oficial]]
* [[https://github.com/rustdesk/rustdesk|Repositorio de código]]
* [[https://rustdesk.com/docs/en/|Documentación oficial]]
{{ https://rustdesk.com/docs/en/client/images/client.png |}}
Plataformas soportadas:
* Linux
* Windows
* macOS
* Android
* iOS (solo ver, no controlar)
===== Características =====
* Acceso remoto a cualquier dispositivo.
* Control remoto de la pantalla y el teclado.
* Transferencia de archivos.
* Soporte para múltiples usuarios.
* Chat en tiempo real.
* Seguridad de grado militar.
===== Casos de uso =====
Algunos ejempos de cómo se puede utilizar RustDesk:
* Para proporcionar soporte técnico a distancia a los clientes / amigos / familiares.
* Para acceder a un dispositivo remoto desde cualquier lugar.
* Para controlar un dispositivo remoto para fines educativos o de investigación.
* Para compartir la pantalla de un dispositivo con otros usuarios.
===== Instalación de servidor =====
Aunque podemos usar el servidor público que nos ofrece RustDesk por defecto, tenemos la posibilidad de instalar nuestro propio servidor de RustDesk y no depender del servidor central.
El servidor de RustDesk usa los siguientes puertos:
* 21115: se usa para la prueba del tipo de NAT.
* 21116 (TCP y UDP): se usa para la conexión y para el registro de ID.
* 21117: se usa para los servicios de "relay".
* 21118: se usa para los clientes web.
* 21119: se usa para los clientes web.
Debemos asegurarnos de tenerlos abiertos si estamos detrás de un router o firewall.
La instalación del servidor consta de dos ejecutables:
* ''hbbs'': servidor de ID y P2P
* ''hbbr'': servidor de retransmisión (//relay//).
==== Docker ====
Ejemplo de ''docker-compose.yml'' para usar con [[informatica:sistemas_operativos:virtualizacion:docker:docker_compose|Docker Compose]]:
---
version: '3'
services:
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r remoto.ejemplo.com
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
Al usar ''network_mode: %%"%%host%%"%%'' no es necesario indicar qué puertos exponer del contenedor hacia la máquina anfitriona.
En el directorio ''data'', cuando ya esté funcionando el servidor, encontraremos la base de datos y las claves asimétricas (privada y pública).
==== Conseguir la clave pública ====
Para usar nuestro servidor en la configuración de los clientes de RustDesk, necesitaremos indicar también la clave pública de cifrado.
En la instalación de Docker, si lo hemos hecho con el ejemplo de esta wiki, tendremos que entrar en el directorio ''data'' y ver el contenido del fichero ''id_ed25519.pub''.
Se puede usar RustDesk sin especificar la clave pública, pero la conexión no será cifrada. Si no queremos permitir a los clientes que se conecten sin clave pública, añadiríamos la opción ''-k'' a la hora de ejeccutar los comandos ''hbbs'' y ''hbbr''
===== Cliente =====
Los clientes son tanto los equipos que quieren conectarse y/o administrar remotamente otros equipos, como los equipos a controlar.
Si no vamos a usar el servidor público de RustDesk y queremos configurar el nuestro (u otro), hay que ir a la sección "ID/relay server" y cubrir dos campos:
* **ID server**: la IP o el nombre de dominio donde tenemos instalado el servidor de RustDesk.
* **Key**: clave pública de dicho servidor (contenido del fichero ''id_ed25519.pub'').
RustDesk deducirá automáticamente los otros dos campos (si tienen la configuración por defecto en el servidor).
==== Windows ====
El cliente de Windows permite aplicar la configuración escribiéndola directamente en el ejecutable. Por ejemplo, si el ejecutable es ''rustdesk.exe'', lo renombraremos de la siguiente manera:
rustdesk-host=,key=.exe
De tal manera que si el servidor está en ''remoto.ejemplo.com'' y la clave pública es ''Er1o6f4332CvcXaPxZ7EBm2e70R1234vXW3avgJheRw='', el nombre del ejecutable final será:
rustdesk-remoto.ejemplo.com,key=Er1o6f4332CvcXaPxZ7EBm2e70R1234vXW3avgJheRw=.exe
==== Android ====
El cliente de RustDesk ya no está disponible desde Google Play y tenemos que descargarlo desde su [[https://github.com/rustdesk/rustdesk/releases|repositorio de GitHub]].
Si tenemos nuestro propio servidor, podemos indicarlo en **Ajustes** -> **Servidor ID/Relay**. Introduciremos el dominio o dirección IP de nuestro servidor en el campo **Servidor ID**. **Servidor de relé** y **Servidor API** puede quedar en blanco. Si queremos comunicación cifrada, introduciremos la clave pública en el campo **Clave**.
Para conectarse a un dispositivo Android con RustDesk, debemos ir al menú inferior y seleccionar **Compartir pantalla** y luego pulsar en **Iniciar Servicio**. Cuando esté en funcionamiento, podemos conectarnos al terminal Android desde cualquier otro dispositivo usando RustDesk.
==== Linux ====
Pruebas hechas con Arch Linux. Paquete ''rustdesk'' (lo compilará, tardará en crear el ejecutable) o ''rustdesk-bin''.
Para configurarlo con un servidor propio:
* Haz clic en Configuración.
* Haz clic en Red.
* Haz clic en Desbloquear configuración de red.
* Ingresa tu ID, Relay, API (si usas servidor pro) y tu clave pùblica.
{{ https://rustdesk.com/docs/en/client/images/network-settings.png |}}
===== Resolución de problemas =====
==== Unsupported display server tty, x11 expected ====
Este mensaje lo da RustDesk si intentamos conectarnos a un equipo Linux que no tiene el servidor gráfico X11 o Wayland. Sin embargo, también da el error si arrancamos el servidor gráfico desde startx o cualquier otra herramienta que no sea un gestor de inicio (//login manager//).
Mientras no lo solucionen, debemos establecer la variable ''XDG_SESSION_TYPE'' a ''x11'' o ''wayland'' **antes de ejecutar RustDesk**. Por ejemplo:
export XDG_SESSION_TYPE=x11
Para hacerlo permanente, podemos incluirlo en el fichero ''.xinitrc'':
export XDG_SESSION_TYPE=x11
* [[https://github.com/rustdesk/rustdesk/issues/7531|Incidencia en su GitHub con el apaño]].
===== Recursos =====
* [[https://www.youtube.com/watch?v=mPgrCGUoGn0|RustDesk - Selfhosted Remote Desktop]]