- Disables Wayland in GDM/SDDM/LightDM (forces Xorg) - Xorg startup with -ac (no MIT-MAGIC-COOKIE auth issues) - Xvfb fallback if Xorg dummy fails - Proper xauth cookie generation for Xorg - Detects pre-installed RustDesk and stops conflicting system service - dpkg --force-depends --force-confnew + apt-get install -f - All 8 steps: arch detect → deps → sleep disable → display detect → dummy config → virtual display → RustDesk install → config + systemd Tested on: Ubuntu 22.04 x86_64 (192.168.2.28) Fixes #7
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
Description
Languages
Shell
100%