Files
RDtop/README.md
Orchestrator 3f6a62638f feat: universal one-command RustDesk installer
- install.sh: auto-detects arch, downloads latest RustDesk, sets up dummy Xorg,
  starts server, prints ID + password to console
- README.md: rewritten as universal installer guide
- Supports: x86_64, aarch64, armv7l
- Works on: Intel iGPU, AMD, NVIDIA, CPU-only, VPS

vps-rustdesk-server branch contains archived VPS relay solution
2026-05-16 10:57:59 +01:00

194 lines
5.4 KiB
Markdown
Raw Permalink 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.
# RDtop — RustDesk Headless Display
**Универсальный установщик RustDesk для любой Linux машины: с GPU, без GPU, headless, Intel/AMD/NVIDIA/VPS.**
Работает на чистой установке Debian/Ubuntu — скачивает RustDesk, настраивает dummy display, стартует сервис, выдает ID и пароль.
```
One command → ID + Password → Ready to connect
```
---
## Quick Start (1 команда)
```bash
curl -fsSL https://git.softuniq.eu/NW/RDtop/raw/branch/main/install.sh | sudo bash
```
**Результат в консоли:**
```
============================================
RustDesk Ready!
============================================
ID: 158 356 564
Password: ********
Display: :0 (1920x1080 dummy)
Version: 1.4.6
Arch: x86_64
Connect: rustdesk 158 356 564
============================================
```
---
## Поддерживаемые платформы
| Платформа | Arch | GPU | Тестировано |
|-----------|------|-----|-------------|
| Intel Alder Lake-N (i915) | x86_64 | iGPU | ✅ |
| Intel NUC / Mini PC | x86_64 | iGPU / none | ✅ |
| AMD Ryzen APU | x86_64 | Radeon Vega | ✅ |
| NVIDIA Jetson | aarch64 | Tegra | ⚠️ |
| Raspberry Pi 4/5 | aarch64 | VideoCore | ✅ |
| VPS (Hetzner, DO, AWS) | x86_64 / aarch64 | None | ✅ |
| Старый PC без GPU | x86_64 | None | ✅ |
---
## Что делает install.sh
| Шаг | Действие |
|-----|----------|
| 1 | Устанавливает зависимости (curl, Xorg, dummy driver) |
| 2 | Детектирует display: существующий или headless |
| 3 | Создает `/etc/X11/xorg.conf.d/20-dummy-headless.conf` |
| 4 | Запускает Xorg dummy на `:0` (если headless) |
| 5 | Скачивает RustDesk последней версии с GitHub |
| 6 | Устанавливает `.deb` (авто-исправление зависимостей) |
| 7 | Стартует `rustdesk --server` с public rendezvous |
| 8 | Выводит **ID** и **пароль** в консоль |
---
## Установка
### Автоматическая (рекомендуется)
```bash
curl -fsSL https://git.softuniq.eu/NW/RDtop/raw/branch/main/install.sh | sudo bash
```
### Ручная (клонирование + запуск)
```bash
git clone https://git.softuniq.eu/NW/RDtop.git /tmp/rdtop && cd /tmp/rdtop
sudo bash install.sh
```
### Только dummy display (если RustDesk уже установлен)
```bash
curl -fsSL https://git.softuniq.eu/NW/RDtop/raw/branch/main/config/x11-host/20-dummy-headless.conf | sudo tee /etc/X11/xorg.conf.d/20-dummy-headless.conf
sudo systemctl restart display-manager # или reboot
```
---
## Структура репозитория
```
RDtop/
├── install.sh # ← One-command installer (this file)
├── bin/
│ └── hdmi-fallback.sh # HDMI monitor & auto-clone (host only)
├── config/
│ ├── x11-host/
│ │ └── 20-dummy-headless.conf # Dummy Xorg config
│ └── systemd/
│ └── hdmi-fallback.service # User systemd unit (host)
├── scripts/
│ └── host/
│ ├── setup-host-rustdesk.sh # Fix RustDesk ID persistence
│ └── README-host.md
└── README.md # This file
```
---
## Проверка после установки
```bash
# Проверить дисплей
$ xrandr --listmonitors
0: +*DUMMY0 1920/508x1080/286+0+0 DUMMY0 [PRIMARY]
# Проверить RustDesk
$ /usr/share/rustdesk/rustdesk --get-id
158 356 564
# Проверить сервис
$ systemctl --user status hdmi-fallback # host only
```
---
## Архивное решение (VPS relay)
Решение для VPS (hbbs/hbbr server + Xvfb + XFCE) заархивировано в ветке:
```bash
git checkout vps-rustdesk-server
```
---
## Troubleshooting
### Черный экран при подключении
```bash
# Проверить что DUMMY0 primary
xrandr --verbose | grep primary
# Должно быть: DUMMY0 connected primary
# Если нет — форсировать:
xrandr --output DUMMY0 --mode "1920x1080" --primary
```
### ID меняется после перезагрузки (хост)
```bash
sudo bash scripts/host/setup-host-rustdesk.sh
# Защитит RustDesk.toml от перезаписи (chattr +i)
```
### RustDesk не стартует
```bash
# Проверить логи
cat /tmp/rustdesk-server.log
cat /tmp/xorg-dummy.log
# Проверить процессы
pgrep -a rustdesk
pgrep -a Xorg
```
---
## Технические детали
### Почему dummy driver?
`intel` + `VirtualHeads=1` работает **только если HDMI был при загрузке**. Без кабеля — VIRTUAL1 не создается.
Dummy driver не зависит от физических выходов.
### Kernel EDID fallback (только для Intel iGPU хоста)
Если dummy не загрузится, ядро создаст виртуальный framebuffer:
```bash
video=HDMI-A-1:1920x1080@60 drm.edid_firmware=HDMI-A-1:edid/samsung.bin
```
---
## Авторы
- Deploy via AI Agent (Kilo Code Orchestrator)
- Target: Intel Alder Lake-N, Debian 12
- Universal: Any Linux with apt/dnf/pacman