大佬做出来的项目,开源在github,已经停止更新,但是目前足够个人用户使用:https://github.com/ZeroDream-CN/SakuraPanel
分享目的:
发现目前比较少带限速、限制流量,或者说是支持多用户的内网穿透面板,发现github有这个项目于是Fork并分享记录下来。
使用方法:
这里整合补充github官方的使用方法,如果对着github官方教程不会配置的可以看这里。
安装和配置
首先将项目 clone 到本地
git clone https://github.com/ZeroDream-CN/SakuraPanel/
接着移动到网站目录,并设置权限
mv SakuraPanel/* /data/wwwroot/my.panel.com/
chown -R www:www /data/wwwroot/my.panel.com/
然后进入到网站目录,分别编辑以下三个文件,修改数据库信息
文件名 | 作用 |
---|---|
/configuration.php | 网站核心配置文件,里面每个配置项都有介绍 |
/api/index.php | 用于对接 Frps,里面只需配置 Token |
/daemon.php | 服务器守护进程,需要在命令行下运行,里面只需要配置数据库 |
配置完成后,使用 Navicat、phpMyAdmin 等数据库管理软件创建一个数据库,然后导入 import.sql。
数据库编码类型:utf8mb4 / utf8mb4_unicode_ci;数据库引擎:InnoDB
导入完成后,打开网站,注册一个新账号,然后在数据库中设置这个账号的 group 字段为 admin 即可设置为管理员。
提醒:/api/index.php文件需要修改的地方:
define("API_TOKEN", "是这里填token,前面括号的不要动");
配套 Frps 服务端
本面板需要专用 Frps 才能兼容,请访问另一个项目:https://github.com/ZeroDream-CN/SakuraFrp
Frpc 客户端无特殊需求,只要版本是 0.28.0 都可以兼容使用。
安装
安装可选两种方式,下载 Release 页面上已经编译好的版本或者自行编译。
编译方法(编译过程需要科学上网):
git clone https://github.com/ZeroDream-CN/SakuraFrp
cd SakuraFrp/
make
配置
打开编辑好的/下载好的文件夹,按照下面的模板vim修改frps.ini文件:
[common]
# Frp 绑定地址,默认 0.0.0.0 无需修改
bind_addr = 0.0.0.0
# Frp 运行端口
bind_port = 2333
# Kcp 模式运行端口,需要和上面的相同
kcp_bind_port = 2333
# 管理端口,默认 8233
dashboard_port = 8233
# 管理用户名,必须是 admin
dashboard_user = admin
# 管理密码
dashboard_pwd = admin123456
# HTTP 映射端口
vhost_http_port = 80
# HTTPS 映射端口
vhost_https_port = 443
# Frp 服务器日志
# log_file = ./frps.log
# Frp Token 特权密码
token = SakuraFrpToken
# UDP 穿透端口
bind_udp_port = 7001
# 以下项目无需修改
max_pool_count = 50
tcp_mux = true
authentication_timeout = 0
log_level = debug
log_max_days = 3
# 是否启用 Api 功能
api_enable = true
# Api 服务器地址
api_baseurl = http://example.com.com/api/
# Api 密码(节点 ID 在面板上添加的时候可以看到)
api_token = SakuraFrpToken|节点ID
PS:最后API密码那里记得不要漏了“|”符号和后面的节点ID,ID在面板可以看到是数字1/2/3这些的。
运行
./frps -c frps.ini
PS。自己用screen或者其他放后台就行
许可协议
本软件仅限个人非盈利使用,完整许可协议请查看 LICENSE 文件。
如需用于商业行为(例如出租内网穿透),或者需要技术支持,请与作者联系。
常见问题:
如有更多问题请在github提交issue问作者。
这里只mark我遇到的两个问题:
- 反馈关于节点服务器导致配置文件出现“Array”
找到这个文件:/modules/configuration.php,修改两处代码<p><b>选择服务器</b></p> <p><select class="form-control" id="server" <?php echo count($ss) == 0 ? "disabled" : ""; ?>> <?php echo "<option value=''>选择服务器</option>"; foreach($ss as $si) { $selected = $sel_server == $si[0] ? "selected" : ""; echo "<option value='{$si[0]}' {$selected}>{$si[1]} ({$si[3]})</option>"; } if(count($ss) == 0) { echo "<option>没有可用的服务器</option>"; } ?> </select></p>
还有:
<script type="text/javascript"> prettyPrint(); window.onload = function() { $('#server').change(function() { if($(this).children('option:selected').val() != ''){ location = "/?page=panel&module=configuration&server=" + $(this).children('option:selected').val(); } }); } </script>
- 在节点管理处添加节点后,创建隧道中没有显示可用服务器
例如:添加的节点用户组为 default;vip1;vip2;vip3;admin
在流量统计中也可以看到该节点的流量信息,但创建隧道处服务器列表仍是空白。
解决方法:在 admin 后面也加一个 ;