目录
重要提醒
本教程仅作交流学习使用,请勿用作非法用途。
啥是PPanel
之前我们写过一篇入狱教程:入狱教程|使用aapanel(宝塔)搭建v2board分支版并下发hysteria2和reality节点|开启webman支持
现在来了更快速入狱教程了,哈哈……
PPanel 是一个纯粹、专业且完美的开源代理面板工具,旨在成为您学习和实践的理想选择。
大白话:一个新的鸡场面板……具体可查看官方文档
术语说明
PPanel 的一些术语与其他面板系统存在差异,为确保您能准确理解文档内容并避免误解,建议在阅读前先了解以下术语:
- 用户端 为最终用户提供的界面,用户通过该界面与系统进行交互。您可以根据需求自定义或重构该界面,实现站点的个性化定制。
- 管理端 用于管理员操作的界面,负责管理系统、用户及数据。您可以根据需求对该界面进行定制或重构,以适应您的管理需求。
- 服务端 PPanel 的 API 层,处理与前端的所有数据交互,负责业务逻辑的执行与数据服务的提供。
- 节点端 负责 PPanel 服务端与各节点(落地端)的通信,确保网络节点的连接与服务的稳定性。
- 客户端 用户用来连接系统的应用程序,通常是指用户的设备端软件或应用,负责与系统建立连接并使用相关服务。
部署方式
PPanel支持多种部署方式,可以借助1panel和aapanel等面板,也可以自己手搓,官方还提供一键脚本,甚至还有第三方一键docker脚本,连nginx反代都直接给你搞好……如果从大类来分,可以分为docker部署和和非docker部署。docker部署的话,可以配合Nginx手搓反代,也可借助1panel和aapanel等面板。非docker部署的话,又可分为Nginx + Supervisor + Node.js和Nginx + Supervisor + Bun。总之部署方式非常多样。
最方便的肯定是直接一键脚本,然后反代下,但是这样就失去了折腾的意义,所以小白今天用的1panel面板,我的想法是把数据库放在1panel面板,其他东西直接docker compose拉取,毕竟docker的数据库,小白太水了,玩不转……所以我们用1panel部署MySQL和redis,然后用PPanel官方自带的docker compose部署服务端(ppanel-server)、管理端(ppanel-admin-web)、用户端(ppanel-user-web)。
准备环境
一个vps:
公网ip:22.22.22.22
⼀个域名: userdomain.com
将以下二级域名解析至你的VPS:
api.userdomain.com: api接口地址, 用于前端请求后端服务
user.userdomain.com: 前端用户页面
admin.userdomain.com: 前端管理面板地址
数据库
1panel的安装直接参考官方文档,这里我们就不再赘述了。我们进入1panel应用商店,需要安装这三个应用:OpenResty
、MySQL
、Redis
。
这里需要注意的是,docker compose部署服务端(ppanel-server)、管理端(ppanel-admin-web)、用户端(ppanel-user-web)和1panel的应用不在同一个docker网络,所以MySQL和Redis需要放行端口外部访问。
然后我们进入1panel的数据库,新建一个数据库。
服务端和前端(管理端和用户端)
我们在/opt/目录下新建一个ppanel文件夹,然后把ppanel-script的安装脚本git clone下来。
mkdir -p /opt/ppanel && cd /opt/ppanel
git clone https://github.com/perfect-panel/ppanel-script.git
接下来我们需要对ppanel-script主目录下的docker-compose.yml文件做一些修改,简单起见,我们能够UI操作咱们就尽量UI操作,直接使用1panel的文件管理功能,双击修改。
原版docker-compose.yml长这样:
version: '3.8'
services:
ppanel-server:
image: ppanel/ppanel-server:beta
container_name: ppanel-server-beta
ports:
- '8080:8080'
volumes:
- ./config/ppanel.yaml:/app/etc/ppanel.yaml
restart: always
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ppanel-network
mysql:
image: mysql:8.0.23
container_name: mysql_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: my_database
MYSQL_USER: user
MYSQL_PASSWORD: userpassword
ports:
- "3306:3306"
volumes:
- ./docker/mysql:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password --bind-address=0.0.0.0
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-prootpassword"]
interval: 10s
timeout: 5s
retries: 3
networks:
- ppanel-network
redis:
image: redis:7
container_name: redis_cache
restart: always
ports:
- "6379:6379"
volumes:
- ./docker/redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
networks:
- ppanel-network
ppanel-admin-web:
image: ppanel/ppanel-admin-web:latest
container_name: ppanel-admin-web
restart: always
ports:
- '3000:3000'
environment:
# Replace with actual API endpoint if needed
NEXT_PUBLIC_API_URL: https://api.example.com
ppanel-user-web:
image: ppanel/ppanel-user-web:latest
container_name: ppanel-user-web
restart: always
ports:
- '3001:3000'
environment:
# Replace with actual API endpoint if needed
NEXT_PUBLIC_API_URL: https://api.example.com
networks:
ppanel-network:
driver: bridge
由于我们的mysql和redis是用1panel安装的,所以我们ppanel-server容器的这两个依赖删掉,然后把docker-compose.yml里mysql和redis这两个容器也删掉,删掉这三个部分:
删完之后是不是简洁了很多。然后我们需要在yml文件里增加几个简单的环境变量,主要是站点的语言和域名。
version: '3.8'
services:
ppanel-server:
image: ppanel/ppanel-server:beta
container_name: ppanel-server-beta
ports:
- '8080:8080'
volumes:
- ./config/ppanel.yaml:/app/etc/ppanel.yaml
restart: always
networks:
- ppanel-network
ppanel-admin-web:
image: ppanel/ppanel-admin-web:latest
container_name: ppanel-admin-web
restart: always
ports:
- '3000:3000'
environment:
# Replace with actual API endpoint if needed
NEXT_PUBLIC_DEFAULT_LANGUAGE: zh-CN
NEXT_PUBLIC_SITE_URL: https://admin.userdomain.com
NEXT_PUBLIC_API_URL: https://api.userdomain.com
ppanel-user-web:
image: ppanel/ppanel-user-web:latest
container_name: ppanel-user-web
restart: always
ports:
- '3001:3000'
environment:
# Replace with actual API endpoint if needed
NEXT_PUBLIC_DEFAULT_LANGUAGE: zh-CN
NEXT_PUBLIC_SITE_URL: https://user.userdomain.com
NEXT_PUBLIC_API_URL: https://api.userdomain.com
networks:
ppanel-network:
driver: bridge
然后,PPanel 支持基于 Web 的初始化,简化了手动配置过程,所以我们进入config目录,把ppanel.yaml的文件内容全都删掉,但是保留文件,这样我们就能通过 Web 界面初始化了。
docker compose
本着能UI操作我们就不用命令行的原则,我们直接进入容器-编排-创建编排
来源选择路径选择,选中我们刚刚编辑好的docker-compose.yml文件。
点击确认,看到successful可以了。
我们也可以看到这个docker-compose.yml一个创建了三个容器,分别是服务端,管理端和用户端。
反代
我们之前的三个域名:
api.userdomain.com: api接口地址, 用于前端请求后端服务
user.userdomain.com: 前端用户页面
admin.userdomain.com: 前端管理面板地址
分别在1panel建立三个反向代理的网站,api.userdomain.com反代到127.0.0.1:8080,admin.userdomain.com反代到127.0.0.1:3000,user.userdomain.com反代到127.0.0.1:3001。
然后需要申请证书的,自行申请即可,小白这边域名是托管在cf的,直接使用cf的证书,就不申请本地证书了。
初始化
我们直接进入api.userdomain.com,语言改成中文
其中数据库主机和Redis 主机需要填写我们vps的公网IP,其余用户名和密码,进入数据库,点击连接信息,把相应的用户名和密码填进去即可。
我们可以看到已经成功连接到MySQL和Redis:
点击开始初始化,至此,面板安装就完成了。
面板外观
我们可以分别进入user.userdomain.com: 前端用户页面和admin.userdomain.com: 前端管理面板地址,来看下面板长啥样。
可以看到面板研制还是相当高的。
面板设置
系统配置里,自行修改即可:
下面的内容就开始刑起来了,重要提醒:本教程仅作交流学习使用,请勿用作非法用途。
我们来看下添加节点和订阅,PPanel的操作逻辑和V2board以及Xboard差不多,也是要先添加节点组和订阅组。
添加节点
先添加一个节点组。
再添加节点。
比如我们添加一个直连的ss节点。
我们可以看到PPanel是能自动识别国家和地区的。
节点通信密钥,记得要改一下,待会儿对接后端要用。
订阅管理
先添加一个订阅组。
然后再添加一个订阅。
记得定价填一下。
服务记得选中我们的刚刚创建的服务组。
打开首页显示和销售,这样我们在用户端就能看到了。
节点对接
官方提供了PPanel-node部署和XrayR 部署两种方式,自行研究即可。
小白这边已经用PPanel-node对接了刚刚创建的测试节点,没有啥问题。
邮件配置支付配置
这个可太刑了,我就不写了,都看到这儿了,也不用我去逼逼了。
最后
重要提醒:本教程仅作交流学习使用,请勿用作非法用途。
references
使用宝塔(aapanel)部署PPanel(新的机场面板)– 全网首发
使用1panel部署PPanel(新的机场面板)– 全网首发