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

147 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
При возникновении проблем — приложите этот файл.