Tutoriales, noticias y soluciones informáticas

Instalación de un servidor de RustDesk: la alternativa libre y gratuíta a Anydesk, TeamViewer y Logmein

Oficina tradicional

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. 
Interfaz de rustdesk en pequeño

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.

interfaz de anydesk

Ahora mira esta otra pantalla de RustDesk (que es el software del que vamos a hablar en este artículo)

Interfaz de Rustdesk
¡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. 
Cables

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. 
Configurando un servidor

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».

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.

Instalar para varios sistemas
Entre todas esas distribuciones está nuestro Debian.

Lo que haremos será seleccionar todo el texto y pegarlo en el terminal que teníamos abierto.

install-docker.sh

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).

seleccionar SO

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».

Opciones de instalació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.

Docker-compose.yml

Ahora pulsamos sobre la opción «Raw» para ver el código…

Pulsar raw de nuevo

… y en cuanto lo veamos, lo seleccionamos y lo copiamos en el portapapeles.

Código

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».

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».

campos

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.

Archivo rustdesk

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.

Archivo renombrado

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:

  1. Ese archivo ejecutable.
  2. 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.- 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.

Share

2 comentarios

  1. Carlos Torres

    Vaya tutorial te has marcado. Trabajazo. Felicidades y gracias. En nuestra empresa lo probaremos.

  2. Jony

    Que gran tuto para noobs, felicidades por el currazo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

© 2022 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies