# 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