bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Налаштування Apache Guacamole

calendar_month Jun 20, 2026 schedule 21 хв. читання visibility 45 переглядів
Настройка Apache Guacamole на VPS: удаленный доступ к серверам и ПК через браузер
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Налаштування Apache Guacamole на VPS: віддалений доступ до серверів і ПК через браузер

TL;DR

У цьому посібнику ми покроково налаштуємо Apache Guacamole на віртуальному приватному сервері (VPS) під керуванням Ubuntu 24.04 LTS. Guacamole дозволить вам отримати безпечний віддалений доступ до ваших серверів, робочих станцій та інших пристроїв через протоколи RDP, VNC і SSH прямо з веб-браузера, без необхідності встановлювати десктопні клієнти.

  • Встановлення та налаштування всіх компонентів Guacamole (сервер, клієнт, база даних PostgreSQL).
  • Забезпечення безпеки за допомогою HTTPS через Caddy Server та базових налаштувань сервера.
  • Детальні інструкції з підготовки VPS, встановлення залежностей та розгортання програми.
  • Приклади конфігурацій для різних типів підключень та методів автентифікації.
  • Рекомендації щодо резервного копіювання та обслуговування системи для довгострокової стабільності.
  • Розділ усунення несправностей та часто задаваних питань для вирішення типових проблем.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Ми будемо налаштовувати Apache Guacamole – клієнтський шлюз без клієнта, який надає віддалений доступ до різних протоколів (RDP, VNC, SSH, Telnet) через стандартний веб-браузер, використовуючи HTML5. Це означає, що ви можете підключитися до ваших серверів та ПК з будь-якого місця, де є інтернет і веб-браузер, без необхідності встановлювати спеціалізоване програмне забезпечення на клієнтській машині.

У підсумку ви отримаєте єдину точку входу для керування всією вашою інфраструктурою. Замість того, щоб використовувати окремий SSH-клієнт для Linux-серверів, RDP-клієнт для Windows-машин та VNC-клієнт для графічних робочих станцій, ви зможете отримати доступ до всього цього через єдиний веб-інтерфейс Guacamole. Це значно спрощує керування, особливо для команд або при роботі з безліччю різних систем.

Існують альтернативи, такі як хмарні керовані рішення (наприклад, AWS Systems Manager Session Manager, Azure Bastion) або пропрієтарні VPN-рішення. Однак ці варіанти часто пов'язані з щомісячною платою, прив'язкою до конкретного провайдера або обмеженнями функціональності. Самостійне розміщення Guacamole на VPS дає повний контроль над даними, безпекою та конфігурацією. Це економічно вигідно в довгостроковій перспективі, особливо якщо у вас вже є VPS, і дозволяє інтегрувати його з вашою існуючою інфраструктурою автентифікації (наприклад, LDAP, Active Directory), чого не завжди пропонують хмарні сервіси.

Вибір self-hosted рішення на VPS також забезпечує більшу гнучкість. Ви можете налаштувати Guacamole саме так, як вам потрібно, додати свої власні розширення, інтегрувати його з іншими інструментами моніторингу або автоматизації. Для розробників, соло-фаундерів, гравців або криптоентузіастів, яким потрібен надійний і контрольований доступ до своїх ресурсів, Guacamole стає ідеальним рішенням, надаючи потужний інструмент без зайвих витрат і залежностей.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Вимоги до VPS для Apache Guacamole залежать від передбачуваного навантаження – кількості одночасних користувачів та інтенсивності використання (наприклад, передача великих обсягів даних через RDP/VNC). Однак для більшості сценаріїв, що включають 1-5 одночасних користувачів, вимоги досить скромні.

Мінімальні вимоги:

  • CPU: 2 ядра. Guacamole виконує транскодування протоколів у HTML5, що може бути досить ресурсомістким.
  • RAM: 2 ГБ. Цього буде достатньо для операційної системи, Java-сервлета (наприклад, Tomcat) та самого Guacamole.
  • Диск: 40 ГБ SSD. Для операційної системи, Guacamole, бази даних (PostgreSQL) та логів. SSD настійно рекомендується для продуктивності.
  • Мережа: 100 Мбіт/с. Для стабільної роботи віддалених підключень. Чим вище, тим краще, особливо для RDP з графічними інтерфейсами.

Конкретний VPS-план для завдання:

Для комфортної роботи та можливості масштабування в майбутньому, ми рекомендуємо наступний конфіг:

  • CPU: 2-4 ядра x86-64
  • RAM: 4 ГБ
  • Диск: 80 ГБ NVMe SSD (або швидкий SATA SSD)
  • Мережа: 1 Гбіт/с порт з необмеженим трафіком

