Установка Apache Guacamole на Ubuntu 18.04 LTS

О чём эта статья
Эта статья описывает установку Guacamole 1.1.0 на Ubuntu 18.04: зависимости, сборку guacd из исходников, установку клиента (.war) для Tomcat, настройку guacamole.properties и user-mapping.xml, развертывание через Nginx и советы по безопасности и отладке.
В этой инструкции использованы следующие термины:
- Guacamole: веб‑шлюз для удалённого доступа (сервер + клиент).
- guacd: демонический прокси, реализующий RDP/VNC/SSH.
- Tomcat: Java‑контейнер, где разворачивается клиент guacamole.war.
Требования
- Сервер с Ubuntu 18.04 LTS.
- Доступ root или sudo с паролем/ключом.
- Доступ к интернету для загрузки пакетов и исходников.
Быстрый план (мини‑методология)
- Обновить систему и установить зависимости. 2. Установить Tomcat. 3. Скомпилировать и установить guacd. 4. Развернуть guacamole.war в Tomcat. 5. Настроить /etc/guacamole и user-mapping.xml. 6. Опционально — Nginx как обратный прокси и базовый hardening.
1. Подготовка системы
Обновите пакеты и перезагрузите систему, если нужно:
apt-get update -y
apt-get upgrade -yПосле обновления рекомендуется перезагрузить систему, чтобы применились обновления ядра и библиотек.
2. Установка зависимостей для сборки
Guacamole Server (guacd) в версии 1.1.0 будет собираться из исходников. Установите необходимые пакеты:
apt-get install gcc-6 g++-6 libossp-uuid-dev libavcodec-dev libpango1.0-dev libssh2-1-dev libcairo2-dev libjpeg-turbo8-dev libpng-dev libavutil-dev libswscale-dev libfreerdp-dev libvncserver-dev libssl-dev libvorbis-dev libwebp-dev -yЕсли какие‑то пакеты отсутствуют в репозиториях, проверьте доступность backports или установите эквивалентные версии (например, gcc текущей доступной версии).
3. Установка Tomcat
Tomcat нужен для раздачи Java‑клиента Guacamole (guacamole.war):
apt-get install tomcat8 tomcat8-admin tomcat8-common tomcat8-user -yПроверьте работу Tomcat: откройте http://your-server-ip:8080 и убедитесь, что страница по умолчанию доступна.
4. Сборка и установка Guacamole Server (guacd)
- Скачайте исходники Guacamole 1.1.0:
wget http://apachemirror.wuchna.com/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz- Распакуйте архив:
tar -xvzf guacamole-server-1.1.0.tar.gz- Перейдите в каталог и настройте сборку:
cd guacamole-server-1.1.0
./configure --with-init-dir=/etc/init.dПри успешной конфигурации вы увидите список обнаруженных библиотек и поддержку протоколов. Обратите внимание на статус freerdp и RDP: если RDP не поддерживается, нужно установить dev‑пакеты FreeRDP перед сборкой.
- Скомпилируйте и установите:
make
make install
ldconfig- Включите и запустите сервис guacd:
systemctl enable guacd
systemctl start guacd
systemctl status guacdЕсли сервис не запускается, проверьте /var/log/syslog и вывод systemctl status для диагностики.
5. Установка Guacamole Client (WAR)
- Скачайте бинарный файл клиентской части:
wget https://mirrors.estointernet.in/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war- Создайте каталог /etc/guacamole, переместите и переименуйте WAR:
mkdir /etc/guacamole
mv guacamole-1.1.0.war /etc/guacamole/guacamole.war- Создайте символическую ссылку в webapps Tomcat-а:
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/- Перезапустите Tomcat и guacd для развертывания приложения:
systemctl restart tomcat8
systemctl restart guacdПодождите несколько секунд и проверьте логи Tomcat (/var/log/tomcat8/catalina.out) на предмет ошибок развертывания.
6. Базовая конфигурация Guacamole
Создайте файл конфигурации guacamole.properties:
nano /etc/guacamole/guacamole.propertiesДобавьте:
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xmlСоздайте каталоги расширений и библиотек и укажите переменную окружения для Tomcat:
mkdir -p /etc/guacamole/{extensions,lib}
echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat8Создание пользователя через user-mapping.xml
Guacamole по умолчанию использует файл user-mapping.xml для аутентификации. Сгенерируйте MD5‑хэш пароля (пример):
echo -n yoursecurepassword | openssl md5Пример вывода:
(stdin)= 55b38b03e7587a45fd886977842ff9b8Создайте файл /etc/guacamole/user-mapping.xml:
nano /etc/guacamole/user-mapping.xmlПример содержимого (проверьте корректность XML — в исходнике был опечатка в теге port):
ssh
192.168.0.150
22
root
rdp
192.168.0.100
3389
Сохраните файл и перезапустите службы:
systemctl restart tomcat8
systemctl restart guacd7. Доступ к веб‑интерфейсу
Откройте в браузере:
http://your-server-ip:8080/guacamole/
Введите логин и пароль, указанные в user-mapping.xml.

После входа вы увидите список подключений:

При подключении по SSH Guacamole запросит пароль пользователя удалённой машины:


8. Nginx как обратный прокси (опционально)
Установка Nginx и конфигурация виртуального хоста для доступа по 80 порту:
apt-get install nginx -y
nano /etc/nginx/sites-available/guacamole.confДобавьте:
server {
listen 80;
server_name your-server-ip;
access_log /var/log/nginx/guac_access.log;
error_log /var/log/nginx/guac_error.log;
location / {
proxy_pass http://your-server-ip:8080/guacamole/;
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;
proxy_cookie_path /guacamole/ /;
}
}Активируйте сайт и проверьте конфигурацию:
ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxТеперь Guacamole доступен по http://your-server-ip.
Важно: для публичного доступа обязательно используйте HTTPS (See «Безопасность» ниже).
9. Отладка и часто встречающиеся ошибки
- Tomcat не разворачивает guacamole.war: проверьте /var/log/tomcat8/catalina.out, убедитесь, что GUACAMOLE_HOME указан и каталоги extensions/lib доступны.
- guacd не слушает 4822: проверьте, запущен ли процесс /usr/local/sbin/guacd и нет ли конфликтов портов.
- RDP не работает: проверьте, что на этапе ./configure обнаружена поддержка FreeRDP; при отсутствии — установите libfreerdp-dev и пересоберите.
- Ошибка в user-mapping.xml: XML должен быть валиден — используйте xmllint для проверки.
10. Безопасность и hardening (рекомендации)
- Используйте HTTPS перед открытием интерфейса Guacamole в публичном интернете. Настройка TLS описана ниже (пример с Certbot).
- Не храните пароли в открытом виде; user-mapping.xml поддерживает MD5 и SHA шифрование. Лучше использовать базу данных (JDBC) или LDAP для централизованной аутентификации.
- Ограничьте доступ к guacd портом на localhost (по умолчанию так и должно быть) и используйте firewall (ufw) для ограничения входящих подключений.
- Ограничьте доступ к Tomcat Manager и административным приложениям.
- Обновляйте Guacamole и OS‑пакеты регулярно.
Пример включения HTTPS с Let’s Encrypt (кратко):
apt-get install certbot python3-certbot-nginx -y
certbot --nginx -d your-domain.exampleПосле получения сертификата проверьте, что proxy_pass в конфигурации использует локальный http://localhost:8080/guacamole/ и что заголовки X-Forwarded-* корректно передаются.
11. Альтернативные подходы
- Docker: готовые образы guacamole/guacamole и guacamole/guacd позволяют избежать сборки из исходников и быстрее развернуть стек в контейнерах.
- Официальные расширения аутентификации: LDAP/SQL/Radius вместо user-mapping.xml для централизованного управления.
- Использовать nginx‑auth или внешний reverse proxy с аутентификацией для дополнительного уровня защиты.
12. Когда этот подход не подходит
- Если нужно масштабирование на десятки/сотни сеансов, предпочтительней использовать Docker/Kubernetes с балансировкой и SSO; локальная файловая аутентификация user-mapping.xml не подходит для больших команд.
- Если требуются записи сессий и централизованные логи — следует переключиться на JDBC‑аутентификацию и внешние хранилища.
13. Контрольный список для администратора (Role‑based checklist)
Для системного администратора перед вводом в эксплуатацию:
- Обновлена ОС и установлены все зависимости.
- guacd скомпилирован и работает (systemctl status guacd).
- guacamole.war развернут в Tomcat и страница доступна на /guacamole.
- user-mapping.xml валиден и тестовый пользователь может войти.
- Nginx настроен как обратный прокси (если используется).
- HTTPS настроен и сертификаты действительны.
- Ограничен доступ к 4822 и 8080 через firewall.
- Запланированы регулярные обновления и резервное копирование /etc/guacamole.
14. Критерии приёмки
- Веб‑интерфейс Guacamole доступен по HTTPS и открывается в браузере.
- По крайней мере одно подключение SSH и одно RDP успешно соединяются и работают.
- Аутентификация пользователей проходит через настроенный метод (user‑mapping/LDAP/SQL).
- Журналы не содержат критических ошибок при запуске сервисов.
15. Мини‑инцидентный план (Runbook, кратко)
Симптом: Пользователи не могут подключиться через веб‑интерфейс.
- Проверить status Tomcat: systemctl status tomcat8.
- Проверить логи Tomcat /var/log/tomcat8/catalina.out.
- Проверить статус guacd: systemctl status guacd.
- Проверить доступность порта 4822 локально: ss -ltnp | grep 4822.
- Проверить nginx: nginx -t и /var/log/nginx/guac_error.log.
- При ошибках пересобрать guacd с нужными библиотеками и перезапустить сервис.
16. Тесты / критерии приёмки
- Тест 1: Вход в Guacamole с учётной записью admin (из user-mapping.xml) — ожидается успешный вход.
- Тест 2: Подключение к SSH — ожидание: интерактивная сессия без ошибок.
- Тест 3: Подключение RDP — ожидание: рабочий стол отображается, клавиатура и мышь реагируют.
17. Краткий глоссарий (1 строка)
- guacd: фоновый демон Guacamole, выполняющий проксирование протоколов; guacamole.war: Java‑клиент, разворачиваемый в Tomcat.
18. Decision flow (Mermaid)
flowchart TD
A[Начало установки] --> B{Есть Docker?}
B -- Да --> C[Рассмотреть Docker образы guacamole]
B -- Нет --> D[Собрать guacd из исходников]
D --> E[Установить Tomcat и развернуть guacamole.war]
E --> F{Нужен публичный доступ?}
F -- Да --> G[Настроить Nginx + HTTPS]
F -- Нет --> H[Оставить доступ на 127.0.0.1 и локальную сеть]
G --> I[Завершено]
H --> I19. Заключение
Поздравляю — вы установили и настроили Apache Guacamole на Ubuntu 18.04 LTS. Для боевого использования рассмотрите миграцию от user-mapping.xml к JDBC/LDAP‑аутентификации, настройку HTTPS и регулярное обновление компонентов. Если нужна помощь с Docker‑развёртыванием или настройкой LDAP/SQL, можно расширить инструкцию под ваши требования.
Важно: перед публикацией сервиса в интернет выполните аудит безопасности и настройку резервного копирования /etc/guacamole.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента