Обзор развертывания Apache Guacamole на сервере¶
Предварительные требования¶
Для успешного развертывания приложения требуется сервер с одной из следующих операционных систем:
-
Debian
-
Ubuntu (включая версии Focal и Lunar)
-
RHEL (Red Hat Enterprise Linux)
Необходимы права доступа пользователя root или учетной записи с правами sudo для выполнения команд установки и конфигурации.
Система должна иметь доступ к интернету для загрузки исходного кода и бинарных файлов с репозитория Apache.
Структура файлов и каталогов¶
Конечная конфигурация приложения размещается в следующих директориях:
-
/etc/guacamole/— основной каталог конфигурации Apache Guacamole. -
/etc/guacamole/guacd.conf— файл конфигурации демона Guacamole. -
/etc/guacamole/user-mapping.xml— файл маппинга пользователей. -
/etc/guacamole/extensions/— каталог для расширений. -
/etc/guacamole/lib/— каталог для библиотек. -
/var/lib/tomcat9/webapps/guacamole.war— файл веб-приложения Tomcat. -
/etc/default/tomcat9— файл переменных окружения для Tomcat. -
/root/nginx/— каталог для конфигурации прокси-сервера (при использовании Docker). -
/root/nginx/compose.yml— файл конфигурации Docker Compose. -
/home/user/— домашняя директория пользователя для графической сессии (при установке Xubuntu). -
/home/user/.xsession— файл сессии для Xrdp.
Процесс установки приложения¶
Установка выполняется путем компиляции серверной части из исходного кода и развертывания веб-интерфейса через Tomcat.
-
Устанавливаются необходимые системные библиотеки и утилиты. Для Debian/Ubuntu это пакеты:
gawk,curl,dnsutils,make,libcairo2-dev,libjpeg62-turbo-dev,libpng-dev,libtool-bin,uuid-dev,libavcodec-dev,libavformat-dev,libavutil-dev,libswscale-dev,freerdp2-dev,libpango1.0-dev,libssh2-1-dev,libtelnet-dev,libvncserver-dev,libwebsockets-dev,libpulse-dev,libssl-dev,libvorbis-dev,libwebp-dev. Для RHEL используются аналогичные пакеты с суффиксом-devel. -
Определяется актуальная версия Apache Guacamole через запрос к репозиторию.
-
Скачивается архив с исходным кодом
guacamole-server-<версия>.tar.gzв директорию/root/. -
Архив распаковывается, выполняется конфигурация сборки командой
./configure --with-init-dir=/etc/init.d. В зависимости от версии Ubuntu могут добавляться флаги--disable-dependency-tracking,--disable-guacencили переменнаяLDFLAGS="-lrt". -
Сборка и установка выполняются командами
makeиmake install. -
Устанавливается веб-сервер
tomcat9. -
Скачивается бинарный файл
guacamole-<версия>.warи размещается в/var/lib/tomcat9/webapps/guacamole.war. -
Создаются директории
/etc/guacamole/extensionsи/etc/guacamole/lib. -
В файл
/etc/default/tomcat9добавляется переменная окруженияGUACAMOLE_HOME=/etc/guacamole. -
Файл конфигурации
guacd.confкопируется в/etc/guacamole/. -
Обновляется кэш динамических библиотек командой
ldconfig. -
Генерируется хеш пароля для доступа и создается файл
/etc/guacamole/user-mapping.xml.
Контейнеры Docker и их запуск¶
Для обеспечения работы прокси-сервера и получения SSL-сертификатов используется Docker.
-
Устанавливается Docker Engine.
-
Создается директория
/root/nginx. -
Генерируется файл конфигурации
compose.ymlв директории/root/nginx. -
Запускаются контейнеры командой
docker compose up -dиз директории/root/nginx.
Конфигурация контейнеров включает:
-
Сервис
nginxна основе образаjonasal/nginx-certbot:latest. -
Режим сети
host. -
Монтирование тома
nginx_secretsв/etc/letsencrypt. -
Монтирование директории
/data/nginx/user_conf.dв/etc/nginx/user_conf.d. -
Переменная окружения
CERTBOT_EMAIL=hkadm@hostkey.com.
Прокси серверы¶
Прокси-сервер развертывается в контейнере Docker с использованием образа jonasal/nginx-certbot:latest.
Конфигурация включает:
-
Автоматическое получение и обновление SSL-сертификатов через Certbot.
-
Электронная почта для уведомлений:
hkadm@hostkey.com. -
Хранение секретов в внешнем томе
nginx_secrets. -
Пользовательские конфигурации Nginx размещаются в
/data/nginx/user_conf.d.
Настройки прав¶
Права доступа на файлы и директории устанавливаются следующим образом:
-
Директории
/etc/guacamole/extensionsи/etc/guacamole/lib: владелецroot, группаroot, права0750(на Debian/RHEL) или0755(на Ubuntu). -
Файл
/etc/guacamole/guacd.conf: владелецroot, группаroot, права0644(на Debian/RHEL) или0755(на Ubuntu). -
Файл
/etc/guacamole/user-mapping.xml: владелецroot, группаroot, права0750(на Debian/RHEL) или0755(на Ubuntu). -
Файл
/var/lib/tomcat9/webapps/guacamole.war: права0755. -
Файл
/usr/local/bin/start-xubuntu: владелецroot, группаroot, права0755. -
Файл
/home/user/.xsession: владелецuser, группаuser. -
Файл
/usr/lib/policykit-1/polkit-agent-helper-1: права5755.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через systemd.
Для запуска и включения автозагрузки демона Guacamole используется команда:
Для перезапуска веб-сервера Tomcat используется команда:
При установке графической среды Xubuntu и Xrdp:
-
Сервис
xrdpперезапускается и включается в автозагрузку: -
После установки графической среды может потребоваться перезагрузка сервера.
Для управления контейнерами прокси-сервера используется команда:
из директории/root/nginx.