Такої конфігурації буде достатньо для 5-10 одночасних користувачів, забезпечуючи плавну роботу навіть при інтенсивному використанні RDP. Можна взяти VPS із зазначеними характеристиками або розглянути аналогічні пропозиції від інших провайдерів.

Коли потрібен dedicated, а не VPS:

  • Ви плануєте обслуговувати понад 20-30 одночасних користувачів.
  • Вам необхідна максимальна продуктивність CPU для транскодування, оскільки VPS може мати "сусідські" обмеження.
  • Потрібна дуже висока пропускна здатність мережі та гарантовані ресурси, наприклад, для передачі потокового відео через VNC/RDP.
  • У вас суворі вимоги до безпеки та ізоляції, які VPS не може повністю задовольнити через віртуалізацію.

Для більшості індивідуальних користувачів або малих команд VPS буде більш ніж достатньо та економічно вигідніше.

Локація: на що впливає

  • Затримка (Latency): Чим ближче VPS до вас і до серверів/ПК, до яких ви підключаєтеся через Guacamole, тим нижчою буде затримка. Низька затримка критична для комфортної роботи з RDP та VNC.
  • Швидкість з'єднання: Близькість до цільових серверів також впливає на загальну швидкість з'єднання між Guacamole та кінцевими точками.
  • Законодавство: У деяких випадках можуть бути вимоги до зберігання даних або юрисдикції, під якою знаходиться сервер.

Ідеальний варіант – розмістити VPS Guacamole в тому ж географічному регіоні, що й більшість ваших цільових серверів або користувачів. Якщо ваші користувачі та сервери розподілені, вибирайте центральну локацію з хорошою зв'язністю.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перш ніж приступити до встановлення Apache Guacamole, необхідно виконати базове налаштування та посилення безпеки вашого нового VPS. Ми будемо використовувати Ubuntu Server 24.04 LTS.

1. Підключення по SSH та оновлення системи

Першим кроком завжди є підключення до сервера по SSH та оновлення всіх встановлених пакетів до актуальних версій. Це гарантує, що у вас є останні виправлення безпеки та стабільні версії ПЗ.


# Підключіться до вашого VPS по SSH (замініть user та your_vps_ip)
# ssh user@your_vps_ip

# Оновіть список пакетів
sudo apt update

# Оновіть всі встановлені пакети
sudo apt upgrade -y

# Встановіть деякі корисні утиліти, якщо вони ще не встановлені
sudo apt install -y curl wget git htop unzip

2. Створення нового користувача з правами sudo (якщо не зробили під час провізіонінгу)

Працювати під root-користувачем небезпечно. Створіть нового користувача та надайте йому права sudo.


# Створіть нового користувача (замініть youruser)
sudo adduser youruser

# Додайте нового користувача до групи sudo
sudo usermod -aG sudo youruser

# Переключіться на нового користувача
su - youruser

Подальші команди будуть виконуватися від імені цього нового користувача з використанням sudo.

3. Налаштування SSH-ключів для безпечного доступу

Доступ за паролем по SSH менш безпечний. Налаштуйте автентифікацію за SSH-ключами та відключіть доступ за паролем.


# На вашій локальній машині згенеруйте SSH-ключ (якщо ще немає)
# ssh-keygen -t rsa -b 4096

# Скопіюйте публічний ключ на VPS (замініть youruser та your_vps_ip)
# ssh-copy-id youruser@your_vps_ip

# Після успішного копіювання ключа, підключіться до VPS за новим користувачем
# ssh youruser@your_vps_ip

# На VPS: Відредагуйте конфігурацію SSH-сервера
sudo nano /etc/ssh/sshd_config

У файлі /etc/ssh/sshd_config знайдіть та змініть наступні рядки:


# Відключити вхід для root
PermitRootLogin no

# Відключити автентифікацію за паролем (після того, як переконаєтеся, що вхід за ключем працює!)
PasswordAuthentication no

Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X). Потім перезапустіть SSH-сервер:


# Перезапустіть SSH-сервер для застосування змін
sudo systemctl restart sshd

Обов'язково перевірте, чи можете ви увійти по SSH з використанням ключа, перш ніж закривати поточну сесію! Якщо щось піде не так, ви можете втратити доступ.

4. Налаштування файрволу UFW

Uncomplicated Firewall (UFW) – це простий у використанні інтерфейс для iptables. Налаштуємо його, щоб дозволити лише необхідні вхідні з'єднання.


# Встановіть UFW
sudo apt install -y ufw

# Дозвольте вхідні з'єднання по SSH (порт 22)
sudo ufw allow ssh

