搭建RustDesk(API版)远程服务全过程
很多远程软件刚开始比较好用,过个一年半载就各种限速/限时/画质变差。因此利用开源项目rustdesk搭建自己的远程服务。
由于官方定价较贵(10美元/月),这里使用第三方api。目的是:
1.防止别人得知rustdesk服务器地址与密钥后滥用,如果要使用必须登录;
2.支持web远程、地址簿、用户管理等功能。
编辑docker-compose
以下为完整代码:
services:
rustdesk:
image: lejianwen/rustdesk-server-s6:latest
container_name: rustdesk-server
ports:
- "21114:21114" # 注意:所有端口必须加引号
- "21115:21115"
- "21116:21116" # TCP端口
- "21116:21116/udp" # UDP端口
- "21117:21117"
- "21118:21118"
- "21119:21119"
environment:
- RELAY=【你的域名或IP】:21117 # 默认的中继服务器
- ENCRYPTED_ONLY=1
- MUST_LOGIN=Y # 是否强制登陆
- TZ=Asia/Shanghai # 时区
- RUSTDESK_API_LANG=en,zh-CN # 语言
- RUSTDESK_API_APP_WEB_CLIENT=1 # 是否启用web-client;1启用,0不启用;默认1
- RUSTDESK_API_APP_REGISTER=TRUE # 是否启用注册;true启用,false不启用;默认false
- RUSTDESK_API_APP_SHOW_SWAGGER=1 # 是否显示swagger文档;1显示,0不显示;默认0
- RUSTDESK_API_APP_TOKEN_EXPIRE=168h # token有效时长
- RUSTDESK_API_APP_DISABLE_PWD_LOGIN=FALSE # 是否禁用密码登录;true禁用,false不禁用;默认false
- RUSTDESK_API_APP_REGISTER_STATUS=2 # 注册用户默认状态;1启用,2禁用;默认1
- RUSTDESK_API_APP_CAPTCHA_THRESHOLD=1 # 验证码触发次数;-1不启用,0一直启用,>0登录错误次数后启用;默认3
- RUSTDESK_API_APP_BAN_THRESHOLD=5 # 封禁IP触发次数;0不启用,>0登录错误次数后封禁IP;默认0
# - RUSTDESK_API_ADMIN_TITLE=RustDesk Api Admin # 后台标题
# - RUSTDESK_API_ADMIN_HELLO= # 后台欢迎语,可以使用html
# - RUSTDESK_API_ADMIN_HELLO_FILE=./hello.html # 后台欢迎语文件,如果内容多,使用文件更方便。会覆盖RUSTDESK_API_ADMIN_HELLO
# - RUSTDESK_API_GIN_TRUST_PROXY=192.168.1.0 # 信任的代理IP列表,以,分割;默认信任所有
- RUSTDESK_API_GORM_TYPE=sqlite # 数据库类型;sqlite,mysql;默认sqlite
- RUSTDESK_API_GORM_MAX_IDLE_CONNS=10 # 数据库最大空闲连接数
- RUSTDESK_API_GORM_MAX_OPEN_CONNS=100 # 数据库最大打开连接数
- RUSTDESK_API_RUSTDESK_PERSONAL=1 # 是否启用个人版API;1启用,0不启用;默认1
# - RUSTDESK_API_MYSQL_USERNAME=root # mysql用户名
# - RUSTDESK_API_MYSQL_PASSWORD=123456 # mysql密码
# - RUSTDESK_API_MYSQL_ADDR=127.0.0.1:3306 # mysql地址
# - RUSTDESK_API_MYSQL_DBNAME=rustdesk # mysql数据库名
- RUSTDESK_API_RUSTDESK_ID_SERVER=【你的域名或IP】:21116 # Rustdesk的id服务器地址
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=【你的域名或IP】:21117 # Rustdesk的relay服务器地址
- RUSTDESK_API_RUSTDESK_API_SERVER=【反向代理地址】 # Rustdesk的api服务器地址
- RUSTDESK_API_RUSTDESK_WS_HOST=【反向代理地址】 # 自定义Websocket Host
# - RUSTDESK_API_RUSTDESK_KEY= # Rustdesk的key
# - RUSTDESK_API_RUSTDESK_KEY_FILE=./data/id_ed25519.pub # Rustdesk存放key的文件
# - RUSTDESK_API_RUSTDESK_WEBCLIENT MAGICQUERYONLINE=0 # Webclientv2中是否启用新的在线状态查询方法;1启用,0不启用;默认0
# - RUSTDESK_API_RUSTDESK_WS_HOST=wss://192.168.1.123:1234 # 自定义WebsocketHost
# - RUSTDESK_API_PROXY_ENABLE=FALSE # 是否启用代理;true启用,false不启用;默认false
# - RUSTDESK_API_PROXY_HOST=http://127.0.0.1:1080 # 代理地址
# - RUSTDESK_API_JWT_KEY=huyanhao= # 自定义JWTKEY,为空则不启用JWT。如果没使用lejianwen/rustdesk-server中的MUST_LOGIN,建议设置为空
# - RUSTDESK_API_JWT_EXPIRE_DURATION=168h # JWT有效时间
volumes:
- ./data:/data
- ./data/api:/app/data # sqlite数据库文件挂载,为mysql时可以不配置
restart: unless-stopped
network_mode: bridge配置DDNS与web-api相关的反向代理
DDNS与域名配置ssl证书不再赘述。
【你的域名:端口】 → http://127.0.0.1:21114
【你的域名:端口】/ws/id → http://127.0.0.1:21118/ws/id
【你的域名:端口】/ws/relay → http://127.0.0.1:21119/ws/relay
以lucky为例:

效果如图:
注意:如果反向代理服务器与rustdesk服务器在同一主机,填写127.0.0.1,否则填写rustdesk服务器所在IP。
配置RustDesk客户端
由于rustdesk本质是靠IP进行识别,所以ID服务器填写任何能指向IP地址的域名都可以(当然包括IPv4与IPv6),例如:
若服务器在NAT环境下,还需要在光猫/路由器中配置一下端口转发,一般在虚拟服务器设置中。另外注意:IPv6需要在光猫中设置放行21116、21117端口以及你的反代端口,方法在之前的文章中有提到。如果不想放行这些端口,需要自行配置反向代理,然后在网络设置中填写你反代的域名,其中,21116端口对应ID服务器(注意tcp/udp都需要),21117端口对应中继服务器
登录使用
使用你刚才配置的反向代理地址打开后台,如https://【你的域名:端口】
默认登录账号:admin,密码在日志中查找 Admin Password Is: 后的字符。
强烈建议创建一个新账号,禁用初始管理员账号。