- PVSM.RU - https://www.pvsm.ru -

RustDesk: удалённый десктоп через свой сервер ретрансляции

RustDesk: удалённый десктоп через свой сервер ретрансляции - 1 [1]

RustDesk [2] — приложение для удалённого рабочего стола с открытым исходным кодом, разработанное для самохостинга в качестве альтернативы TeamViewer. Название такое, потому что программа написана на Rust.

Работает из коробки, не требует конфигурации. Если установить сервер синхронизации на своём хостинге [3], то любые машины в интернете могут синхронизироваться и устанавливать соединение через наш сервер для удалённого управления рабочими столами друг друга. Трафик идёт напрямую между ними, но если это невозможно — тоже через сервер, до 3 Мбит/с (1920×1080).

Клиентское приложение есть для iOS [4] и Android [5] (на КДПВ), что позволяет со смартфона управлять рабочим столом Windows, Linux и MacOS (и наоборот), а также обмениваться файлами. Есть ещё веб-клиент [6].

Нужно заметить, что серверный компонент RustDesk распространяется с закрытым исходным кодом, что даёт возможность компании взимать плату за его использование (даже на самохостинге, без SaaS). У бесплатной опенсорсной версии [7] ряд ограничений:

RustDesk: удалённый десктоп через свой сервер ретрансляции - 2

В документации [8] описана установка и использование RustDesk в контейнере Docker [9], на свой сервер под Windows с PM2 или NSSM [10], на Synology DSM 7.2 [11] и DSM 6 [12], Ubuntu Server [13], а также Ubuntu Server с Docker [14]. Всё это доступные варианты самохостинга.

Будем устанавливать серверную версию для Ubuntu Server.

Как обычно, выбираем подходящую конфигурацию сервера в конфигураторе RUVDS [15] или из готовых шаблонов. Минималистичные серверы ценой от 139 руб. в месяц находятся в разделе VPS Старт [16]. Для RustDesk такого достаточно:

RustDesk: удалённый десктоп через свой сервер ретрансляции - 3

Аппаратные требования серверного модуля RustDesk очень низкие. В документации сказано [17], что можно выбирать VPS [3] минимальной конфигурации, а также использовать в качестве сервера Raspberry Pi или другой одноплатник. Что касается канала, то при сбое прямого соединения TCP hole punching трафик пойдёт через сервер ретрансляции. Трафик ретрансляционного соединения составляет от 30 Кбит/с до 3 Мбит/с (разрешение экрана 1920×1080) в зависимости от настроек разрешения и частоты обновления экрана. Для офисной работы достаточно 100 Кбит/с.

На Ubuntu Server есть два способа установки RustDesk: в контейнере Docker [14] или путём обычной установки .deb. Начинающим пользователям рекомендуется использовать контейнер, потому что там достаточно просто скопировать compose.yml, внести некоторые изменения — и всё готово. Свежие контейнеры Docker в репозитории автоматически генерируются при каждом релизе, после чего публикуются в Docker Hub [18] и GitHub Container Registry [19]. Есть два типа контейнеров:

  • классические образы под архитектуры amd64, arm64v8, armv7
  • образы на базе S6-overlay [20] с добавлением бинарных файлов

Но в таком случае минимальной конфигурации VPS [3] будет недостаточно, потому что виртуальной машине на самохостинге нужно минимум 1 ГБ RAM и 32 ГБ места на диске.

▍ Установка скриптом

Что касается простой установки на чистом Linux, то можно использовать специальный инсталляционный скрипт [17], который проверен под CentOS Linux 7/8, Ubuntu 18/20/22/24 и Debian.

Его мы и используем в первую очередь.

На VPS-сервере после его включения уже установлена операционная система Ubuntu 24.04, а нам выдали IP-адрес и учётные данные для авторизации:

RustDesk: удалённый десктоп через свой сервер ретрансляции - 4

