Гид по технологиям

Установка и настройка Apache Guacamole на Ubuntu 20.04

• 7 min read • DevOps • Обновлено 20 Nov 2025
Guacamole на Ubuntu 20.04 — установка и настройка
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: браузер → Nginx → Tomcat → guacd

Введение

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.

Быстрый план работ

  1. Обновить систему и установить зависимости.
  2. Установить Tomcat9 и запустить сервис.
  3. Скачать и собрать guacamole-server, запустить guacd.
  4. Развернуть guacamole.war в Tomcat и настроить /etc/guacamole.
  5. Настроить Nginx как обратный прокси и при желании — HTTPS.
  6. Протестировать подключение и усилить безопасность.

Обновление системы

Обновите индекс пакетов и установите обновления:

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 обычно отсутствует — рекомендован путь сборки из исходников.

  1. Скачайте исходники (проверьте актуальную версию на сайте Apache):
wget https://downloads.apache.org/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
  1. Распакуйте и перейдите в каталог:
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.

  1. Скомпилируйте и установите:
make
sudo make install
sudo ldconfig
  1. Включите и запустите 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 guacd

Tomcat при развёртывании распакует 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.

Страница входа Guacamole

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

Панель управления Guacamole

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

Подключение к удалённому серверу через Guacamole (SSH)

Терминал удалённого сервера через Guacamole

Настройка Nginx как обратного прокси и включение HTTPS

Рекомендуется пробрасывать Guacamole через Nginx и обслуживать трафик по HTTPS.

  1. Установите Nginx:
sudo apt-get install nginx -y
  1. Пример конфигурации виртуального хоста (редактируйте 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/ /;
    }
}
  1. Включите сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
  1. Для 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 активны.

Минимальные тест‑кейсы:

  1. Зайти на https://your-server/guacamole — страница логина отображается.
  2. Ввести учётные данные — успешный вход.
  3. Открыть подключение SSH — выполнится логин в удалённую машину.
  4. Открыть подключение RDP — рабочий стол Windows отображается.
  5. Проверить, что 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 → тестирование.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро