MAATRIX / Блог / RustDesk на Ubuntu 24.04: пошаговая установка

RustDesk на Ubuntu 24.04: пошаговая установка

MAATRIX

TeamViewer и AnyDesk в 2026 году всё чаще упираются в лимиты бесплатного тарифа, блокировки по "коммерческому использованию" и просто в недоступность из некоторых сетей. RustDesk решает эту проблему радикально: вы поднимаете собственный сервер, трафик идёт через вашу инфраструктуру, и никто не решает за вас, сколько минут в день вам можно удалённо подключаться к своим же машинам. Ниже — рабочая установка сервера RustDesk на чистой Ubuntu 24.04, без магии и с объяснением каждого порта.

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →

Как устроен сервер RustDesk

RustDesk-сервер — это не один процесс, а связка из двух:

  • hbbs (ID/rendezvous server) — регистрирует клиентов по их ID, обрабатывает heartbeat, пробует NAT type test и организует прямое P2P-соединение (hole punching), если это возможно.
  • hbbr (relay server) — подхватывает трафик, когда прямое соединение не получилось (оба клиента за симметричным NAT, строгий корпоративный файрвол и т.п.), и просто ретранслирует зашифрованный поток между сторонами.

При первом запуске hbbs генерирует пару ключей Ed25519 в рабочей директории — приватный id_ed25519 остаётся на сервере, публичный id_ed25519.pub вы прописываете в настройках клиентов. Это и есть тот самый механизм, который не даёт постороннему человеку воспользоваться вашим relay-сервером: без правильного публичного ключа клиент попросту не подключится.

Весь трафик между клиентами RustDesk шифруется end-to-end (даже когда идёт через relay), поэтому сервер физически не видит содержимое экрана — только зашифрованные пакеты. Это отличает self-hosted RustDesk от типичного "облачного" удалённого доступа, где вы просто доверяете вендору.

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

Для домашнего или командного использования (до пары десятков одновременных сессий) хватает скромной конфигурации:

ПараметрМинимумКомфортно
CPU1 vCPU2 vCPU
RAM512 МБ1-2 ГБ
Диск10 ГБ SSD20 ГБ SSD
Канал100 Мбит/с1 Гбит/с (если relay активно используется)
ОСUbuntu 24.04 LTSUbuntu 24.04 LTS

Ключевое требование — не мощность, а белый статический IP и открытые наружу порты. Если сервер будет обслуживать сессии, где хотя бы один участник за агрессивным NAT (корпоративная сеть, мобильный оператор), relay будет гонять через себя весь видеопоток экрана — тут уже важен канал и, желательно, локация ближе к вашим пользователям.

Заранее решите, нужен ли вам домен. Работать можно и по голому IP, но домен упрощает смену сервера в будущем (просто меняете A-запись) и нужен, если вы захотите добавить TLS для веб-клиента.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка hbbs и hbbr

Официальные бинарники публикуются в GitHub-релизах проекта rustdesk-server-server и собраны под amd64/arm64 без внешних зависимостей — это статически слинкованный Rust-бинарник, apt-пакетов в стандартных репозиториях Ubuntu для него нет.

Создаём отдельного пользователя и рабочую директорию — не стоит гонять сетевой сервис от root:

sudo apt update && sudo apt install -y unzip curl
sudo useradd -r -m -d /opt/rustdesk -s /usr/sbin/nologin rustdesk
sudo mkdir -p /opt/rustdesk
cd /opt/rustdesk

Скачиваем актуальный релиз (проверьте версию на странице релизов проекта и подставьте её вместо X.Y.Z, либо возьмите последнюю доступную ссылку latest):

sudo curl -L -o rustdesk-server.zip \
  https://github.com/rustdesk/rustdesk-server/releases/latest/download/rustdesk-server-linux-amd64.zip
sudo unzip rustdesk-server.zip
sudo mv amd64/hbbs amd64/hbbr /opt/rustdesk/
sudo rm -rf rustdesk-server.zip amd64
sudo chown -R rustdesk:rustdesk /opt/rustdesk
sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr

Структура архива иногда меняется между релизами (папка может называться иначе) — если unzip распаковал не туда, посмотрите вывод ls и поправьте пути в команде mv.

Настройка systemd-сервисов

Прямой запуск бинарников в терминале годится только для проверки. В проде оба процесса должны подниматься сами при перезагрузке и рестартовать при падении — для этого пишем два unit-файла.

Сервис hbbs:

# /etc/systemd/system/rustdesk-hbbs.service
[Unit]
Description=RustDesk ID/Rendezvous Server (hbbs)
After=network.target

[Service]
Type=simple
User=rustdesk
WorkingDirectory=/opt/rustdesk
ExecStart=/opt/rustdesk/hbbs -r your-domain-or-ip:21117
Restart=always
RestartSec=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

Флаг -r указывает hbbs, где искать relay-сервер (hbbr) — подставьте сюда домен или IP вашего же сервера, тот же адрес, который потом пропишете в клиентах.

Сервис hbbr:

# /etc/systemd/system/rustdesk-hbbr.service
[Unit]
Description=RustDesk Relay Server (hbbr)
After=network.target

[Service]
Type=simple
User=rustdesk
WorkingDirectory=/opt/rustdesk
ExecStart=/opt/rustdesk/hbbr
Restart=always
RestartSec=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

Применяем и запускаем оба:

