Локально
Разместите собственную сеть HopToDesk локально или в облаке.
Настройте собственную сеть
Настройте собственную сеть HopToDesk на 64-битном сервере Linux или Windows.
Самый быстрый способ: в панели откройте Настройки, Network Settings, Set up a private network. Вы получите готовую ссылку запуска AWS или команду Docker, и новый сервер сам сообщит о себе вашей панели. Открыть панель
Руководство по настройке
Пошаговое руководство по настройке
Что делает установщик, как его проверить и как подключить устройства к собственной сети.
Как это работает
HopToDesk использует два вида серверов. Сигнальный сервер помогает устройствам найти друг друга и установить сеанс. Ретранслятор TURN передаёт трафик сеанса только тогда, когда прямое соединение между двумя устройствами невозможно.
Сеансы шифруются сквозным шифрованием, поэтому ни один сервер не может прочитать ваш экран, файлы или чат. Сигнальный сервер видит только идентификаторы устройств и запросы на подключение.
Установщик на этой странице настраивает сигнальный сервер. Трафик ретрансляции по умолчанию идёт через ретранслятор HopToDesk или через ваш собственный сервер TURN, если вы его укажете.
Устройства в самостоятельно размещённой сети по-прежнему можно привязать к панели для управления, и панель может отправлять им сетевые настройки.
Нужна панель и на ваших собственных серверах? Поговорите с нами
Перед началом
- 64-битный сервер Linux с systemd, например Ubuntu или Debian, или сервер Windows.
- Доступ root или sudo на этом сервере.
- IP-адрес или имя хоста, доступные всем вашим устройствам. Для сети, которая не выходит за пределы вашей локальной сети, достаточно частного адреса.
- Порт TCP 80 открыт на брандмауэре сервера для ваших устройств.
- Если хотите собственный ретранслятор: хост, порт, имя пользователя и пароль вашего сервера TURN.
Шаг 1: установка сигнального сервера в Linux
- Войдите на сервер как root или как пользователь с правами sudo.
- Вверху этой страницы выберите LAN + Default Relay или Custom TURN Server. Команда установки меняется в зависимости от выбора.
- Нажмите Copy, вставьте команду в терминал и нажмите Enter.
- Дождитесь завершения скрипта. Это занимает меньше минуты.
- В конце скрипт выводит HopSignal Setup Complete, затем адрес вашего сервера и готовый блок сетевых настроек. Сохраните этот вывод, он понадобится на шаге 3.
curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo sh hsinstall.sh
С собственным сервером TURN добавьте его четыре значения в конец команды в таком порядке: хост, порт, имя пользователя, пароль.
sudo sh hsinstall.sh turn.example.com 443 myuser mypassword
Что делает скрипт
- Загружает сигнальный сервер для вашего процессора, Intel, AMD или ARM, в папку /home/hopsignal.
- Сверяет загруженный файл с опубликованным списком SHA256SUMS и останавливается без изменений, если он не совпадает.
- Создаёт службу systemd с именем hopsignal и запускает её при каждой загрузке.
- Запускает сервер с рекомендуемыми ограничениями соединений и случайным паролем федерации, сохранённым в /home/hopsignal/hopsignal.env с доступом только для root.
- Добавляет сторожевое задание cron, которое перезапускает службу, если она перестаёт отвечать, и ротирует журнал, когда он превышает 100 МБ.
- Открывает порт TCP 80 в ufw, если ufw активен.
Шаг 1 в Windows: запуск сигнального сервера
- Переключите переключатель OS вверху этой страницы на Windows и нажмите Download. Вы получите один файл с именем hopsignal.exe.
- Создайте папку, например C:\hopsignal, и переместите в неё hopsignal.exe.
- В той же папке создайте пустой текстовый файл с именем fedlist.txt.
- Откройте командную строку от имени администратора и запустите сервер.
cd C:\hopsignal
for /f %i in ('powershell -NoProfile -Command "[guid]::NewGuid().ToString('N')"') do @(setx /M FEDPWD %i >nul & set FEDPWD=%i)
hopsignal.exe --ADDR 0.0.0.0:80 --FEDLIST fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE hs.log
Вторая строка сохраняет случайный пароль федерации как системный параметр Windows, поэтому он никогда не появляется в командной строке сервера.
Разрешите порт в брандмауэре Windows:
netsh advfirewall firewall add rule name="HopSignal" dir=in action=allow protocol=TCP localport=80
Чтобы сервер продолжал работать после перезагрузки, зарегистрируйте его как запланированную задачу, запускаемую при загрузке под учётной записью SYSTEM:
schtasks /Create /TN HopSignal /SC ONSTART /RU SYSTEM /TR "C:\hopsignal\hopsignal.exe --ADDR 0.0.0.0:80 --FEDLIST C:\hopsignal\fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE C:\hopsignal\hs.log" schtasks /Run /TN HopSignal
Шаг 1 с Docker: запуск сигнального сервера в контейнере
Образ hoptodesk/hopsignal запускает тот же сигнальный сервер на хостах Intel, AMD и ARM. Запустите его с рекомендуемыми ограничениями:
docker run -d --name hopsignal --restart unless-stopped -p 80:80 \ -e HS_MAX_MESSAGE_KB=64 -e HS_QUEUE_LIMIT=256 -e HS_MAX_CONNS=20000 \ -e HS_CONNS_PER_IP=100 -e HS_LOOKUPS_PER_IP=20 \ -e HS_IDLE_TIMEOUT=300 -e HS_UPGRADE_TIMEOUT=10 \ hoptodesk/hopsignal
Каждое значение HS_ включает одно ограничение: размер сообщения в КБ, сообщения в очереди на соединение, открытые соединения, новые соединения и запросы с одного адреса в секунду, секунды простоя и секунды на рукопожатие. Пропустите значение, и это ограничение останется выключенным.
Чтобы автоматически привязать контейнер к учётной записи панели, используйте команду Docker из Set up a private network в панели. Она добавляет HS_SETUP_TOKEN и HS_DASHBOARD_URL, и сервер сообщает свой адрес один раз, при первом запуске.
Шаг 2: проверка, что сервер работает
В Linux проверьте службу и журнал:
sudo systemctl status hopsignal tail /home/hopsignal/hs.log
В Windows убедитесь, что порт прослушивается:
netstat -an | find ":80 "
В Docker проверьте контейнер и его журнал:
docker ps --filter name=hopsignal docker logs hopsignal
С любого компьютера проверьте порт WebSocket. Замените SERVER_IP на адрес вашего сервера. Исправный сервер отвечает HTTP/1.1 101 Switching Protocols.
curl -i -N -m 5 -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" http://SERVER_IP:80/
Шаг 3: направление устройств на сервер
Каждое устройство читает сетевые настройки из небольшого документа JSON. Это тот блок, который установщик вывел в конце шага 1. Замените SERVER_IP на адрес вашего сервера и заполните блок TURN, если используете собственный ретранслятор.
{
"turnservers": [
{
"protocol": "turn",
"host": "turn.hoptodesk.com",
"port": "443",
"username": "hoptodesk",
"password": "hoptodesk1234"
}
],
"rendezvous": {
"host": "SERVER_IP",
"port": "80"
},
"winversion": "1.0.0",
"macversion": "1.0.0",
"linuxversion": "1.0.0",
"none": "none"
}
Блок rendezvous является вашим сигнальным сервером. Используйте ключ rendezvousssl вместо rendezvous, когда сервер доступен через TLS, например Cloudflare Worker. Список turnservers содержит один или несколько ретрансляторов. Задайте протокол turn для обычного соединения или turn-tls для соединения TLS. Ключи версий оставьте без изменений.
Указывайте каждый номер порта в кавычках, как в примере выше. Приложение игнорирует порт, записанный простым числом.
Есть три способа передать этот документ устройствам. Выберите тот, который подходит вашей схеме.
Вариант A: положить файл api.json на каждое устройство
Сохраните документ как файл с именем api.json в папке конфигурации HopToDesk, затем перезапустите HopToDesk. Приложение читает файл при запуске и больше не обращается к API HopToDesk.
| Платформа | Путь |
|---|---|
| Windows, все пользователи и служба (требуются права администратора) | C:\ProgramData\HopToDesk\config\api.json |
| Windows, только текущий пользователь | %APPDATA%\HopToDesk\config\api.json |
| macOS | ~/Library/Preferences/com.hoptodesk.HopToDesk/api.json |
| Linux | ~/.config/hoptodesk/api.json |
В Linux положите вторую копию в /root/.config/hoptodesk. Приложение использует эту копию на экране входа, пока пользователь не вошёл в систему.
Вариант B: разместить файл по URL и выбрать его в приложении
- Загрузите api.json на любой веб-сервер, доступный вашим устройствам. Рекомендуется HTTPS.
- В HopToDesk нажмите значок шестерёнки, чтобы открыть настройки.
- В разделе Network нажмите Choose Network.
- Выберите Custom Network Settings, вставьте URL вашего файла и подтвердите.
- HopToDesk загружает файл, проверяет, что в нём есть корректная запись rendezvous и список turnservers, а затем переподключается через ваш сервер.
Чтобы вернуться в публичную сеть, снова откройте Choose Network и выберите HopToDesk Network (Default).
На Android и iOS откройте Настройки, отключите Use HopToDesk Network в разделе Сеть и введите URL вашего файла. Телефоны, управляемые через EMM, могут получить тот же URL через управляемый параметр custom_api_url.
Вариант C: отправить настройки из панели
Если ваши устройства привязаны к панели HopToDesk, вы можете задать сеть один раз для всей учётной записи. Пользовательский клиент, собранный из панели, уже содержит эти настройки.
Новый сервер: в панели откройте Настройки, Network Settings, Set up a private network. Выберите In my AWS account или On my own server. Сервер сообщает свой адрес при запуске, и каждое привязанное устройство получает настройки. Ничего вводить не нужно.
Сервер, который у вас уже работает: введите его настройки вручную.
- Войдите в панель как владелец или администратор и откройте настройки.
- В разделе Network Settings выберите Custom Network.
- Введите хост сигнального сервера, его порт и WS в качестве протокола. Добавьте сервер TURN, если используете собственный ретранслятор, или оставьте поле пустым, чтобы сохранить ретранслятор HopToDesk.
- Нажмите Save Network Settings. Каждое привязанное устройство получит новые настройки и применит их без переустановки.
Запуск собственного ретранслятора TURN (необязательно)
Сеансы, которые не могут подключиться напрямую, по умолчанию идут через ретранслятор HopToDesk. Чтобы весь трафик оставался в вашей инфраструктуре, запустите сервер TURN. Подойдёт любой стандартный сервер TURN, в Linux часто выбирают coturn.
- Установите coturn на сервер ретранслятора.
sudo apt install coturn
- Отредактируйте /etc/turnserver.conf и задайте как минимум значения ниже. Замените realm, учётные данные и публичный IP на свои.
listening-port=443 fingerprint lt-cred-mech user=myuser:mypassword realm=example.com external-ip=PUBLIC_IP
- Если в /etc/default/coturn есть строка TURNSERVER_ENABLED, раскомментируйте её. Затем включите и запустите службу.
sudo systemctl enable --now coturn sudo systemctl restart coturn
- Откройте на брандмауэре ретранслятора порт прослушивания для TCP и UDP, а также диапазон UDP-ретрансляции с 49152 по 65535.
- Передайте ретранслятор устройствам: запустите установщик ещё раз с четырьмя значениями TURN или отредактируйте блок turnservers в сетевых настройках. Используйте протокол turn-tls, если ваш ретранслятор завершает TLS.
Управление сервером в Linux
sudo systemctl status hopsignal sudo systemctl restart hopsignal sudo systemctl stop hopsignal tail -f /home/hopsignal/hs.log
Чтобы обновить сервер, остановите службу и снова выполните команду установки. Она загрузит актуальный исполняемый файл и перезапишет службу.
Чтобы удалить сервер вместе со службой и записями cron:
curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo sh hsinstall.sh remove
Устранение неполадок
- Идентификатор остаётся на Generating или приложение постоянно пытается подключиться к сети: устройство не может достичь сигнального сервера. Проверьте, что служба запущена, порт 80 открыт и адрес в сетевых настройках верен.
- Устройства подключаются в локальной сети, но не извне: ретранслятор недоступен. С ретранслятором по умолчанию устройствам нужен исходящий доступ к turn.hoptodesk.com по порту 443. С собственным ретранслятором проверьте его правила брандмауэра и учётные данные.
- Приложение игнорирует api.json: убедитесь, что файл содержит корректный JSON без завершающих запятых, лежит в правильной папке и что вы перезапустили HopToDesk. В журнале приложения появляется строка Loaded local api.json, когда файл был загружен.
- Порт 82 является портом федерации для связи нескольких собственных сигнальных серверов. Держите его закрытым для интернета.
- Сигнальный сервер не хранит данные сеансов. Если что-то зависло, перезапустите службу. Устройства сами переподключатся примерно за минуту.
Хостинг у стороннего провайдера
Предпочитаете управляемую платформу? Разверните сеть HopToDesk в Cloudflare или AWS.

