Обзор развертывания 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.