Apache Guacamole es una puerta de enlace de escritorio remoto sin cliente, que admite los siguientes protocolos estándar seguro para las conexiones a nuestros equipos de la red, como VNC, RDP y SSH. Dado que no es necesario tener un cliente instalado para facilitar las conexiones, los usuarios, simplemente usando un navegador web para acceder de forma remota a las máquinas virtuales, gracias a que se apoya en HTML5 para ello.

¿Qué necesitamos?

Para poder tener Guacamole instalado en un contenedor, necesitas los siguientes ingredientes:

¿Cómo lo hacemos?

En tu servidor Docker, ejecuta los siguientes comandos:

git clone "https://github.com/boschkundendienst/guacamole-docker-compose.git" guacamole
cd guacamole
./prepare.sh
docker-compose up -d

Esto nos va a clonar el repositorio de https://github.com/boschkundendienst, que se ha molestado en prepararnos esta automatización para hacernos la vida más fácil. Al final nos prepara el siguiente compose, el cual recomiendo que edites para ajustarlo a tus necesidades y no usar configuraciones por defecto:

version: '2.0'

# networks
# create a network 'guacnetwork_compose' in mode 'bridged'
networks:
  guacnetwork_compose:
    driver: bridge

# services
services:
  # guacd
  guacd:
    container_name: guacd_compose
    image: guacamole/guacd
    networks:
      guacnetwork_compose:
    restart: always
    volumes:
    - ./drive:/drive:rw
    - ./record:/record:rw
  # postgres
  postgres:
    container_name: postgres_guacamole_compose
    environment:
      PGDATA: /var/lib/postgresql/data/guacamole
      POSTGRES_DB: guacamole_db
      POSTGRES_PASSWORD: 'ChooseYourOwnPasswordHere1234'
      POSTGRES_USER: guacamole_user
    image: postgres:15.2-alpine
    networks:
      guacnetwork_compose:
    restart: always
    volumes:
    - ./init:/docker-entrypoint-initdb.d:z
    - ./data:/var/lib/postgresql/data:Z

  # guacamole
  guacamole:
    container_name: guacamole_compose
    depends_on:
    - guacd
    - postgres
    environment:
      GUACD_HOSTNAME: guacd
      POSTGRES_DATABASE: guacamole_db
      POSTGRES_HOSTNAME: postgres
      POSTGRES_PASSWORD: 'ChooseYourOwnPasswordHere1234'
      POSTGRES_USER: guacamole_user
    image: guacamole/guacamole
    links:
    - guacd
    networks:
      guacnetwork_compose:
    ports:
## enable next line if not using nginx
##    - 8080:8080/tcp # Guacamole is on :8080/guacamole, not /.
## enable next line when using nginx
    - 8080/tcp
    restart: always

########### optional ##############
  # nginx
  nginx:
   container_name: nginx_guacamole_compose
   restart: always
   image: nginx
   volumes:
   - ./nginx/templates:/etc/nginx/templates:ro
   - ./nginx/ssl/self.cert:/etc/nginx/ssl/self.cert:ro
   - ./nginx/ssl/self-ssl.key:/etc/nginx/ssl/self-ssl.key:ro
   ports:
   - 8443:443
   links:
   - guacamole
   networks:
     guacnetwork_compose:

Si tienes alguna duda de cómo implementarlo, no dejes de ver el vídeo que he preparado explicando paso a paso todo lo necesario para poder tener Guacamole funcionando en tu entorno, y en menos de 2 minutos!

Vídeo

error: ooops!