HopToDesk на Cloudflare
- Войдите в аккаунт Cloudflare и перейдите в нужную доменную зону.
- Создайте новый worker с именем файла index.js.
- Скопируйте код worker в index.js, затем сохраните и разверните его. Код worker
- В настройках worker добавьте привязку Durable Object с именем group для класса SessionGroup.
- URL вашего Cloudflare Worker готов. Используйте его как значение "rendezvousssl". api.json Собственный API

HopToDesk на AWS
- Подпишитесь на HopToDesk Private Network в AWS Marketplace. Продукт бесплатный, AWS взимает плату только за сервер. AWS Marketplace
- Вошли в панель? Откройте Настройки, Network Settings, Set up a private network и выберите In my AWS account. В ссылке запуска настройки уже заполнены, сервер сам сообщит о себе вашей панели, и следующие шаги можно пропустить.
- Выберите Launch with CloudFormation. Одна форма создаёт сервер, его постоянный адрес и правила брандмауэра в выбранном вами регионе.
- Когда стек будет готов, откройте его вкладку Outputs. Там показан api.json для ваших приложений.
- Сохраните этот api.json на каждом компьютере или отправьте его на все устройства из раздела «Сетевые настройки» в панели управления. api.json
Примечание: Worker использует Durable Objects. Их стоимость зависит от вашего тарифа Cloudflare и объёма использования. Цены Durable Objects
AWS Marketplace и логотип AWS Marketplace являются товарными знаками Amazon.com, Inc. или её аффилированных лиц.Cloudflare, логотип Cloudflare и Cloudflare Workers являются товарными знаками и/или зарегистрированными товарными знаками Cloudflare, Inc. в США и других юрисдикциях.
Планируете развёртывание с самостоятельным хостингом? Запросить коммерческое предложение