sudo systemctl daemon-reload
sudo systemctl enable --now rustdesk-hbbs rustdesk-hbbr
sudo systemctl status rustdesk-hbbs rustdesk-hbbr

Оба статуса должны показывать active (running). Если сервис падает сразу после старта — почти всегда это либо занятый порт, либо отсутствие прав на запись в /opt/rustdesk (публичный ключ создаётся именно там при первом запуске hbbs).

Проверьте, что ключ появился:

ls -la /opt/rustdesk/*.pub
cat /opt/rustdesk/id_ed25519.pub

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

Порты и файрвол

RustDesk использует фиксированный набор портов, и все их нужно открыть на сервере (и, если сервер стоит за NAT облачного провайдера, дополнительно пробросить):

ПортПротоколКто слушаетНазначение
21115TCPhbbsNAT type test
21116TCP + UDPhbbsРегистрация ID, heartbeat, hole punching
21117TCPhbbrRelay-соединения
21118TCPhbbsID-сервер для веб-клиента (опционально)
21119TCPhbbrRelay для веб-клиента (опционально)

Если веб-клиентом (браузерная версия RustDesk) вы пользоваться не планируете, 21118 и 21119 можно не открывать — они нужны только для этого сценария.

Настройка ufw:

sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcp
sudo ufw allow OpenSSH
sudo ufw enable

Если сервер арендован у провайдера с отдельной облачной группой безопасности (security group) — правила там дублируют ufw и должны совпадать, иначе получите молчаливо отброшенные пакеты и клиент, который "видит" ID-сервер, но не может достучаться до relay.

Проверить, что порты реально слушаются, можно локально:

sudo ss -tulnp | grep -E '21115|21116|21117'

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

На каждом устройстве, где стоит RustDesk (Windows, macOS, Linux, Android — приложение везде одно и то же по логике настройки):

  1. Откройте RustDesk → значок с тремя точками → НастройкиСеть.
  2. В блоке "ID/Relay Server" впишите:
  • ID Server: ваш домен или IP (например, desk.example.com)
  • Relay Server: тот же адрес (можно оставить пустым — тогда клиент возьмёт его автоматически из ответа hbbs)
  • Key: содержимое файла id_ed25519.pub с сервера, целиком, без переносов строки
  1. Сохраните и перезапустите приложение.

После этого в главном окне RustDesk вместо публичного ID-сервера rustdesk.com должен отображаться ваш адрес. У всех участников, которым нужно подключаться друг к другу, должен быть прописан один и тот же сервер и ключ — иначе они просто не увидят ID друг друга.

Для массовой раскладки на десятки машин удобнее не настраивать каждый клиент руками, а собрать кастомный конфиг-файл (.toml для клиента 1.3+) с уже прописанными ID/relay/key и раздать его через групповую политику или скрипт разворачивания — вручную это оправдано только для пары устройств.

Безопасность и что стоит донастроить

Сервер RustDesk открыт наружу по определению, поэтому базовая защита обязательна:

  • Не отключайте требование ключа. Без него любой, кто узнает IP вашего сервера, сможет использовать его как чужой relay — это чужой трафик через ваш канал и ваш IP в чужих логах.
  • Fail2ban на SSH — сервер стоит с открытым портом 21116/tcp наружу, а значит его будут сканировать боты; отдельно от RustDesk стоит закрыть перебор паролей на SSH, если он у вас включён.
  • Веб-клиент только через TLS. Если решите открыть браузерный доступ (21118/21119), поставьте перед ним nginx с сертификатом — травление трафика веб-клиента без HTTPS то же самое, что логин без пароля.
  • Регулярные обновления бинарников. RustDesk активно развивается, в релизах закрывают и уязвимости, и просто баги стабильности — раз в квартал стоит проверять GitHub-релизы и обновлять hbbs/hbbr (перезалить бинарники и перезапустить сервисы, ключи при этом не трогаются).
  • Резервная копия ключей. Заведите привычку бэкапить /opt/rustdesk/id_ed25519* вместе с остальными конфигами сервера — без него после переустановки ОС придётся заново раздавать ключ всем клиентам.

Если планируете держать на этом же сервере и другие сервисы, имеет смысл сразу продумать общую схему firewall и обратного прокси, а не открывать порты по одному ad hoc.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Нужен ли домен, или можно работать по IP?

Можно по голому IP — hbbs и hbbr одинаково работают что с доменом, что с адресом. Домен пригодится, если сервер может смениться (переезд, смена провайдера) или если планируете добавлять TLS для веб-клиента.

Что если оба клиента за NAT и P2P не устанавливается?

Тогда автоматически подключается relay (hbbr) — соединение просто идёт через сервер, для пользователя разницы почти нет, кроме нагрузки на канал сервера.

Можно ли развернуть hbbs и hbbr на разных серверах?

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

Сколько одновременных сессий выдержит минимальная конфигурация?

Точных цифр без тестов под вашу нагрузку не назовём — многое зависит от того, сколько сессий реально идёт через relay (а не P2P) и с каким разрешением экрана. Для команды из 5-10 человек с редким релеем 1 vCPU обычно достаточно с запасом.

Безопасно ли использовать чужой публичный RustDesk-сервер вместо своего?

Технически работает, но весь метаданные о ваших сессиях (ID, время подключений) идут через чужую инфраструктуру, и вы полностью зависите от её аптайма и лимитов. Свой сервер снимает оба вопроса.

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →