Установка и настройка Apache Guacamole на Ubuntu 20.04
TL;DR
Guacamole — веб‑клиент для удалённого рабочего стола (VNC/RDP/SSH), который разворачивается на сервере и доступен в браузере без установки ПО на клиенте. В статье пошагово описана установка зависимостей, сборка guacd, развёртывание веб‑приложения в Tomcat, базовая конфигурация, настройка Nginx как обратного прокси и рекомендации по безопасности.
В двух предложениях: обновите сервер, установите зависимости, соберите guacamole-server, разверните guacamole.war в Tomcat, настройте /etc/guacamole и проброс через Nginx/SSL. Проверяйте службы guacd и tomcat9, настраивайте брандмауэр и HTTPS.

Введение
Guacamole — бесплатный проект Apache, реализующий HTML5‑интерфейс для удалённого доступа к рабочим столам и серверам по протоколам VNC, RDP и SSH. Серверная часть guacd управляет подключениями, а веб‑приложение (guacamole.war) разворачивается в контейнере сервлетов (Tomcat). Клиентский компьютер использует только браузер.
Кому полезно: сисадминам, инженерам поддержки и организациям, которым нужно централизованно управлять удалёнными машинами через веб.
Ключевые понятия (одно предложение):
- guacd — демон, который устанавливает и проксирует протоколы удалённого доступа;
- guacamole.war — Java‑веб‑приложение, предоставляющее HTML5‑интерфейс;
- GUACAMOLE_HOME — каталог конфигурации и расширений.
Основные предпосылки
- Сервер с Ubuntu 20.04 LTS, минимум 2 ГБ ОЗУ.
- Доступ root или sudo.
- Открытые порты: 4822 (guacd, локально), 8080 (Tomcat по умолчанию) и 80/443 при использовании Nginx.
Быстрый план работ
- Обновить систему и установить зависимости.
- Установить Tomcat9 и запустить сервис.
- Скачать и собрать guacamole-server, запустить guacd.
- Развернуть guacamole.war в Tomcat и настроить /etc/guacamole.
- Настроить Nginx как обратный прокси и при желании — HTTPS.
- Протестировать подключение и усилить безопасность.
Обновление системы
Обновите индекс пакетов и установите обновления:
sudo apt-get update -y
sudo apt-get upgrade -y
sudo rebootПосле перезагрузки убедитесь, что вы снова подключились к серверу.
Установка необходимых зависимостей
Для сборки guacamole-server из исходников нужны библиотеки для графики, аудио и сетевых протоколов. Установите набор пакетов:
sudo apt-get install make gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev -yЕсли сборка выдаёт ошибки о недостающих пакетах, обратите внимание на вывод ./configure и установите требуемые пакеты.
Установка Tomcat9
Tomcat нужен для развёртывания guacamole.war. Установите и запустите Tomcat:
sudo apt-get install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y
sudo systemctl start tomcat9
sudo systemctl enable tomcat9
sudo systemctl status tomcat9В выводе systemctl ожидается статус active (running). Если контейнер не стартует, проверьте логи:
sudo journalctl -u tomcat9 --no-pager
sudo tail -n 200 /var/log/tomcat9/catalina.outСборка и установка guacd (guacamole-server)
В официальных репозиториях Ubuntu пакет Guacamole обычно отсутствует — рекомендован путь сборки из исходников.
- Скачайте исходники (проверьте актуальную версию на сайте Apache):
wget https://downloads.apache.org/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В выводе ./configure проверьте, что ключевые зависимости помечены как yes (freerdp2, libssh2, libvncserver и т. п.). Если каких‑то модулей нет, установите соответствующие dev‑пакеты и повторите configure.
- Скомпилируйте и установите:
make
sudo make install
sudo ldconfig- Включите и запустите guacd:
sudo systemctl enable guacd
sudo systemctl start guacd
sudo systemctl status guacdПроверьте, что guacd слушает на 127.0.0.1:4822:
sudo ss -ltnp | grep 4822Развёртывание Guacamole клиентской части
Скачайте .war‑файл (в примере 1.1.0) и разместите его в каталоге конфигурации:
wget https://mirrors.estointernet.in/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war
sudo mkdir -p /etc/guacamole
sudo mv guacamole-1.1.0.war /etc/guacamole/guacamole.war
sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/После этого перезапустите службы для деплоя приложения:
sudo systemctl restart tomcat9
sudo systemctl restart guacdTomcat при развёртывании распакует war в webapps/guacamole. Логи развёртывания можно смотреть в /var/log/tomcat9.
Базовая конфигурация Guacamole
Создайте главный файл конфигурации и каталоги для расширений:
sudo nano /etc/guacamole/guacamole.propertiesПример содержимого:
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xmlСоздайте каталоги расширений и библиотек:
sudo mkdir -p /etc/guacamole/{extensions,lib}Добавьте переменную окружения для Tomcat, указывающую на GUACAMOLE_HOME:
echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat9
sudo systemctl restart tomcat9Создание простого файла user-mapping
Для быстрого старта можно настроить файл user-mapping.xml с жёстко прописанными пользователями и подключениями. Генерируйте MD5‑хеш пароля локально:
echo -n yoursecurepassword | openssl md5Создайте /etc/guacamole/user-mapping.xml и вставьте пример (замените IP и логины на свои):
ssh
192.168.10.50
22
root
rdp
192.168.10.51
3389
Сохраните и перезапустите сервисы:
sudo systemctl restart tomcat9
sudo systemctl restart guacdВажная заметка: user‑mapping удобен для тестирования, но для производства рекомендуется хранить учетные записи в базе данных (JDBC) или аутентифицировать через LDAP/Active Directory.
Доступ к веб‑интерфейсу
Откройте в браузере http://your-server-ip:8080/guacamole. На странице входа используйте учётные данные из user-mapping.xml.

