RustDesk. Удаленный доступ через ретранслятор на собственном сервере
RustDesk - платформа с открытым исходным кодом для организации удаленного доступа. Помимо кроссплатформенного клиентского приложения, имеет в своем составе специальный сервер-ретранслятор для размещения на вашем личном сервере, который будет являться связующим звеном между всеми участниками подключений.
Установка и настройка серверного компонента системы
Для связи распределенных хостов возьму публичный VPS с серверами в РФ.
- Конфигурации 2 CPU. 2Gb RAM, 20Gb HDD более чем достаточно. Образ с предустановленным Docker.
- Создав VPS, сразу назначаем поддомен на ip адрес машины (добавляем запись в DNS у поставщика).
Сервер состоит из двух сервисов - signaling и relay. Рядом поставлю Nginx Proxy Manager (NPM) для получения сертификата, настройки обратного прокси и TCP/UDP потоков, которые потребуются RustDesk.
Собираем итоговый docker-compose.yml на основе предложенного в документации, добавив NPM и объединив все сервисы в одну подсеть.
Настройка Nginx Proxy Manager
- Для начала стартуем NPM, чтобы сделать предварительные настройки
- Идем по адресу хоста на порт 8081 и создаем аккаунт администратора.
- Добавляем 404 Host, чтобы автоматически подтянуть сертификат и направить http/https порты в никуда. В pro версии RustDesk существует веб-панель, так бы перенаправили на нее, но в текущей конфигурации она отсутствует.
Таким образом, получили сертификат, домен смотрит на хост и форсирует https протокол.
- Переходим на вкладку streams. Здесь нужно прописать потоки на TCP/UDP порты. На вкладке SSL при создании stream ничего не указываем, потоки должны остаться в HTTP Only режиме.
где rustdesk_rustdesk-net название новой созданной сети в Docker, которую можно посмотреть через команду docker network ls.
По факту завершения работ с NPM, можно закрыть порт на панель администратора (8081:80), либо замкнуть его только на внутренний доступ (127.0.0.1:8081:80), либо направить на него ваш собственный поддомен (npm.mydomain.com).
Запуск RustDesk сервисов
Для организации зашифрованного соединения между клиентами нам понадобится публичный ключ, генерируемый hbbs. Он будет находиться в примонтированном каталоге data по следующему пути: ./data/id_ed25519.pub.
- Запоминаем ключ - его нужно указывать в клиентских приложениях для подключения далее.
- Также пропишем ключ в команду старта каждого RustDesk сервиса в compose файле.
- Пересобираем сервисы
✅ Серверная часть подготовлена.
Настройка и запуск клиентских приложений
- Забираем актуальные клиентские приложения из релизов проекта.
- Взял для теста две удаленные машины - на Windows и Linux.
- Под Windows ставим через обычный инсталлятор.
- Под Linux скачиваем пакет и устанавливаем.
Подробнее про все доступные платформы для клиентов в документации.
- Запускаем клиента и идем в Настройки
- В разделе Сеть прописываем доменное имя сервера-ретранслятора (rustdesk.mydomain.com) в поле “Сервер ID” и публичный ключ в поле “Key” соответственно.
- В разделе Безопасность можно задать параметры доступа по паролю, например, одноразовый пароль или постоянный пароль и использовать его для автоматического входа, иначе - доступен вариант принятия сеансов после подтверждения.
- Делаем тестовые подключения по ID машины, который указан на главном окне клиентского приложения.
✅ Если все настройки как на сервере так и на клиенте были сделаны верно, то получим довольно быстрый и функциональный способ удаленного доступа с шифрованным трафиком, и без участия посторонних узлов в этой несложной схеме подключения.
Больше полезной информации в моем Telegram-канале.