安装 ss-panel-v3 魔改版 前端 + 后端 详细教程

ss-panel-v3 是一套功能齐全的 shadowsocks 用户面板程序, 安装这款程序可以实现用户注册、用户管理、流量限制、签到、添加节点、充值购买、充值返利等诸多功能。搭建完毕后完全可以使用这款程序在线销售 shadowsocks

ss-panel-v3-mod 真的是一款炒鸡棒的 ss 面板程序

环境要求

  1. 操作系统: CentOS 7 或 Debian 8
  2. PHP: 7.2
  3. 数据库: MariaDB
  4. Web 服务器: Apache 2 (httpd)
  5. ss-panel-v3-mod Github 已失效, 备用下载地址: ss-panel-v3-mod-new_master.zip

前端安装教程

注意: 大概在 2019-01-13 左右发生的事情
赵大的魔改版 (new_master 分支) /esdeathlove/ss-panel-v3-mod
赵大的魔改版后端 /esdeathlove/shadowsocks
/glzjin/shadowsocks
以上库均已删库

ss-panel-v3-mod 再次修改版 github.com/Anankke/ss-panel-v3-mod_Uim

初始化系统环境

CentOS 7

yum install git python-devel libffi-devel openssl-devel python-setuptools epel-release screen ncurses-devel build-essential gcc wget m2crypto net-tools -y
yum update -y
yum install -y htop nload vim python-pip
systemctl stop firewalld

记得开启 BBR, 重要!

Debian 8

apt-get update
apt install vim htop screen python-setuptools python-dev python-pip git libxml2-dev libxslt1-dev python-dev zlib1g-dev libevent-dev
pip install --upgrade setuptools
apt-get install supervisor
/usr/bin/supervisord -c /etc/supervisor/supervisord.conf

安装 PHP 7.2

可以使用 yum 仓库安装或者从源代码编译安装

Apache 2 (httpd) 设置

在 Apache 配置文件中添加以下代码, 以启用 URL 重写。设置伪静态

<Directory "/ss-panel/public">
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
    RewriteEngine on
    RewriteBase "/"
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</Directory>

MariaDB 配置

创建数据库和用户, 并分配权限

CREATE DATABASE sspanel;
CREATE USER 'sspaneluser'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON sspanel.* TO 'sspaneluser'@'localhost';
FLUSH PRIVILEGES;

解决 MySQL 新建用户后无法登录问题

ERROR 1045 (28000): Access denied for user 'laravel'@'localhost' (using password: YES)

安装 ss-panel-v3-mod

首先打开 ss-panel-v3-mod 的官方 Github: github.com/esdeathlove/ss-panel-v3-mod

将程序的zip压缩包下载到本地

20170614211128.png

在 中新建一个数据库, 新建用户, 分配权限.

解压压缩包找到 sql 目录中的 glzjin_all.sql, 并把 glzjin_all.sql 导入进数据库

新建用户并赋予权限命令:

  • 数据库: sspanel
  • 用户: sspaneluser
  • 密码: 123456
insert into mysql.user(Host,User,Password) values('%','sspaneluser',password('123456'));
grant all privileges on `sspanel`.* to 'sspaneluser'@'%' identified by '123456';
FLUSH PRIVILEGES;

回到 Bash 中, 再来进行 ss-panel-v3-mod 的配置

# 进入站点目录
cd /home/wwwroot/你站点的域名

# 安装依赖
php composer.phar install

# 创建默认配置文件
cp config/.config.php.example config/.config.php

20170614155318.png

编辑 .config.php 文件 vim config/.config.php

# 由于配置太多, 这里只说重点
$System_Config['key'] = '';                 // 修改此 key 为随机字符串确保网站安全
$System_Config['appName'] = '';             // 站点名称
$System_Config['baseUrl'] = 'https://zhaojin97.cn';            // 站点地址
$System_Config['timeZone'] = 'PRC';         // RPC 天朝时间  UTC 格林时间
$System_Config['pwdMethod'] = 'sha256';     // 密码加密   可选 md5, sha256
$System_Config['salt'] = '';                // 密码加密用, 从旧版升级请留空
$System_Config['authDriver'] = 'cookie';    // 登录验证存储方式, 推荐使用 Redis   可选: cookie,redis

$System_Config['mailDriver'] = 'mailgun';   // 邮件 可选 mailgun or smtp 需要支持qq邮箱的选 smtp

$System_Config['checkinMin'] = '100';       // 签到最少流量 单位MB
$System_Config['checkinMax'] = '500';       // 签到最多流量
$System_Config['defaultTraffic'] = '100';   // 用户初始流量 单位GB
$System_Config['inviteNum'] = '0';          // 注册后获得的邀请码数量

# database 数据库配置
$System_Config['db_driver'] = 'mysql';
$System_Config['db_host'] = 'localhost';    // 数据库地址
$System_Config['db_database'] = '';         // 数据库名称 sspanel
$System_Config['db_username'] = '';         // 数据库用户 sspanel
$System_Config['db_password'] = '';         // sspanel用户的密码
$System_Config['db_charset'] = 'utf8';
$System_Config['db_collation'] = 'utf8_general_ci';
$System_Config['db_prefix'] = '';

