Cómo instalar el cliente de escritorio remoto Guacamole basado en la web en Ubuntu 20.04 LTS
Guacamole es un panel de control de escritorio remoto gratuito, de código abierto y basado en la web, que sirve para gestionar sistemas Linux y Windows desde el navegador web. Soporta protocolos estándar como VNC, RDP, SSH y Kubernetes, y no necesitas instalar ningún software en el ordenador cliente. Soporta el portapapeles, la transferencia de archivos a través de SFTP y te permite gestionar múltiples sesiones de escritorio remoto.
En este tutorial, te mostraremos cómo instalar y configurar el cliente de escritorio remoto Guacamole en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 20.04 con un mínimo de 2GB de RAM.
- Una contraseña de root configurada el servidor.
Cómo empezar
En primer lugar, tendrás que actualizar tu sistema a la última versión estable. Puedes hacerlo actualizando todos los paquetes del sistema mediante el siguiente comando:
apt-get update -y
Una vez actualizado tu sistema, reinicia tu sistema para aplicar los cambios.
Instalar las dependencias necesarias
En primer lugar, necesitarás instalar algunas dependencias en tu servidor para compilar el Guacamole desde el código fuente. Puedes instalarlas todas con el siguiente comando:
apt-get install make gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev -y
Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.
Instalar el servidor Tomcat
Guacamole utiliza Tomcat para servir el contenido del cliente de Guacamole a los usuarios que se conectan al servidor de Guacamole a través del navegador web. Por tanto, el servidor Tomcat debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:
apt-get install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y
Después de instalar el servidor Tomcat, inicia el servicio Tomcat y permite que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start tomcat9
systemctl enable tomcat9
También puedes verificar el estado del servicio Tomcat con el siguiente comando:
systemctl status tomcat9
Deberías obtener la siguiente salida:
? tomcat9.service - Apache Tomcat 9 Web Application Server Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-08-25 14:48:50 UTC; 29min ago Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html Process: 27982 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh (code=exited, status=0/SUCCESS) Main PID: 27990 (java) Tasks: 38 (limit: 4691) Memory: 241.5M CGroup: /system.slice/tomcat9.service ??27990 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat9/conf/logging.properties -Djava.util.l>
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Guacamole
Por defecto, el paquete Guacamole no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que compilarlo desde el código fuente.
En primer lugar, descarga la última versión de Guacamole del sitio web de Apache mediante el siguiente comando:
wget https://downloads.apache.org/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:
tar -xvzf guacamole-server-1.1.0.tar.gz
A continuación, cambia el directorio al extraído y ejecuta el script de configuración para comprobar si falta alguna dependencia necesaria o no:
cd guacamole-server-1.1.0
./configure --with-init-dir=/etc/init.d
Si todo está bien, deberías ver la siguiente salida:
freerdp2 ............ yes pango ............... yes libavcodec .......... yes libavutil ........... yes libssh2 ............. yes libssl .............. yes libswscale .......... yes libtelnet ........... yes libVNCServer ........ yes libvorbis ........... yes libpulse ............ no libwebsockets ....... no libwebp ............. yes wsock32 ............. no Protocol support: Kubernetes .... no RDP ........... yes SSH ........... yes Telnet ........ yes VNC ........... yes Services / tools: guacd ...... yes guacenc .... yes guaclog .... yes FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2 Init scripts: /etc/init.d Systemd units: no Type "make" to compile guacamole-server.
Ahora, compila e instala Guacamole Server ejecutando el siguiente comando:
make
make install
A continuación, ejecuta el siguiente comando para actualizar la caché de bibliotecas instaladas de tu sistema:
ldconfig
A continuación, habilita e inicia el servicio Guacamole con el siguiente comando
systemctl enable guacd
systemctl start guacd
Ahora puedes comprobar el estado del servicio Guacamole con el siguiente comando:
systemctl status guacd
Deberías obtener la siguiente salida:
? guacd.service - LSB: Guacamole proxy daemon Loaded: loaded (/etc/init.d/guacd; generated) Active: active (running) since Tue 2020-08-25 12:02:26 UTC; 4s ago Docs: man:systemd-sysv-generator(8) Process: 27536 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS) Tasks: 1 (limit: 4691) Memory: 10.1M CGroup: /system.slice/guacd.service ??27555 /usr/local/sbin/guacd -p /var/run/guacd.pid Aug 25 12:02:26 ubuntu2004 systemd[1]: Starting LSB: Guacamole proxy daemon... Aug 25 12:02:26 ubuntu2004 guacd[27551]: Guacamole proxy daemon (guacd) version 1.1.0 started Aug 25 12:02:26 ubuntu2004 guacd[27536]: Starting guacd: Aug 25 12:02:26 ubuntu2004 guacd[27551]: Starting guacd: Aug 25 12:02:26 ubuntu2004 guacd[27551]: uacd[27551]: INFO: Guacamole proxy daemon (guacd) versio Aug 25 12:02:26 ubuntu2004 systemd[1]: Started LSB: Guacamole proxy daemon. Aug 25 12:02:26 ubuntu2004 guacd[27555]: Listening on host 127.0.0.1, port 4822 Aug 25 12:02:26 ubuntu2004 guacd[27536]: uacd[275
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar el cliente Guacamole
A continuación, tendrás que instalar el cliente Guacamole en tu servidor. El cliente Guacamole está escrito en Java y es multiplataforma. Esto conformará la aplicación HTML5 final que se te presentará.
En primer lugar, descarga el binario de Guacamole mediante el siguiente comando:
wget https://mirrors.estointernet.in/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war
Después de descargar el binario de Guacamole, cópialo en el directorio /etc/guacamole utilizando el siguiente comando:
mkdir /etc/guacamole
mv guacamole-1.1.0.war /etc/guacamole/guacamole.war
A continuación, crea un enlace simbólico del cliente guacamole al directorio webapps de Tomcat con el siguiente comando:
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/
Por último, reinicia el servicio Tomcat y Guacamole para desplegar la nueva aplicación web:
systemctl restart tomcat9
systemctl restart guacd
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Guacomole
A continuación, debes configurar los usuarios y las conexiones para que Guacamole funcione correctamente.
Primero, crea un archivo de configuración principal de Guacamole llamado guacamole.properties.
nano /etc/guacamole/guacamole.properties
Añade las siguientes líneas:
guacd-hostname: localhost guacd-port: 4822 user-mapping: /etc/guacamole/user-mapping.xml
Guarda y cierra el archivo cuando hayas terminado.
A continuación, tendrás que crear directorios para la biblioteca y la extensión. Puedes crearlos con el siguiente comando:
mkdir /etc/guacamole/{extensions,lib}
A continuación, establece la variable de entorno del directorio principal de guacamole y añádela al archivo de configuración /etc/default/tomcat9.
echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat9
A continuación, tendrás que crear un archivo llamado user-mapping.xml para definir el usuario que puede acceder a la interfaz web de Guacamole.
Antes de crearlo, genera un hash md5 para la contraseña con el siguiente comando:
echo -n yoursecurepassword | openssl md5
Deberías ver la siguiente salida:
(stdin)= 55b38b03e7587a45fd886977842ff9b8
Nota: Recuerda la contraseña md5 anterior. Tendrás que definirla en el archivo user-mapping.xml.
A continuación, crea un nuevo user-mapping.xml con el siguiente comando
nano /etc/guacamole/user-mapping.xml
<user-mapping> <authorize username="admin" password="55b38b03e7587a45fd886977842ff9b8" encoding="md5"> <connection name="Ubuntu20.04-Server"> <protocol>ssh</protocol> <param name="hostname">192.168.10.50</param> <param name="port">22</param> <param name="username">root</param> </connection> <connection name="Windows Server"> <protocol>rdp</protocol> <param name="hostname">192.168.10.51</param> <param name="port">3389</param> </connection> </authorize> </user-mapping>
Guarda y cierra el archivo cuando hayas terminado.
Donde:
- 192.168.10. 50 es la dirección IP del servidor remoto de Ubuntu.
- 192.168.10. 51 es la dirección IP del servidor Windows remoto.
A continuación, reinicia el servicio Tomcat y Guacamole para aplicar los cambios:
systemctl restart tomcat9
systemctl restart guacd
En este punto, el servidor y el cliente de Guacamole han sido instalados y configurados.
Accede a la interfaz web de Guacamole
Ahora, abre tu navegador web y accede a la interfaz web de Guacamole utilizando la URL http://your-server-ip:8080/guacamole. Se te redirigirá a la página de inicio de sesión de Guacamole:
Proporciona el nombre de usuario y la contraseña que definiste en el archivo user-mapping.xml, y haz clic en el botón Login. Deberías ver el panel de control de Guacamole en la siguiente página:
Ahora, haz clic en el Servidor Ubuntu20.04 para conectarte al servidor remoto mediante el protocolo SSH. Deberías ver la pantalla de inicio de sesión del servidor Ubuntu como se muestra a continuación:
Proporciona la contraseña de root de tu servidor Ubuntu y pulsa Intro. Se iniciará la sesión en el servidor Ubuntu como se muestra a continuación:
Configurar Nginx para Guacamole
Se recomienda configurar Nginx como proxy inverso para acceder a Guacamole a través del puerto 80.
En primer lugar, instala el servidor web Nginx con el siguiente comando:
apt-get install nginx -y
Después de instalar Nginx, crea un nuevo archivo de configuración del host virtual Nginx:
nano /etc/nginx/sites-available/guacamole.conf
Añade las siguientes líneas:
server { listen 80; server_name your-server-ip; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://your-server-ip:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; } }
Guarda y cierra el archivo cuando hayas terminado. A continuación, habilita el host virtual Nginx con el siguiente comando:
ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/
A continuación, reinicia el servicio Nginx para aplicar los cambios de configuración:
systemctl restart nginx
Ahora, puedes acceder a tu Guacamole utilizando la URL http://your-server-ip.
Conclusión
Enhorabuena! has instalado y configurado con éxito el cliente de escritorio remoto Guacamole en el servidor Ubuntu 20.04. Ahora puedes añadir más conexiones RDP o VNC a tu Guacamole y empezar a gestionarlas desde la interfaz basada en la web.