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
This commit is contained in:
Orchestrator
2026-05-16 00:16:14 +01:00
parent 32451eb0f8
commit 43e7b30f41
6 changed files with 425 additions and 0 deletions

146
scripts/host/README-host.md Normal file
View File

@@ -0,0 +1,146 @@
# 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
```
При возникновении проблем — приложите этот файл.