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

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

• 6 min read • Серверы • Обновлено 19 Nov 2025
Установка Apache Guacamole на Ubuntu 18.04
Установка Apache Guacamole на Ubuntu 18.04

Иллюстрация: Apache Guacamole — веб‑доступ к удалённым рабочим столам

О чём эта статья

Эта статья описывает установку 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 с паролем/ключом.
  • Доступ к интернету для загрузки пакетов и исходников.

Быстрый план (мини‑методология)

  1. Обновить систему и установить зависимости. 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)

  1. Скачайте исходники Guacamole 1.1.0:
wget http://apachemirror.wuchna.com/guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
  1. Распакуйте архив:
tar -xvzf guacamole-server-1.1.0.tar.gz
  1. Перейдите в каталог и настройте сборку:
cd guacamole-server-1.1.0
./configure --with-init-dir=/etc/init.d

При успешной конфигурации вы увидите список обнаруженных библиотек и поддержку протоколов. Обратите внимание на статус freerdp и RDP: если RDP не поддерживается, нужно установить dev‑пакеты FreeRDP перед сборкой.

  1. Скомпилируйте и установите:
make
make install
ldconfig
  1. Включите и запустите сервис guacd:
systemctl enable guacd
systemctl start guacd
systemctl status guacd

Если сервис не запускается, проверьте /var/log/syslog и вывод systemctl status для диагностики.

5. Установка Guacamole Client (WAR)

  1. Скачайте бинарный файл клиентской части:
wget https://mirrors.estointernet.in/apache/guacamole/1.1.0/binary/guacamole-1.1.0.war
  1. Создайте каталог /etc/guacamole, переместите и переименуйте WAR:
mkdir /etc/guacamole
mv guacamole-1.1.0.war /etc/guacamole/guacamole.war
  1. Создайте символическую ссылку в webapps Tomcat-а:
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/
  1. Перезапустите 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 guacd

7. Доступ к веб‑интерфейсу

Откройте в браузере:

http://your-server-ip:8080/guacamole/

Введите логин и пароль, указанные в user-mapping.xml.

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

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

Список недавних подключений в Guacamole

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

Запрос пароля SSH в Guacamole

Успешный вход в сервер через 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, кратко)

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

  1. Проверить status Tomcat: systemctl status tomcat8.
  2. Проверить логи Tomcat /var/log/tomcat8/catalina.out.
  3. Проверить статус guacd: systemctl status guacd.
  4. Проверить доступность порта 4822 локально: ss -ltnp | grep 4822.
  5. Проверить nginx: nginx -t и /var/log/nginx/guac_error.log.
  6. При ошибках пересобрать 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 --> I

19. Заключение

Поздравляю — вы установили и настроили Apache Guacamole на Ubuntu 18.04 LTS. Для боевого использования рассмотрите миграцию от user-mapping.xml к JDBC/LDAP‑аутентификации, настройку HTTPS и регулярное обновление компонентов. Если нужна помощь с Docker‑развёртыванием или настройкой LDAP/SQL, можно расширить инструкцию под ваши требования.

Важно: перед публикацией сервиса в интернет выполните аудит безопасности и настройку резервного копирования /etc/guacamole.

Поделиться: 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 быстро