Настройка Guacamole с MySQL и Nginx через Docker

В этой статье показано, как развернуть Apache Guacamole для удалённого доступа к серверам через веб-браузер с использованием Docker, MySQL и Nginx.

1. Создание папок на хосте

Создаём папку для SQL-скрипта и папку для хранения файлов Guacamole на хосте:

mkdir -p /opt/guacamole mkdir -p /opt/guacamole/initdb

2. Генерация SQL скрипта Guacamole

С помощью официального Docker-образа Guacamole создаём скрипт initdb.sql и сохраняем его в папку /opt/guacamole/initdb :

docker run --rm guacamole/guacamole:1.6.0 /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/initdb/initdb.sql

Файл initdb.sql будет использоваться для инициализации базы данных MySQL.

3. Создание файла Docker Compose

Создаём файл docker-compose.yml с минимальной конфигурацией для Guacamole, MySQL и guacd:

version: "3.9" services: guacd: image: guacamole/guacd:1.6.0 container_name: guacd networks: - guacamole-net restart: unless-stopped guacamole-db: image: mysql:8.0 container_name: guacamole-db command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: mypassword MYSQL_DATABASE: guacamole_db MYSQL_USER: guacamole_user MYSQL_PASSWORD: guacpassword volumes: - guac-db-data:/var/lib/mysql - /opt/guacamole:/docker-entrypoint-initdb.d networks: - guacamole-net restart: unless-stopped guacamole: image: guacamole/guacamole:1.6.0 container_name: guacamole environment: GUACD_HOSTNAME: guacd MYSQL_HOSTNAME: guacamole-db MYSQL_DATABASE: guacamole_db MYSQL_USER: guacamole_user MYSQL_PASSWORD: guacpassword depends_on: - guacd - guacamole-db networks: - guacamole-net restart: unless-stopped ports: - "8080:8080" volumes: guac-db-data: networks: guacamole-net: driver: bridge

4. Запуск контейнеров

Поднимаем все сервисы одной командой:

docker-compose up -d

При первом старте контейнера MySQL автоматически выполнит /docker-entrypoint-initdb.d/initdb.sql, создавая все таблицы и записи для Guacamole.

5. Конфигурация Nginx

Простой пример nginx.conf для проксирования Guacamole на порт 80:

server_name your.domain.com; location / { proxy_pass http://guacamole:8080/; 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; }

6. Итоги

  • Guacamole для удалённого доступа через браузер
  • MySQL для хранения данных
  • Nginx для проксирования и возможного SSL
  • Docker Compose для простого управления контейнерами

Эта конфигурация позволяет быстро и безопасно развернуть Guacamole на сервере и легко масштабировать или обновлять сервисы при необходимости.