# Apache Guacamole

Apache Guacamole es una puerta de enlace de escritorio remoto sin cliente, multiplataforma y de código abierto, mantenida por la Apache Software Foundation. Permite a los usuarios controlar computadoras remotas o máquinas virtuales a través de un navegador web y permite a los administradores dictar cómo y si los usuarios pueden conectarse utilizando un sistema extensible de autenticación y autorización. Las máquinas de destino pueden mantenerse aisladas detrás de Guacamole y no es necesario que sean accesibles a través a Internet.
El acceso remoto se realiza a través del componente guacd, que utiliza los protocolos remotos RDP, VNC o SSH para acceder a los recursos. Guacamole no tiene cliente y no requiere la instalación de un agente en los recursos a los que se accede. El hecho de que el cliente se ejecute en navegadores web permite a los usuarios conectarse a sus escritorios remotos sin instalar un cliente de escritorio remoto.

## Componentes

Guacamole se compone de varios componentes: una aplicación web que se ofrece a los usuarios y un servicio backend ("guacd") que traduce y optimiza dinámicamente los protocolos nativos en el protocolo Guacamole. La parte de Guacamole con la que interactúa un usuario es la aplicación web.

### Aplicación web

La aplicación web proporciona la interfaz de usuario, el sistema de autenticación y autorización. No implementa ningún protocolo de escritorio remoto, sino que se basa en guacd para traducir los protocolos de escritorio remoto al protocolo Guacamole. El lado del servidor de la aplicación web está escrito en Java y se ejecuta bajo un contenedor de servlets como Apache Tomcat o Jetty. El lado del cliente de la aplicación web está escrito en JavaScript y se ejecuta dentro del navegador web.

### guacd

Los servicios guacd solicitan conectarse a escritorios remotos desde la aplicación web. Carga dinámicamente soporte para protocolos de escritorio remoto, de modo que ni guacd ni la aplicación web necesitan comprender los detalles de ningún protocolo de escritorio remoto. guacd y todos los complementos del cliente utilizan una biblioteca compartida, libguac, para abstraer el protocolo Guacamole y la comunicación con la aplicación web.

## Historia

Guacamole fue creado en 2010 por Michael Jumper como un cliente VNC HTML5 que aprovecha los componentes de un cliente telnet basado en navegador llamado "RealMint". La empresa Glyptodon LLC se formó para apoyar y desarrollar el proyecto, y donó el proyecto a la Apache Software Foundation en 2016, donde entró en incubación. En 2017, Guacamole completó la incubación y se convirtió en el proyecto de nivel superior de Apache Guacamole.
Como proyecto de la Apache Software Foundation, Guacamole tiene licencia Apache y es desarrollado por una comunidad de colaboradores. Las discusiones y el soporte sobre el desarrollo se llevan a cabo en las listas de correo del proyecto, y las contribuciones se realizan mediante la apertura de solicitudes de extracción en los repositorios del proyecto en GitHub. El proyecto sigue prácticas de divulgación responsable y proporciona una lista privada para informar y abordar problemas con implicaciones de seguridad.