Как установить Apache Guacamole через Docker в Ubuntu 22.04
Apache Guacamole поддерживается Apache Software Foundation и находится под лицензией Apache 2.0.
Apache Guacamole — это шлюз удаленного рабочего стола без клиента. Вы можете получить доступ к Apache Guacamole, используя только веб-браузер, из любого места и в любое время. Вам следует использовать Apache Guacamole, если у вас есть несколько удаленных операционных систем с разными протоколами, например Windows с RDP и системы Linux с VNC и SSH.
В этом руководстве вы установите Apache Guacamole — шлюз удаленного рабочего стола/сервера — через Docker на сервере Ubuntu 22.04. Сюда входит установка и настройка Nginx в качестве обратного прокси-сервера для Apache Guacamole. Наконец, у вас будет Apache Guacamole, работающий как контейнер Docker и защищающий установку с помощью сертификата SSL/TLS на обратном прокси-сервере Nginx.
Предварительные условия
Чтобы начать работу с этим руководством, у вас должны быть следующие требования:
- Сервер Linux под управлением сервера Ubuntu 22.04.
- Пользователи без полномочий root имеют права администратора sudo/root.
- Доменное имя указывает на IP-адрес сервера.
Как только требования будут готовы, вы можете начать установку Apache Guacamole.
Установите Docker Engine и Docker Compose.
В этом руководстве вы запустите и установите Apache Guacamole в качестве контейнерной службы через Docker и Docker Compose. В этом примере используется новый сервер Ubuntu 22.04, поэтому включена установка Docker и Docker Compose.
Чтобы начать, запустите приведенную ниже команду apt, чтобы установить основные зависимости. Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.
sudo apt install CA-сертификаты Curl GnupG LSB-Release
Выход:
Затем выполните приведенную ниже команду, чтобы добавить ключ GPG и репозиторий для пакетов Docker.
sudo mkdir -p /etc/apt/keyrings curl -fsSL | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg echo “deb (arch=$(dpkg –print-architecture) Signed-by=/etc/apt/keyrings/docker.gpg) $(lsb_release -cs) стабильный” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Выход:
Затем обновите индекс пакета Ubuntu с помощью приведенной ниже команды apt.
обновление sudo apt
Выход:
После добавления репозитория Docker вы можете установить движок Docker и плагин Docker Compose, используя приведенную ниже команду apt. При появлении запроса введите y и нажмите клавишу ВВОД, чтобы продолжить.
sudo apt install docker-ce docker-ce-cliContainerd.io docker-compose-plugin
Выход:
Служба Docker запустится и активируется автоматически. Вы можете проверить службу Docker с помощью следующей командной утилиты systemctl.
docker с включенным sudo systemctl docker sudo systemctl status
Вы получите результат, указывающий, что служба Docker включена и будет автоматически запускаться при запуске. И статус службы Docker — работает.
Наконец, чтобы разрешить пользователям без полномочий root запускать контейнеры Docker, вы должны добавить своего пользователя в группу «docker». Запустите команду usermod ниже, чтобы добавить пользователя в группу «docker». Также не забудьте изменить имя пользователя на своего пользователя.
sudo usermod -aG докер Алиса
Теперь вы можете войти в систему под своим пользователем и запустить контейнер Docker с помощью команды ниже.
su — Алиса Докер запускает hello-world
В случае успеха вы получите уведомление hello-world от контейнера Docker, как показано на следующем снимке экрана.
После установки Docker и Docker Compose вы начнете создавать каталог проекта для развертывания Apache Guacamole.
Настройка каталога проекта
Сначала убедитесь, что вы вошли в систему как пользователь без полномочий root, выполнив следующую команду.
су – Алиса
Создайте новый каталог проекта «~/guacamole-server» и переместите в него свой рабочий каталог.
mkdir -p гуакамоле-сервер; cd гуакамоле-сервер/
Затем в каталоге «~/guacamole-server» создайте новый каталог «init» и файл «docker-compose.yml».
mkdir -p init touch docker-compose.yml
Затем выполните следующую команду docker pull, чтобы загрузить образы Docker, необходимые для установки Apache Guacamole. Вы загрузите 3 разных образа: guacd в качестве прокси-менеджера, гуакамоле в качестве внешнего интерфейса Apache Guacamole и postgres:13 будет использоваться в качестве серверной части базы данных для контейнера Apache Guacamole.
docker pull гуакамоле/guacd docker pull гуакамоле/гуакамоле docker pull postgres:13
Загрузите образ guacd.
Скачать изображение гуакамоле.
Загрузите образ PostgreSQL 13.
После загрузки необходимых образов Docker выполните следующую команду, чтобы запустить новый контейнер гуакамоле, и запустите сценарий initdb.sh, чтобы создать схему базы данных для вашего развертывания. Вы создадите схему базы данных гуакамоле как «init/initdb.sql».
docker run –rm guacamole/guacamole /opt/guacamole/bin/initdb.sh –postgres > init/initdb.sql
Проверьте содержимое схемы базы данных гуакамоле с помощью команды cat ниже.
кот init/initdb.sql
Выход:
Настройте docker-compose.yml
Теперь, когда необходимые образы Docker загружены, вы можете приступить к настройке сценария docker-compose.yml и настройке установки Apache Guacamole.
Начните с открытия файла конфигурации docker-compose.yml с помощью следующей команды редактора nano.
нано docker-compose.yml
Добавьте в файл следующие строки.
версия: ‘3.7’ # сети сети: guacnet: драйвер: мост # службы службы: guacd: имя_контейнера: guac_guacd изображение: guacamole/guacd сети: guacnet: перезапуск: всегда postgres: имя_контейнера: среда guac_postgres: PGDATA: /var/lib/postgresql /data/guacamole POSTGRES_DB: guacamole_db POSTGRES_PASSWORD: ‘ChangeThisPassword’ POSTGRES_USER: изображение guacamole_user: postgres:13 сети: guacnet: перезапуск: всегда тома: – ./init:/docker-entrypoint-initdb.d:ro – ./data:/ var/lib/postgresql/data:rw гуакамоле: имя_контейнера: гуак_гуакамоле зависит_он: – guacd – среда postgres: GUACD_HOSTNAME: guacd POSTGRES_DATABASE: guacamole_db POSTGRES_HOSTNAME: postgres POSTGRES_PASSWORD: ‘ChangeThisPassword’ POSTGRES_USER: образ guacamole_user: Ссылки на гуакамоле/гуакамоле: – сети guacd: guacnet: порты: – 8080:8080/перезапуск TCP: всегда
По завершении сохраните и закройте файл docker-compose.yml.
С помощью этого скрипта docker-compose.yml вы создадите 3 контейнера/сервиса следующим образом:
- guacd – основной компонент Apache Guacamole будет использоваться для проксирования многих протоколов, таких как SSH, RDP, VNC и т. д.
- postgres — серверная часть базы данных для вашей установки Apache Guacamole. Ваши данные будут храниться в этом контейнере.
- guacamole — веб-приложение Apache Guacamole, подключенное к службам PostgreSQL и guacd. Этот контейнер предоставит порт 8080 на вашем сервере.
Запустить Apache Гуакамоле
Прежде чем начать, убедитесь, что вы находитесь в каталоге проекта «guacamole-server». Затем выполните следующую команду docker compose, чтобы создать и начать развертывание Apache Guacamole.
докер составить -d
Вы получите такой вывод: созданы и запущены 3 разных контейнера guac_postgres, guac_guacd и guac_guacamole.
Проверьте список служб/контейнеров, работающих в вашем проекте Apache Guacamole, с помощью следующей команды.
докер составить PS
Если вы видите «СТАТУС» как «Вверх», значит, контейнер/служба запущена. В разделе «ПОРТЫ» вы увидите порты, отображаемые контейнером для хоста.
Контейнер «guac_guacamole» предоставляет TCP-порт 8080 как на контейнере, так и на узле Docker. Благодаря этому вы можете получить доступ к вашей установке Apache Guacamole.
Откройте веб-браузер и перейдите по IP-адресу сервера, затем к порту 8080 (т. е.: ). Вы увидите страницу входа в Apache Guacamole.
Войдите в систему, используя пользователя по умолчанию «guacadmin» и пароль «guacadmin». Затем нажмите «Войти» для подтверждения.
В случае успеха вы получите панель пользователя Apache Guacamole.
При этом убедитесь, что установка Apache Guacamole через Docker и Docker Compose завершена и прошла успешно. Однако в рамках этого руководства необходимо предпринять некоторые действия для обеспечения безопасности развертывания Apache Guacamole.
Кроме того, при устранении ошибок при развертывании Apache Guacamole вы можете проверить журналы для каждого контейнера с помощью приведенной ниже команды docker compose.
Базовое использование Docker Compose для проверки журналов.
Docker Compose Logs Docker Compose Logs СЕРВИС
Проверьте журналы для конкретных контейнеров/сервисов с помощью команды docker compose.
docker Compose logs гуакамоле docker Compose logs guacd docker Compose logs postgres
Установите веб-сервер Nginx
В этом руководстве вы запустите Apache Guacamole с обратным прокси-сервером Nginx. В этом разделе вы установите веб-сервер Nginx и инструмент Certbot для создания сертификатов SSL/TLS. Затем вы проверите службу Nginx, чтобы убедиться, что она включена и работает.
Запустите следующую команду apt, чтобы установить плагины Nginx, Certbot и Certbot Nginx. Введите y, когда будет предложено подтверждение, и нажмите ENTER, чтобы продолжить.
sudo apt установить certbot nginx python3-certbot-nginx
После установки Nginx и Certbot выполните следующую команду, чтобы проверить состояние службы Nginx. Это гарантирует, что служба Nginx включена и работает в вашей системе.
sudo systemctl включен nginx sudo systemctl status nginx
Выходные данные «включено» подтверждают, что служба Nginx включена и будет запускаться автоматически при загрузке системы. Выходные данные «активный (работает)» подтверждают, что служба Nginx запущена.
Настройте брандмауэр UFW
После установки Nginx вам нужно настроить брандмауэр UFW, который по умолчанию установлен в вашей системе Ubuntu. В этом разделе вы добавите службу OpenSSH для открытия порта 22 и службу Nginx Full для открытия портов HTTP и HTTPS на ufw. Затем вы запустите и включите ufw. Наконец, вы проверите статус брандмауэра ufw.
Введите следующую команду, чтобы добавить службы OpenSSH и Nginx Full в брандмауэр ufw. Вывод «Правила обновлены» подтверждают, что в ufw добавлены новые правила.
sudo ufw разрешить OpenSSH sudo ufw разрешить «Nginx Full»
Затем введите следующую команду, чтобы запустить и включить брандмауэр ufw. Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.
sudo ufw включить
Теперь вы получите вывод типа «Брандмауэр активен и включен при запуске системы», что означает, что брандмауэр ufw запущен, включен и запустится автоматически при запуске системы.
Проверьте состояние брандмауэра ufw, введя следующую команду.
статус sudo ufw
Вы получите статус брандмауэра ufw как «активный», а включенные службы «OpenSSH» откроют порт SSH 22, а служба «Nginx Full» откроет порты HTTP и HTTPS.
Настройте Nginx в качестве обратного прокси-сервера.
Чтобы защитить развертывание Apache Guacamole, вы будете использовать Nginx в качестве обратного прокси-сервера и включить на нем безопасные соединения HTTPS.
В этом разделе вы создадите новую блочную конфигурацию сервера Nginx, которая будет использоваться в качестве обратного прокси-сервера для Apache Guacamole, а затем создадите сертификат SSL/TLS через Certbot и Letsencrypt для защиты развертывания Apache Guacamole.
Создайте новую конфигурацию блока сервера Nginx «/etc/nginx/sites-available/guacamole.conf», используя следующую команду редактора nano.
sudo nano /etc/nginx/sites-available/guacamole.conf
Добавьте в файл следующие строки и обязательно измените имя домена в конфигурации ниже. При этом вы настроите Nginx в качестве обратного прокси-сервера для контейнера Apache Guacamole, который открыл порт 8080 на хосте Docker.
сервер {прослушать 80; имя_сервера guacamole.hwdomain.io; корень /вар/www/html; индекс index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; местоположение / { proxy_pass proxy_buffering выключен; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Обновление $http_upgrade; proxy_set_header Соединение $http_connection; proxy_cookie_path /гуакамоле/ /; } }
Сохраните и закройте файл по завершении.
Затем выполните приведенную ниже команду, чтобы включить файл блокировки сервера Nginx «/etc/nginx/sites-available/guacamole.conf». Затем проверьте конфигурацию Nginx, чтобы убедиться, что у вас правильные настройки.
sudo ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/ sudo nginx -t
В случае успеха вы получите результат типа «тест успешен – синтаксис в порядке».
Теперь запустите следующую командную утилиту systemctl, чтобы перезапустить службу Nginx и применить изменения.
sudo systemctl перезапустить nginx
Выход:
На этом этапе Apache Guacamole работает с Nginx в качестве обратного прокси-сервера с вашим доменным именем — в этом примере используется доменное имя «guacamole.hwdomain.io». Теперь, чтобы защитить развертывание Apache Guacamole, вам необходимо создать сертификат SSL/TLS с помощью Certbot и Letsencrypt.
Введите следующую команду certbot, чтобы создать новый сертификат SSL для вашего виртуального сервера Nginx. Обязательно измените данные домена и адреса электронной почты в следующей команде.
sudo certbot –nginx –agree-tos –redirect –hsts –staple-ocsp –email alice@hwdomain.io -d guacamole.hwdomain.io
После создания ваш SSL-сертификат будет доступен в каталоге /etc/letsencrypt/live/guacamole.hwdomain.io/. Кроме того, блок вашего сервера Nginx будет автоматически изменен при включении SSL и автоматически перенаправлен с HTTP на HTTPS.
Посетите Апач Гуакамоле
Откройте веб-браузер и посетите домен установки Apache Guacamole (например, ).
Войдите в систему, используя пользователя и пароль по умолчанию «guacadmin».
В случае успеха вы получите панель пользователя Apache Guacamole.
На этом этапе вы завершили установку Apache Guacamole через Docker и Docker Compose. Кроме того, вы настроили Nginx в качестве обратного прокси-сервера для Apache Guacamole и защитили его с помощью сертификата SSL/TLS от Letsencrypt.