RustDesk Server: свой сервер удалённого доступа с нуля

Ошибка «Не удаётся подключиться к серверу рандеву» в клиенте RustDesk чаще всего означает, что служба hbbs на вашем RustDesk Server не запущена, закрыт порт 21116 или в настройках клиента указан неверный адрес ID-сервера. Проверка начинается с команды systemctl status rustdesksignal (или статуса контейнера, если используется Docker) и просмотра открытых портов на сервере.

RustDesk — открытая альтернатива TeamViewer и AnyDesk, а её главная особенность — возможность поднять собственный сервер и полностью контролировать трафик удалённых сессий. Ниже разберём архитектуру, установку, настройку клиентов и типичные проблемы.

Из чего состоит RustDesk Server

Серверная часть RustDesk включает два отдельных процесса, и понимание их ролей сильно упрощает диагностику сбоев:

  • 🖥️ hbbs (RustDesk ID/Rendezvous server) — отвечает за регистрацию клиентов, сопоставление ID и попытку установить прямое P2P-соединение.
  • 🔁 hbbr (RustDesk Relay server) — ретранслирует трафик, когда прямое соединение между устройствами невозможно (например, оба клиента за симметричным NAT).
  • 🔐 Пара ключей шифрования — файл публичного ключа id_ed25519.pub нужен каждому клиенту для проверки подлинности сервера.
  • 🌐 Веб-клиент и консоль администрирования доступны в Pro-версии, для базовой работы они не обязательны.

Если клиенты «видят» друг друга (ID определяется, статус «Готов»), но сессия не устанавливается — проблема почти всегда на стороне hbbr или закрытого relay-порта. Если же клиент вообще не получает ID — смотрите в сторону hbbs.

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

Для работы RustDesk Server достаточно минимальной виртуальной машины: одно ядро CPU и небольшой объём оперативной памяти справляются с десятками одновременных клиентов, поскольку основной трафик идёт напрямую между устройствами. Критичнее другое — белый IP-адрес или корректная настройка DNS-имени, по которому клиенты смогут найти сервер.

На файрволе необходимо открыть стандартный набор портов. Точный перечень зависит от версии и сценария (TCP-only, веб-клиент), поэтому сверяйтесь с актуальной официальной документацией RustDesk; базовый набор выглядит так:

ПортПротоколНазначение
21115TCPПроверка типа NAT (hbbs)
21116TCP/UDPРегистрация ID и heartbeat (hbbs)
21117TCPRelay-соединения (hbbr)
21118TCPВеб-клиент для hbbs (опционально)
21119TCPВеб-клиент для hbbr (опционально)
⚠️ Внимание: если открыть только TCP 21116 и забыть про UDP, клиенты смогут зарегистрироваться, но P2P-соединения будут стабильно «падать» в медленный relay-режим либо не устанавливаться вовсе. Проверяйте оба протокола.

Установка RustDesk Server на Linux

Самый воспроизводимый способ — развёртывание через Docker с двумя контейнерами. Вам понадобятся установленные docker и docker compose. Пример базового compose-файла:

services:

hbbs:

image: rustdesk/rustdesk-server

command: hbbs -r your-domain-or-ip:21117

network_mode: host

volumes:

- ./data:/root

restart: unless-stopped

hbbr:

image: rustdesk/rustdesk-server

command: hbbr

network_mode: host

volumes:

- ./data:/root

restart: unless-stopped

Обратите внимание на параметр -r у hbbs: в нём указывается адрес relay-сервера, который сервер будет сообщать клиентам. Если оставить его пустым, клиенты могут не узнать, куда подключаться для relay, и соединения без прямого P2P перестанут работать.

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

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

Альтернатива — установка бинарных файлов напрямую и создание systemd-сервисов. Этот вариант даёт чуть больше контроля, но требует вручную следить за обновлениями. Независимо от способа, после первого запуска в рабочем каталоге появится пара ключей: id_ed25519 (приватный) и id_ed25519.pub (публичный).

⚠️ Внимание: приватный ключ id_ed25519 нельзя передавать третьим лицам и публиковать в репозиториях. Скомпрометированный ключ позволяет подменить ваш сервер и перехватывать попытки подключения клиентов.
📊 Как вы разворачиваете RustDesk Server?
Docker / Docker Compose
Бинарные файлы + systemd
Готовый скрипт установки
Только планирую переход на свой сервер

