宝塔面板第三方云端PHP源码btcloud
这是一个用php开发的宝塔面板第三方云端站点程序。
你可以使用此程序搭建属于自己的宝塔面板第三方云端,实现最新版宝塔面板私有化部署,不与宝塔官方接口通信,满足隐私安全合规需求。同时还可以去除面板强制绑定账号,DIY面板功能等。
网站后台管理可一键同步宝塔官方的插件列表与增量更新插件包,还有云端使用记录、IP黑白名单、操作日志、定时任务等功能。
本项目自带的宝塔安装包和更新包是7.9.2最新版,已修改适配此第三方云端,并且全开源,无so等加密文件。
目前还不是太好用,博主尚未进行测试。
相关链接
GitHub:https://github.com/flucont/btcloud
文件备份:2022年6月6日:OneDrive
环境要求
PHP >= 7.4
MySQL >= 5.6
fileinfo扩展
ZipArchive扩展
相关图片
部署方法
下载最新版的Release包
如果是下载的源码包,需要执行 composer install –no-dev 安装依赖,如果是下载的Release包,则不需要。
设置网站运行目录为public。
设置伪静态为ThinkPHP。
导入install.sql到数据库。
在.env里面修改数据库信息,包括数据库地址(HOSTNAME)、数据库名(DATABASE)、用户名(USERNAME)、密码(PASSWORD)。
访问/admin进入网站后台,默认管理员用户名密码:admin/123456
使用方法
在系统基本设置修改宝塔面板接口设置。你需要一个官方最新脚本安装并绑定账号的宝塔面板,用于获取最新插件列表及插件包。并根据界面提示安装好专用插件。
在定时任务设置执行所显示的命令从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。当然你也可以去插件列表,一个一个点击下载。
在public/install/src和update文件夹里面分别是bt安装包和更新包,解压后源码里面全部的 www.example.com 替换成你自己搭建的云端域名,然后重新打包。可使用VSCode等支持批量替换的软件。
将bt安装脚本public/install/install_6.0.sh和更新脚本update6.sh里面的 www.example.com 替换成你自己搭建的云端域名。
访问网站/download查看使用此第三方云端的一键安装脚本
其他
宝塔官方更新包修改记录
官方更新包下载链接:http://download.bt.cn/install/update/LinuxPanel-版本号.zip
假设搭建的宝塔第三方云端网址是 http://www.example.com
将class文件夹里面所有的.so文件删除
将pluginAuth.py复制到class文件夹
在class/jobs.py,将以下代码删除
if not public.is_debug(): public.ExecShell("rm -f /www/server/panel/class/pluginAuth.py")
全局搜索替换 https://api.bt.cn => http://www.example.com
全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py和plugin_deployment.py)
全局搜索替换 http://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh
class/ajax.py 文件 #是否执行升级程序 下面的 public.get_url() 改成 public.GetConfigValue('home’)
class/jobs.py 文件 #尝试升级到独立环境 下面的 public.get_url() 改成 public.GetConfigValue('home’)
class/system.py 文件 RepPanel和UpdatePro方法内的 public.get_url() 改成 public.GetConfigValue('home’)
class/public.py 在
def GetConfigValue(key):
这一行下面加上
if key == 'home': return 'http://www.example.com'
在 def is_bind(): 这一行下面加上 return True
在 def check_domain_cloud(domain): 这一行下面加上 return
class/webshell_check.py 搜索替换 public.GetConfigValue('home’) => 'https://www.bt.cn’
class/plugin_deployment.py 约270行,替换 public.GetConfigValue('home’) => 'https://www.bt.cn’
class/panelPlugin.py 文件,download_icon方法内替换 public.GetConfigValue('home’) => 'https://www.bt.cn’
class/panelPlugin.py 文件,set_pyenv方法内,temp_file = public.readFile(filename)这行代码下面加上
temp_file = temp_file.replace('wget -O Tpublic.sh', '#wget -O Tpublic.sh')
install/install_soft.sh 在bash执行之前加入以下代码
sed -i "s/http:\/\/download.bt.cn\/install\/public.sh/http:\/\/www.example.com\/install\/public.sh/" lib.sh sed -i "/wget -O Tpublic.sh/d" $name.sh
install/public.sh 用官网最新版的public.sh替换,并去除最下面bt_check一行
去除无用的定时任务:task.py 文件
删除 p = threading.Thread(target=check_files_panel) 以及下面2行
删除 p = threading.Thread(target=check_panel_msg) 以及下面2行
去除面板日志上报:script/site_task.py 文件
删除最下面 logs_analysis() 这1行
去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行
去除首页自动检测更新,避免频繁请求云端:BTPanel/static/js/index.js 文件注释掉bt.system.check_update这一段代码外的setTimeout
[可选]去除各种计算题:复制bt.js到 BTPanel/static/ ,在 BTPanel/templates/default/layout.html 的</body>前面加入
<script src="/static/bt.js"></script>[可选]去除创建网站自动创建的垃圾文件:在class/panelSite.py,分别删除
htaccess = self.sitePath+’/.htaccess’
index = self.sitePath+’/index.html’
doc404 = self.sitePath+’/404.html’
这3行及分别接下来的4行代码
[可选]关闭未绑定域名提示页面:在class/panelSite.py,root /www/server/nginx/html改成return 400
解压安装包panel6.zip,将更新包改好的文件覆盖到里面,然后重新打包,即可更新安装包。(
别忘了删除class文件夹里面所有的.so文件)