Docker Guacamole
Настройка 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 на сервере и легко масштабировать или обновлять сервисы при необходимости.