Orchestrator 4221bd53d0 fix: install.sh — Wayland disabled, Xvfb fallback, xauth fix, fresh machine ready
- 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
2026-05-16 11:31:03 +01:00

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
RustDesk headless setup for Intel iGPU with HDMI fallback
Readme 105 KiB
Languages
Shell 100%