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:
146
scripts/host/README-host.md
Normal file
146
scripts/host/README-host.md
Normal 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
|
||||
```
|
||||
|
||||
При возникновении проблем — приложите этот файл.
|
||||
Reference in New Issue
Block a user