文章目录[隐藏]
前言
偶然在B站上看到有人发RustDesk服务端的搭建教程,了解了一下,感觉很感兴趣。可以自建服务器这一点特别戳我,就按照前辈的教程搭建出来了。用在我的电脑和几个手机上互相控制,很方便。已经稳定使用了将近三四个月。之前看官方的上面有WebClient,可以用网页控制。但是找了一下,并没有源码,就没有再搭建了。今天在刷吾爱的时候看到了有人对WebClient和Api服务器的讨论,也放出了源码。就一边实战搭建一遍再来写一下这篇博客。顺便把服务端的搭建也整合一下。
这篇文章是我自己搭建的经验总结,在搭建的过程中也是大量看着前辈的教程一步一步才能搭建下来的。
官方介绍
远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。您可以使用我们的注册/中继服务器,或者自建,亦或者开发您的版本
准备工作
你需要准备的东西大概有:
- Linux服务器 一台
好像只有服务器就可以了
RustDesk服务端的搭建方式有两种:直接安装和Doker,这里我采用了直接安装的方法。Doker安装方法,在官方文档里也有讲述,这里就不再说了。
安装RustDesk服务端
服务端安装
在安装服务端之前,我们要先安装宝塔面板(因为要用到宝塔面板里的进程守护管理器,后面的WebClient和Api都要用到PHP环境)(已经有宝塔环境的,可以跳过这一段)
宝塔面板的安装已经有非常成熟的教程啦,这里给出官方的链接
https://www.bt.cn/bbs/thread-79460-1-1.html
安装好之后登录后台,在应用商城里找到进程守护管理器
,安装它。
然后我们去下载服务端,在官方发行版中找到你服务器对应的架构来下载。我下载的是rustdesk-server-linux-amd64.zip
官方发行版:https://github.com/rustdesk/rustdesk-server/releases
解压后会有三个文件,把他们上传到服务器里的一个目录里,我这里传到了/data/rustdesk/amd64
目录,大概是这样的
然后到刚刚安装的进程守护管理器的设置里面,添加两条守护规则,分别是hbbr和hbbs的。如图
启动命令最后的-k _
是禁止没有key的用户建立非加密连接,如果你没有加密的需要,就可以不写,后面的加密部分也可以不看了
填写好后点击确定,服务就启动了,这时候就可以配置客户端了,但是还是说一下加密的部分是怎么搞的(建议加密也弄一下)
服务启动后,在你刚刚上传主程序的文件夹下会多出来一个公钥文件id_ed25519.pub
,打开它,里面的内容就是你的key,把它记好。如果要更新key的话,就删除 id_ed25519
和 id_ed25519.pub
文件并重新启动上面的两个进程,就会产生新的密钥对。
我们还需要开放服务需要的端口,官方的话是这样的:
默认情况下,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)
因为我们后面需要搭建网页客户端,所以这些端口建议全开。(如果不搭建的话,不开也行)
客户端配置
前往https://rustdesk.com/zh/下载各个系统的客户端,打开后点击 ID 右侧的菜单按钮,选择“ ID/中继服务器”。
ID服务器和中继服务器,填写你服务器的域名/ip地址,Key就填刚刚那个公钥文件里的内容就行了。(如果你想使用自建服务的话,你所有的客户端都要这么填)
Api服务器暂时先不填。我们马上就讲如何搭建。
确认之后你就可以测试连接啦,用手机和电脑互相连接,控制一下
到这里主服务器搭建已经成功了,你会发现登录里面没有注册的选项,那是因为我们还没有设置Api服务器
搭建Api服务器&WebClient
服务端配置
Api服务器和WebClient由吾爱的先辈给出,在此给出原链接https://www.52pojie.cn/forum.php?mod=viewthread&tid=1708319
Api服务器还有另一种基于GO的实现,感觉也不错。在此给出链接,有兴趣的可以搭建一下https://www.52pojie.cn/thread-1720588-1-9.html
Api服务器要用到PHP环境,先在宝塔里安装好Nginx+PHP+Mysql环境
安装好后新建一个站点,域名按照自己喜好写,没域名的话直接输ip也行,数据库选MySQL,php版本随便选一个,我这里是PHP8.0
下载源码包(怕失效,我转存了一下原作者的)
下载好后,登录数据库 宝塔后台->数据库->MySQL->PHPMyAdmin 用刚刚创建网站时的数据库账号和密码登录.
登录好之后点一下左侧新建的数据库,然后点击右侧上方的导入,选择源码包里的\api-server\rustdesk.sql
导入
然后回到宝塔后台,在左边菜单点击网站,点击你刚刚创建的网站根目录,删除默认的index.html
文件,上传源码包里\api-server
的index.php
和\web-client
文件夹下的所有文件到网站根目录,然后把index.php
改名成api.php
,大概就是这个效果
编辑api.php
,修改第7行的MySQL数据库连接账号,密码,数据库
<?php
header("Content-type:text/html;charset=utf-8");//字符编码设置
//原生的php操作mysql,
// mysqli_connect(host,username,password,dbname,port,socket);
//连接数据库,host为数据库服务器IP或域名,username为数据库用户名,password为数据库密码为数据库名,port数据库连接端口,默认3306,socket忽略即可
//下面这行必须改为自己的服务器上对应的信息,否则,你懂的。。。
$conn=mysqli_connect("localhost","rustdesk","AK8CaxzPKM7Diyy7","rustdesk",3306);
if(!$conn){
die("数据库连接出错了: " . mysqli_connect_error());//如果连接失败输出一条消息,并退出当前脚本
}
//获取访问的啥方法
第7行的四个引号内分别是数据库地址,用户名,密码,数据库名。第一个不用改,剩下的三项按照创建站点时的配置填进去就行了。
编辑index.html
,为了不暴露节点信息,我们把第23行的服务器IP/域名剪切到/module/index.b7bb6fa2.js
的第一行
var api = ["192.168.2.25"];//,"rs-sg.rustdesk.com","rs-cn.rustdesk.com","rs-us.rustdesk.com"
直接往进写域名或者ip就行,然后剪切到/module/index.b7bb6fa2.js
的第一行,大概效果就这样
记得保存,这样Api服务器&WebClient就搭建好了
客户端配置
在自定义服务端地址的界面,填入api接口地址就行,按照下图格式填入
如果登录时显示Undefined array key "HTTP_AUTHORIZATION"
,那就把PHP版本调低一点
关于用户名和密码的生成:
1、去各大搜索引擎里搜索【MD5】,随便点一个进去,找加密的地方,输入 你要的设置的密码,进行加密。
2、密码规则:密码+rustdesk,如:你要设置admin为密码,那么你要在上面加密的输入框里输入:adminrustdesk ,结果都是32位的,大致像这样:d3541a8746eb583a010c1157438a7ba1
3、生成密码后用phpmyadmin在rustdesk_users表里照葫芦画瓢加一条记录。
默认的用户名密码都是admin
你的alist连接下载不出来
你好,这边测试正常,您再试试
API 文件里 不管是吾爱的还是博主的都没有您发的数据库代码。
我将尽快检查
还有一个疑问,是否可以不使用hbbr
api服务器的作用是账号系统,不配置不影响正常使用
我只运行了hbbs,感觉在一个服务器上,中继有点多余
个人认为都是必要的,我都安装了,我感觉中继是打通内网重要的一环
图片均无法显示....
已经恢复了
图片还是无法显示
实在抱歉,我一直使用Firefox,没注意这个问题,我的图片cdn没有配置HTTPS协议,Edge会自动把http转为https,要不麻烦您换个浏览器试试
我下载楼主的源码包,为什么里面的API.PHP和楼主描述的一点也不一样,也没找到修改数据库用户名密码的地方?
抱歉,最近没有看邮件,您可以先试试原链接里的代码,我稍后会检查我上传的源码包
源码包下载不了
这边测试正常,提示登陆的话点击“游客模式浏览”即可
我看到的api.php为什么和你的一点都不一样
当时只放了前几行,后面的不用改