2小时前
|
|
|
目标: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!
🫵 来啊,说点有用的废话!
▲