DevOps

Настройка RustDesk сервера для постоянного использования ретрансляции

Подробная инструкция по настройке RustDesk сервера для постоянного использования ретрансляции. Решение проблемы с ALWAYS_USE_RELAY=N и правильная конфигурация systemd сервиса.

5 ответов 5 просмотров

Как правильно настроить 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 предоставляет мощные возможности для самостоятельного размещения серверов, что особенно важно для организаций, требующих полного контроля над данными и повышенной безопасности. Когда речь идет о постоянном использовании ретрансляции (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, что является рекомендуемым способом, выполните следующие команды:

bash
# Установка 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 с установленной переменной окружения:

ini
# /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

Ключевые моменты этой конфигурации:

  1. Environment=ALWAYS_USE_RELAY=Y - переменная окружения указывается отдельно от ExecStart
  2. -r флаг добавляется в командную строку ExecStart
  3. Используются отдельные пользователь и группа (рекомендуется для безопасности)
  4. Указан WorkingDirectory для корректного расположения исполняемых файлов

После создания файла сервиса выполните:

bash
sudo systemctl daemon-reload
sudo systemctl restart hbbs
sudo systemctl enable hbbs

Чтобы проверить, что переменная установлена правильно, выполните:

bash
# Проверка статуса сервиса
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. Неправильное расположение переменной окружения

Неправильно:

ini
ExecStart=/opt/rustdesk-server/hbbs -r ALWAYS_USE_RELAY=Y

Правильно:

ini
Environment=ALWAYS_USE_RELAY=Y
ExecStart=/opt/rustdesk-server/hbbs -r

Переменные окружения в systemd должны указываться в отдельной директиве Environment, а не в командной строке.

2. Отсутствие перезагрузки systemd

После редактирования unit файла всегда выполняйте:

bash
sudo systemctl daemon-reload
sudo systemctl restart hbbs

3. Проблемы с правами доступа

Убедитесь, что пользователь, от которого запускается сервис, имеет права на чтение исполняемого файла:

bash
sudo chown -R rustdesk:rustdesk /opt/rustdesk-server
sudo chmod +x /opt/rustdesk-server/hbbs

4. Конфликт с Docker

Если вы используете Docker для запуска RustDesk сервера, переменные окружения должны указываться в docker-compose.yml файле:

yaml
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. Проверка активных переменных

Чтобы точно убедиться, что переменная установлена:

bash
# Показать все переменные окружения сервиса
sudo systemctl show hbbs -p Environment

# Вывод должен содержать: Environment=ALWAYS_USE_RELAY=Y

Если вы видите, что переменная установлена правильно, но hbbs все равно использует ‘N’, проверьте версию RustDesk сервера. В некоторых старых версиях мог быть баг с обработкой этой переменной.


Оптимизация производительности RustDesk сервера

После решения проблемы с ALWAYS_USE_RELAY=Y можно оптимизировать производительность вашего RustDesk сервера. Вот несколько рекомендаций:

1. Настройка ресурсов сервера

Определите оптимальные ресурсы для вашего сервера на основе ожидаемой нагрузки:

ini
# Пример оптимизированного 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. Мониторинг производительности

Используйте следующие команды для мониторинга производительности:

bash
# Мониторинг нагрузки на сервер
htop

# Мониторинг сетевой активности
nload -i eth0 -o eth0

# Просмотр логов RustDesk сервера
sudo journalctl -u hbbs -u hbbr -f

3. Оптимизация сети

Для лучшей производительности ретрансляции:

  • Используйте сервер с низким пингом между клиентами
  • Настройте QoS для трафика RustDesk
  • Рассмотрите использование нескольких серверов ретрансляции в разных географических locations

4. Обновление RustDesk

Регулярно обновляйте RustDesk до последних версий, так как разработчики постоянно улучшают производительность и исправляют баги:

bash
# Для установки через 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)

bash
# Установка 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):

cmd
# Установка hbbs как сервиса через NSSM
nssm install RustDesk hbbs "ALWAYS_USE_RELAY=Y" -r

# Запуск сервиса
net start RustDesk

# Проверка статуса
sc query RustDesk

3. Использование Docker Compose с переменными окружения

Как упоминалось ранее, в Docker Compose переменные окружения указываются в разделе environment:

yaml
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. Ручной запуск с переменными окружения

Для тестирования или быстрого запуска можно использовать ручной запуск с переменными окружения:

bash
# Для hbbs
ALWAYS_USE_RELAY=Y ./hbbs -r

# Для hbbr 
RUST_LOG=info ./hbbr

Источники

  1. RustDesk Team — Официальная платформа для удаленного доступа с возможностью самостоятельного размещения серверов: https://rustdesk.com

  2. RustDesk Team — RustDesk Server Program: репозиторий с исходным кодом и инструкциями по установке: https://github.com/rustdesk/rustdesk-server

  3. RustDesk Docs Team — Документация по самостоятельному размещению RustDesk сервера: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/

  4. 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 предоставляет мощные возможности для самостоятельного размещения серверов, что особенно важно для организаций, требующих полного контроля над данными. Следуя этим инструкциям, вы сможете правильно настроить сервер для постоянного использования ретрансляции и обеспечить стабильную работу вашего удаленного доступа.

R

RustDesk предлагает простой способ самостоятельного размещения серверов для безопасного удаленного доступа. Для установки через Docker выполните три простых шага: установите Docker, скачайте compose.yml файл и запустите docker compose up -d. Это обеспечит вам полный контроль над данными, повышенную безопасность и производительность. RustDesk поддерживает кастомизацию клиентского приложения с вашим брендом, а также предоставляет более 90 опций конфигурации для уникальных требований. Решение идеально подходит для организаций, нуждающихся в соответствии с требованиями нормативных органов и защите данных.

R

RustDesk Server состоит из трех основных компонентов: hbbs (ID/Rendezvous сервер), hbbr (relay сервер) и rustdesk-utils (CLI утилиты). Для сборки вручную используйте команду cargo build --release. После сборки в директории target/release будут созданы исполняемые файлы сервера. Проект является полностью открытым исходным кодом и бесплатным для использования. Для получения дополнительных функций доступна платная версия RustDesk Server Pro, а для разработки собственного сервера рекомендуется использовать репозиторий rustdesk-server-demo.

R

Документация RustDesk предоставляет подробные инструкции по самостоятельному размещению сервера. Для обсуждения вопросов самостоятельного размещения сервера рекомендуется присоединиться к Discord сообществу. Важно отметить, что если вы строите сервер дома или в офисе и не можете подключиться к нему через публичный IP/домен, следует проверить соответствующую статью документации. RustDesk поддерживает различные методы установки, включая Docker, Windows & PM2 или NSSM, а также Synology.

R

Для установки 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 М/с в зависимости от разрешения экрана.

Авторы
R
Разработка ПО
R
Техническая документация
Источники
RustDocs / Портал документации
Портал документации
GitHub / Хостинг кода
Хостинг кода
Проверено модерацией
НейроОтветы
Модерация
Настройка RustDesk сервера для постоянного использования ретрансляции