群晖docker部署rustdesk
RustDesk简介
RustDesk 即远程桌面软件,开箱即用,无需任何配置。完全掌控数据,不用担心安全问题。
RustDesk 硬件要求很低,最低配置的云服务器就可以了,CPU和内存要求都是最小的。
关于网络大小,如果TCP打洞直连失败,就要耗费中继流量,一个中继连接的流量在30k-3M每秒之间(1920x1080屏幕),取决于清晰度设置和画面变化。如果只是办公需求,平均在100K/s。
默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。
- 21115是hbbs用作NAT类型测试
- 21116/UDP是hbbs用作ID注册与心跳服务
- 21116/TCP是hbbs用作TCP打洞与连接服务
- 21117是hbbr用作中继服务
- 21118和21119是为了支持网页客户端。
- 如果不需要网页客户端(21118,21119)支持,对应端口可以不开。
- 总之
- TCP(21115, 21116, 21117, 21118, 21119)
- UDP(21116)
Docker CLI
sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbs -r <relay-server-ip[:port]>
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -td --net=host rustdesk/rustdesk-server hbbr
Docker Compose
- –net=host 仅适用于 Linux,它让 hbbs/hbbr 可以看到对方真实的ip, 而不是固定的容器ip (172.17.0.1)。 如果–net=host运行正常,-p选项就不起作用了, 可以去掉。
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- <hbbs_port>:21116 # 自定义 hbbs 映射端口
- <hbbs_port>:21116/udp # 自定义 hbbs 映射端口
image: rustdesk/rustdesk-server
command: hbbs -r <your_domain>:<hbbr_port> # 填入个人域名或 IP + hbbr 暴露端口
volumes:
- <mount_path>:/root # 自定义挂载目录
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: hbbr
ports:
- <hbbr_port>:21117 # 自定义 hbbr 映射端口
image: rustdesk/rustdesk-server
command: hbbr
volumes:
- <mount_path>:/root # 自定义挂载目录
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
或
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r rustdesk.example.com:21117 -k _
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
restart: always
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr -k _
volumes:
- ./data:/root
network_mode: host
restart: always
# 因為使用 docker host mode
# 以防你忘記這些端口:
# 21115 TCP NAT 類型測試
# 21116 TCP TCP 打洞
# 21116 UDP 心跳/ID 伺服器
# 21117 TCP Relay/中繼
RustDesk使用说明
ID 服务器hbbs
- 被控端+主控端
- 输入 hbbs 主机或 ip 地址:
hbbs.example.com:21116
- 另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定)
中继服务器hbbr
hbbr.example.com:21117
加密远程连接设置Key
- 用记事本打开./hbbs/id_ed25519.pub,将内容复制到中继器的KEY输入框
RustDesk客户端
rustdesk-api-server
基于Django的RustDesk Api&Web Server,除了支持api所有功能,还支持web注册、管理、展示等。
- 对于rustdesk-api-server的客户端一定要事先看下支持的客户端版本
- 当前时间github特别提醒:请使用客户端最新版本1.2.3
- https://github.com/kingmo888/rustdesk-api-server
docker cli 方式
docker run -d \
--name rustdesk-api-server \
-p 21114:21114 \
-e CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 \ #防跨域信任来源,可选
-e ID_SERVER=yourdomain.com \ #Web控制端使用的ID服务器
-v /yourpath/db:/rustdesk-api-server/db \ #修改/yourpath/db为你宿主机数据库挂载目录
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
--network bridge \
--restart unless-stopped \
ghcr.io/kingmo888/rustdesk-api-server:latest
docker-compose方式
version: "3.8"
services:
rustdesk-api-server:
container_name: rustdesk-api-server
image: ghcr.io/kingmo888/rustdesk-api-server:latest
environment:
- CSRF_TRUSTED_ORIGINS=http://yourdomain.com:21114 #防跨域信任来源,可选
- ID_SERVER=yourdomain.com #Web控制端使用的ID服务器
volumes:
- /yourpath/db:/rustdesk-api-server/db #修改/yourpath/db为你宿主机数据库挂载目录
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
network_mode: bridge
ports:
- "21114:21114"
restart: unless-stopped
环境变量
变量名 | 参考值 | 备注 |
---|---|---|
HOST |
默认 0.0.0.0 |
绑定服务的IP |
TZ |
默认 Asia/Shanghai ,可选 |
时区 |
SECRET_KEY |
可选,自定义一串随机字符 | 程序加密秘钥 |
CSRF_TRUSTED_ORIGINS |
可选,默认关闭验证; 如需开启填写你的访问地址 http://yourdomain.com:21114 如需关闭验证请删除此变量,而不是留空 |
防跨域信任来源 |
ID_SERVER |
可选,默认为和API服务器同主机。 可自定义如 yourdomain.com |
Web控制端使用的ID服务器 |
DEBUG |
可选,默认 False |
调试模式 |
ALLOW_REGISTRATION |
可选,默认 True |
是否允许新用户注册 |
数据库配置 | -- 开始 -- | 若不使用MYSQL则以下皆无需配置 |
DATABASE_TYPE |
可选,默认 SQLITE3 |
数据库类型(SQLITE/MYSQL) |
MYSQL_DBNAME |
可选,默认 - |
MYSQL数据库名 |
MYSQL_HOST |
可选,默认 127.0.0.1 |
MYSQL数据库的服务器IP |
MYSQL_USER |
可选,默认 - |
MYSQL数据库的用户名 |
MYSQL_PASSWORD |
可选,默认 - |
MYSQL数据库的密码 |
MYSQL_PORT |
可选,默认 3306 |
MYSQL数据库端口 |
数据库配置 | -- 结束 -- | 查看【sqlite3迁移mysql教程】 |
LANGUAGE_CODE |
可选,默认 zh-hans |
语言,支持中文(zh-hans )、英语(en ) |
使用说明
-
管理员设置
当数据库中不存在账户时,第一个注册的账户直接获取超级管理员权限,之后注册账户为普通账户。
-
设备信息
经测试,客户端会在非绿色版模式下,安装为服务的模式中,定时发送设备信息到api接口,所以如果想要设备信息,需要安装rustdesk客户端并启动服务。
-
连接速度慢
新版本Key模式链接速度慢,可以在服务端启动服务时,不要带参数的-k,此时,客户端也不能配置key。
-
Web控制端配置
- 设置ID_SERVER环境变量,或修改rustdesk_server_api/settings.py文件中ID_SERVER配置项,将ID服务器/中继服务器IP或域名填上。
-
Web控制端一直转圈
-
检查ID服务器填写是否正确
-
Web控制端目前仅支持非SSL模式,若webui为https访问,请将s去掉,否则ws连不上一直转圈。如:https://domain.com/webui,改为http://domain.com/webui
-
-
后台操作登录或登出时:CSRF验证失败. 请求被中断.
这种操作大概率是docker配置+nginx反代+SSL的组合,要注意修改CSRF_TRUSTED_ORIGINS,如果是ssl那就是https开头,否则就是http。
RustDesk参考文献
- https://rustdesk.com/docs/zh-cn/self-host/
- https://rustdesk.com/docs/zh-tw/self-host/rustdesk-server-oss/synology/dsm-7/
- https://github.com/rustdesk/rustdesk/
- https://github.com/kingmo888/rustdesk-api-server
是不是感觉很麻烦~~~那就来个大综合~~自行修改里面的域名/ip/端口
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: rustdesk-hbbs
ports:
- 21115:21115
- 21116:21116 # 自定义 hbbs 映射端口
- 21116:21116/udp # 自定义 hbbs 映射端口
image: rustdesk/rustdesk-server
command: hbbs -r rustdesk.example.com:21116 # 填入个人域名或 IP + hbbr 暴露端口
volumes:
- ./hbbs:/root # 自定义挂载目录
networks:
- rustdesk-net
depends_on:
- hbbr
- api-server
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
hbbr:
container_name: rustdesk-hbbr
ports:
- 21117:21117 # 自定义 hbbr 映射端口
image: rustdesk/rustdesk-server
command: hbbr
volumes:
- ./hbbr:/root # 自定义挂载目录
networks:
- rustdesk-net
restart: unless-stopped
deploy:
resources:
limits:
memory: 64M
api-server:
container_name: rustdesk-api-server
ports:
- 21114:21114 # 自定义 rustdesk-api-server 映射端口
image: ghcr.io/kingmo888/rustdesk-api-server:latest
environment:
- CSRF_TRUSTED_ORIGINS=http://rustdesk.example.com:21114 #防跨域信任来源,可选
- ID_SERVER=rustdesk.example.com #Web控制端使用的ID服务器
- SECRET_KEY=vXM%yDY!FgFk6mX!FGcuZT # 程序加密秘钥
- ALLOW_REGISTRATION=False # 是否允许新用户注册 默认 True
volumes:
- ./api-server/db:/rustdesk-api-server/db #修改/yourpath/db为你宿主机数据库挂载目录
- ./api-server/timezone:/etc/timezone:ro
- ./api-server/localtime:/etc/localtime:ro
networks:
- rustdesk-net
restart: unless-stopped
共有 0 条评论