- 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
147 lines
5.9 KiB
Markdown
147 lines
5.9 KiB
Markdown
# 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
|
||
```
|
||
|
||
При возникновении проблем — приложите этот файл.
|