Solución comunitaria

Instala Apache Guacamole de forma segura en CasaOS o ZimaOS

A 2023 CasaOS tutorial introduced Apache Guacamole through BigBearCasaOS as a browser gateway for VNC, RDP and SSH.

En resumen: Guacamole moderno es un servicio de tres partes, no solo un contenedor web

Apache Guacamole te proporciona acceso a RDP, VNC y SSH desde el navegador sin necesidad de un cliente de escritorio. Una implementación de Docker orientada a producción normalmente incluye la aplicación web de Guacamole, guacd y una base de datos como PostgreSQL o MySQL/MariaDB. El antiguo paquete de BigBearCasaOS de 2023 debe considerarse una solución histórica y práctica, no una referencia de arquitectura.

Usa los contenedores oficiales de Guacamole

El proyecto Apache publica las imágenes compatibles guacamole/guacamole y guacamole/guacd. La pila de Docker de Guacamole describe la distribución oficial. Los modos de instalación de Guacamole explican por qué se recomienda la autenticación mediante base de datos para implementaciones reales.

Distribución recomendada de los contenedores

guacamole-web
    |
    +-- guacd
    |
    +-- postgres or mariadb

Mantén los tres servicios en una red privada de Docker. Publica únicamente el punto de acceso web de Guacamole. No publiques la base de datos ni guacd en la LAN, a menos que otro componente realmente lo necesite.

Inicializa la base de datos antes del primer inicio de sesión

La extensión de autenticación mediante base de datos de Guacamole necesita que se cargue su esquema antes de que la aplicación web pueda almacenar usuarios y conexiones. Usa los archivos de inicialización SQL que coincidan con la versión exacta de Guacamole y el tipo de base de datos. Mantén persistente el directorio de datos de la base de datos.

Configura HTTPS delante de Guacamole antes de exponerlo de forma remota

Guacamole puede transportar contraseñas de administrador y sesiones de escritorio remoto, por lo que exponerlo mediante HTTP sin cifrado ofrece una protección deficiente. Usa un proxy inverso con HTTPS y una autenticación sólida. El proxy HTTPS de ZimaOS proporciona el patrón de proxy inverso de ZimaOS.

Usa MFA o SSO cuando Guacamole sea accesible desde Internet

Apache Guacamole admite extensiones para TOTP, OpenID Connect, SAML y otros sistemas de autenticación. El acceso a escritorios remotos es una función administrativa; protégelo como corresponde en lugar de depender únicamente de una contraseña local corta.

Cuándo ejecutar Guacamole en una máquina virtual

Si quieres aislar Guacamole del motor de Docker del NAS o ya tienes varios servicios de infraestructura, una máquina virtual pequeña con Debian/Ubuntu te ofrece un límite claro para las actualizaciones y el cortafuegos. Los requisitos de máquina virtual de ZimaOS cubren los recursos del host necesarios para esa separación.

Los requisitos de aplicaciones de ZimaOS resultan útiles cuando Guacamole comparte el NAS con bases de datos, servidores multimedia y sistemas de monitorización.

Conserva la base de datos y la configuración de Guacamole por separado

No consideres el contenedor web como la parte que almacena el estado de Guacamole. Las cuentas de usuario, las conexiones guardadas y los datos de autenticación se almacenan en la base de datos, mientras que las extensiones y la configuración personalizada pueden encontrarse en directorios montados. Haz copias de seguridad de esos componentes persistentes antes de sustituir las imágenes. Descargar un contenedor nuevo debería ser una tarea rutinaria; reconstruir de memoria todas las conexiones remotas no debería serlo.

Configura correctamente los WebSockets en el proxy inverso

Guacamole usa conexiones de larga duración del navegador y compatibilidad con WebSocket para las sesiones interactivas. Si el inicio de sesión funciona, pero los escritorios remotos se desconectan, se congelan o pierden rendimiento detrás de un proxy, verifica el reenvío de WebSocket y los tiempos de espera del proxy antes de culpar al propio RDP o VNC. Mantén estable la ruta o el nombre de host de Guacamole para que el comportamiento de las devoluciones de llamada y de las sesiones del navegador no cambie con cada actualización.

Separa el acceso a Guacamole de las credenciales de los sistemas de destino

El inicio de sesión en Guacamole controla la entrada a la puerta de enlace; el sistema Windows/Linux de destino sigue teniendo sus propias credenciales y políticas de RDP, VNC o SSH. Evita reutilizar una misma contraseña de administrador en todas partes. Para el acceso compartido en el hogar o en un equipo, crea usuarios con nombre en Guacamole y concede a cada persona únicamente las conexiones que necesite.

Prueba la puerta de enlace antes de exponerla

Antes de añadir DNS público, prueba una conexión SSH o RDP desde la LAN, confirma el comportamiento del portapapeles y de las sesiones, reinicia todos los contenedores de Guacamole y verifica que las conexiones guardadas sigan funcionando. Después, prueba una copia de seguridad y su restauración. Una puerta de enlace que resiste la recreación de los contenedores está mucho más cerca de ser una implementación fácil de mantener que una que solo funciona hasta la próxima actualización de la imagen.

Preguntas frecuentes

¿Guacamole necesita un cliente de escritorio?

No. Los usuarios se conectan mediante un navegador web, mientras Guacamole traduce el tráfico del navegador en sesiones RDP, VNC o SSH.

¿Guacamole necesita una base de datos?

Para gestionar usuarios y conexiones en una implementación orientada a producción, sí. El sencillo método de autenticación XML es principalmente adecuado para pruebas básicas.

¿Debo exponer guacd a Internet?

No. Mantén guacd en privado, detrás de la aplicación web de Guacamole.

¿Puede Guacamole sustituir a una VPN?

Puede proporcionar acceso desde el navegador a los escritorios remotos configurados, pero no es un túnel de red privada general para todos los servicios.

¿Puedo usar MariaDB en lugar de PostgreSQL?

Sí. Entre las opciones de autenticación mediante bases de datos compatibles se incluyen las bases de datos compatibles con MySQL y PostgreSQL, siempre que se configuren con la extensión y el esquema correspondientes.