# redis
$System_Config['redis_scheme'] = 'tcp';      // 登录验证存储方式选了 redis 的话需要配置
$System_Config['redis_host'] = '127.0.0.1';
$System_Config['redis_port'] = '6379';
$System_Config['redis_database'] = '0';
$System_Config['redis_password']="";

# smtp
$System_Config['smtp_host'] = '';            // 例如 smtp.qq.com
$System_Config['smtp_username'] = '';
$System_Config['smtp_port'] = '25';
$System_Config['smtp_name'] = '';
$System_Config['smtp_sender'] = '';
$System_Config['smtp_passsword'] = '';
$System_Config['smtp_ssl'] = 'false';

# 功能开关  需要用到的才开 建议先别动
$System_Config['enable_wecenter']='false';
$System_Config['enable_radius']='false';      // 配置了 radius 的话就开
$System_Config['enable_cloudxns']='false';
$System_Config['enable_duoshuo']='false';
$System_Config['enable_rss']='true';
$System_Config['enable_paymentwall']='false';

# Radius 数据库设置
$System_Config['radius_db_host']='';          // 跟上面 database 数据库配置差不多 换成radius即可
$System_Config['radius_db_database']='';
$System_Config['radius_db_user']='';
$System_Config['radius_db_password']='';

# Radius 连接密钥
$System_Config['radius_secret']='';           // 这个重要 必须设

# 端口池
$System_Config['min_port']='10000';           // SSR 分配端口号范围
$System_Config['max_port']='65535';

# 两种方式相对于 ss 端口的偏移
$System_Config['pacp_offset']='-20000';       // PAC+ 和 PAC++ 用到
$System_Config['pacpp_offset']='-20000';

# 测速周期/h
$System_Config['Speedtest_duration']='6';     // 对应后端 SSR 的 userapiconfig.py 里的 SPEEDTEST

# 随机分组, 注册时随机分配到的分组, 多个分组请用英文半角逗号分隔。
$System_Config['ramdom_group']='0';           // 组别用于区分用户组 对应组只能访问对应组和0组的服务器 明白后再修改 

# 充值返利百分比
$System_Config['code_payback']='20';          // 用户充值后 给邀请他注册的人返利多少%

# 注册时的流量重置日以及需要重置的流量, 0 不重置
$System_Config['reg_auto_reset_day']='0';
$System_Config['reg_auto_reset_bandwidth']='100'; // 单位 G

修改数据库配置信息

20170614155949.png

创建管理员账号

配置好之后, 给 ss-panel-v3-mod 创建一个管理员账号

php -n xcat createAdmin

20170614160825.png

创建完成后来同步一下用户

php xcat syncusers

设置定时任务

最后来设置几个定时任务确保 ss-panel-v3-mod 的长期稳定运行

使用 crontab -e 设置定时任务

30 22 * * * php /home/wwwroot/你的站点域名/xcat sendDiaryMail
*/1 * * * * php /home/wwwroot/你的站点域名/xcat synclogin
*/1 * * * * php /home/wwwroot/你的站点域名/xcat syncvpn
0 0 * * * php -n /home/wwwroot/你的站点域名/xcat dailyjob
*/1 * * * * php /home/wwwroot/你的站点域名/xcat checkjob
*/1 * * * * php -n /home/wwwroot/你的站点域名/xcat syncnas

到这里, ss-panel-v3-mod 的前端面板就安装完成了。但现在依旧不能正常使用, 因为这只是一个前端 WEB 网站, 我们还需要搭建后端服务和这个前端结合起来才能正常使用。

配置后端服务

安装 libsodium 加密库

libsodium 是给 SSR 提供 chacha20、salsa20、chacha20-ietf 等高级加密所必须的扩展库, 如果不用这几个加密方式, 可以不安装

cd ~
# 安装 libsodium 加密库必须的
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar -xzf libsodium-1.0.10.tar.gz
cd libsodium-1.0.10
./configure
make
make install

# 修复关联
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig

下载并配置后端服务

git clone -b manyuser https://github.com/glzjin/shadowsocks.git
cd shadowsocks
pip install -r requirements.txt

设置程序的配置文件

cp apiconfig.py userapiconfig.py
cp config.json user-config.json

编辑 userapiconfig.py

# 来解释下里面各项配置的意思
# Config
# 节点ID 对应前端节点列表的 ID
NODE_ID = 1

#自动化测速, 为 0 不测试, 此处以小时为单位, 要和 ss-panel 设置的小时数一致
SPEEDTEST = 6

# 云安全, 自动上报与下载封禁 IP, 1 为开启, 0 为关闭
CLOUDSAFE = 1

# 自动封禁 SS 密码和加密方式错误的 IP, 1 为开启, 0 为关闭
ANTISSATTACK = 0

