自建Rustdesk server+api
文件结构
rustdesk/
├── db/ #存放数据库
│ ├── db_v2.sqlite3
│ └── ...
├── secrets/ #key
│ ├── id_ed25519
│ └── id_ed25519.pub
└── docker-compose.yml
运行容器
需完成后面的反代才能使用全域名访问
本文以域名
rustdesk.xxxx.com为例
mkdir -p /root/data/docker_data/rustdesk/ && cd /root/data/docker_data/rustdesk/ && mkdir db secrets && vim docker-compose.yml
docker-compose.yml
networks:
rustdesk-net:
external: false
services:
rustdesk:
image: lejianwen/rustdesk-server-s6:latest
container_name: rustdesk
environment:
- RELAY=rustdesk.xxxx.com
- ENCRYPTED_ONLY=1
- MUST_LOGIN=N #是否必须登录
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=rustdesk.xxxx.com #21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=rustdesk.xxxx.com #21117
- RUSTDESK_API_RUSTDESK_API_SERVER=rustdesk.xxxx.com #21114
- RUSTDESK_API_JWT_KEY=xxxxxxxxxxxxx # jwt key
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
volumes:
- ./db:/app/data #将数据库挂载
networks:
- rustdesk-net
restart: unless-stopped
secrets:
- key_pub
- key_priv
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
secrets:
key_pub:
file: secrets/id_ed25519.pub
key_priv:
file: secrets/id_ed25519
修改管理员密码
docker exec -it rustdesk /bin/sh ./apimain reset-admin-pwd {admin_password}
URL
需完成后面的反代才能使用全域名访问
- 网页管理端:
https://rustdesk.xxxx.com/_admin/- 网页远程:
https://rustdesk.xxxx.com/webclient2/- id服务器、中继服务器:
rustdesk.xxxx.com- api服务器:
https://rustdesk.xxxx.com
反代示例
以nginx为例
宝塔、1panel可以照抄
server {
server_name rustdesk.xxxx.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:21114/;
}
location /ws/id {
proxy_pass http://127.0.0.1:21118;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
}
location /ws/relay {
proxy_pass http://127.0.0.1:21119;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
}
listen 443 ssl ;
ssl_certificate /www/sites/rustdesk.xxxx.com/ssl/fullchain.pem;
ssl_certificate_key /www/sites/rustdesk.xxxx.com/ssl/privkey.pem;
server {
if ($host = rustdesk.xxxx.com) {
return 301 https://$host$request_uri;
}
server_name rustdesk.xxxx.com;
listen 80 ;
return 404;
}
客户端编译
可以使用https://r.vumstar.com/小工具完成大部分内容
- 子模块太难搞
- 不会修改隐藏被控端弹窗
打开网页记得关静音!!!!!!
需要使用
GitHub 访问令牌(token),存在一定风险,也不需要开很多权限建议
- 使用新号、小号
- token用完即删除
补充:
删除客户端广告提示
仓库主目录,修改flutter\lib\desktop\pages\connection_page.dart
81-110行原代码
setupServerWidget() => Flexible(
child: Offstage(
offstage: !(!_svcStopped.value &&
stateGlobal.svcStatus.value == SvcStatus.ready &&
_svcIsUsingPublicServer.value),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(', ', style: TextStyle(fontSize: em)),
Flexible(
child: InkWell(
onTap: onUsePublicServerGuide,
child: Row(
children: [
Flexible(
child: Text(
translate('setup_server_tip'),
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: em),
),
),
],
),
),
)
],
),
),
);
81-110行代码替换如下:
Widget setupServerWidget() => Flexible(
child: Offstage(
offstage: !(!_svcStopped.value &&
stateGlobal.svcStatus.value == SvcStatus.ready &&
_svcIsUsingPublicServer.value),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [],
),
),
);
评论区