Дальнейший алгоритм действий:

  1. Подключаемся к серверу стандартным способом по SSH:

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 5

    Устанавливаем файрвол UFW (стандартный вариант для систем на базе Debian):

    apt-get install ufw

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 6

  2. Настраиваем порты файрвола:
    ufw allow 21114:21119/tcp
    ufw allow 8000/tcp
    ufw allow 21116/udp
    sudo ufw enable

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 7

    (Теоретически, сначала на файрволе надо открыть порт 22 для SSH, но на нашем VPS [3] от RUVDS он изначально открыт).

  3. Запускаем инсталляционный скрипт:
    wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
    chmod +x install.sh
    ./install.sh

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

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 8

    Выбираем IP-адрес.

    Потом предлагает скачать файлы конфигурации и установить HTTP-сервер:

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 9

    Можно согласиться.

  4. Установка сервера завершена с выдачей публичного ключа, админского логина и пароля:

    RustDesk: удалённый десктоп через свой сервер ретрансляции - 10

▍ Установка клиентов

RustDesk: удалённый десктоп через свой сервер ретрансляции - 11

Теперь установим RustDesk на клиентские устройства, откуда будет происходить передача и управление рабочим столом. Клиентские устройства подключаются к серверу по указанному IP-адресу, используя его публичный ключ, выданный ранее:

Your IP/DNS Address is 194.87.103.130
Your public key is 1AQBKNnylHs9ZEq32I2Axl51MJtCNp0Reqngdlu4Hvg=
Install Rustdesk on your machines and change your public key and IP/DNS name to the above
You can access your install scripts for clients by going to http://194.87.103.130:8000
Username is admin and password is 5EIpg7IAH07YYujc

Если зайти к себе на сервер по адресу http://194.87.103.130:8000 с админским паролем, то там лежат скрипты для установки клиентов под Linux и Windows, в том числе PowerShell-скрипт WindowsAgentAIOInstall.ps1 для установки клиента RustDesk под Windows.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 12

Запускаем скрипт на исполнение. Под Windows установка занимает десяток секунд, после чего открывается окно для управления рабочим столом:

RustDesk: удалённый десктоп через свой сервер ретрансляции - 13

Дальнейшее понятно. Если нужно управлять удалённым рабочим столом, то вводим удалённый ID. Если наоборот — то здесь же указан ID данного рабочего стола и пароль.

Примечание. Десктопные версии RustDesk используют библиотеку Flutter или Sciter (устаревшую) для GUI, вторую в случае необходимости придётся скачать отдельно: Windows [21] | Linux [22] | macOS [23].

В репозитории Techahold [24] есть ещё скрипт для обновления RustDesk, он может пригодиться в будущем:

wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/update.sh
chmod +x update.sh
./update.sh

Установка RustDesk на Ubuntu Server, видеоруководство:

▍ Сборка вручную

Инструкции по сборке см. в официальном репозитории rustdesk-server [7]:

cargo build --release

Эта команда генерирует три исполняемых файла:

  • hbbs — сервер RustDesk ID/Rendezvous
  • hbbr — сервер ретрансляции RustDesk
  • rustdesk-utils — консольные утилиты RustDesk

Отдельно распространяются платная версия RustDesk Server Pro [25] и упрощённая демо-версия rustdesk-server-demo [26], предназначенная для создания собственных реализаций RustDesk.

У платной версии есть ряд дополнительных опций, по сравнению с бесплатной: в том числе веб-консоль [27] (на порту 21114), через которую можно управлять всеми клиентами, где мы установили RustDesk.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 14

RustDesk: удалённый десктоп через свой сервер ретрансляции - 15

В платной версии для самохостинга есть 2FA, контроль доступа [28], централизованные настройки и функция распределённых рилей-серверов.

▍ Установка из файла

Скачиваем файлы .deb из раздела Download [29]
в официальном репозитории и устанавливаем командой:

apt-get -f install <filename>.deb

или

dpkg -i <filename>.deb

В этом же разделе лежат исполняемые файлы сервера под Linux и Windows, консольные утилиты и проч.

