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

5.4 KiB
Raw Permalink Blame History

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 команда)

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 и пароль в консоль

Установка

Автоматическая (рекомендуется)

curl -fsSL https://git.softuniq.eu/NW/RDtop/raw/branch/main/install.sh | sudo bash

Ручная (клонирование + запуск)

git clone https://git.softuniq.eu/NW/RDtop.git /tmp/rdtop && cd /tmp/rdtop
sudo bash install.sh

Только dummy display (если RustDesk уже установлен)

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

Проверка после установки

# Проверить дисплей
$ 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) заархивировано в ветке:

git checkout vps-rustdesk-server

Troubleshooting

Черный экран при подключении

# Проверить что DUMMY0 primary
xrandr --verbose | grep primary
# Должно быть: DUMMY0 connected primary

# Если нет — форсировать:
xrandr --output DUMMY0 --mode "1920x1080" --primary

ID меняется после перезагрузки (хост)

sudo bash scripts/host/setup-host-rustdesk.sh
# Защитит RustDesk.toml от перезаписи (chattr +i)

RustDesk не стартует

# Проверить логи
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:

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