zhulink logo
自动夜间模式 日间模式 夜间模式
侧栏
0

零成本自建 RustDesk 远程控制平台 —— 单容器 80 MB 内存方案

意外富翁的头像
|
|
|
目标:10 分钟搭好「打开浏览器就能看所有机器」的 RustDesk 私有中继,全开源、零授权费,内存占用 ≈ 40 MB,日志 ≤ 10 MB,适用于 256 MB 小 VPS / NAS / 树莓派。 --- ## 一、为什么选「单容器 All-in-One」 1. 官方社区版免费,但**无 Web 设备列表** 2. 第三方 Django 面板功能全,镜像 200 MB+ 3. lejianwen/rustdesk-api:full-s6 ([RustDesk API](https://github.com/lejianwen/rustdesk-api)) - 把 hbbs / hbbr / Web 控制台打进同一个 alpine 镜像 - 体积 88 MB,常驻 30-40 MB,s6-overlay 保活 - 支持浏览器直连、设备分组、OIDC(可选) - 一条 `docker-compose up -d` 即可,维护最省心 --- ## 二、准备 - 一台能上网的 Linux 主机(Debian / Ubuntu / CentOS 均可) - 已安装 Docker & Docker-Compose(v2.0+) - 开放端口:21114-21119 tcp **+** 21116 udp | 端口 | 作用 | |----|----| | 21114 | Web 控制台 / API | | 21115 | NAT 类型检测 | | 21116 tcp/udp | ID 注册与心跳 | | 21117 | 中继数据 | | 21118 | Web 客户端(浏览器直接远控) | | 21119 | 中继 WebSocket | --- ## 三、一键 Compose 文件 把下面内容保存为 `docker-compose.yml`: ```yaml version: '3.8' networks: rustdesk-net: external: false services: rustdesk: image: lejianwen/rustdesk-api:full-s6 container_name: rustdesk ports: # 需要哪些开哪些 - 21114:21114 - 21115:21115 - 21116:21116/tcp - 21116:21116/udp - 21117:21117 - 21118:21118 - 21119:21119 environment: # ❗️把 192.168.1.100 换成你主机的公网 IP 或域名 RELAY: 192.168.1.100:21117 RUSTDESK_API_RUSTDESK_ID_SERVER: 192.168.1.100:21116 RUSTDESK_API_RUSTDESK_RELAY_SERVER: 192.168.1.100:21117 RUSTDESK_API_RUSTDESK_API_SERVER: http://192.168.1.100:21114 ENCRYPTED_ONLY: 1 # 强制加密,0 可关闭 TZ: Asia/Shanghai volumes: - ./rustdesk-data/server:/data # 存放 key - ./rustdesk-data/server:/app/conf/data # API 读 key - ./rustdesk-data/api:/app/data # sqlite + 上传 networks: - rustdesk-net restart: unless-stopped mem_limit: 96m # 实测 40 MB 左右,给 96 MB 安全 logging: driver: json-file options: max-size: 5m # 单个文件 5 MB max-file: "2" # 最多 2 个,合计 ≤ 10 MB ``` --- ## 四、启动 ```bash # 1. 创建目录 mkdir -p rustdesk-data/server rustdesk-data/api # 2. 拉起容器 docker compose up -d # 3. 看日志 docker compose logs -f ``` 首次启动会在 `./rustdesk-data/server` 生成 `id_ed25519` / `id_ed25519.pub`,这就是 RustDesk 的公钥;**保存好 `id_ed25519`(私钥)**,以后客户端连接需要。 --- ## 五、Web 1. 浏览器访问 `http://<你的IP>:21114` 2. 初次安装管理员为用户名为 admin,密码将在控制台打印,可以通过[命令行](https://github.com/lejianwen/rustdesk-api#CLI)更改密码 3. 登录后即进入「设备」页面,目前为空。 --- ## 六、客户端配置(Windows / macOS / Linux / Android 同理) | 字段 | 值 | |----|----| | ID 服务器 | `<你的IP>:21116` | | 中继服务器 | `<你的IP>:21117` | | API 服务器 | `http://<你的IP>:21114` | | Key | 把 `rustdesk-data/server/id_ed25519.pub` 内容复制进去(可选,强制加密时必须) | 填写后点击右上角「登录」→ 用刚才的管理员账号登录 → 当前设备自动出现在 Web 列表。 以后所有**登录同一账号**的机器都会实时同步到「设备」页,实现「打开浏览器就能看到全部机器」。 --- ## 七、常用运维命令 ```bash # 查看实时资源 docker stats rustdesk # 重启服务 docker compose restart # 升级镜像 docker compose pull && docker compose up -d # 备份 key + 数据库 tar -zcf rustdesk-backup-$(date +%F).tar.gz rustdesk-data/ ``` --- ## 八、HTTPS(可选) 宿主机装 Nginx,申请 Let's Encrypt 证书,反向代理 21114 即可。 镜像已识别 `X-Forwarded-Proto`,无需额外配置。 --- ## 九、内存 & 磁盘占用实测 | 项目 | 数值 | |----|----| | 镜像大小 | 88 MB | | 常驻内存 | 30-40 MB | | 日志上限 | 10 MB | | SQLite | < 1 MB(1000 台设备以内) | 256 MB 小 VPS 也能轻松跑满带宽。 --- ## 十、常见问题速查 1. **客户端登录后设备不显示** → 确认客户端「API 服务器」填的是 `http://<IP>:21114` 且登录账号与 Web 一致。 2. **Web 打不开 / 无限加载** → 检查 21114 是否放行;看日志 `docker logs rustdesk`。 3. **中继连不上** → 21116 tcp+udp、21117 tcp 必须放行;确认 RELAY 环境变量里的 IP 是公网地址。 --- ## 十一、总结 - **单容器** = hbbs + hbbr + Web 控制台,升级、备份、迁移都只要拷一个文件夹 - **全开源** → 零授权费,商业用途也放心 - **40 MB 内存 + 10 MB 日志** → 小主机、NAS、树莓派零压力 把 `docker-compose up -d` 敲下去,10 分钟后你就能随时随地「打开浏览器 → 登录 → 一键远程」,Enjoy!

  

🫵 来啊,说点有用的废话!