Подключение клиентов к своему серверу

На каждом клиенте откройте настройки: Настройки → Сеть → Разблокировать сетевые настройки и заполните поля. Вам нужно указать:

  • 🆔 ID-сервер — домен или IP, где работает hbbs (порт указывать не обязательно, если он стандартный).
  • 🔁 Relay-сервер — можно оставить пустым: hbbs сам сообщит адрес, заданный в параметре -r.
  • 🔑 Ключ (Key) — содержимое файла id_ed25519.pub целиком, одной строкой.
  • 🌐 API-сервер — нужен только для Pro-версии с консолью управления.

После сохранения внизу окна клиента должен появиться статус «Готов» (зелёная точка) — это подтверждение, что клиент зарегистрировался на вашем hbbs. Если статус остаётся «Подключение…», проверьте опечатки в адресе и доступность порта 21116 по TCP и UDP.

Типичные ошибки и их диагностика

Разберём сценарии, с которыми администраторы сталкиваются чаще всего. Действуйте от простого к сложному.

Клиент не получает ID. Проверьте, что процесс hbbs запущен, а порт 21116 слушается командой ss -tulnp | grep 21116. Затем с клиентской машины проверьте доступность порта внешним сканером или telnet адрес 21116. Если порт закрыт — смотрите правила файрвола (ufw, firewalld, security group облачного провайдера).

ID есть, но соединение не устанавливается. Возможная причина — недоступный relay. Убедитесь, что hbbr запущен, порт 21117 открыт, а параметр -r у hbbs содержит реально доступный снаружи адрес, а не внутренний IP контейнера. Также проверьте, не блокирует ли NAT на стороне одного из клиентов исходящие UDP-соединения.

Ошибка несовпадения ключа. Возникает, когда сервер переустановили, а клиенты продолжают использовать старый публичный ключ. Решение — раздать клиентам новое содержимое id_ed25519.pub или восстановить прежнюю пару ключей из резервной копии.

Как посмотреть логи сервера

При Docker-установке выполните docker logs имя_контейнера — там видны регистрации клиентов и ошибки привязки портов. При установке бинарниками логи пишутся в journalctl -u имя_сервиса или в файлы рядом с исполняемым файлом, в зависимости от способа запуска.

Безопасность и обслуживание

Собственный сервер — это не только контроль, но и ответственность. Минимальный набор мер:

  • 🔒 Храните резервную копию пары ключей id_ed25519 — её потеря означает перенастройку всех клиентов.
  • 🧱 Ограничьте доступ к серверу по SSH ключами и отключите вход по паролю.
  • 🔄 Регулярно обновляйте образы или бинарные файлы сервера — в обновлениях закрываются уязвимости и улучшается совместимость с клиентами.
  • 👥 Для организаций рассмотрите Pro-версию: она добавляет управление пользователями, группами устройств и журнал подключений.

Также имеет смысл настроить мониторинг доступности портов 21116/21117 — простая проверка раз в несколько минут позволит узнать о падении сервиса раньше, чем об этом сообщат пользователи.

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

Чем RustDesk Server отличается от публичных серверов RustDesk?

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

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

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

Работает ли RustDesk Server без белого IP?

Серверу нужен адрес, доступный клиентам из сети: белый IP, домен с пробросом портов или туннель. Если сервер находится за NAT без проброса портов, клиенты снаружи не смогут до него достучаться.

Клиент пишет «Готов», но подключение к удалённому ПК не устанавливается. Что проверить первым делом?

Сначала убедитесь, что второй клиент тоже в статусе «Готов» и подключён к тому же серверу. Затем проверьте доступность relay-порта 21117 и корректность параметра -r у hbbs — именно relay чаще всего оказывается причиной сбоя при невозможности прямого P2P.

Нужно ли указывать ключ на стороне сервера вручную?

Нет, пара ключей генерируется автоматически при первом запуске hbbs. Вручную нужно только скопировать содержимое публичного ключа id_ed25519.pub в настройки клиентов и обеспечить резервное копирование обоих файлов.