# 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 / вручную** ```bash # На VPS (где вы сейчас) # Файлы уже находятся в папке scripts/host/. Скопируйте их на USB и перенесите на хост. # Или если есть любой файловый доступ — просто перенесите. ``` **Вариант B: scp (если есть любой сетевой доступ к хосту)** ```bash # С хоста или откуда есть доступ: scp setup-host-rustdesk.sh user@host-ip:/tmp/ ssh user@host-ip "sudo bash /tmp/setup-host-rustdesk.sh" ``` **Вариант C: curl через временный HTTP-сервер** ```bash # На промежуточной машине: 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: Запустить основной скрипт ```bash sudo bash setup-host-rustdesk.sh ``` Скрипт должен выполниться полностью без ошибок. --- ## Что проверить после применения ### 1. RustDesk ID ```bash rustdesk --get-id ``` Ожидаемый результат: 9-значный номер (например, `458564614` на VPS). На хосте будет **другой** ID — это нормально. Главное, чтобы он **не менялся после перезагрузки**. ### 2. Конфиг защищён ```bash lsattr /home/ИМЯПОЛЬЗОВАТЕЛЯ/.config/rustdesk/RustDesk.toml ``` Ожидаемый результат: флаг `i` (immutable), например: ``` ---- i --------- /home/user/.config/rustdesk/RustDesk.toml ``` ### 3. Сервис активен ```bash systemctl is-active rustdesk-client-local ``` Ожидаемый результат: `active` ### 4. Dummy монитор работает ```bash DISPLAY=:1 xrandr --listmonitors ``` Ожидаемый результат: строка с `DUMMY0` --- ## Что делать, если ID всё равно меняется ### Вариант 1: RustDesk не успел сгенерировать ID перед chattr Если ID меняется, скорее всего RustDesk создал новый файл конфигурации в другом месте или перезаписал его через другой процесс. **Проверьте:** ```bash 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: ```bash 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. Затем применить защиту: ```bash 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-скрипт**: ```bash sudo bash write-rustdesk-config.sh myusername ``` Он временно снимает `chattr +i`, перезаписывает файл и ставит защиту обратно. --- ## Логи Все действия основного скрипта пишутся в: ``` ./setup-host-rustdesk.log ``` При возникновении проблем — приложите этот файл.