Files
RDtop/scripts/host/README-host.md
Orchestrator 43e7b30f41 feat: add host setup scripts + configs for Intel Alder Lake-N
- scripts/host/setup-host-rustdesk.sh: protect RustDesk ID on host
- scripts/host/README-host.md: instructions for manual apply
- configs/rustdesk2-host.toml.template: config template
- configs/systemd/: systemd units for both VPS and host
2026-05-16 00:16:14 +01:00

5.9 KiB
Raw Blame History

RustDesk Host Setup — README

Цель: зафиксировать RustDesk ID на хосте Intel Alder Lake-N (Debian 12, GNOME headless, dummy-драйвер) и защитить конфиг от перезаписи.


Содержимое

Файл Назначение
setup-host-rustdesk.sh Основной скрипт: проверяет dummy Xorg, создаёт/защищает RustDesk.toml, создаёт write-rustdesk-config.sh, настраивает systemd-сервис
write-rustdesk-config.sh Экстренный скрипт: снимает chattr +i, перезаписывает конфиг, ставит защиту обратно
setup-host-rustdesk.log Лог, создаётся автоматически при запуске основного скрипта

Как применить

Шаг 1: Скопировать файлы на хост

Вариант A: USB / вручную

# На VPS (где вы сейчас)
# Файлы уже находятся в папке scripts/host/. Скопируйте их на USB и перенесите на хост.
# Или если есть любой файловый доступ — просто перенесите.

Вариант B: scp (если есть любой сетевой доступ к хосту)

# С хоста или откуда есть доступ:
scp setup-host-rustdesk.sh user@host-ip:/tmp/
ssh user@host-ip "sudo bash /tmp/setup-host-rustdesk.sh"

Вариант C: curl через временный HTTP-сервер

# На промежуточной машине:
python3 -m http.server 8080 --directory /path/to/scripts/host/

# На хосте:
curl -O http://PROMO-IP:8080/setup-host-rustdesk.sh
sudo bash setup-host-rustdesk.sh

Шаг 2: Запустить основной скрипт

sudo bash setup-host-rustdesk.sh

Скрипт должен выполниться полностью без ошибок.


Что проверить после применения

1. RustDesk ID

rustdesk --get-id

Ожидаемый результат: 9-значный номер (например, 458564614 на VPS). На хосте будет другой ID — это нормально. Главное, чтобы он не менялся после перезагрузки.

2. Конфиг защищён

lsattr /home/ИМЯПОЛЬЗОВАТЕЛЯ/.config/rustdesk/RustDesk.toml

Ожидаемый результат: флаг i (immutable), например:

---- i --------- /home/user/.config/rustdesk/RustDesk.toml

3. Сервис активен

systemctl is-active rustdesk-client-local

Ожидаемый результат: active

4. Dummy монитор работает

DISPLAY=:1 xrandr --listmonitors

Ожидаемый результат: строка с DUMMY0


Что делать, если ID всё равно меняется

Вариант 1: RustDesk не успел сгенерировать ID перед chattr

Если ID меняется, скорее всего RustDesk создал новый файл конфигурации в другом месте или перезаписал его через другой процесс.

Проверьте:

find / -name "RustDesk.toml" 2>/dev/null

Если найдено несколько — значит RustDesk использует не тот.

Правильный: /home/ИМЯПОЛЬЗОВАТЕЛЯ/.config/rustdesk/RustDesk.toml

Вариант 2: RustDesk запущен без DISPLAY

Для генерации ID RustDesk должен запуститься с GUI (даже dummy). Убедитесь, что xorg-dummy.service запущен до rustdesk-client-local:

systemctl status xorg-dummy
systemctl status rustdesk-client-local

Если xorg-dummy неактивен — RustDesk может работать в CLI-режиме и генерировать новый ID каждый раз.

Вариант 3: Файл отсутствовал при первом запуске скрипта

Если вы увидели в логе:

WARN: RustDesk.toml ОТСУТСТВУЕТ, и rustdesk --get-id не вернул ID.

Нужно:

  1. Запустить RustDesk вручную с GUI один раз (чтобы он создал конфиг)
  2. Затем применить защиту:
sudo chattr -i /home/user/.config/rustdesk/RustDesk.toml  # если уже ставили
sudo chattr +i /home/user/.config/rustdesk/RustDesk.toml  # защитить

Предупреждения

⚠️ chattr +i блокирует любую запись в файл, в том числе от RustDesk. Это цель — зафиксировать ID. Но если нужно поменять сервер или другие настройки — используйте write-rustdesk-config.sh.

⚠️ Скрипт полагается на то, что:

  • rustdesk установлен и доступен в /usr/bin/rustdesk
  • Пользователь, под которым работает GNOME, называется user (или задайте USER=... USER_HOME=... перед запуском)
  • Dummy-драйвер уже сконфигурирован (из предыдущих сессий)

⚠️ Экстренный write-скрипт:

sudo bash write-rustdesk-config.sh myusername

Он временно снимает chattr +i, перезаписывает файл и ставит защиту обратно.


Логи

Все действия основного скрипта пишутся в:

./setup-host-rustdesk.log

При возникновении проблем — приложите этот файл.