Если возникают проблемы с пробитием файрвола, см. отдельную статью [30], где описана настройка технологии NAT Loopback на маршрутизаторе и установка локального DNS-сервера.

▍ P2P Remote Desktop

В качестве бонуса можно упомянуть ещё P2P Remote Desktop [31]: P2P-удалённый десктоп, тоже альтернатива TeamViewer/AnyDesk. Эта портативная программа для Windows работает предельно просто: просто копируем рабочий файл p2p.exe на оба компьютера, которые планируется подключить друг к другу.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 16

Затем на одном из компьютеров нужно скопировать My Wan IP (и порт) или My Lan IP — и передать его на второй, а со второго на первый.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 17

Теперь на каждом из узлов указано по два IP-адреса, так что подключаемся: на обоих ПК нажимаем Connect. После установления связи прямой пиринговой можно обмениваться текстовыми сообщениями или управлять рабочим столом удалённого компьютера, для этого предназначена кнопка Desktop.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 18

Для работы используется протокол UDT [32], и он должен пробивать большинство файрволов.

RustDesk: удалённый десктоп через свой сервер ретрансляции - 19

Наверное, это самая простая программа для удалённого управления рабочим столом, хотя тут тоже используется промежуточный сервер для синхронизации. Тем не менее, это минималистичная и бесплатная программа.

Из других более-менее рабочих опенсорсных альтернатив TeamViewer можно упомянуть Remotely [33], Screego [34] и MeshCentral [35]+Tactical RMM [36].

© 2025 ООО «МТ ФИНАНС»

Автор: ru_vds

Источник [37]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/teamviewer/408490

Ссылки в тексте:

[1] Image: https://habr.com/ru/companies/ruvds/articles/874196/

[2] RustDesk: https://rustdesk.com/

[3] хостинге: https://www.reg.ru/?rlink=reflink-717

[4] для iOS: https://testflight.apple.com/join/KBG9EsZW

[5] Android: https://f-droid.org/en/packages/com.carriez.flutter_hbb/

[6] веб-клиент: https://rustdesk.com/web/

[7] бесплатной опенсорсной версии: https://github.com/rustdesk/rustdesk-server

[8] документации: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/

[9] контейнере Docker: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/

[10] под Windows с PM2 или NSSM: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/windows/

[11] Synology DSM 7.2: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/synology/dsm-7/

[12] DSM 6: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/synology/dsm-6/

[13] Ubuntu Server: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/ubuntu-server/

[14] Ubuntu Server с Docker: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/ubuntu-server/docker/

[15] конфигураторе RUVDS: https://ruvds.com/ru-rub

[16] VPS Старт: https://ruvds.com/ru/vps_start/

[17] сказано: https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/

[18] Docker Hub: https://hub.docker.com/r/rustdesk

[19] GitHub Container Registry: https://github.com/rustdesk?tab=packages&repo_name=rustdesk-server

[20] S6-overlay: https://github.com/just-containers/s6-overlay

[21] Windows: https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll

[22] Linux: https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so

[23] macOS: https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib

[24] Techahold: https://github.com/techahold/rustdeskinstall

[25] RustDesk Server Pro: https://rustdesk.com/pricing/

[26] rustdesk-server-demo: https://github.com/rustdesk/rustdesk-server-demo

[27] веб-консоль: https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/console/

[28] контроль доступа: https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/permissions/

[29] Download: https://github.com/rustdesk/rustdesk-server/releases/latest

[30] отдельную статью: https://rustdesk.com/docs/en/self-host/nat-loopback-issues/

[31] P2P Remote Desktop: https://github.com/miroslavpejic85/p2p

[32] протокол UDT: https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol

[33] Remotely: https://github.com/immense/Remotely

[34] Screego: https://screego.net/

[35] MeshCentral: https://github.com/Ylianst/MeshCentral

[36] Tactical RMM: https://github.com/amidaware/tacticalrmm

[37] Источник: https://habr.com/ru/companies/ruvds/articles/874196/?utm_campaign=874196&utm_source=habrahabr&utm_medium=rss