RustDesk: настройка своего сервера ретрансляции

Запуск собственного сервера ретрансляции RustDesk начинается с двух исполняемых файлов — hbbs (сервер идентификаторов) и hbbr (сервер ретрансляции), которые нужно развернуть на машине с публичным IP-адресом. Без них клиенты RustDesk подключаются через публичные серверы проекта, что означает зависимость от их загрузки и передачу трафика через стороннюю инфраструктуру.

Собственный сервер решает три задачи: повышает скорость соединения за счёт близости к вашим устройствам, даёт полный контроль над трафиком удалённых сессий и позволяет ограничить доступ только своими ключами шифрования. Ниже разберём установку, настройку портов, подключение клиентов и типичные ошибки, из-за которых связка hbbs/hbbr не работает.

Что такое hbbs и hbbr и зачем нужны оба компонента

Архитектура самостоятельного сервера RustDesk состоит из двух процессов. hbbs отвечает за регистрацию устройств, выдачу ID и организацию прямого соединения (hole punching). hbbr включается в работу только тогда, когда прямое P2P-соединение установить не удалось — он ретранслирует трафик между клиентами через себя.

На практике значительная часть соединений устанавливается напрямую, и ретранслятор остаётся «запасным путём». Однако запускать hbbr всё равно необходимо: за строгими NAT и корпоративными файрволами прямое соединение часто невозможно, и без ретранслятора клиенты просто не увидят друг друга.

Оба процесса могут работать на одном сервере. Требования к железу скромные — подойдёт минимальный VPS с одним ядром и небольшим объёмом оперативной памяти, если число одновременных ретранслируемых сессий невелико.

Требования к серверу и открытие портов

Перед установкой убедитесь, что у сервера есть публичный статический IP-адрес (или доменное имя, указывающее на него). Сервер за NAT без проброса портов не сможет принимать подключения клиентов извне.

RustDesk использует фиксированный набор портов. Их необходимо открыть в файрволе сервера и, при наличии, в панели облачного провайдера:

  • 🔌 21115–21119 TCP — основные порты hbbs (регистрация, NAT type test, веб-консоль и API);
  • 📡 21116 UDP — обязательный порт для регистрации ID и пробития NAT;
  • 🔁 21117 TCP — порт ретрансляции hbbr;
  • 🌐 21118–21119 TCP — используются веб-клиентом RustDesk, если он вам нужен.

Пример открытия портов через ufw на Ubuntu:

sudo ufw allow 21115:21119/tcp

sudo ufw allow 21116/udp

sudo ufw reload

⚠️ Внимание: чаще всего самостоятельный сервер «не работает» именно из-за закрытого UDP 21116. Клиенты при этом пишут «не готов» или «не удаётся подключиться к серверу ретрансляции». Проверяйте UDP отдельно — многие открывают только TCP.

Установка сервера через Docker

Наиболее простой и воспроизводимый способ — официальные Docker-образы. Понадобятся установленные Docker и docker compose. Создайте файл docker-compose.yml примерно следующего содержания:

version: '3'

services:

hbbs:

image: rustdesk/rustdesk-server:latest

command: hbbs -r ваш_домен_или_IP:21117

network_mode: host

volumes:

- ./data:/root

restart: unless-stopped

hbbr:

image: rustdesk/rustdesk-server:latest

command: hbbr

network_mode: host

volumes:

- ./data:/root

restart: unless-stopped

Параметр -r у hbbs указывает адрес ретранслятора, который сервер будет сообщать клиентам. Если hbbr работает на той же машине, достаточно указать её внешний адрес. Ключ network_mode: host упрощает работу с портами — контейнер использует сеть хоста напрямую.

Запуск выполняется одной командой:

docker compose up -d

☑️ Проверка после запуска контейнеров

Выполнено: 0 / 5

Установка без Docker (нативный запуск)

Если Docker нежелателен, бинарные файлы сервера доступны на странице релизов проекта RustDesk на GitHub. Скачайте архив под свою ОС, распакуйте и запустите оба процесса. Для автозапуска на Linux удобно оформить их как службы systemd:

./hbbs -r ваш_домен_или_IP

./hbbr

Для Windows-сервера существуют сборки hbbs/hbbr, а также возможность запуска через NSSM в качестве службы. Учтите, что на Windows точные имена параметров и поведение могут отличаться в зависимости от версии — сверяйтесь с документацией конкретного релиза.

Ключ шифрования и принудительная авторизация

При первом запуске hbbs генерирует пару ключей в рабочей директории: приватный id_ed25519 и публичный id_ed25519.pub. Содержимое публичного ключа нужно указать в настройках клиентов — тогда трафик будет шифроваться с проверкой вашего сервера.

Чтобы запретить использование сервера чужими клиентами, запустите hbbs с параметром -k _ (или укажите конкретный ключ). В этом режиме сервер принимает только подключения, где указан правильный ключ. Это главная мера защиты самостоятельного сервера от посторонних — без ключа ваш ретранслятор сможет использовать любой желающий.

⚠️ Внимание: файл id_ed25519 (приватный ключ) никому не передавайте и не удаляйте. При его потере придётся перегенерировать ключи и заново прописывать новый публичный ключ на всех клиентах.
📊 Как вы разворачиваете сервер RustDesk?
Docker Compose
Нативные бинарники на Linux
Windows-сервер
Только изучаю вопрос

Настройка клиентов RustDesk

После запуска сервера каждый клиент нужно переключить с публичной инфраструктуры на вашу. Откройте в RustDesk: Настройки → Сеть → Разблокировать настройки сети → ID-сервер/Ретранслятор. Заполните поля:

  • 🖥️ ID-сервер — адрес или домен вашего сервера (порт указывать не обязательно, используются стандартные);
  • 🔁 Сервер ретрансляции — можно оставить пустым, если вы задали параметр -r у hbbs;
  • 🔑 Ключ — содержимое файла id_ed25519.pub целиком, одной строкой;
  • 🌍 API-сервер — нужен только для Pro-версии, для open-source оставьте пустым.

После применения настроек в нижней части окна клиента должна появиться надпись «Готов» — это означает успешную регистрацию на вашем hbbs. Если статус «Не готов», проверяйте доступность портов и корректность ключа.

Массовое развёртывание настроек

В Pro-версии есть генератор клиентов с предустановленным сервером. В open-source версии конфигурацию можно переносить через файл настроек RustDesk (RustDesk2.toml в служебной папке программы) — скопируйте его на другие машины после настройки эталонного клиента. Путь к файлу зависит от ОС, уточните его для вашей версии.

Проверка работы и типичные ошибки

Диагностику удобно начинать со стороны сервера. Команда docker compose logs -f покажет регистрации клиентов в реальном времени. Если при подключении клиента в логах hbbs ничего не происходит — трафик до сервера не доходит, и проблема в сети или файрволе.

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

nc -zv ваш_сервер 21116

nc -zvu ваш_сервер 21116

СимптомВероятная причинаЧто проверить
Статус «Не готов»Недоступен hbbsUDP 21116, адрес ID-сервера
«Ошибка подключения к ретранслятору»Закрыт порт hbbrTCP 21117, параметр -r у hbbs
Соединение рвётся или не устанавливается с ключомНеверный ключ на клиентеСовпадение ключа с id_ed25519.pub
Медленная передача изображенияТрафик идёт через ретранслятор вместо P2PUDP-доступность обеих сторон, тип NAT
Сервером пользуются посторонниеЗапуск без параметра -kПерезапуск hbbs с обязательным ключом
⚠️ Внимание: если клиенты находятся за симметричным NAT (часто встречается у мобильных операторов и в корпоративных сетях), прямое соединение может быть невозможно в принципе, и весь трафик пойдёт через hbbr. Учитывайте это при оценке пропускной способности канала сервера.

Часто задаваемые вопросы

Можно ли запустить hbbs и hbbr на одном сервере?

Да, это стандартная схема. Оба процесса используют разные порты и не конфликтуют. Главное — указать hbbs адрес ретранслятора через параметр -r, чтобы клиенты знали, куда подключаться при невозможности прямого соединения.

Нужен ли домен или достаточно IP-адреса?

Достаточно статического публичного IP — клиенты принимают адрес в любом виде. Домен удобнее тем, что при смене сервера не придётся перенастраивать всех клиентов, достаточно обновить DNS-запись.

Будет ли шифроваться трафик через мой сервер?

Да, если на клиентах указан публичный ключ сервера. Соединение между клиентами шифруется сквозным образом, и ретранслятор передаёт уже зашифрованный поток. Без указания ключа защита соединения ослабляется, поэтому ключ рекомендуется настраивать всегда.

Сколько клиентов выдержит минимальный VPS?

Точные цифры зависят от числа одновременных ретранслируемых сессий и качества канала. Сами по себе регистрации ID почти не нагружают сервер; основная нагрузка — ретрансляция видеопотока. Для небольшого парка устройств обычно хватает базового тарифа VPS, но при активной работе через ретранслятор следите за лимитами трафика провайдера.

Чем self-hosted сервер отличается от RustDesk Pro?

Pro-версия добавляет веб-консоль управления, адресную книгу, управление пользователями и генератор настроенных клиентов. Открытая версия hbbs/hbbr даёт базовую функционность — регистрацию и ретрансляцию — без централизованного управления. Для личного использования и небольших команд открытой версии обычно достаточно.