# Дозвольте вхідні з'єднання по HTTP (порт 80)
sudo ufw allow http

# Дозвольте вхідні з'єднання по HTTPS (порт 443)
sudo ufw allow https

# Увімкніть файрвол
sudo ufw enable

# Перевірте статус файрволу
sudo ufw status verbose

Вивід sudo ufw status verbose повинен показати, що SSH, HTTP та HTTPS дозволені.

5. Встановлення Fail2ban

Fail2ban захищає ваш сервер від атак методом перебору (brute-force) шляхом блокування IP-адрес, з яких надходять занадто часті невдалі спроби входу.


# Встановіть Fail2ban
sudo apt install -y fail2ban

# Увімкніть та запустіть сервіс Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Створіть локальну конфігурацію для SSH
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Відредагуйте jail.local, щоб увімкнути захист SSH та налаштувати параметри
sudo nano /etc/fail2ban/jail.local

У файлі /etc/fail2ban/jail.local знайдіть секцію [sshd] та переконайтеся, що вона увімкнена (enabled = true). Також можна налаштувати bantime (час блокування) та findtime (період для виявлення спроб) і maxretry (максимальна кількість спроб).


# Приклад налаштування в jail.local
[DEFAULT]
bantime = 1d       ; Час блокування (1 день)
findtime = 10m     ; Період для виявлення спроб (10 хвилин)
maxretry = 5       ; Максимальна кількість спроб до блокування

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Збережіть зміни та перезапустіть Fail2ban:


# Перезапустіть Fail2ban
sudo systemctl restart fail2ban

# Перевірте статус Fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd

Ваш сервер тепер базово захищений та готовий до встановлення Apache Guacamole.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Для встановлення Apache Guacamole нам знадобиться кілька компонентів: сервер Guacamole (guacd), веб-додаток Guacamole (guacamole-client.war), сервлет-контейнер (Tomcat), база даних (PostgreSQL) та веб-сервер/зворотний проксі (Caddy) для HTTPS. Ми будемо використовувати актуальні версії ПЗ станом на 2026 рік, орієнтуючись на останні LTS-релізи.

1. Встановлення залежностей Guacamole Server (guacd)

guacd – це демон, який обробляє комунікацію з віддаленими протоколами (RDP, VNC, SSH). Йому потрібні різні бібліотеки для підтримки цих протоколів.


# Оновіть список пакетів
sudo apt update

# Встановіть необхідні бібліотеки для guacd (актуально для Guacamole 1.5.x/1.6.x)
sudo apt install -y build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev \
    libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev \
    libvncserver-dev libtelnet-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

2. Компіляція та встановлення Guacamole Server (guacd)

Ми завантажимо вихідні коди guacd, скомпілюємо та встановимо його. У 2026 році очікуються версії 1.5.x або 1.6.x.


# Створіть тимчасову директорію для вихідних кодів
mkdir -p ~/guacamole-build
cd ~/guacamole-build

# Завантажте вихідні коди Guacamole Server (замініть 1.6.0 на актуальну стабільну версію на 2026 рік)
# Перевірити актуальну версію можна на https://guacamole.apache.org/download/
wget https://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.6.0/source/guacamole-server-1.6.0.tar.gz -O guacamole-server-1.6.0.tar.gz

# Розпакуйте архів
tar -xzf guacamole-server-1.6.0.tar.gz
cd guacamole-server-1.6.0

# Сконфігуруйте збірку з підтримкою всіх протоколів
# Перевірте вивід ./configure на наявність помилок або відсутніх залежностей
./configure --with-init-dir=/etc/init.d

# Скомпілюйте guacd
make

# Встановіть guacd
sudo make install

# Оновіть кеш динамічних бібліотек
sudo ldconfig

# Створіть користувача та групу для guacd
sudo groupadd --system guacd
sudo useradd --system --no-create-home -g guacd guacd

# Увімкніть та запустіть сервіс guacd
sudo systemctl enable guacd
sudo systemctl start guacd

# Перевірте статус guacd
sudo systemctl status guacd

3. Встановлення Java Development Kit (JDK) та Tomcat

Веб-додаток Guacamole написаний на Java і вимагає сервлет-контейнера, такого як Apache Tomcat. Ми будемо використовувати OpenJDK та Tomcat 10 (актуально для 2026 року).


# Встановіть OpenJDK (Java 17 або новіше)
sudo apt install -y openjdk-17-jdk

# Встановіть Apache Tomcat 10
sudo apt install -y tomcat10 tomcat10-admin

# Переконайтеся, що Tomcat запущений та увімкнений
sudo systemctl enable tomcat10
sudo systemctl start tomcat10

# Перевірте статус Tomcat
sudo systemctl status tomcat10

4. Встановлення PostgreSQL Database Server

Guacamole використовує базу даних для зберігання користувачів, налаштувань підключень та журналів. PostgreSQL – чудовий вибір.


# Встановіть PostgreSQL
sudo apt install -y postgresql postgresql-contrib

# Переключіться на користувача postgres для створення бази даних
sudo -i -u postgres

# Запустіть консоль PostgreSQL
psql

# Створіть базу даних для Guacamole
CREATE DATABASE guacamole_db;

# Створіть користувача для Guacamole з паролем (замініть 'your_db_password')
CREATE USER guacamole_user WITH PASSWORD 'your_db_password';

# Надайте користувачеві права на базу даних
GRANT ALL PRIVILEGES ON DATABASE guacamole_db TO guacamole_user;

# Вийдіть з консолі PostgreSQL
\q

# Вийдіть з користувача postgres
exit

5. Розгортання Guacamole Web Application (.war) та розширень

Завантажте веб-додаток Guacamole та розширення для автентифікації. Ми будемо використовувати автентифікацію за базою даних PostgreSQL.


# Створіть директорію для конфігурації Guacamole
sudo mkdir -p /etc/guacamole

# Створіть директорію для розширень Guacamole
sudo mkdir -p /etc/guacamole/extensions

# Створіть директорію для бібліотек Guacamole
sudo mkdir -p /etc/guacamole/lib

# Завантажте веб-додаток Guacamole (замініть 1.6.0 на актуальну стабільну версію)
wget https://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.6.0/binary/guacamole-1.6.0.war -O ~/guacamole-client.war

# Завантажте розширення для автентифікації через PostgreSQL
wget https://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.6.0/binary/guacamole-auth-jdbc-postgresql-1.6.0.jar -O /etc/guacamole/extensions/guacamole-auth-jdbc-postgresql-1.6.0.jar

# Скопіюйте WAR-файл у директорію веб-додатків Tomcat
sudo cp ~/guacamole-client.war /var/lib/tomcat10/webapps/guacamole.war

# Встановіть JDBC-драйвер для PostgreSQL
sudo apt install -y libpostgresql-jdbc-java

# Створіть символічне посилання на JDBC-драйвер у директорію Guacamole
sudo ln -s /usr/share/java/postgresql-jdbc.jar /etc/guacamole/lib/postgresql-jdbc.jar

# Встановіть права на директорії та файли Guacamole
sudo chown -R tomcat:tomcat /etc/guacamole
sudo chmod -R 755 /etc/guacamole

6. Ініціалізація схеми бази даних Guacamole

Guacamole вимагає певної схеми в базі даних PostgreSQL. Скрипти для її створення знаходяться в архіві з вихідними кодами guacamole-server.


# Перейдіть до директорії з вихідними кодами Guacamole Server
cd ~/guacamole-build/guacamole-server-1.6.0/extensions/guacamole-auth-jdbc-postgresql/schema/

# Виконайте скрипти створення схеми в PostgreSQL
# Замініть 'guacamole_user' та 'guacamole_db' на ваші дані
cat 002-create-schema.sql 003-create-admin-user.sql | sudo -u postgres psql guacamole_db

# Поверніться до домашньої директорії
cd ~

Цей крок створить необхідні таблиці та додасть користувача за замовчуванням guacadmin з паролем guacadmin. Обов'язково змініть цей пароль відразу після першого входу!

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Після встановлення всіх компонентів, необхідно їх правильно налаштувати. Це включає конфігурацію Guacamole для підключення до бази даних, налаштування Tomcat та встановлення зворотного проксі-сервера Caddy для забезпечення HTTPS.

1. Конфігурація Guacamole (guacamole.properties)

Основний файл конфігурації Guacamole – guacamole.properties. Він вказує Guacamole, як підключатися до бази даних та інших компонентів.


# Створіть або відредагуйте файл guacamole.properties
sudo nano /etc/guacamole/guacamole.properties

Додайте наступний вміст до файлу, замінивши your_db_password на ваш пароль від користувача PostgreSQL guacamole_user:


# Hostname and port of guacd
guacd-hostname: localhost
guacd-port: 4822

# PostgreSQL authentication
postgresql-hostname: localhost
postgresql-port: 5432
postgresql-database: guacamole_db
postgresql-username: guacamole_user
postgresql-password: your_db_password

Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X).

2. Налаштування Tomcat для використання Guacamole

Tomcat потрібно вказати, де шукати конфігурацію Guacamole. Це робиться шляхом створення файлу setenv.sh.


# Створіть директорію для налаштувань Tomcat
sudo mkdir -p /etc/tomcat10/conf/Catalina/localhost/

# Створіть файл setenv.sh для Tomcat
sudo nano /usr/share/tomcat10/bin/setenv.sh

Додайте наступний рядок до setenv.sh:


#!/bin/bash
export GUACAMOLE_HOME=/etc/guacamole

Збережіть зміни. Зробіть файл виконуваним та перезапустіть Tomcat:


# Зробіть файл setenv.sh виконуваним
sudo chmod +x /usr/share/tomcat10/bin/setenv.sh

# Перезапустіть Tomcat для застосування змін
sudo systemctl restart tomcat10

# Перевірте логи Tomcat на наявність помилок
sudo journalctl -u tomcat10 --since "5 minutes ago"

У логах Tomcat мають бути записи про завантаження Guacamole без критичних помилок.

3. Налаштування Caddy Server для HTTPS

Caddy – це сучасний веб-сервер з автоматичним HTTPS. Він ідеально підходить для Guacamole, оскільки автоматично отримує та продовжує SSL/TLS сертифікати через Let's Encrypt.


# Встановіть Caddy.
# Додайте репозиторій Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

# Оновіть список пакетів та встановіть Caddy
sudo apt update
sudo apt install -y caddy

Налаштуйте Caddyfile. Замініть guacamole.yourdomain.com на ваш реальний домен, який вказує на IP-адресу вашого VPS.


# Відредагуйте Caddyfile
sudo nano /etc/caddy/Caddyfile

Видаліть існуючий вміст та додайте наступне:


guacamole.yourdomain.com {
    reverse_proxy localhost:8080 {
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Включите сжатие Gzip для улучшения производительности
    encode gzip
}

Збережіть файл та перезапустіть Caddy:


# Перевірте конфігурацію Caddy
sudo caddy validate --config /etc/caddy/Caddyfile

# Перезапустіть Caddy
sudo systemctl reload caddy

# Переконайтеся, що Caddy запущений
sudo systemctl status caddy

Тепер ваш Apache Guacamole має бути доступний по HTTPS через https://guacamole.yourdomain.com.

4. Перевірка працездатності

Відкрийте веб-браузер та перейдіть за вашим доменним ім'ям (наприклад, https://guacamole.yourdomain.com). Ви маєте побачити сторінку входу в Guacamole.

Використовуйте облікові дані за замовчуванням: Username: guacadmin, Password: guacadmin. Негайно змініть цей пароль після першого входу!

Після входу ви можете додати нове підключення. Наприклад, для SSH:

  • Натисніть на "New Connection".
  • Виберіть "SSH" як протокол.
  • У полі "Hostname" вкажіть IP-адресу або домен вашого цільового SSH-сервера.
  • У полі "Port" вкажіть 22.
  • У полях "Username" та "Password" вкажіть облікові дані для SSH-доступу.
  • Збережіть підключення та спробуйте до нього підключитися.

Якщо ви зіткнулися з проблемами, перевірте логи Tomcat (sudo journalctl -u tomcat10), Caddy (sudo journalctl -u caddy) та Guacd (sudo journalctl -u guacd) на наявність помилок.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Регулярне резервне копіювання та обслуговування системи є критично важливими для стабільної та безпечної роботи Apache Guacamole. Втрата даних або неактуальне ПЗ можуть призвести до серйозних проблем.

1. Що резервувати

Для Guacamole необхідно регулярно резервувати наступні компоненти:

  • База даних PostgreSQL: Містить усіх користувачів, їхні налаштування, визначення підключень та журнали аудиту. Це найважливіший компонент.
  • Конфігураційні файли Guacamole:
    • /etc/guacamole/guacamole.properties
    • /etc/guacamole/extensions/ (усі JAR-файли розширень)
    • /etc/guacamole/lib/ (JDBC-драйвер)
  • Конфігурація Caddy: /etc/caddy/Caddyfile
  • Конфігурація Tomcat: /usr/share/tomcat10/bin/setenv.sh (і, можливо, інші кастомні налаштування)
  • SSH ключі: Якщо ви використовуєте їх для автентифікації Guacamole на цільових серверах (зберігаються в /etc/guacamole/keys/ або аналогічних місцях).

2. Простий скрипт авторезервування

Ми створимо простий скрипт, який виконуватиме резервне копіювання бази даних та конфігураційних файлів, а потім пакуватиме їх. Для зберігання можна використовувати зовнішнє S3-сумісне об'єктне сховище або окремий VPS.

Для резервного копіювання бази даних PostgreSQL ми використовуватимемо pg_dump. Для файлів – tar. Для надсилання на S3 можна використовувати s3cmd або awscli, але для простоти ми просто створимо архів.


# Створіть директорію для скриптів резервного копіювання
sudo mkdir -p /opt/backup_scripts
sudo chown youruser:youruser /opt/backup_scripts

# Створіть файл скрипта резервного копіювання
nano /opt/backup_scripts/guacamole_backup.sh

Додайте наступний вміст до файлу guacamole_backup.sh. Замініть your_db_password, guacamole_user та guacamole_db на ваші дані. Також вкажіть шлях до директорії, куди зберігатимуться резервні копії (наприклад, /var/backups/guacamole).


#!/bin/bash

# Переменные
BACKUP_DIR="/var/backups/guacamole"
DATE=$(date +%Y%m%d%H%M%S)
DB_NAME="guacamole_db"
DB_USER="guacamole_user"
DB_PASSWORD="your_db_password" # В продакшене используйте .pgpass или переменные окружения!

# Создайте директорию для бэкапов, если ее нет
mkdir -p "$BACKUP_DIR"

# 1. Бэкап базы данных PostgreSQL
echo "Dumping PostgreSQL database..."
PGPASSWORD="$DB_PASSWORD" pg_dump -U "$DB_USER" -h localhost "$DB_NAME" > "$BACKUP_DIR/guacamole_db_$DATE.sql"
if [ $? -eq 0 ]; then
    echo "PostgreSQL database backup successful: $BACKUP_DIR/guacamole_db_$DATE.sql"
else
    echo "ERROR: PostgreSQL database backup failed."
    exit 1
fi

# 2. Бэкап конфигурационных файлов Guacamole и Caddy
echo "Archiving configuration files..."
tar -czf "$BACKUP_DIR/guacamole_configs_$DATE.tar.gz" \
    /etc/guacamole \
    /etc/caddy/Caddyfile \
    /usr/share/tomcat10/bin/setenv.sh
if [ $? -eq 0 ]; then
    echo "Configuration files backup successful: $BACKUP_DIR/guacamole_configs_$DATE.tar.gz"
else
    echo "ERROR: Configuration files backup failed."
    exit 1
fi

# 3. Очистка старых бэкапов (оставляем последние 7 дней)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -type f -name ".sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name ".tar.gz" -mtime +7 -delete
echo "Backup process completed."

# ВАЖНО: Отправка бэкапов на внешнее хранилище
# Здесь вы можете добавить команды для отправки файлов на S3, удаленный FTP/SFTP,
# или использовать специализированные инструменты, такие как restic или borg.
# Пример для S3 с awscli (требует предварительной установки и настройки awscli):
# aws s3 cp "$BACKUP_DIR/guacamole_db_$DATE.sql" s3://your-s3-bucket/guacamole/
# aws s3 cp "$BACKUP_DIR/guacamole_configs_$DATE.tar.gz" s3://your-s3-bucket/guacamole/

Збережіть файл, зробіть його виконуваним і налаштуйте Cron для його регулярного запуску:


# Зробіть скрипт виконуваним
chmod +x /opt/backup_scripts/guacamole_backup.sh

# Створіть директорію для збереження резервних копій
sudo mkdir -p /var/backups/guacamole
sudo chown youruser:youruser /var/backups/guacamole

# Відкрийте crontab для поточного користувача
crontab -e

Додайте наступний рядок, щоб запускати резервне копіювання щодня о 03:00 ранку:


0 3   * /opt/backup_scripts/guacamole_backup.sh >> /var/log/guacamole_backup.log 2>&1

Збережіть та закрийте crontab. Тепер резервні копії створюватимуться автоматично.

3. Куди зберігати резервні копії

Вкрай важливо зберігати резервні копії на окремому від основного сервера ресурсі. Варіанти:

  • Зовнішнє S3-сумісне об'єктне сховище: Найбільш рекомендований варіант. Надійно, масштабовано та відносно недорого.
  • Окремий VPS: Можна налаштувати другий, невеликий VPS виключно для зберігання резервних копій з різних серверів.
  • NAS/Мережеве сховище: Якщо у вас є власне обладнання.
  • FTP/SFTP сервер: Простий, але менш надійний варіант, якщо не налаштовано шифрування та контроль цілісності.

Ніколи не зберігайте єдині копії резервних копій на тому ж сервері, який ви резервуєте!

4. Оновлення: rolling vs maintenance window

Регулярні оновлення ПЗ важливі для безпеки та отримання нових функцій. Підхід до оновлень залежить від критичності вашої системи.

  • Rolling updates (безперервні оновлення): Підходить для менш критичних систем або систем з високою доступністю, де є кластер і можна оновлювати вузли по черзі. Для одиночного VPS Guacamole це означає застосування оновлень, як тільки вони стають доступними.
  • Maintenance window (вікно обслуговування): Переважний підхід для більшості продакшн-систем, включаючи Guacamole на одному VPS. Виділяється певний час (наприклад, раз на місяць вночі), коли можна провести оновлення, протестувати їх та усунути можливі проблеми.

Рекомендований процес оновлення:

  1. Створіть повну резервну копію перед початком будь-яких оновлень.
  2. Оновіть систему:
    
    sudo apt update && sudo apt upgrade -y
    sudo apt autoremove -y
                
  3. Оновіть компоненти Guacamole (якщо доступні нові версії):
    • Завантажте нові версії guacamole-server (для guacd) та guacamole-client.war, а також розширень.
    • Зупиніть Tomcat та Guacd.
    • Замініть старі файли на нові.
    • Запустіть сервіси.
  4. Перевірте працездатність: Після кожного оновлення переконайтеся, що Guacamole працює коректно, і ви можете підключатися до різних цільових систем.

Завжди читайте changelog та інструкції з оновлення на офіційному сайті Apache Guacamole перед оновленням основних компонентів.

Вирішення проблем + FAQ

Тут зібрано типові проблеми, які можуть виникнути під час налаштування Apache Guacamole, та відповіді на поширені запитання.

Не можу підключитися до Guacamole за доменним ім'ям (помилка 502 Bad Gateway або Connection Refused)

Що перевірити:

  1. Переконайтеся, що ваш домен (наприклад, guacamole.yourdomain.com) правильно вказує на IP-адресу вашого VPS у DNS-записах.
  2. Перевірте, що Caddy Server запущено: sudo systemctl status caddy.
  3. Перевірте логи Caddy: sudo journalctl -u caddy --since "5 minutes ago". Шукайте помилки, пов'язані з прив'язкою до порту або проксіюванням.
  4. Переконайтеся, що Tomcat запущено і він слухає порт 8080: sudo systemctl status tomcat10 та sudo ss -tulpn | grep 8080.
  5. Перевірте, що файрвол UFW дозволяє вхідні з'єднання на порти 80 і 443: sudo ufw status verbose.
Як виправити: Виправте DNS-записи, перезапустіть Caddy або Tomcat, переконайтеся, що немає інших процесів, які займають порт 80/443 (для Caddy) або 8080 (для Tomcat), перевірте правила UFW.

Сторінка Guacamole завантажується, але не можу увійти (невірні облікові дані або помилка бази даних)

Що перевірити:

  1. Перевірте логи Tomcat: sudo journalctl -u tomcat10 --since "5 minutes ago". Шукайте помилки, пов'язані з підключенням до бази даних або автентифікацією.
  2. Переконайтеся, що PostgreSQL запущено: sudo systemctl status postgresql.
  3. Перевірте вміст /etc/guacamole/guacamole.properties. Переконайтеся, що postgresql-hostname, postgresql-port, postgresql-database, postgresql-username та postgresql-password вказані вірно.
  4. Переконайтеся, що користувач guacamole_user має права на базу даних guacamole_db.
  5. Спробуйте увійти з обліковими даними за замовчуванням guacadmin/guacadmin. Якщо працює, але ваш користувач ні, можливо, проблема зі створенням користувача або його правами.
Як виправити: Виправте одруківки в guacamole.properties, перезапустіть Tomcat, перевірте пароль користувача PostgreSQL, переконайтеся, що схема бази даних була правильно ініціалізована.

Не вдається підключитися до віддаленого сервера (RDP/VNC/SSH) через Guacamole

Що перевірити:

  1. Перевірте логи guacd: sudo journalctl -u guacd --since "5 minutes ago". Шукайте помилки, пов'язані з підключенням до віддаленого хосту або проблемами протоколу.
  2. Переконайтеся, що guacd запущено: sudo systemctl status guacd.
  3. Перевірте, що цільовий сервер доступний з вашого VPS (наприклад, ping target_ip, telnet target_ip ssh_port).
  4. Переконайтеся, що файрвол на цільовому сервері (і на вашому VPS, якщо він блокує вихідні) дозволяє вхідні з'єднання на відповідний порт (22 для SSH, 3389 для RDP, 5900 для VNC).
  5. Перевірте налаштування підключення у веб-інтерфейсі Guacamole (hostname, port, credentials).
Як виправити: Виправте налаштування файрволу, перевірте доступність цільового сервера, переконайтеся, що облікові дані для віддаленого сервера вірні, перезапустіть guacd.

Який VPS-конфіг мінімально підійде для Apache Guacamole?

Для одного-двох одночасних користувачів та неінтенсивного використання мінімально підійде VPS з 2 ядрами CPU, 2 ГБ оперативної пам'яті та 40 ГБ SSD-диска. Однак, якщо ви плануєте більш активне використання, особливо з RDP для графічних інтерфейсів або для кількох користувачів, настійно рекомендується конфігурація з 4 ядрами CPU, 4 ГБ RAM та 80 ГБ NVMe SSD. Це забезпечить значно кращу продуктивність та стабільність, запобігаючи затримкам та зависанням під час транскодування відеопотоків.

Що обрати — VPS чи dedicated для цього завдання?

Для більшості сценаріїв, включаючи використання Guacamole невеликою командою або індивідуальним користувачем, VPS є оптимальним вибором. Він пропонує достатню продуктивність за значно меншої вартості та більшої гнучкості в управлінні. Dedicated сервер стає необхідним, якщо ви очікуєте дуже високе навантаження (понад 20-30 одночасних користувачів), вимагаєте гарантованих фізичних ресурсів CPU та RAM, або якщо у вас є суворі регуляторні вимоги до повної ізоляції апаратного забезпечення. Для старту та масштабування в більшості випадків VPS буде найкращим рішенням, дозволяючи легко оновити тарифний план у міру зростання потреб.

Як скинути пароль адміністратора Guacamole?

Що перевірити: Якщо ви забули пароль guacadmin, ви можете скинути його, виконавши SQL-запит у базі даних PostgreSQL. Як виправити:


# Підключіться до PostgreSQL як користувач postgres
sudo -i -u postgres

# Підключіться до бази даних Guacamole
psql guacamole_db

# Оновіть пароль для користувача guacadmin (замініть 'new_strong_password')
# Пароль має бути хешований з SHA-256. У цьому прикладі ми скидаємо його на 'new_strong_password'
# і Guacamole автоматично хешує його при першому вході, якщо ви вкажете його як plaintext.
# Для безпечного скидання, краще згенерувати хеш:
# SELECT ENCODE(SHA256('new_strong_password'::bytea), 'hex');
# І потім використовувати його:
UPDATE guacamole_user SET password_hash = ENCODE(SHA256('new_strong_password'::bytea), 'hex'), password_salt = NULL WHERE username = 'guacadmin';

# Якщо ви хочете просто скинути його на 'guacadmin', щоб потім поміняти:
# UPDATE guacamole_user SET password_hash = 'C634887019799295598BB17F9A906F6F89304F7695D5D1426477546875931D80', password_salt = 'C634887019799295598BB17F9A906F6F89304F7695D5D1426477546875931D80' WHERE username = 'guacadmin';
# (це хеш для 'guacadmin' з сіллю 'guacadmin', який був за замовчуванням при ініціалізації)

# Вийдіть з psql
\q

# Вийдіть з користувача postgres
exit

# Перезапустіть Tomcat
sudo systemctl restart tomcat10

Після цього ви зможете увійти з новим паролем.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Ви успішно налаштували Apache Guacamole на вашому VPS, отримавши централізовану та безпечну точку доступу до вашої інфраструктури через будь-який веб-браузер. Це значно спрощує керування серверами та віддаленими робочими станціями, підвищуючи зручність та гнучкість вашої роботи. Тепер у вас є потужний інструмент для віддаленого адміністрування, який можна масштабувати та адаптувати під ваші потреби.

Ось кілька наступних кроків, які можна зробити для подальшого покращення вашої системи:

  • Інтеграція із зовнішньою автентифікацією: Розгляньте можливість інтеграції Guacamole з LDAP, Active Directory, RADIUS або SAML для централізованого керування користувачами, якщо у вас вже є така система.
  • Тонке налаштування дозволів: Створіть більш деталізовані групи користувачів та налаштуйте їхні права доступу до конкретних підключень, щоб забезпечити принцип найменших привілеїв.
  • Моніторинг та логування: Налаштуйте централізований моніторинг логів Guacamole та системних ресурсів VPS, щоб оперативно виявляти та усувати проблеми продуктивності чи безпеки.
  • Впровадження двофакторної автентифікації (2FA): Для підвищення безпеки розгляньте можливість додавання 2FA до вашого Guacamole, використовуючи TOTP або інші методи.

Поділитися цим записом:

налаштування apache guacamole на vps: віддалений доступ до серверів і пк через браузер
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.