В современном мире удаленной работы и дистанционного обучения, потребность в стабильных и безопасных инструментах для удаленного доступа к компьютерам становится все более важной. RustDesk – новое слово в технологии удаленного доступа, предлагая высокую степень безопасности и кросс-платформенную совместимость. В этой статье мы подробно рассмотрим процесс установки собственного сервера RustDesk, чтобы вы могли пользоваться его преимуществами на своем собственном сервере.
Оглавление
Введение
Многие из нас знают, что такое TeamViewer и до 2022 года пользовались им. Наверно это был самый распространённый сервис по удаленному доступу к рабочему столу ПК и даже телефонов. Но руководство этого сервиса, как и многие западные компании, решили поддержать фашистов и запретили пользоваться своим сервисом для нашего сегмента интернета. Но свято место пусто не бывает и пользователи быстро нашли альтернативу в виде сервиса Anydesk. Anydesk так же как и TeamViewer работает на всех ОС и телефонах. Я даже рассказывал как установить Anydesk на MacOS.
Но кто даст гарантию, что и Anydesk перестанет работать? Это может произойти в любой момент. Нужна такая альтернатива, что бы соответствовала закону об “суверенном интернете”. Конечно есть несколько российских альтернатив, но они, как правило, платные или не кроссплатформенные.
Закон о «суверенном интернете» — неформальное название Федерального закона от 1 мая 2019 года № 90-ФЗ «О внесении изменений в Федеральный закон „о связи“ и Федеральный закон „Об информации, информационных технологиях и о защите информации“», предусматривающего создание национальной системы маршрутизации интернет-трафика, инструментов централизованного управления и др. Вступил в силу 1 ноября 2019 года.
Я понимаю этот закон так: если запад полностью отключит (перерубит кабеля или заглушит BGP анонсы) интернет, то сервис должен остаться работать внутри страны как это было например с Visa и MasterCard. Для этого сервис должен работать на ваших серверах и иметь как минимум открытый исходный код. И я нашел такой, точнее мне подсказали.
RustDesk – это бесплатная программа удалённого доступа к рабочему столу, которая позволяет пользователям получать доступ к компьютерам и серверам удаленно. Она разработана для обеспечения безопасности, скорости и простоты использования. RustDesk доступна для Windows, macOS, Linux, Android и iOS, а сам сервис может быть развернут на собственном сервере.
Как видите на картинке выше у Rustdesk так же есть ID и временный пароль, а в настройках можно задать постоянный пароль. В общем ничего необычного, но есть нюанс. Если вы приглядитесь, то возле слова готово есть надпись, которая предупреждает, что такое соединение будет не быстрым, так как используются сервера Rustdesk.
Для решения этой проблемы с медленным доступом и соответствия закону РФ (да я так шучу, ну что вы сразу)))) я покажу как развернуть собственный сервис RustDesk на Linux, Synology и TerraMaster. Главное помните, что для работы сервера Rustdesk ему нужен общедоступный IP адрес статический или динамический (DDNS). Клиентам это не нужно, RustDesk может спокой пробивать NAT.
Тут сразу нужно отметить, что есть платная версия Pro, но она мне не интересна и в данном руководстве я ее рассматривать не буду.
Системные требования
- Linux CentOS Linux 7/8, Ubuntu 18/20 и Debian.
- Сервера с 1 процессором, 1 ГБ оперативной памяти и диском 10 ГБ достаточно для запуска RustDesk.
- Системные требования очень низкие. Минимальной конфигурации облачного сервера хватит. В зависимости от размера сети, если не удастся прямое TCP подключение, трафик пойдёт через ретранслятор. Объём трафика ретранслятора будет от 30 кб/с до 3 Мб/с (для экрана размером 1920х1080), в зависимости от разрешения и частоты обновления. Если софт используется для обычных офисных нужд, объём трафика будет около 100 кб/с.
По умолчанию hbbs слушает порты 21115(tcp) и 21116(tcp/udp), 21118(tcp), hbbr слушает порты 21117(tcp) и 21119(tcp). Удостоверьтесь, что эти порты открыты на фаерволе. Обратите внимание: Порт 21116 должен быть открыт и как TCP и как UDP. Порт 21115 используется для проверки типа NAT, 21116/UDP используется для регистрации и службы heartbeat, 21116/TCP используется для пробивания TCP отверстий и службы соединений, 21117 используется для службы ретранслятора, 21118 и 21119 используется для поддержки Web-клиентов. Если вам не нужны Web-клиент (21118, 21119) соответствующие порты можно отключить.
- TCP(21115, 21116, 21117, 21118, 21119)
- UDP(21116)
Установка Rusdesk
Варианты установки:
- Linux
- Docker (Linux, Synology, Terramaster, Proxmox LXC и т.д)
- Windows (рассматриваться не будет)
Установка Rustdesk на Linux
Я буду устанавливать на Linux Ubuntu 22.04 серверная версия.
Для начала делаем стандартные команды
sudo apt update
sudo apt upgrade
sudo reboot
Теперь скачаем скрипт установки и запустим его. Если запросит пароль введите его.
wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh
Первое что спросит скрипт это как вы будите подключаться к вашему rustdesk серверу. Если у вас статический IP, то тут нужно указать именно его, но лучше всего указывать доменное имя купленное или DDNS. Например, можно указать ddns.example.ru. Это имя можно потом изменить, я покажу где. Нажмите 1 или 2 в зависимости от вашего выбора и укажите соответствующие значение.
На этот вопрос можно ответить нет цифрой 2. Если ответите да, то скрипт установит HTTP сервер позволяющий скачивать скрипты, для установки готовых настроенный клиентов rustdesk для windows и linux. Мне это не интересно.
По окончанию работы скрипта у нас есть полностью рабочий и настроенный сервер rustdesk. Скрипт сообщит по какому домену или IP адресу нужно подключаться клиенту, а так же сообщит публичный ключ. Ключ нужно запомнить.
Публичный находится в папке /opt/rustdesk/ в файле id_ed25519.pub на случай если вы его забудете.
Если нужно его перегенирить, то просто удалите два соответствующих файла и перезапустите hbbs и hbbr сервисы командами:
service rustdeskrelay restart
service rustdesksignal restart
Для чего нужен IP или DDNS понятно, а вот для чего ключ? Честно сказать не знаю, у меня и с ключом и без работало, но говорят с ключом трафик шифруется.
В скрипте есть косяк, который неверно генерит файл запуска rustdesksignal. Для решения этой проблемы отредактируйте файл:
nano /etc/systemd/system/rustdesksignal.service
Замените:
ExecStart=/opt/rustdesk/hbbs -k _
На:
ExecStart=/opt/rustdesk/hbbs -r ddns.example.ru
Теперь применить эти изменения
systemctl daemon-reload
И перезапустите rustdesksignal выше изложенной командой.
Все, теперь сервер rustdesk установлен на Linux и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.
Установка Rustdesk на Synology
Я буду устанавливать на DSM 7.2, если у вас версия ниже, то можно посмотреть официальное руководство по этой ссылке.
Открываем DSM и File Station. В папке docker создаем папку rustdesk, а в ней пустую папку data как показано на картинке ниже
Открываем Container Manager, проекты и создаем проект. Придумываем название, задаем пусть /docker/rustdesk и выбираем либо файл либо текст.
Файл и текст должны содержать следующее:
Не забудьте поменять ddns.example.ru на свое значение
services:
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r ddns.example.ru:21117
volumes:
- ./data:/root
depends_on:
- hbbr
restart: unless-stopped
network_mode: host
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
restart: unless-stopped
network_mode: host
Затем везде жмите далее и далее, а когда проект будет создан увидите Exit Code 0, который означает, что вы все сделали верно. Если нет, смотрите, что за ошибка и устраняйте ее.
Публичный находится в папке /docker/rustdesk/data в файле id_ed25519.pub на случай если вы его забудете.
Все, теперь сервер rustdesk установлен на Synology и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.
Установка Rustdesk на Terramaster
Для установки RustDesk на TerraMaster вам понадобится Portainer. Как его установить я описал в своей статье: Установка и настройка Portainer в Terramaster
Через диспетчер файлов в папке docker создайте пустую папку rustdesk как показано на картинке ниже, а внутри создайте еще пустую папку data
Теперь нужно узнать полный путь до этой папки data. Для этого зайдите в ее свойства и увидите полный путь. Этот путь нужно запомнить.
Открываем Portainer, переходим на вкладку Stacks и жмем добавить
В этом окне придумываем имя, выбираем web editor и вставляем текст
Файл и текст должны содержать следующее:
Замените ddns.example.ru и путь до папки data на ваши значения
services:
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r ddns.example.ru:21117
volumes:
- /home/sbaf/Docker/rustdesk/data:/root
depends_on:
- hbbr
restart: unless-stopped
network_mode: host
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- /home/sbaf/Docker/rustdesk/data:/root
restart: unless-stopped
network_mode: host
Затем в самом низу нажмите кнопку Deploy the stack
Если все сделали верно, то появится работающий Stack
И два работающих контейнера
А в папке data появится файл id_ed25519.pub в котором будет открытый ключ для настройки клиентов RustDesk
Все, теперь сервер rustdesk установлен на Terramaster и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.
Установка Web клиента Rustdesk
Установить Web клиента можно на любом сервере или ПК в Docker контейнере. Я покажу на примере Synology, но по аналогии будет и в TerraMaster и в Portainer и где угодно.
Открываем Container Manager, реестр и вводим в поиск keyurbhole/flutter_web_desk затем выбираем образ и нажимаем загрузить как показано на картинке ниже
Затем переходим в образы, ждем пока он скачается, выделяем и нажимаем запустить
В открывшемся окне придумываем имя и при желании устанавливаем ограничение на ресурсы
В этом окне нужно установить порт для открытия веб страницы этого контейнера. Я установил 5050.
Затем везде жмите далее не меняя никаких настроек.
После создание контейнера открывайте http://IP-NAS:5050 и откроется WEB клиент Rustdesk и можно будет подключаться к другим ПК через браузер.
Этот WEB клиент Rustdesk так же имеет настройки сервера и ключа.
Настройка клиента Rustdesk
Клиенты Rustdesk на Windows, Linux, macOS, Андроид и IOS настраиваются одинаково.
Настройка очень простая. В параметрах сети укажите сервер ID ddns.example.ru и публичный ключ.
После чего, если все сделали правильно увидите состояние готово без предупреждений о медленной работе.
Вместо итога
Для меня Rustdesk является неплохой альтернативой TeamViewer и Anydesk, но из-за того, что мне приходится работать с незнакомыми людьми рассказывать им как настроить rustdesk для работы с моим сервером не вариант. Во-первых, не все согласятся. Во вторых они будут работать через него даже без моего ведома. Мне бы этого не хотелось. Но для людей, которым нужно управлять собственным парком компьютеров или помогать друзьям и знакомым, Rustdesk отлично подойдет. Работает превосходно, мне не на что пожаловаться. Я подключался и через проводной интернет и с мобильного телефона через LTE, никаких проблем у меня не возникло, все довольно просто и понятно. А как быстро работает передача файлов с ПК на ПК это просто песня. А самое главное ни одного разрыва соединения во время тестирования у меня не было.
Теперь вы знаете как установить и настроить RustDesk удаленное управление с открытым исходным кодом. RustDesk это полная альтернатива TeamViewer и AnyDesk.
Материалы, которые помогли
- https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/synology/
- https://github.com/rustdesk/rustdesk-server