# 是否接受上级下发的命令, 如果你要用这个命令, 请参考我之前写的东西, 公钥放在目录下的 ssshell.asc
AUTOEXEC = 1

# 是否以多线程模式运行, 关闭这个限速就会无效。请优先测试 1 , 开启试试, 能运行没。
MULTI_THREAD = 0

# 多端口单用户设置, 看重大更新说明。
MU_SUFFIX = 'zhaoj.in'
# 多端口单用户设置, 看重大更新说明。
MU_REGEX = '%5m%id.%suffix'

# 不明觉厉
SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link
# 此处不要修改
API_INTERFACE = 'glzjinmod' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, muapiv2(not support)
# mudb, 不要管
MUDB_FILE = 'mudb.json'

# Mysql 数据库连接信息
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = 'ss'
MYSQL_PASS = 'ss'
MYSQL_DB = 'shadowsocks'
MYSQL_UPDATE_TIME = 60

# 是否启用SSL连接, 0为关, 1为开
MYSQL_SSL_ENABLE = 0

# 客户端证书目录, 请看 https://github.com/glzjin/shadowsocks/wiki/Mysql-SSL%E9%85%8D%E7%BD%AE
MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem'
MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem'
MYSQL_SSL_CA = '/root/shadowsocks/ca.pem'

# API, 不用管
API_HOST = '127.0.0.1'
API_PORT = 80
API_PATH = '/mu/v2/'
API_TOKEN = 'abcdef'
API_UPDATE_TIME = 60

# Manager 不用管
MANAGE_PASS = 'ss233333333'

# if you want manage in other server you should set this value to global ip
MANAGE_BIND_IP = '127.0.0.1'

# make sure this port is idle
MANAGE_PORT = 23333

modwebapi 改为: glzjinmod

20170614162400.png

节点 ID 改为 3

20170614163444.png

找到配置文件中的 MySQL 信息, 正确填写我们之前创建的数据库信息

20170614162501.png

启动后端服务

python server.py 用于调错的
./run.sh 无日志后台运行
./logrun.sh 有日志后台运行
supervisord

在前端添加后端节点信息

现在我们登录 ss-panel-v3-mod 面板, 点击左下角最后一个管理面板按钮, 进入到管理界面

点击节点管理, 右下角 + 号添加一个新节点。

注意: 添加节点的时候, 节点名称务必要是这样的: 伯力 – Shadowsocks (- 号前后都有一个空格才行)

然后就是节点地址、加密方式、流量比例、节点状态、节点描述这些都是必填的, 建议按我如图填写

20170614163033.png

20170614163122.png

全部添加好后可以看到节点已经正常的在线了

20170614163548.png

使用 Supervisor 守护进程启动 SSR

安装 supervisor

easy_install supervisor

修改 supervisor 配置文件

mkdir -p /etc/supervisor/conf.d
echo_supervisord_conf > /etc/supervisor/supervisord.conf

echo "[include]" >> /etc/supervisor/supervisord.conf
echo "files = /etc/supervisor/conf.d/*.conf" >> /etc/supervisor/supervisord.conf

创建 ssr 后端守护任务

cat>>/etc/supervisor/conf.d/ssr.conf<<\EOF
[program:ssr]
command=python /root/shadowsocks/server.py
autorestart=true
autostart=true
user=root
EOF

创建系统服务 (在 CentOS 7 测试)

cat>>/usr/lib/systemd/system/supervisord.service<<\EOF
[Unit]
Description=supervisord - Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
User=root

[Install]
WantedBy=multi-user.target
EOF

重新启动 supervisord

systemctl restart supervisord
systemctl enable supervisord

查看 ssr 执行状态

supervisorctl status ssr

扩展阅读 - 对接方式

数据库对接

数据库对接.png

数据库对接需要修改的地方:

  1. NODE_ID = 这里输入前端的节点 ID
  2. API_INTERFACE = 'glzjinmod' 务必选择 glzjinmod
  3. Mysql 下面填写前端的 MySQL 数据库信息 (务必注意, 需要打开前端数据库的远程连接)

这样修改后就可以保存了

WEBAPI 对接

WEBAPI对接.png

数据库对接需要修改的地方:

  1. NODE_ID = 这里输入前端的节点 ID
  2. API_INTERFACE = 'modwebapi' 务必选择 modwebapi
  3. WEBAPI_URL = 'https://ssr.tn' 这里需要把地址改成前端地址, 务必区分 http 和 https
  4. WEBAPI_TOKEN='' 这里需要和前端一致, 具体在网站目录 config/.config.php 中查询, 前端默认 key 是 NimaQu

这样修改后就可以保存了


原文

现在很多教程隔一段时间就消失了不得不自己备份一个

详细安装ss-panel-v3魔改版前端+后端教程
ss-panel-v3-mod安装说明 (使用Supervisor守护进程启动ssr)
ss-panel-v3-mod_Uim魔改后端部署教程

最后更新于 2019-07-10
使用 Hugo 构建
主题 StackJimmy 设计