Файл docker-compose для запуска сервера rustdesk

Обновлено и опубликовано Опубликовано:

Мы рассмотрим небольшой пример оркестрации docker для запуска сервера rustdesk. Команды будем выполнять на системе Linux.

Пример docker-compose

Создаем рабочий каталог для хранения файлов и переходим в него:

mkdir -p /opt/rustdesk && cd /opt/rustdesk

Создаем файл docker-compose:

vi docker-compose.yml

services:

  hbbs:
    image: rustdesk/rustdesk-server:${RUS_VER}
    container_name: rustdesk-hbbs
    hostname: rustdesk-hbbs
    command: hbbs -r ${EXTERNAL_IP}:21117 -k _
    volumes:
      - ./data:/root
    network_mode: host
    restart: unless-stopped

  hbbr:
    image: rustdesk/rustdesk-server:${RUS_VER}
    container_name: rustdesk-hbbr
    hostname: rustdesk-hbbr
    command: hbbr -k _
    volumes:
      - ./data:/root
    network_mode: host
    restart: unless-stopped

* сервис представлен двумя контейнерами:

  • hbbs — сервер идентификации (сигнальный сервер). При подключении к удаленному ПК, вы спрашиваете у hbbs, где находится этот ПК.
  • hbbr — релейный сервер (сервер трансляции данных). Используется, когда два компьютера не могут связаться напрямую (например, оба за NAT или сетевыми экранами).

Настройка и запуск

Создаем конфигурационный файл:

vi .env

RUS_VER=1.1.15
EXTERNAL_IP=1.2.3.4

* где:

  • RUS_VER — версия rustdesk сервера. Актуальный номер тега можно посмотреть на Docker Hub.
  • EXTERNAL_IP — внешний IP-адрес, на котором слушает сервер rustdesk. Даже, если он находится на NAT, необходимо указать конечный внешний IP.

Так как в наших контейнерах используется настройка network_mode: host, необходимо открыть следующие порты:

  • TCP: 21115, 21116, 21117, 21118, 21119
  • UDP: 21116

В зависимости от утилиты управления брандмауэром, это делается разными командами.

а) iptables (как правило, на DEB Linux):

iptables -I INPUT -p tcp --match multiport --dports 21115:21119 -j ACCEPT

iptables -I INPUT -p udp --dport 21116 -j ACCEPT

Для сохранения правил можно использовать 

apt install iptables-persistent

netfilter-persistent save

б) firewalld (как правило, на RPM Linux):

firewall-cmd --permanent --add-port={21115,21116,21117,21118,21119}/tcp --add-port=21116/udp

firewall-cmd --reload

Можно запускать наши контейнеры:

docker-compose up -d

Состояние запущенных контейнеров можно посмотреть командой:

docker-compose ps

Подключение клиентом

При первом запуске сервер hbbs автоматически генерирует пару зашифрованных ключей в рабочей директории. Чтобы увидеть секретный ключ, выполните в терминале команду:

cat /opt/rustdesk/data/id_ed25519.pub

Зафиксируйте полученный ключ. Он понадобится для подключения к серверу.

Для настройки клиента выполните следующие шаги:

1. Нажмите на три точки рядом со своим ID в программе и выберите Сеть (Network) или ID/Сервер ретрансляции (ID/Relay Server).
2. Заполните поля:

  • ID-сервер (ID Server): укажите ваш EXTERNAL_IP.
  • Сервер ретрансляции (Relay Server): продублируйте этот же EXTERNAL_IP (сервер hbbr работает на том же адресе).
  • Ключ (Key): вставьте скопированную строку из файла id_ed25519.pub.

3. Нажмите Применить (Apply).

Если порты на сервере открыты правильно, внизу окна RustDesk загорится статус "Готов" (Ready). Эту настройку нужно повторить на всех устройствах, между которыми вы планируете устанавливать связь.

# DevOps # Linux # Контейнеризация # Серверы # Управление
Дмитрий Моск — частный мастер
Был ли вам полезен этот скрипт?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку контейнеризации

Нужна бесплатная консультация?

Скрипты

Пример сценария docker-compose для запуска сервера Dependency-Track

Запуск SonarQube Server в контейнере с помощью docker-compose

Пример docker-compose файла для запуска сервера rustdesk в docker

Пример файла docker-compose для запуска Garage S3

Развертывание N8N в среде контейнеров с помощью docker-compose

Сценарий в docker-compose для запуска Rocket.Chat

Запуск Nextcloud с помощью docker-compose со всем необходимым

Другие скрипты

Все статьи

Нужен скрипт? Опишите его назначение:





Реклама