Перейти к содержанию

Обзор развертывания Apache Guacamole + Xfce на сервере

Предварительные условия и основные требования

Для развертывания требуется сервер под управлением дистрибутивов на базе Debian (Ubuntu/Xubuntu) или RHEL. Должны быть соблюдены следующие системные требования:

Требование Спецификация
Привилегии Требуются права root or sudo для установки пакетов и управления сервисами
Домен hostkey.in
Внутренний порт 8080 (Tomcat)
Внешний порт 443 (HTTPS через Nginx/Certbot)

FQDN финальной панели в домене hostkey.in

Приложение доступно через поддомен по следующему шаблону: <prefix><Server ID>.hostkey.in

В соответствии с конфигурацией, путь для веб-интерфейса Guacamole установлен как /guacamole/.

Структура файлов и директорий

Система использует определенные директории для конфигурации, бинарных файлов и пользовательских данных:

Путь Описание
/etc/guacamole Основная директория конфигурации (Home)
/etc/guacamole/extensions Расширения Guacamole
/etc/guacamole/lib Библиотечные файлы Guacamole
/var/lib/tomcat9/webapps/ Папка развертывания веб-приложения Tomcat
/root/nginx Директория конфигурации Nginx и Docker Compose
/data/nginx/user_conf.d Пользовательские конфигурации Nginx

Процесс установки приложения

Приложение устанавливается путем компиляции Guacamole Server из исходного кода и развертывания файла Guacamole Client WAR через Tomcat 9.

  1. Guacamole Server: Последняя версия guacamole-server загружается из официального репозитория Apache, распаковывается в /root/, настраивается с параметром --with-init-dir=/etc/init.d, компилируется с помощью make и устанавливается в систему.

  2. Guacamole Client: Соответствующий .war файл загружается и развертывается в директорию webapps Tomcat 9 под именем guacamole.war.

  3. Tomcat 9: Выступает в роли контейнера сервлетов для приложения Guacamole.

Права доступа и безопасность

Безопасность обеспечивается на нескольких уровнях:

  • Firewall/Proxy: Контейнер Nginx с Certbot обеспечивает терминацию SSL (SSL termination) на порту 443.

  • Аутентификация пользователей: Аутентификация настроена через user-mapping.xml с использованием паролей в хеше MD5.

  • Системные пользователи: Для доступа к рабочему столу Xfce создается выделенный системный пользователь с именем user, входящий в группы user и ssl-cert (для XRDP).

  • Права сервисов: Директории /etc/guacamole защищены режимом прав 0750 или 0755.

Базы данных

Текущая реализация использует локальный конфигурационный файл для сопоставления пользователей:

  • Конфигурационный файл: /etc/guacamole/user-mapping.xml

  • Метод аутентификации: Хеширование паролей методом MD5 внутри XML-файла.

Docker-контейнеры и их развертывание

Для управления обратным прокси (reverse proxy) и жизненным циклом SSL-сертификатов используется Docker Compose с образом jonasal/nginx-certbot:latest.

Развертывание выполняется из директории /root/nginx:

docker compose up -d

Конфигурация контейнера:

  • Image: jonasal/nginx-certbot:latest

  • Network Mode: host

  • Volumes:

    • nginx_secrets:/etc/letsencrypt (Внешний volume для SSL-сертификатов)

    • /data/nginx/user_conf.d:/etc/nginx/user_conf.d

Прокси-серверы

Система использует контейнеризированный экземпляр Nginx, выступающий в роли обратного прокси для обеспечения поддержки HTTPS через Let's Encrypt.

  • Управление SSL: Выполняется с помощью Certbot, интегрированного в контейнер Nginx.

  • Пользовательские домены: Настраиваются через пользовательские файлы в /data/nginx/user_conf.d.

  • Email для Certbot: hkadm@hostkey.com

Настройки прав доступа

Применяются специфические права доступа для обеспечения стабильности и безопасности сервисов:

Файл/Директория Права Владелец/Группа
/etc/guacamole 0750 root:root
/etc/guacamole/extensions 0750 root:root
/etc/guacamole/lib 0750 root:root
/etc/guacamole/user-mapping.xml 0755 root:root
/var/lib/tomcat9/webapps/guacamole.war 0755 root:root

Доступные порты для подключения

Системные компоненты используют следующие порты:

  • 443 (TCP): Внешний доступ по HTTPS через Nginx.

  • 8080 (TCP): Внутренний сервисный порт Tomcat.

  • 3389 (TCP): Протокол RDP, используемый для подключений Guacamole к удаленным хостам.

Запуск, остановка и обновление

Управление сервисами осуществляется с помощью systemd.

Guacamole Server (guacd):

systemctl start guacd  # Запустить сервис
systemctl stop guacd   # Остановить сервис
systemctl enable guacd # Включить автозагрузку при старте системы

Tomcat 9:

systemctl restart tomcat9

Nginx Proxy (через Docker):

cd /root/nginx
docker compose up -d    # Запустить контейнеры в фоном режиме
docker compose down     # Остановить и удалить контейнеры

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×