Desde que comenzó la pandemia de Covid19 allá por el 2020 muchas empresas han tenido que buscarse la vida para dar soporte a usuarios de ordenadores situados lejos de sus propias oficinas. El teletrabajo ha hecho que para mucha gente la oficina ahora sea su domicilio, y pese a que este hecho tenga consecuencias positivas tanto para los empleadores como para los empleados, también tiene algunas negativas.
Por ejemplo, los departamentos de IT de muchas empresas tienen ahora más cosas de las que ocuparse, ya que van tener que dar soporte a los empleados que están trabajando desde sus casas, y por qué no decirlo, esto ha supuesto un pequeño quebradero de cabeza en algunos casos. Cuando hay que configurar algo en el ordenador que usa el empleado es imprescindible que la empresa use alguna herramienta que permita visualizar y controlar remotamente la pantalla de ese equipo.
Uy, sí. Herramientas de esas en mi empresa las llevan usando hace años. Primero usaban LogMeIn. Luego empezaron a usar Team Viewer. Luego Anydesk. No sé por qué andan cambiando de software cada poco tiempo.
Algo similar ha pasado en casi todas las empresas. Incluso cuando tienes contratado algún software en el servidor y los desarrolladores necesitan acceder a él de alguna forma, acaban instalando alguna otra herramienta similar. El problema es que muchas de estas herramientas se han intentado vender con precios absurdamente elevados, incluso para las empresas (LogMeIn sobre todo), con lo cual poco a poco fueron entrando competidores con precios «menos exagerados». Algunos de ellos con el tiempo acabaron optando por la misma política de precios desorbitados (Team Viewer) y algunos otros han podido ofrecer precios mucho más razonables (como Mikogo o Anydesk), pero sin llegar a ofrecer nada que no ofreciera ya la competencia, por lo que no hay ningún software de este tipo que podamos decir que usa la gran mayoría de las empresas. Cada una va usando el software que ve más conveniente para esta labor o que más se ajusta a sus presupuestos.
Por mi parte siempre he distinguido dos tipos en esta clase de software: por un lado tenemos los programas que funcionan (mejor o peor) en una red local, pero que a la hora de conectarse a través de internet tienen serios problemas de acceso porque no están diseñados para acceder a ellos a través de internet (como VNC o el escritorio remoto de Microsoft). Y por otro lado tenemos programas que nos permiten conectar al equipo de forma remota a través de internet y dar soporte directo al usuario, como LogMeIn, Team Viewer, AnyDesk y similares.
Y básicamente en estas estábamos hasta que hace muy poquito entró un nuevo competidor en el juego que nos vino a ofrecer algo tremendamente rompedor.
Te veo venir. ¿Algo que no usa ni el tato? ¿Programa raruno? ¿Software libre quizá? ¿Algo que para instalarlo tienes que sacarte tres master en informática de sistemas?
Ehhhh… bueno… te concedo lo de raruno. El tema es que por fin se ha desarollado un software completamente libre que nos permite acceder a equipos de forma remota a través de internet, de forma muy similar a cómo lo hace Team Viewer o Anydesk. Mira, fijate en esta pantalla de anydesk.
Ahora mira esta otra pantalla de RustDesk (que es el software del que vamos a hablar en este artículo)
¡Ay va! ¡Pero si parecen gemelos!
Si te fijas el interfaz es casi igual (Bueno… por qué no decirlo, muchos de estos programas tienen interfaces similares). Personalmente a RustDesk no le he echado en falta ninguna funcionalidad clave, así que todo esto unido a que es un software por el momento completamente gratis…
Espera, espera... ¿Por qué "por el momento"? ¿El programa se va a volver de pago?
Sólo en una parte que no nos debería afectar. Este software está aún en desarrollo. Según he podido entender, los desarrolladores tienen la intención de mantener gratuítas las funcionalidades que tiene Rustdesk en este momento (básicamente todas las cosas que podemos hacer con AnyDesk, por ejemplo). Pero al parecer están desarrollando también un interface web para controlar todos los dispositivos vinculados con nuestro servidor de Rustdesk, controlar los equipos que estén dentro del dominio de la empresa, etc… Ese interface por lo que he entendido va a ser una parte de pago, pero no es algo crítico ni mucho menos. En mi empresa pagamos (hasta ahora) religiosamente licencias de Anydesk y esa parte no se la he visto a Anydesk por ningún lado, así que puede estar interesante cuando terminen su desarrollo.
¡¡Quieto parao!! ¿Qué es eso que dijiste antes de "nuestro servidor de RustDesk"?. Anydesk o Team Viewer no necesitan instalar ningún servidor. Sólo un programa en el equipo cliente y otro en el ordenador de la persona que va a dar soporte al usuario.
Lo sé, pero el tema es que no puedes hacer una conexión de equipo a equipo a través de internet (para visualizar la pantalla del cliente, por ejemplo) sin una estas dos opciones:
- Saber su ip pública y que esta ip pública sea accesible a través de internet.
- Usar un servidor que medie en la conexión entre los dos equipos.
El primer punto es el punto clave. Últimamente están muy de moda las líneas CG-NAT de las que tanto hemos hablado en otros artículos (y que tanto detesto). Este tipo de líneas no tienen ip pública a la que poder mandar una petición, así que tendremos un problema a la hora de acceder a ese equipo de forma directa. Resulta mucho más adecuado que el software de escritorio remoto de ese equipo se conecte a un servidor y que se haga la transferencia de datos con ese servidor mediando entre los dos equipos. Un esquema similar es el que usan todos estos servicios, sólo que el servidor que se usa es la infraestructura de la empresa desarrolladora (Team Viewer, Anydesk o la que sea) en lugar de tener que montártelo tú en tu empresa.
Sí, sí... lo que quieras. Pero yo no necesito montarme un servidor para usar AnyDesk.
Pues has de saber que la parte de montar un servidor de Rustdesk es completamente opcional. Puedes usar RustDesk sin montarte un servidor, usando los servidores de RustDesk. Sin embargo para mi, ya que existe la opción, es más que recomendable montarse uno.
Para que nos entendamos: puedes dar soporte a un usuario con RustDesk usando los servidores del propio RustDesk (Como haces con AnyDesk o Team Viewer), con lo cual necesitas sólo el programa en el ordenador del usuario y en el tuyo. O también puedes montarte tú un servidor de RustDesk propio para que todo el tráfico pase por tu servidor. En este artículo aprenderemos a montarnos nuestro propio servidor de Rustdesk aunque también aprenderemos a usar RustDesk sin realizar esa instalación.
Ni que decir tiene que montarte tú un servidor propio es la opción ideal siempre que sea factible. Tendremos menos riesgos de que alguien intercepte el tráfico directamente en el servidor y no dependeremos de si un servidor ajeno está saturado de peticiones o no, con lo que si nuestro servidor está bien dimensionado no deberíamos tener nunca problemas de rendimiento. Si lo piensas, para una empresa tener algo así es más que recomendable (y toda empresa que tenga un departamento de informática debería tener alguien que pudiera montarlo sin mayores problemas). No dependes de terceros para un servicio que puede llegar a ser crítico y te garantizas un rendimiento óptimo siempre.
Así que vamos a ver cómo podemos montar este tinglado sin que nos explote ningún equipo.
1.- Requisitos del servidor.
La documentación de Rustdesk no nos indica demasiado acerca de los requerimientos mínimos del servidor. Simplemente se limita a decir que «los requisitos de hardware son muy bajos, la configuración mínima del servidor en la nube es suficiente y los requisitos de CPU y memoria son mínimos». Mi experiencia me dice que 1 o 2 Gb de ram en una máquina virtual y 2 procesadores virtuales son más que suficientes para que este sistema corra fluido.
Evidentemente si vamos a necesitar usar muchos escritorios remotos de forma simultánea, deberíamos plantearnos si aumentar las características de hardware del sistema, pero no he visto mayores problemas a la hora de mantener hasta 4 sesiones de escritorio remoto de forma simultánea con el hardware que os acabo de indicar.
Otra cosa que debemos tener en cuenta son los requisitos de la línea de internet. Se nos indica en la documentación que una sesión de trabajo de oficina ronda los 100K/s, pero si se transmite vídeo en fullHD podríamos necesitar 3M/s. No creo que ni nos lleguemos a acercar habitualmente a este límite superior (porque si usas este tipo de programas no suele ser para retransmitir vídeos), pero también es algo que debemos tener en cuenta.
Sobre la línea de internet que usemos en el servidor, ni que decir tiene que vamos a necesitar que la línea no corra sobre CG-NAT, que sería algo que impida completamente el uso del servidor. Tampoco hace falta tener una ip fija, pero esto os lo detallaré un poco más en el punto 2.
Además debemos mapear los siguientes puertos hacia la ip del servidor:
- TCP: 21115, 21116, 21117, 21118, 21119
- UDP: 21116
¿Y los puertos 80 y 443 no hacen falta? Esos los piden casi todos los servidores.
Pues no. Esos puertos se usan habitualmente para generar páginas web, pero éste no es el caso. Este sistema no generará ninguna página web, por lo que esos dos puertos no hay que mapearlos (Al menos por ahora. A lo mejor cuando saquen el interfaz de gestión web sí que hace falta mapearlos).
2.- Dominio para acceder a través de internet
Todo lo que vamos a explicar en el tutorial se puede realizar sin problemas sin un dominio fijado, pero yo os recomendaría tener uno apuntando a la ip pública de nuestra conexión a internet. Tampoco hace falta que compréis un dominio exclusivo para esto. Si vuestra empresa tiene u dominio del tipo «miempresa.com», basta con apuntar un subdominio hacia la ip del router (algo como «remoto.miempresa.com»).
Si no tenéis un dominio comprado ni queréis soltar la pasta para coger un dominio nuevo (Qué ratas que sois, de verdad…) os voy a remitir al punto 2 de este tutorial, en el que explico cómo podéis crear un dominio de tercer nivel completamente gratis (algo de la forma «miempresa.linkpc.net»). En ese punto de ese mismo tutorial también se indica una forma para poder vincular el dominio a una ip variable. Algunos registradores de dominio tienen una herramienta para que puedas apuntar un dominio que les has comprado a una ip pública variable. Yo para estas cosas recomiendo siempre el servicio de «dondominio.com«, que es el que uso yo en este blog y funciona sin problema.
3.- Sistema operativo a instalar en el servidor:
Nos va a servir cualquier distribución linux a la que se le pueda montar un docker, pero como personalmente soy más de Debian y derivados (Ubuntu, Raspbian, Linux Mint, etc…) vamos a hacer la instalación sobre un debian completamente «pelado». Cuando lo instalemos vamos a decirle que no instale nada más que el servidor SSH (Para poder acceder a él por consola), así que no le vamos a instalar servidor gráfico de ningún tipo ni paquetes extra. Todos los paquetes que vayamos a instalar los instalaremos manualmente.
Esto lo hacemos para ahorrar recursos de nuestro servidor. Cuantas más cosas tengamos instaladas, más consumirá el servidor y más recursos desperdiciamos, así que vamos a usar lo mínimo para que el sistema funcione correctamente.
Eso sí: antes de empezar la instalación del servidor de RustDesk, vamos a hacerle un par de ajustes a nuestro Debian, como ponerle una IP fija e instalar un par de paquetes que nos resultarán cómodos a la hora de usar el sistema. Estos ajustes son exactamente los mismos que expliqué en el punto 4 de este otro tutorial, así que os remito a él, ya que en este caso la instalación base del sistema va a ser idéntica.
Oye... ¿y si quiero instalarlo sobre Arch? ¿O Cent OS?
A ver… el procedimiento que vamos a hacer nos va a servir para un montón de distribuciones de Linux. De hecho veréis en el punto 4.1 que vamos a instalar Docker de una forma que no es habitual en las instalaciones que suelo hacer, pero que si se hace de esta forma permite ser instalado en muchas otras distribuciones distintas a Debian. Como ya te dije, me siento más cómodo con Debian que con otras distribuciones y doy fe que este método va a funcionar en Debian sin problema. En otras distribuciones no lo he llegado a probar, aunque la teoría dice que debería funcionar igualmente.
4.- Instalación del servidor de RustDesk.
Empecemos con la parte divertida. Vamos a instalar en nuestro Debian recién preparado el servidor de RustDesk.
4.1.- Instalamos Docker
Hay muchas formas de instalar Docker y Docker Compose en un equipo. En este caso, tal y cómo os he dicho, vamos a hacerlo de una forma un tanto curiosa que nos ahorrará instalar dependencias y que es compatible con un montón de distribuciones diferentes.
En la carpeta home de nuestro usuario de Debian, vamos a crear un archivo de texto llamado «install-docker.sh» con el siguiente comando.
sudo nano install-docker.sh
En una ventana aparte vamos a abrir un navegador de internet y nos iremos a esta página.
https://gitlab.com/bmcgonag/docker_installs
Como veis, se trata de un repositorio de gitlab con scripts para instalar de forma automática docker. Nos interesa el archivo que se llama así:
install_docker_nproxyman.sh
Así que pulsamos en ese archivo y una vez dentro pulsamos sobre el icono «Open raw».
Veremos en el navegador el contenido del archivo. Fijaos que tal y cómo dije en el punto anterior, hay código personalizado para instalar Docker en muchas distribuciones diferentes.
Lo que haremos será seleccionar todo el texto y pegarlo en el terminal que teníamos abierto.
Una vez pegado, tecleamos «Control» + «O» para guardar cambios y «Control» + «X» para salir del editor.
Ahora haremos ese archivo ejecutable con el siguiente comando:
sudo chmod +x install-docker.sh
Y lo ejecutamos con este comando.
./install-docker.sh
Nos saldrá una pantalla como ésta para escoger el sistema operativo en el que vamos a instalar Docker (aunque arriba ya nos adelanta que el script cree que el sistema es un Debian).
Escogemos la opción correcta (si me habéis hecho caso y estáis usando Debian, la opción es la número 2) . Acto seguido ponemos la contraseña del usuario con privilegios de root del sistema y se nos preguntará qué instalar. En este caso sólo vamos a instalar Docker-CE y Docker-Compose. Marcamos esos dos campos con una «y» y el resto los dejamos en «n».
Después de un rato, tendremos los dos paquetes instalados.
4.2.- Descargamos e instalamos RustDesk Server.
Vamos a bajarnos el instalador de RustDesk directamente de la web de github. la lista de versiones que se han hecho está en esta dirección.
https://github.com/rustdesk/rustdesk-server/releases
Ahí nos podemos descargar algunos instaladores, pero lo que nos interesa es el instalador para Docker, que está en el código del proyecto en esta otra dirección.
https://github.com/rustdesk/rustdesk-server
Al final de todos los archivos nos encontramos el archivo «docker-compose.yml». Haremos con él exactamente lo mismo que hicimos en el paso 4.1. Primero pulsamos sobre él.
Ahora pulsamos sobre la opción «Raw» para ver el código…
… y en cuanto lo veamos, lo seleccionamos y lo copiamos en el portapapeles.
Ahora vamos a crear un par de carpetas en nuestro terminal. Vamos a crear en nuestra carpeta home un directorio llamado «docker» y dentro de él crearemos otro llamado «rustdesk».
mkdir docker
cd docker
mkdir rustdesk
cd rustdesk
Vamos a crear en esta última carpeta un archivo de texto llamado «docker-compose.yml» con el siguiente código.
sudo nano docker-compose.yml
… y pegamos el código que teníamos copiado en el portapapeles. Pero antes de guardar los cambios en el archivo debemos hacer una modificación en el código.
hay una línea que dice así:
command: hbbs -r rustdesk.example.com:21117
Debemos cambiar ese nombre de dominio por el nombre de dominio que vayamos a usar (lo que hemos explicado en el punto 2). Debería quedar algo como esto:
command: hbbs -r remoto.miempresa.com:21117
Una vez modificada esa línea sí que podemos guardar cambios con «Control»+»O» y salir de nano con «Control»+»X».
Ahora por fin podemos instalar y ejecutar el Docker de RustDesk con el siguiente comando.
docker-compose up -d
4.3.- Hacemos que el servicio se ejecute siempre que se encienda el sistema.
Es importante asegurarnos que si el sistema operativo se reinicia, nada más arrancar el servicio también se encienda de forma automática. Para ello debemos teclear este comando…
sudo nano /etc/systemd/system/docker-compose-app.service
… y dentro de ese archivo debemos pegar el siguiente código.
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/informatica/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
Como siempre, guardamos cambios con «Control» + «O» y salimos del editor con «Control» + «X».
Con este último cambio queda el servidor perfectamente configurado para funcionar con los clientes de RustDesk.
5.- Localización del ID de instalación
Esto que vamos a ver es para que después podamos configurar correctamente los clientes de RustDesk. Para que puedan usar nuestro servidor necesitaremos el dominio que hemos creado (el nombre de dominio ya lo sabemos) y un ID de instalación. Para localizar el ID de instalación debemos irnos a la siguiente ruta dentro de la carpeta home de nuestro usuario (la carpeta desde dónde hemos instalado el RustDesk).
/home/usuario/docker/hbbs
Ahí dentro debemos mirar el contenido del archivo «id_ed25519.pub». Lo haremos con este comando
sudo nano ~/docker/hbbs/id_ed25519.pub
Simplemente copiamos el texto que hay en ese archivo (Es una línea de texto larga con una clave) y la tendremos a mano. Esto lo usaremos después.
NOTA: En la documentación de la instalación se indica que a veces ese fichero se genera con caracteres que no son válidos en nombres de archivo de Windows. A mi no me ha pasado nunca (debí tener suerte) pero si os ocurre que se genera con caractéres que no son validos, simplemente borrad ese archivo y reiniciad el servidor. El fichero se regenerará con otro código. Coged el primero válido que se genere.
6.- Funcionamiento del cliente «normal» de RustDesk.
En principio el cliente de RustDesk funciona de la misma forma que cualquier cliente de otros programas similares (Como Anydesk). Desde la propia página de RustDesk (https://rustdesk.com/) podemos descargarnos la aplicación correspondiente a nuestro sistema operativo. Incluso se nos permite descargar una versión portable que no necesita ni ser instalada. Ya veremos que ésta última nos va a interesar luego mucho, pero empecemos instalando una versión normal.
Al ejecutarla vemos que de entrada nuestro ordenador tiene un ID y una contraseña, por lo que se puede acceder a él desde otro cliente de Rustdesk que conozca al menos el ID (si no conoce la contraseña, a nosotros nos saldrá un mensaje preguntándonos si aceptamos que esa persona pueda controlar nuestro equipo).
De la misma forma, podemos controlar otro ordenador si conocemos su ID.
Sin embargo, todo esto funciona usando los servidores de RustDesk. ¿Cómo podemos usar nuestro servidor? Pues muy sencillo. Pulsamos los tres puntitos que tenemos al lado de nuestro ID y en el menú que se despliega seleccionamos la opción «Servidor de ID/Relay».
Y ahí dentro pondremos en «ID Server» la dirección de dominio que generamos en el paso 2, que en el ejemplo era «remoto.miempresa.com».
Sólo con esto el cliente estará dentro de nuestro servidor y podremos acceder a él.
Espera... ¿pero en el campo "key" no hay que poner el ID de instalacion del paso 5?
Si se quiere se puede poner, pero el cliente funcionará igual. El ID de instalación lo usaremos para el siguiente punto.
Con esto nos es suficiente. Si en la parte inferior del cliente de RustDesk nos muestra un punto verde con el texto «Listo», es que ya está funcionando con nuestro servidor.
7.- Funcionamiento con el cliente portable de RustDesk.
El punto 6 está muy bien, pero si tenemos que prestar soporte a alguien que no tenga instalado el cliente de rustdesk, puede que esa persona se líe con la instalación y la configuración del servidor de RustDesk. En ese sentido, usar alternativas como «Anydesk» parece que resultan más sencillas, porque son básicamente lo mismo pero sin la parte de configuración del servidor de RustDesk.
Sin embargo si usamos el cliente portable las cosas se simplifican. Si nos bajamos la versión portable, dentro del archivo ZIP que nos descargamos hay un archivo con un nombre similar a éste.
Lo que debemos hacer es cambiarle el nombre a ese archivo y dejarlo de esta forma.
rustdesk-host=DOMINIO,key=IDDEINSTALACION.exe
Por lo que al final el nombre del archivo nos quedará similar a esto.
Lo que debemos hacer es subir el archivo a alguna plataforma que nos otorgue un nombre sencillo. Lo que os recomiendo es que lo subáis al hosting de vuestra página web. Cread un subdominio en el hosting, del tipo «descarga.midominio.com» y ahí subís dos cosas:
- Ese archivo ejecutable.
- Creáis un archivo llamado index.html con el siguiente código.
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=https://descarga.midominio.com/rustdesk-host=soporte.midominio.com,key=5dWrp34pSxmYiK7kDeewp345TuUCHM2mQ0305pRVms1c.exe">
Fijaos que ese archivo sólo tiene una única línea y que debéis que modificar dos cosas en el campo URL:
- Dominio: Sustituís «descarga.midominio.com» por vuestro dominio.
- Nombre del archivo: Ponéis el nombre del archivo que habéis modificado.
Con esto realizado, si tenéis que dar soporte a alguien que no tenga rustdesk instalado, sólo tendréis que decirle: «entra en la página descarga.midominio.com». Esa persona descargará el archivo con el nombre correcto, lo ejecutará y ya estará funcionando con nuestro servidor configurado.
Oye... pero si en el paso 6 no hubo que poner la "key", supongo que es algo que también se puede omitir al renombrar este archivo ¿No es así?
Pues no. En este archivo la key es fundamental. Sin ese dato el archivo portable no funcionará. Así que acordaos de ponerla correctamente.
8.- Actualización del servidor de Rustdesk.
De vez en cuando es conveniente actualizar nuestro servidor para recibir nuevas funcionalidades. Hacerlo es algo también muy sencillo. La forma más cómoda es crear un script muy simple que te ejecute los comandos necesarios uno por uno, así que volvemos a ir al terminal de nuestro servidor rustdesk y nos vamos a la carpeta donde hemos dejado el archivo con extensión «yml» tecleando este comando (Nota: el símbolo «~» se escribe en un teclado español manteniendo pulsada la tecla «alt» mientras se teclea el número 126).
cd ~/docker/rustdesk/
Ahora creamos un archivo llamado «actualizador.sh».
sudo nano actualizador.sh
Y le pegamos dentro este código:
sudo apt-get update
sudo apt-get dist-upgrade
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
Guardamos cambios con «Control»+»O» y lo convertimos en ejecutable de esta forma.
chmod +x actualizador.sh
Ahora siempre que queramos actualizar el servidor de rustdesk sólo tendremos que ir a la carpeta que contiene ese archivo y ejecutarlo. Se haría de la siguiente forma:
cd ~/docker/rustdesk/
./actualizador.sh
9.- Conclusión
Como habréis visto, la instalación del software del servidor no es para nada complicada y si hacéis que los usuarios se puedan descargar fácilmente el archivo autoinstalable, el uso de este sistema pasa a ser idéntico que el que podéis hacer con cualquier otro programa similar de código propietario, sólo que con dos ventajas: es software libre y no dependéis de servidores ajenos.
Ahora os toca a vosotros decirme vuestras impresiones. ¿Conocéis algún otro software libre con el que hacer este tipo de conexiones? ¿Habéis tenído algún problema al intentar seguir este tutorial o lo habéis habilitado todo de una forma distinta? Estaré encantado de leer vuestros comentarios.
Vaya tutorial te has marcado. Trabajazo. Felicidades y gracias. En nuestra empresa lo probaremos.
Que gran tuto para noobs, felicidades por el currazo.
Espectacular el tutorial. Lo instalé en Centos sin problema alguno y funcionando a la perfección. Lo único que me gustaría mejorar es el ejecutable con un nombre mas corto. Hay alguna solución más sencilla para poner nuestros parámetros en el ejecutable?..
Mil gracias
Perdona por la tardanza en responder. No. Actualmente no es posible poner un nombre más corto para el ejecutable. De hecho esa es la gracia, que sólo cambiando el nombre con esos parámetros, todo funciona a la perfección.
Nosotros somos una academia de cursos SAP.
A veces no es necesario conectarnos a los equipos de los consultores o alumnos.
Tu manual nos ha servido para implementar una solución libre y dejar otras privativas.
Muchas gracias.
Muy buen tutorial, funciona muy bien. Muchas gracias
Hola, estupendo tutorial, solo me falta un tema, poner un nombre al cliente instalado en lugar de su id numérico, al intentarlo me dice «aun no es compatible con el servidor», he buscado pero no encuentro como hacerlo en el manual de rustdesk.
Gracias por un gran trabajo.
Genial tutorial, vamos allá con el primer problema encontrado, cuando ejecuto docker-compose up -d me da el error orden no encontrada, ¿sabes cuál puede ser la causa? He realizado la instalación en Debian.
Pues era algún problema de Debian, creo que porque no necesitada poner sudo para instalar, al final instale un Ubuntu Server y no he tenido problemas con la instalación.
En Debian por defecto no existe el comando sudo. Hay que instalarlo con un apt-get install sudo. Tal y cómo se dice en el artículo, antes de iniciar la instalación de RustDesk recomiendo hacer todo lo que se indica en el punto 4 de este otro artículo:
https://www.flopy.es/bitwarden-vs-vaultwarden-instalacion-y-uso-de-un-gestor-de-contrasenas-en-tu-propia-nube/
No me gusta repetirme en los tutoriales (poner lo mismo una y otra vez puede ser cansado para el lector), así que prefiero remitir la preparación del sistema a otro artículo en el que se detalla con calma. La preparación del debian yo la hago así:
– instalar sudo (apt-get install sudo)
– Añadir el usuario a sudoers (con sudo visudo)
– instalar net-tools y crear un enlace simbólico para ejecutar ipconfig (ya… que no hace ni falta en el artículo y en caso de hacer falta puede sustituirlo un «ip a» , pero maniático que es uno, qué le vamos a hacer).
– Revisar /etc/resolv.conf (en el 90% de los casos está bien y no hay que tocarlo, pero me ha dado algún que otro dolor de cabeza, así que siepre lo reviso).
– Poner ip fija con sudo nano /etc/network/interfaces
Ya digo… todo esto lo detallo en el punto 4 de ese artículo.
En todo caso tal y cómo dices, si te sientes más cómodo con ubuntu, pues adelante. Yo me he pasado a Debian porque básicamente es lo mismo pero mucho más ligero. El arranque es casi instantáneo y vale… que no tiene tantas cosas como Ubuntu por defecto, pero precisamente eso es lo que para mi le da valor.
Muchísimas gracias!.
Instalado todo en un Ubuntu 22.04 con mínimos cambios.
Estoy viendo la posibilidad de recompilar el cliente para que el nombre no tenga que contener todos los datos de conexión, pero se ve complicado. Ya veremos.
Gran trabajo, no soy nada experto en Línux y todo ha funcionado sin problemas, lo cual no es para nada normal.
Gracias de nuevo.
Domingo.
¡Felicitaciones por lo trabajo! Seguí los pasos y casi funcionó. Solo las computadoras que están en la misma red que el servidor no funcionan. Tengo un microtik en la red y creo que puede estar generando este problema. (Brasil)
Prueba a redireccionar el dominio a la ip del servidor mediante el archivo HOST, con algunos router pasa.
Buenas tardes, pudiste solucionarlo? Tengo un Mikrotik como router Core y tengo el mismo problema, desde afuera me conecto pero desde la misma red no… Saludos.
Me autorespondo, configurando NAT hairping o también conocida como NAT Loopback se soluciona el problema…
Hola! excelente tutorial y muy bien explicado, e seguido todos los pasos pero no me genera el archivo id_ed25519.pub ni en ubuntu ni debian, hay manera de generalas a mano?
Me autocontesto, al final al tercer intento si que los genero en /home/usuario/docker/rustdesk/data/* , ya solo me queda que termine de funcionar con NGINX por enmedio…
🙂
Genial el tutorial, pero ahora no hay manera de que el cliente portable comunique con el servidor… puertos abiertos en el router, si hago nmap los veo abiertos del 21115 al 21119 y redirigidos a la ip de la máquina. Máquina con docker en marcha, registro dns apuntando a la ip publica correctamente, key de la conexión puesta correctamente en el fichero… y nada que no hay manera: «No está listo. Compruebe la conexión». Acabo de hacer una nueva instalación limpia sin errores y esto sigue igual… no sé por donde pillarlo
Hola, muy buen tutorial, ya lo tenemos funcionando! mi pregunta es como hacer para que en la version instalable, si no se utiliza la key no se conecte a nuestro servidor?
Muy buen aporte! Muchas Gracias
Buenas, si envías el instalador sin la key, en ese equipo se instala el rustdesk y tu desde tu rustdesk con el server y el key configurado puedes iniciar la conexión, pero al revés no porque no tiene la key… Osea, si solo desde tu rustdesk deseas iniciar la conexión y quieres que el cliente solo acepte la conexión, no es necesario que le des el key. Con ello impides que la conexión se inicie desde el cliente e impides que se conecte a tu servidor…
Muy buen trabajo de documentación, gracias por este aporte.
Sos Genio !!!! lo uso para mis clientes y no pretendia pagar pro anydesk que partio gratis y ahora sobre 10 conexiones cobra.
saluodos Genio !!!
Hola, excelente tutorial
Tras varias instalaciones y mucho sufrimiento ya tengo mi servidor funcionando.
Os cuento los problemas que he ido teniendo:
1- Instalación básica con Debian: En mi caso con Debian 12 me ha dado muchos problemas. He optado por Debian 11
2- El script «install_docker_nproxyman.sh» ha cambiado y, por la razón que sea, no se instala docker-compose.
Al lanzar «docker-compose up -d » da el error orden no encontrada.
Este error se soluciona si se instala manualmente docker-compose, según el paso 5.2 de » https://www.flopy.es/bitwarden-vs-vaultwarden-instalacion-y-uso-de-un-gestor-de-contrasenas-en-tu-propia-nube/«.
He modificado la ruta para mover docker-composer a la que indica el script de gitlab.
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
mv /usr/bin/docker-compose /usr/local/bin/docker-compose
Supongo que se puede agrupar todo en una línea pero, por si acaso, lo hago en dos.
3- La ruta de la Key es diferente a la que se indica este tutorial a mí me aparece en /home/usuario/docker/rustdesk/data/
4- En equipos externos a la red del servidor hay conexión con el servidor (aparece el mensaje: listo) y es posible realizar conexiones entre ellos.
En los equipos internos de la red aparece el mensaje: «Conexión a la red en progreso» y no es posible ni lanzar ni recibir una conexión.
En los comentarios se propone modificar la configuración del router. «…configurando NAT hairping o también conocida como NAT Loopback se soluciona el problema…»
Mi router no tiene esta función.
Lo que sí ha funcionado ha sido agregar a la «base de datos local de DNS» de mi router el domino de mi servidor apuntando a mi IP interna
por ejemplo -> misservidorrustdesk.com 192.168.1.X
La idea es que desde la red interna, no vaya a buscar el servidor por la IP pública ya que eso es lo que da error.
Otra opción, para Windows es agregar esta misma línea en el archivo host de cada equipo de la red interna. En Linux habrá algo similar. Supongo.
Excelente tutorial, Marcos.
A fecha de hoy, tus indicaciones siguen siendo válidas y la instalación en Ubuntu Server 22.04 ha sido correcta y funcional.
Gracias por enriquecernos.
Saludos.
Actualmente a fecha 21 2 2024 no funciona bien sin servidor, y con servidor veo que hay que echarle un rato a la cosa. Me pone «conectando a la red rustdesk en progreso» con redondelito naranja, y de ahi no pasa. Cuando iba bien iba MUY bien. Ya no
Hace nada salió una vulnerabilidad importante en RustDesk: https://www.incibe.es/incibe-cert/alerta-temprana/vulnerabilidades/cve-2024-25140 Sin embargo, como buen software libre, la resolvieron en tiempo récord. El problema es que se trataba de una vulnerabilidad con certificados. Al resolverla puede que los certificados antiguos dejasen de estar firmados, por lo que si te pasa algo desde… hace un par de días, que es cuando se corrigió el problema, te recomiendo actualizar todos los clientes de RustDesk. Con eso debería solucionarse.
No sé como actualizar esos clientes de rustdesk, yo la verdad la usaba antes sin …cliente justamente. Osea, la app tal cual me la descargué.
Vulnerabilidad y acceso remoto no suenan bien juntas….
Igual tengo que aprender a usar mi propio cliente, no sé.
Gracias
Sobre lo de la vulnerabilidad, cualquier software que corras en un equipo es susceptible de tener alguna, y todos los softwares de escritorio remoto las han tenido. Por ejemplo Anydesk
https://www.cvedetails.com/vulnerability-list/vendor_id-16953/Anydesk.html
O team viewer
https://www.cvedetails.com/vulnerability-list/vendor_id-11100/product_id-19942/Teamviewer-Teamviewer.html
El problema no es que haya una vulnerabilidad, que eso le puede pasar a cualquier software. El tema es que en cuanto se descubra, se saque una nueva versión corrigiéndola lo antes posible, y en eso han respondido al momento (al día siguiente de salir a la luz ya habían sacado una versión corrigiéndola). Fíjate que por ejemplo Microsoft tiene vulnerabilidades conocidas sin parchear desde hace meses (y eso sí que es grave).
Sobre cómo actualizar los clientes… pues simplemente es descargar la versión nueva de rustdesk e instalarla en esos equipos. Si la gente que los usa tiene privilegios para instalar programas, pueden hacerlo ellos mismos.
Sobre lo que dices de «yo la verdad la usaba antes sin …cliente justamente»: Yo creo que tienes una confusión acerca de qué es un cliente. Un programa «cliente» es un programa que se conecta a un servidor. En este caso, en rustdesk, el cliente es el programa que se instala en Windows. El servidor es, o bien el que instalas en tu servidor linux (si sigues el tutorial de esta página) o bien el servidor gratuíto de rustdesk.
Usar el cliente de rustdesk desde el servidor que tienen ellos no debería dar grandes problemas, pero claro, es un servidor que no controlas, al que accede mucha gente y puede que en algún momento esté muy saturado o tengas problemas que no puedas controlar. A lo mejor hoy accedes y ya no tiene ningún problema. Si tienes un parque de clientes grande, a lo mejor te compensa montarte un pequeño servidor de rustdesk. No vas a depender de servidores de terceros y siempre te va a funcionar todo bien.
Qué raro… Pues estoy revisando en una gran instalación de rustdesk que gestiono yo, y no tengo ese problema que me estás diciendo, ni con el cliente viejo ni con el nuevo. Vale… yo uso siempre un servidor propio de rustdesk (Como se indica en el tutorial), pero acabo de probar a lanzar una conexión desde dos clientes con la versión antigua, uno con la antigua y otro con la nueva o dos con la nueva y por lo que veo la conexión en los tres casos se establece correctamente.
Mientras escribo esto acabo de modificar el cliente de un equipo para hacer la conexión usando el servidor general de rustdesk (el que estás usando tú). Vale… aparece el mensaje que indicas durante aproximadamente 10 segundos, pero a los 10 segundos ya aparece el icono verde.
No sé si puedes dar más datos de lo que está pasando, pero por aquí parece que todo va bien.
Y más raro aún: hoy veo que SÍ aparece en verde la conexión en mi pc, pero pongo mi id y mi teléfono me da «connection error».
No es que lo esté usando todos los días pero sí me gusta tener una app estable de conexión remota para cuando tengo alguna tarea y no puedo estar frente al pc. No sé qué pasa, no sé si es cuestión del pc ,…del móvil…
Vale… creo que ya sé por dónde van los tiros. Me hablas de conexión desde el móvil. En mi empresa siempre conectamos desde ordenadores hacia ordenadores y cuando en algún momento hacemos una conexión desde un ordenador hacia un móvil siempre es un móvil Android. He comprobado todos los tipos de conexiones que hay, tanto a android como a iphone y veo que en un iphone en el que tenía instalado rustdesk desde hace bastante tiempo, el rustdesk estaba como bloqueado. He desinstalado la aplicación del iphone y la he vuelto a instalar y la conexión ya va perfecta. En Android no tuve que hacer nada. Sin embargo, te digo que en Android la aplicación la han retirado temporalmente de la play store. Mientras la ponen de nuevo, puedes bajar el apk de la última versión desde su página oficial. Si no me equivoco, el enlace es este.
https://github.com/rustdesk/rustdesk/releases/download/1.2.3-1/rustdesk-1.2.3-aarch64-signed.apk
Así que en móviles, si es iphone, prueba a reinstalar la aplicación. Si es android, prueba a poner esa última versión. A ver si eso te soluciona el problema, porque ya digo… desde aquí funciona tanto con servidor propio como con el servidor de rustdesk sin ningún problema.
PD: Si se trata de conexión a tu ordenador desde tu móvil, lo ideal no es usar rustdesk. Siempre que sea posible, una VPN combinada con escritorio remoto es lo ideal, pero hay que montarse un servidor de VPN como éste, claro.
https://www.flopy.es/tutorial-como-configurar-un-servidor-de-vpn-veloz-con-wireguard/
Buenas Marcos,
Llevo varios días intentando hacer funcionar esta instalación, pero siempre llego al mismo punto, en el punto 5, localizar el ID, entro en la carpeta Docker y no hay una carpeta hbbs, con lo cual no tengo los keys que dices. Con otro tutorial he llegado a generar esas keys, pero creo que no están en el sitio que deben.
Se te ocurre el por que de que no se cree esa carpeta?
Como ayuda, al instalar docker en el punto 4.1 me dice que docker-composer parece estar ya instalado, uso Ubuntu 22.04.4. Cuando ejecuto la línea «docker-compose up -d» del punto 4.2, me dice lo siguiente:
No se ha encontrado la orden «docker-compose», pero se puede instalar con:
sudo snap install docker # version 24.0.5, or
sudo apt install docker-compose # version 1.29.2-1
Consulte «snap info docker» para ver más versiones.
He ejecutado las dos lineas que da esa información, pero termino con el problema que te he descrito al principio.
Un saludo y gran trabajo.
Consulto a ver si alguien tiene alguna idea, lo instale y lo corro localmente sin problemas, para salir afuera estoy usando nginx proxy manager, estuve buscando y lo que vi es que no hay que usar la opcion de Proxy Hosts sino la de Streams, agrego todos los puertos, en el nginx los veo online, pero desde afuera no puedo conectar, sigue marcando offline todo el tiempo