После входа откроется панель управления со списком подключений:

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


Настройка Nginx как обратного прокси и включение HTTPS
Рекомендуется пробрасывать Guacamole через Nginx и обслуживать трафик по HTTPS.
- Установите Nginx:
sudo apt-get install nginx -y- Пример конфигурации виртуального хоста (редактируйте server_name и proxy_pass на свой IP/домен):
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://127.0.0.1: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/ /;
}
}- Включите сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx- Для HTTPS используйте certbot (Let’s Encrypt) и обновите конфигурацию на listen 443, добавьте ssl_certificate и ssl_certificate_key. После получения сертификата проверьте, что прокси работает через https://your-domain.
Важно: при использовании TLS убедитесь, что заголовки X‑Forwarded-* корректно передаются, а Tomcat знает о проксировании (если требуется, настройте RemoteIpValve в Tomcat).
Безопасность и эксплуатационные рекомендации
- Отключите прямой доступ Tomcat по 8080 в брандмауэре, если доступ идёт только через Nginx: sudo ufw deny 8080.
- Разрешите порты только по необходимости: 22 для SSH, 80/443 для внешних запросов, 4822 локально.
- Используйте HTTPS и современные шифры TLS (TLS 1.2/1.3).
- Для продакшена не используйте user‑mapping — подключайте Guacamole к базе данных (guacamole-auth-jdbc) или LDAP. Это даёт централизованное управление пользователями и аудит.
- Регулярно обновляйте Tomcat, Java и Guacamole, следите за CVE.
- Ограничьте доступ в Nginx по IP, если у вас фиксированные адреса операторов.
Пример базовой защиты UFW:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusАльтернативные способы аутентификации
- JDBC (MySQL/MariaDB/PostgreSQL) — хранение пользователей и соединений в БД; позволяет делегировать пароли и иметь GUI‑управление.
- LDAP/Active Directory — единая учётная запись и централизованный контроль доступа.
- SSO через OAuth/OpenID Connect — интеграция с корпоративными провайдерами.
Каждый подход имеет свои требования к расширениям (guacamole-auth-jdbc, guacamole-auth-ldap) и настройке расширений в /etc/guacamole/extensions.
Отладка и типовые ошибки
- guacd не запущен: systemctl status guacd -> запускайте и смотрите логи.
- Tomcat не разворачивает war: проверьте /var/log/tomcat9/catalina.out на ошибки контекста или отсутствующие JAR.
- 502/504 через Nginx: проверьте proxy_pass URL и доступность Tomcat на 127.0.0.1:8080/guacamole.
- Проблемы аутентификации: в режиме user-mapping следите за encoding (md5) и корректностью хеша.
Полезные команды для диагностики:
sudo systemctl status tomcat9 guacd nginx
sudo journalctl -u guacd --no-pager
sudo tail -n 200 /var/log/tomcat9/catalina.out
sudo ss -ltnp | egrep '8080|4822|80|443'Тесты и критерии приёмки
Критерии приёмки:
- Веб‑интерфейс доступен по HTTPS на заданном домене или IP;
- Вход с учётной записью из user-mapping или из БД возможен;
- Удалённое подключение к тестовому Ubuntu по SSH и к тестовому Windows по RDP устанавливается и работает обмен буфером обмена/файлами (при настроенном SFTP);
- Логи не содержат критических ошибок и службы guacd, tomcat9, nginx активны.
Минимальные тест‑кейсы:
- Зайти на https://your-server/guacamole — страница логина отображается.
- Ввести учётные данные — успешный вход.
- Открыть подключение SSH — выполнится логин в удалённую машину.
- Открыть подключение RDP — рабочий стол Windows отображается.
- Проверить, что SFTP (перенос файлов) работает в рамках соединения.
Контроль и план отката
- Перед внесением серьёзных изменений: снимите бэкап /etc/guacamole и текущей БД (если используется).
- Откат: вернуть файлы конфигурации и перезапустить службы:
sudo systemctl restart guacd tomcat9 nginx- В случае проблем с бэкапом WAR: удалите распакованный каталог в /var/lib/tomcat9/webapps/guacamole и повторно создайте симлинк на guacamole.war, затем перезапустите Tomcat.
Роли и чек‑листы
Администратор (развёртывание):
- Установить зависимости и собрать guacd.
- Настроить Tomcat и GUACAMOLE_HOME.
- Настроить Nginx/HTTPS и брандмауэр.
Оператор (эксплуатация):
- Добавлять/удалять подключения в user‑mapping или через GUI/DB.
- Проверять логи и обновлять пакеты.
Аудитор (безопасность):
- Проверять журналы входа и доступов, контролировать доступ из внешней сети.
- Проводить регулярные сканирования уязвимостей.
Модель принятия решений при выборе протокола
flowchart TD
A[Нужно подключиться к удалённой машине?] --> B{Какая ОС?}
B -->|Linux / Unix| C[SSH]
B -->|Windows| D{Есть RDP разрешён?}
D -->|Да| E[RDP]
D -->|Нет| F[VNC или проброс порта через SSH]
C --> G[Предпочтительно: SSH с ключём]
E --> H[Отключить NLA для теста, затем включить]
F --> I[Рассмотреть проброс через SSH для безопасности]Факты и советы
- Минимальные системные требования: 2 ГБ ОЗУ для небольших сред; при большом числе одновременных сессий увеличьте ресурсы сервера.
- Стандартные порты: guacd — 4822, Tomcat — 8080, обратный прокси — 80/443.
- Для продакшена: применяйте базы данных и централизованную аутентификацию.
Часто задаваемые вопросы
Q: На каком порту слушает guacd? A: По умолчанию guacd слушает на 4822 на localhost.
Q: Можно ли хранить пользователей в базе данных? A: Да, для этого используется расширение guacamole-auth-jdbc и соответствующая схема БД.
Заключение
Вы установили и настроили Apache Guacamole на Ubuntu 20.04: собрали guacd, развернули guacamole.war в Tomcat, настроили /etc/guacamole и настроили Nginx как обратный прокси. Для промышленной эксплуатации перенесите хранение пользователей в БД или LDAP, включите HTTPS и настройте мониторинг служб.
Краткое руководство действий: обновление → зависимости → сборка guacd → развертывание war → настройка GUACAMOLE_HOME → проксирование через Nginx/HTTPS → тестирование.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента