Настройка RustDesk сервера для постоянного использования ретрансляции
Подробная инструкция по настройке RustDesk сервера для постоянного использования ретрансляции. Решение проблемы с ALWAYS_USE_RELAY=N и правильная конфигурация systemd сервиса.
Как правильно настроить RustDesk сервер для постоянного использования relay (ALWAYS_USE_RELAY=Y)? Я поднял локальные серверы hbbs и hbbr, но в логах отображается ‘ALWAYS_USE_RELAY=N’ вместо ‘Y’. Какая правильная конфигурация systemd сервиса hbbs для установки этой переменной окружения? Пробовал заключать значение в кавычки и использовать флаг -r, но это не помогло.
Настройка RustDesk сервера для постоянного использования ретрансляции требует правильной конфигурации systemd сервиса с установкой переменной окружения ALWAYS_USE_RELAY=Y. Проблема с отображением ‘ALWAYS_USE_RELAY=N’ вместо ожидаемого ‘Y’ в логах указывает на ошибки в текущей конфигурации systemd сервиса hbbs, что требует корректного синтаксиса и расположения переменных окружения.
Содержание
- Настройка RustDesk сервера для постоянного использования ретрансляции
- Установка RustDesk сервера: hbbs и hbbr компоненты
- Конфигурация systemd сервиса для hbbs с ALWAYS_USE_RELAY
- Решение проблемы с отображением ALWAYS_USE_RELAY=N в логах
- Оптимизация производительности RustDesk сервера
- Альтернативные методы настройки RustDesk сервера
Настройка RustDesk сервера для постоянного использования ретрансляции
RustDesk предоставляет мощные возможности для самостоятельного размещения серверов, что особенно важно для организаций, требующих полного контроля над данными и повышенной безопасности. Когда речь идет о постоянном использовании ретрансляции (relay mode), переменная окружения ALWAYS_USE_RELAY=Y играет ключевую роль в работе удаленного соединения. Эта настройка заставляет hbbs сервер всегда использовать ретрансляцию вместо прямых подключений, что может быть необходимо в определенных сетевых конфигурациях или для обхода ограничений файрволов.
Ретрансляция в RustDesk работает через промежуточный hbbr сервер, который перенаправляет трафик между клиентами. Принудительное использование ретрансляции полезно в случаях, когда прямые соединения невозможны из-за сетевых ограничений, NAT или политик безопасности. Однако, как вы обнаружили, простого добавления флага -r или установки переменной в systemd сервисе может быть недостаточно для корректной работы.
Установка RustDesk сервера: hbbs и hbbr компоненты
Перед тем как настраивать постоянное использование ретрансляции, важно правильно установить и запустить оба основных компонента RustDesk сервера: hbbs (ID/Rendezvous сервер) и hbbr (relay сервер). RustDesk Server состоит из трех основных компонентов: hbbs, hbbr и rustdesk-utils (CLI утилиты).
Для установки через Docker, что является рекомендуемым способом, выполните следующие команды:
# Установка Docker (если еще не установлен)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Скачивание compose.yml файла для RustDesk сервера
curl -o compose.yml https://github.com/rustdesk/rustdesk-server/raw/master/docker-compose.yml
# Запуск сервера
docker compose up -d
Альтернативно, можно установить сервер как systemd службу, скачав последнюю версию с GitHub. Для Debian дистрибутивов также доступна установка через deb файлы. Требуемые порты для работы: 21114-21119/tcp и 21116/udp. Минимальные требования к оборудованию очень низкие - достаточно базового облачного сервера или Raspberry Pi.
Пропускная способность relay соединения составляет от 30 К/с до 3 М/с в зависимости от разрешения экрана и качества сети. Это важно учитывать при планировании нагрузки на ваш сервер ретрансляции.
Конфигурация systemd сервиса для hbbs с ALWAYS_USE_RELAY
Теперь перейдем к основной проблеме - правильной настройке systemd сервиса hbbs для установки переменной окружения ALWAYS_USE_RELAY=Y. Проблема в том, что простого добавления флага или неправильного синтаксиса в systemd unit файле недостаточно.
Вот правильная конфигурация systemd сервиса для hbbs с установленной переменной окружения:
# /etc/systemd/system/hbbs.service
[Unit]
Description=RustDesk hbbs Service
After=network.target
[Service]
Type=simple
User=rustdesk
Group=rustdesk
Restart=on-failure
RestartSec=5s
WorkingDirectory=/opt/rustdesk-server
Environment=ALWAYS_USE_RELAY=Y
ExecStart=/opt/rustdesk-server/hbbs -r
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Ключевые моменты этой конфигурации:
Environment=ALWAYS_USE_RELAY=Y- переменная окружения указывается отдельно от ExecStart-rфлаг добавляется в командную строку ExecStart- Используются отдельные пользователь и группа (рекомендуется для безопасности)
- Указан WorkingDirectory для корректного расположения исполняемых файлов
После создания файла сервиса выполните:
sudo systemctl daemon-reload
sudo systemctl restart hbbs
sudo systemctl enable hbbs
Чтобы проверить, что переменная установлена правильно, выполните:
# Проверка статуса сервиса
sudo systemctl status hbbs
# Просмотр логов сервиса в реальном времени
sudo journalctl -u hbbs -f
# Проверка активных переменных окружения
sudo systemctl show hbbs -p Environment
Решение проблемы с отображением ALWAYS_USE_RELAY=N в логах
Если после применения правильной конфигурации systemd сервиса вы все еще видите ‘ALWAYS_USE_RELAY=N’ в логах, возможны следующие причины и решения:
1. Неправильное расположение переменной окружения
Неправильно:
ExecStart=/opt/rustdesk-server/hbbs -r ALWAYS_USE_RELAY=Y
Правильно:
Environment=ALWAYS_USE_RELAY=Y
ExecStart=/opt/rustdesk-server/hbbs -r
Переменные окружения в systemd должны указываться в отдельной директиве Environment, а не в командной строке.
2. Отсутствие перезагрузки systemd
После редактирования unit файла всегда выполняйте:
sudo systemctl daemon-reload
sudo systemctl restart hbbs
3. Проблемы с правами доступа
Убедитесь, что пользователь, от которого запускается сервис, имеет права на чтение исполняемого файла:
sudo chown -R rustdesk:rustdesk /opt/rustdesk-server
sudo chmod +x /opt/rustdesk-server/hbbs
4. Конфликт с Docker
Если вы используете Docker для запуска RustDesk сервера, переменные окружения должны указываться в docker-compose.yml файле:
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
restart: unless-stopped
environment:
- ALWAYS_USE_RELAY=Y
ports:
- "21115:21115"
- "21116:21116/udp"
- "21118:21118"
volumes:
- ./data:/root/.rustdesk
5. Проверка активных переменных
Чтобы точно убедиться, что переменная установлена:
# Показать все переменные окружения сервиса
sudo systemctl show hbbs -p Environment
# Вывод должен содержать: Environment=ALWAYS_USE_RELAY=Y
Если вы видите, что переменная установлена правильно, но hbbs все равно использует ‘N’, проверьте версию RustDesk сервера. В некоторых старых версиях мог быть баг с обработкой этой переменной.
Оптимизация производительности RustDesk сервера
После решения проблемы с ALWAYS_USE_RELAY=Y можно оптимизировать производительность вашего RustDesk сервера. Вот несколько рекомендаций:
1. Настройка ресурсов сервера
Определите оптимальные ресурсы для вашего сервера на основе ожидаемой нагрузки:
# Пример оптимизированного systemd сервиса
[Unit]
Description=RustDesk hbbs Service
After=network.target
[Service]
Type=simple
User=rustdesk
Group=rustdesk
Restart=on-failure
RestartSec=5s
WorkingDirectory=/opt/rustdesk-server
Environment=ALWAYS_USE_RELAY=Y
Environment=RUST_LOG=info
Environment=RUST_BACKTRACE=1
LimitNOFILE=65536
ExecStart=/opt/rustdesk-server/hbbs -r
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
2. Мониторинг производительности
Используйте следующие команды для мониторинга производительности:
# Мониторинг нагрузки на сервер
htop
# Мониторинг сетевой активности
nload -i eth0 -o eth0
# Просмотр логов RustDesk сервера
sudo journalctl -u hbbs -u hbbr -f
3. Оптимизация сети
Для лучшей производительности ретрансляции:
- Используйте сервер с низким пингом между клиентами
- Настройте QoS для трафика RustDesk
- Рассмотрите использование нескольких серверов ретрансляции в разных географических locations
4. Обновление RustDesk
Регулярно обновляйте RustDesk до последних версий, так как разработчики постоянно улучшают производительность и исправляют баги:
# Для установки через GitHub
wget https://github.com/rustdesk/rustdesk-server/releases/latest/download/hbbs.zip
unzip hbbs.zip -d /opt/rustdesk-server/
sudo systemctl restart hbbs hbbr
Альтернативные методы настройки RustDesk сервера
Помимо systemd сервиса, существуют другие методы настройки RustDesk сервера для постоянного использования ретрансляции.
1. Использование PM2 (для Linux)
# Установка PM2
npm install pm2 -g
# Создание ecosystem.config.js
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'hbbs',
script: './hbbs',
args: '-r',
env: {
ALWAYS_USE_RELAY: 'Y'
},
exec_mode: 'fork',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
node_args: '--max-old-space-size=1024'
}]
};
EOF
# Запуск через PM2
pm2 start ecosystem.config.js
pm2 save
pm2 startup
2. Использование NSSM (для Windows)
Если вы используете Windows, можно настроить сервис через NSSM (Non-Sucking Service Manager):
# Установка hbbs как сервиса через NSSM
nssm install RustDesk hbbs "ALWAYS_USE_RELAY=Y" -r
# Запуск сервиса
net start RustDesk
# Проверка статуса
sc query RustDesk
3. Использование Docker Compose с переменными окружения
Как упоминалось ранее, в Docker Compose переменные окружения указываются в разделе environment:
version: '3.8'
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
restart: unless-stopped
environment:
- ALWAYS_USE_RELAY=Y
- RUST_LOG=info
ports:
- "21115:21115"
- "21116:21116/udp"
- "21118:21118"
volumes:
- ./hbbs-data:/root/.rustdesk
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
restart: unless-stopped
environment:
- RUST_LOG=info
ports:
- "21117:21117"
- "21119:21119"
volumes:
- ./hbbr-data:/root/.rustdesk
4. Ручной запуск с переменными окружения
Для тестирования или быстрого запуска можно использовать ручной запуск с переменными окружения:
# Для hbbs
ALWAYS_USE_RELAY=Y ./hbbs -r
# Для hbbr
RUST_LOG=info ./hbbr
Источники
-
RustDesk Team — Официальная платформа для удаленного доступа с возможностью самостоятельного размещения серверов: https://rustdesk.com
-
RustDesk Team — RustDesk Server Program: репозиторий с исходным кодом и инструкциями по установке: https://github.com/rustdesk/rustdesk-server
-
RustDesk Docs Team — Документация по самостоятельному размещению RustDesk сервера: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/
-
RustDesk Docs Team — Подробные инструкции по установке RustDesk сервера: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/
Заключение
Правильная настройка RustDesk сервера для постоянного использования ретрансляции требует внимания к деталям конфигурации systemd сервиса. Как вы убедились, проблема с отображением ‘ALWAYS_USE_RELAY=N’ вместо ‘Y’ решается правильным указанием переменной окружения в отдельной директиве Environment systemd unit файла, а не в командной строке.
Ключевые моменты успешной настройки:
- Используйте
Environment=ALWAYS_USE_RELAY=Yв конфигурации сервиса - Добавляйте флаг
-rв директивуExecStart - Не забывайте выполнять
systemctl daemon-reloadпосле изменений - Проверяйте установку переменных через
systemctl show hbbs -p Environment
RustDesk предоставляет мощные возможности для самостоятельного размещения серверов, что особенно важно для организаций, требующих полного контроля над данными. Следуя этим инструкциям, вы сможете правильно настроить сервер для постоянного использования ретрансляции и обеспечить стабильную работу вашего удаленного доступа.
RustDesk предлагает простой способ самостоятельного размещения серверов для безопасного удаленного доступа. Для установки через Docker выполните три простых шага: установите Docker, скачайте compose.yml файл и запустите docker compose up -d. Это обеспечит вам полный контроль над данными, повышенную безопасность и производительность. RustDesk поддерживает кастомизацию клиентского приложения с вашим брендом, а также предоставляет более 90 опций конфигурации для уникальных требований. Решение идеально подходит для организаций, нуждающихся в соответствии с требованиями нормативных органов и защите данных.
RustDesk Server состоит из трех основных компонентов: hbbs (ID/Rendezvous сервер), hbbr (relay сервер) и rustdesk-utils (CLI утилиты). Для сборки вручную используйте команду cargo build --release. После сборки в директории target/release будут созданы исполняемые файлы сервера. Проект является полностью открытым исходным кодом и бесплатным для использования. Для получения дополнительных функций доступна платная версия RustDesk Server Pro, а для разработки собственного сервера рекомендуется использовать репозиторий rustdesk-server-demo.
Документация RustDesk предоставляет подробные инструкции по самостоятельному размещению сервера. Для обсуждения вопросов самостоятельного размещения сервера рекомендуется присоединиться к Discord сообществу. Важно отметить, что если вы строите сервер дома или в офисе и не можете подключиться к нему через публичный IP/домен, следует проверить соответствующую статью документации. RustDesk поддерживает различные методы установки, включая Docker, Windows & PM2 или NSSM, а также Synology.
Для установки RustDesk сервера доступны три основных метода. Рекомендуемый способ - через Docker с использованием скрипта bash <(curl -sSL https://github.com/rustdesk/rustdesk-server/raw/master/install.sh). Альтернативно, можно установить сервер как systemd службу, скачав последнюю версию с GitHub. Для Debian дистрибутивов доступна установка через deb файлы. Требуемые порты для работы: 21114-21119/tcp и 21116/udp. Минимальные требования к оборудованию очень низкие - достаточно базового облачного сервера или Raspberry Pi. Пропускная способность relay соединения составляет от 30 К/с до 3 М/с в зависимости от разрешения экрана.

