RustDesk — приложение для удалённого рабочего стола с открытым исходным кодом, разработанное для самохостинга в качестве альтернативы TeamViewer. Название такое, потому что программа написана на Rust.
Работает из коробки, не требует конфигурации. Если установить сервер синхронизации на своём хостинге, то любые машины в интернете могут синхронизироваться и устанавливать соединение через наш сервер для удалённого управления рабочими столами друг друга. Трафик идёт напрямую между ними, но если это невозможно — тоже через сервер, до 3 Мбит/с (1920×1080).
Клиентское приложение есть для iOS и Android (на КДПВ), что позволяет со смартфона управлять рабочим столом Windows, Linux и MacOS (и наоборот), а также обмениваться файлами. Есть ещё веб-клиент.
Нужно заметить, что серверный компонент RustDesk распространяется с закрытым исходным кодом, что даёт возможность компании взимать плату за его использование (даже на самохостинге, без SaaS). У бесплатной опенсорсной версии ряд ограничений:
Будем устанавливать серверную версию для Ubuntu Server.
Как обычно, выбираем подходящую конфигурацию сервера в конфигураторе RUVDS или из готовых шаблонов. Минималистичные серверы ценой от 139 руб. в месяц находятся в разделе VPS Старт. Для RustDesk такого достаточно:
Аппаратные требования серверного модуля RustDesk очень низкие. В документации сказано, что можно выбирать VPS минимальной конфигурации, а также использовать в качестве сервера Raspberry Pi или другой одноплатник. Что касается канала, то при сбое прямого соединения TCP hole punching трафик пойдёт через сервер ретрансляции. Трафик ретрансляционного соединения составляет от 30 Кбит/с до 3 Мбит/с (разрешение экрана 1920×1080) в зависимости от настроек разрешения и частоты обновления экрана. Для офисной работы достаточно 100 Кбит/с.
На Ubuntu Server есть два способа установки RustDesk: в контейнере Docker или путём обычной установки .deb. Начинающим пользователям рекомендуется использовать контейнер, потому что там достаточно просто скопировать compose.yml, внести некоторые изменения — и всё готово. Свежие контейнеры Docker в репозитории автоматически генерируются при каждом релизе, после чего публикуются в Docker Hub и GitHub Container Registry. Есть два типа контейнеров:
классические образы под архитектуры amd64, arm64v8, armv7
образы на базе S6-overlay с добавлением бинарных файлов
Но в таком случае минимальной конфигурации VPS будет недостаточно, потому что виртуальной машине на самохостинге нужно минимум 1 ГБ RAM и 32 ГБ места на диске.
▍ Установка скриптом
Что касается простой установки на чистом Linux, то можно использовать специальный инсталляционный скрипт, который проверен под CentOS Linux 7/8, Ubuntu 18/20/22/24 и Debian.
Его мы и используем в первую очередь.
На VPS-сервере после его включения уже установлена операционная система Ubuntu 24.04, а нам выдали IP-адрес и учётные данные для авторизации:
Дальнейший алгоритм действий:
Подключаемся к серверу стандартным способом по SSH:
Устанавливаем файрвол UFW (стандартный вариант для систем на базе Debian):
Скрипт устанавливает все необходимые программы и зависимости, а потом спрашивает о предпочтительном методе подключения к серверу: IP-адрес или домен.
Выбираем IP-адрес.
Потом предлагает скачать файлы конфигурации и установить HTTP-сервер:
Можно согласиться.
Установка сервера завершена с выдачей публичного ключа, админского логина и пароля:
▍ Установка клиентов
Теперь установим 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.
Запускаем скрипт на исполнение. Под Windows установка занимает десяток секунд, после чего открывается окно для управления рабочим столом:
Дальнейшее понятно. Если нужно управлять удалённым рабочим столом, то вводим удалённый ID. Если наоборот — то здесь же указан ID данного рабочего стола и пароль.
Примечание. Десктопные версии RustDesk используют библиотеку Flutter или Sciter (устаревшую) для GUI, вторую в случае необходимости придётся скачать отдельно: Windows | Linux | macOS.
В репозитории Techahold есть ещё скрипт для обновления RustDesk, он может пригодиться в будущем:
Установка RustDesk на Ubuntu Server, видеоруководство:
▍ Сборка вручную
Инструкции по сборке см. в официальном репозитории rustdesk-server:
cargo build --release
Эта команда генерирует три исполняемых файла:
hbbs — сервер RustDesk ID/Rendezvous
hbbr — сервер ретрансляции RustDesk
rustdesk-utils — консольные утилиты RustDesk
Отдельно распространяются платная версия RustDesk Server Pro и упрощённая демо-версия rustdesk-server-demo, предназначенная для создания собственных реализаций RustDesk.
У платной версии есть ряд дополнительных опций, по сравнению с бесплатной: в том числе веб-консоль (на порту 21114), через которую можно управлять всеми клиентами, где мы установили RustDesk.
В платной версии для самохостинга есть 2FA, контроль доступа, централизованные настройки и функция распределённых рилей-серверов.
▍ Установка из файла
Скачиваем файлы .deb из раздела Download
в официальном репозитории и устанавливаем командой:
apt-get -f install <filename>.deb
или
dpkg -i <filename>.deb
В этом же разделе лежат исполняемые файлы сервера под Linux и Windows, консольные утилиты и проч.
Если возникают проблемы с пробитием файрвола, см. отдельную статью, где описана настройка технологии NAT Loopback на маршрутизаторе и установка локального DNS-сервера.
▍ P2P Remote Desktop
В качестве бонуса можно упомянуть ещё P2P Remote Desktop: P2P-удалённый десктоп, тоже альтернатива TeamViewer/AnyDesk. Эта портативная программа для Windows работает предельно просто: просто копируем рабочий файл p2p.exe на оба компьютера, которые планируется подключить друг к другу.
Затем на одном из компьютеров нужно скопировать My Wan IP (и порт) или My Lan IP — и передать его на второй, а со второго на первый.
Теперь на каждом из узлов указано по два IP-адреса, так что подключаемся: на обоих ПК нажимаем Connect. После установления связи прямой пиринговой можно обмениваться текстовыми сообщениями или управлять рабочим столом удалённого компьютера, для этого предназначена кнопка Desktop.
Для работы используется протокол UDT, и он должен пробивать большинство файрволов.
Наверное, это самая простая программа для удалённого управления рабочим столом, хотя тут тоже используется промежуточный сервер для синхронизации. Тем не менее, это минималистичная и бесплатная программа.