两端必须处于同一局域网、私有路由网络或 VPN 内,不提供公网会合与中继;默认监听 TCP 21118,需在主机防火墙放行;从源码构建需先装 Rust、Flutter 及平台原生依赖,且必须带 --recurse-submodules 克隆。
git clone --recurse-submodules https://github.com/zibo-chen/SubnetDesk.git
cd SubnetDesk
./build.py --flutter --hwcodecREADME 未说明显存或 CPU 要求;支持 Windows x64/ARM64、macOS Intel/Apple Silicon、Linux x86_64/ARM64、Android 多架构。
基于 RustDesk 的局域网远程桌面,去掉公网 ID 与中继,直连 IP 或主机名
基于 RustDesk 改造的局域网远程桌面,通过 mDNS 自动发现内网设备,无需公网和 VPN 即可直连,适合家庭实验室和注重隐私的自托管场景。
核心能力
- 通过 mDNS 自动发现同一局域网内的设备
- 按 IP 或主机名加可配置 TCP 端口直连
- 用 Argon2id 哈希存储密码做访问认证
- 首次连接校验并记住设备指纹
- 用 CIDR 白名单限制可接入的来源网段
容易踩的坑
- v2.0.0-rc.2SubnetDesk 2.0.0-rc.2pre-release2026-11-02 · 2026-11-02 06:07 UTC
查看更新说明
请根据操作系统和 CPU 架构选择安装包。
Windows x64 默认下载(兼容 Win7 SP1 及以上): 绿色版 ZIP · 安装版 EXE
架构 Windows macOS Linux Android iOS x86-64 (64 位) 推荐绿色版 · Win7+ · 推荐安装版 · Win7+ · 绿色版 · Win10+ · 自解压版 · Win10+ · MSI · Win10+ DMG Arch · RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — AArch64 / ARM64 绿色版 · 自解压版 · Win10+ · MSI · Win10+ DMG RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — ARMv7 (32 位) — — — APK — 通用包 — — — APK — - 普通 Intel / AMD 电脑请选择 x86-64。
- Windows on ARM、Apple Silicon 或 ARM Linux 请选择 ARM64。
- Android 不确定架构时优先选择 通用包。
Full Changelog: https://github.com/zibo-chen/SubnetDesk/compare/v2.0.0-rc.1...v2.0.0-rc.2
- v2.0.0-rc.1SubnetDesk 2.0.0-rc.1pre-release2026-10-31 · 2026-10-31 19:05 UTC
查看更新说明
请根据操作系统和 CPU 架构选择安装包。
Windows x64 默认下载(兼容 Win7 SP1 及以上): 绿色版 ZIP · 安装版 EXE
架构 Windows macOS Linux Android iOS x86-64 (64 位) 推荐绿色版 · Win7+ · 推荐安装版 · Win7+ · 绿色版 · Win10+ · 自解压版 · Win10+ · MSI · Win10+ DMG Arch · RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — AArch64 / ARM64 绿色版 · 自解压版 · Win10+ · MSI · Win10+ DMG RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — ARMv7 (32 位) — — — APK — 通用包 — — — APK — - 普通 Intel / AMD 电脑请选择 x86-64。
- Windows on ARM、Apple Silicon 或 ARM Linux 请选择 ARM64。
- Android 不确定架构时优先选择 通用包。
What's Changed
- feat: DRM/KMS unattended Wayland capture (remote access to locked/login screens) by @mattcarvercom in https://github.com/zibo-chen/SubnetDesk/pull/42
- Port the post-divergence RustDesk improvements (security, Wayland/DRM, connection robustness) + client-side view rotation for hardware-rotated panels by @mattcarvercom in https:/
- win7-test-20261008SubnetDesk Win7 测试版 — win7-test-20261008pre-release2026-10-08 · 2026-10-08 15:31 UTC
查看更新说明
这是 SubnetDesk 的 Win7 Sciter 测试版,提供 x64 和 x86 两种架构。
使用 Rust 1.90 nightly 和专用 Win7 target,复用当前 LAN 后端。首页、LAN 设置和账号/身份管理已按 Flutter 界面调整。
下载:
- win7-x64.exe / win7-x86.exe:便携启动器。
- win7-x64.zip / win7-x86.zip:包含主程序、服务、Sciter DLL 和第三方许可。解压后运行 rustdesk.exe。
- imports.json:PE 导入检查报告。
- SHA256SUMS.txt:下载文件校验值。
两个架构均由本次 GitHub Actions 从同一提交构建。原生依赖、主程序、服务及便携启动器编译,Sciter ABI 冒烟、主程序启动和 PE 检查通过。
这是测试版:尚未完成 Win7 SP1 实机、完整远程会话、服务安装/卸载和便携解包验收。远程工具栏、文件传输及连接管理器尚未完成与 Flutter 的完整对齐。 欢迎反馈系统版本、架构、复现步骤及日志。
构建记录:https://github.com/zibo-chen/SubnetDesk/actions/runs/37796276312 源码提交:fa5726be35e7182395ed785ddff326525ce121b5
- v1.3.0最新正式版2026-08-27 · 2026-08-27 16:33 UTC
请根据操作系统和 CPU 架构选择安装包。
架构 Windows macOS Linux Android iOS x86-64 (64 位) EXE · MSI DMG Arch · RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — AArch64 / ARM64 EXE · MSI DMG RPM (SUSE) · RPM · AppImage · DEB · FLATPAK APK — ARMv7 (32 位) — — — APK — 通用包 — — — APK — - 普通 Intel / AMD 电脑请选择 x86-64。
- Windows on ARM、Apple Silicon 或 ARM Linux 请选择 ARM64。
- Android 不确定架构时优先选择 通用包。
- nightlySubnetDesk Nightlypre-release2026-07-17 · 2026-07-17 01:06 UTC
查看更新说明
⚠️ Nightly 是主分支自动构建的测试版本,仅保留最新一次构建产物。
Windows x64 默认下载(兼容 Win7 SP1 及以上): 绿色版 ZIP · 安装版 EXE
架构 Windows macOS Linux Android iOS x86-64 (64 位) 推荐绿色版 · Win7+ · 推荐安装版 · Win7+ · 绿色版 · Win10+ · 自解压版 · Win10+ · MSI · Win10+ DMG Arch · RPM (SUSE) · RPM · AppImage · DEB · FLATPAK — — AArch64 / ARM64 绿色版 · 自解压版 · Win10+ · MSI · Win10+ DMG RPM (SUSE) · RPM · AppImage · DEB · FLATPAK — — ARMv7 (32 位) — — — — — 通用包 — — — — — - 普通 Intel / AMD 电脑请选择 x86-64。
- Windows on ARM、Apple Silicon 或 ARM Linux 请选择 ARM64。
- Android 不确定架构时优先选择 通用包。
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
SubnetDesk
💡 Why SubnetDesk
SubnetDesk focuses on one clear use case: remote control between devices that can already reach each other. It removes the public device-ID, rendezvous, relay, cloud account, proxy, and automatic public-update paths from RustDesk, replacing them with direct endpoint connections and local device discovery.
That makes it a good fit for home labs, offices, classrooms, on-site support, and private networks connected by WireGuard, Tailscale, OpenVPN, or another VPN.
| SubnetDesk | Typical RustDesk deployment | |
|---|---|---|
| Connection | Direct IP address or hostname | Device ID through rendezvous, with optional relay |
| Discovery | Automatic mDNS discovery on the LAN | Device ID or address book |
| Server dependency | No coordination server required | Public or self-hosted rendezvous/relay server |
| Best suited for | LANs, routed private networks, and VPNs | Internet and cross-NAT access |
[!IMPORTANT] SubnetDesk does not provide Internet rendezvous or relay services. The two devices must be reachable through the same LAN, a routed private network, or a VPN.
Version 2.0.0 ships the regular Linux packages. Publication of the separate DRM unattended/login-screen package is paused while its root service is adapted to the new user-session runtime.
✨ Features
| Capability | Details | |
|---|---|---|
| 🔎 | Local discovery | Find nearby devices automatically over mDNS. |
| ⚡ | Direct connections | Connect by IP address or hostname using a configurable TCP port. |
| 🔐 | Access protection | Authenticate with a username and password; passwords are stored as Argon2id hashes. |
| 🛡️ | Device verification | Verify and remember endpoint fingerprints before trusting a device. |
| 🌐 | Network allowlist | Restrict incoming connections to selected CIDR networks. |
| ⭐ | Fast reconnection | Keep recent devices, favorites, and stable device identities. |
| 🖥️ | RustDesk experience | Retain remote control, clipboard, audio, and file-transfer capabilities without a public coordination server. |
📦 Download
Download stable packages from GitHub Releases. For the newest changes, use the nightly release or artifacts from GitHub Actions.
| Platform | Architectures | Packages |
|---|---|---|
| Windows | x86_64, ARM64 | .msi installer (recommended), portable/no-install .exe |
| macOS | Intel, Apple Silicon | .dmg |
| Linux | x86_64, ARM64 | .deb, .rpm, .AppImage, .flatpak; Arch package on x86_64 |
| Android | ARM64, ARMv7, x86_64, universal | .apk |
[!NOTE] Nightly packages are development builds. Prefer the latest stable release for daily use.
🚀 Quick start
- Install and open SubnetDesk on both devices.
- On the controlled device, open LAN settings, set a username and password, and enable LAN discovery. The default port is
21118. - On the controller, select a discovered device or enter
hostname:port/IP:portmanually. - Verify the device fingerprint on first connection, then connect.
Network checklist
- Both devices can route to each other.
- TCP port
21118(or your configured port) is allowed by the host firewall. - mDNS is available when automatic discovery is needed; direct address entry still works without it.
- The controlled device's CIDR allowlist includes the controller's network.
- On Linux, see host readiness notes for SELinux, Wayland, and login-screen guidance.
🔒 Security model
- Traffic stays on the network path between your devices; SubnetDesk does not require a public coordination service.
- Passwords are persisted as Argon2id hashes rather than plaintext.
- Device fingerprints provide trust-on-first-use verification and help detect an unexpected endpoint identity change.
- CIDR allowlists let the controlled device limit which source networks may connect.
As with any remote-control software, expose the listening port only to trusted networks, use a strong unique password, and verify fingerprints through a separate trusted channel when possible.
See the SubnetDesk Privacy Policy for session data, local storage, update requests, and deletion controls.
🛠️ Build from source
Clone the repository with its submodules, then run the Flutter desktop build:
git clone --recurse-submodules https://github.com/zibo-chen/SubnetDesk.git
cd SubnetDesk
./build.py --flutter --hwcodec
The build requires Rust, Flutter, and platform-specific native dependencies. The native package workflow is the source of truth for pinned tool versions, target architectures, and packaging steps.
🤝 Contributing
Bug reports, feature ideas, and pull requests are welcome. Before opening a change, check the existing issues and keep changes focused on the LAN/VPN-first product scope.
💬 Community
🙏 Credits and license
SubnetDesk is based on RustDesk and retains its open-source foundations. SubnetDesk is an independent project and is not an official RustDesk release.
Licensed under the GNU Affero General Public License v3.0. Use remote-control software only on systems you own or are authorized to administer.