- 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
5.9 KiB
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.
Нужно:
- Запустить RustDesk вручную с GUI один раз (чтобы он создал конфиг)
- Затем применить защиту:
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
При возникновении проблем — приложите этот файл.