环境:centos7
撰写教程时的ss-panel版本: V2.4.6
首先我们了解一下什么是ss-panel,说起这个又得先说shadowsocks many user这款多用户管理shadowsocks后端。shadowsocks many user使用python编写,他会自动定时读取数据库,获取所有用户的端口、密码,然后启动对应端口的ss服务端程序。同时还有用户消耗流量写回数据库,用户流量超出自动停用等功能。而它只是定时读取数据库,那么很明显我们既然可以手动操作数据库来完成其运行途中的用户添加,用户密码修改等功能。自然会想到用一种更好的方式来管理所有用户。这就是ss panel的功能。
ss panel提供一个前端,包括UI和ss panel自身的用户管理,用户可以用ss panel账号登陆ss panel并查看运行后端的服务器的ip,也可以查看到自己的端口,密码等。让shadowsocks many user去读取ss panel的数据库,就可以达到通过前端操控后端设置的目的。下面我们来部署这一套自动化禾斗学上网工具。本站部署的ss panel http://ss.hiczp.com/
这里推荐的部署步骤是先部署前端再部署后端,因为前端用的数据库中的user表(即后端需要访问的表)内容比后端多,也就是说先部署后端的话,前端将无法使用。我们先从github下载ss panel,其地址为 https://github.com/orvice/ss-panel/releases 解压到服务器web目录,nginx或者Apache设置自己调好,不会调的面壁去。ss panel需要的PHP版本为5.4+,达不到的自己升级。ss panel没有安装程序,解压完毕后可以直接访问并正常显示主页,但是所有功能都无效,因为没有设置数据库。
首先我们连接数据库(假设在前端服务器上,版本为mariadb)
mysql -u root -p
输入密码后创建一个新数据库用来存放ss panel的数据
create databases ss_panel;
use ss_panel;
导入ss panel的数据库备份文件
source /var/www/ss_panel/sql/invite_code.sql
这里的路径根据你的ss panel路径自己替换掉,sql文件在ss panel下的sql文件夹里,一共5个,全部导入进去。
然后我们退出数据库,开始修改ss panel设置文件内容
ss panel的设置文件在 ./ss-panel/lib/config-simple.php
我们首先将这个文件重命名为 config.php 然后修改他的内容
大部分内容不用改,这里就不赘述,需要改的地方大致上有以下:
14行到19行数据库设置,改成例如
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','123456789');
define('DB_DBNAME','ss_panel');
define('DB_CHARSET','utf8');
define('DB_TYPE','mysql');
以上内容根据自己实际设置修改。
下面那个初始化流量是指用户注册之后送多少流量,注意这个值的单位不是G,所以必须调用 $togb 来指定多少G,例如 $togb*10 这是10G的意思。下面的签到是指每22小时用户上ss panel点击签到按钮可以获得多少流量,这个变量的单位是MB,只需要用一般的数字赋值即可。再往下的name是站点名字和url,名字可以不改,站点url一定要改。
salt的值是指sha256加密时用的密钥,乱打一串即可。下面的 $pwd_mode 改成2来使用sha256加密方式。邀请码是指普通用户注册后可以生成的邀请码数量,ss panel的注册必须使用注册码,如果你的站不打算开放给大家使用,可以把最大邀请码和最小邀请码数量都调成0.下面的邮件随便(主要是SMTP现在版本还不能用,调了也白调,mailgun国内各大邮件服务商都屏蔽了它),不调即可。
然后我们再访问一下ss panel,各种功能都能用了。顺便提一句,默认情况下,invite_code 表里就有东西,而且有一个是由用户id为1的人创建。这表的内容可以全部删掉。ss_node 也有东西,是个范例。ss_reset_pwd 也有范例,这些范例可以全部删掉。
ss panel的管理员控制台是 http://ip/admin 需要注意的是,ss panel的管理员不和普通用户分表存储,在ss_user_admin 表中的内容用来指定哪个id的用户是管理员,默认情况下是 1 ,这个值最好不要修改。默认情况下 user表中就有一个用户,这个人就是管理员。
ss panel的管理员控制台和用户控制台都使用email作为用户名(那个user_name只是昵称而已),并且由于管理员也保存在user表中,所以管理员账户也可以和普通用户一样登陆。由于我们使用了sha256加密方式,并且salt值由你设定,所以实际上我们此时将无法登陆管理员控制台,因为不知道密码,我们需要修改数据库来更改初始密码。
user表中的pass字段指的是ss panel的用户密码,passwd指的是后端运行对应端口的shadowsocks用的密码。我们需要修改的是前者。因为数据库中的密码加密保存,所以我们需要获得自己想要的密码的密文,ss panel提供字符串加密功能,我们访问例如 http://ip/pwd.php?pwd=123456 ,返回的一大串东西就是用你之前设定的salt计算出来的密文,我们把这个复制黏贴到数据库中。好了,然后用这个密码登陆管理员控制台,完美。
管理员后台的主要功能是查看所有用户的情况、添加节点和生成公共邀请码。用户情况就是字面意思,可以显示每个用户的流量之类的。添加节点这个东西不是指后端服务器不加到这里就不能用了,这个添加节点只是公示出来给人看的而已,也就是纯告示作用,当然你不贴出来自然也没人能使用后端服务器。公共邀请码就是生成邀请码时不填邀请码类别,这个邀请码类别指该邀请码由哪个用户生成,类别为0的意思是所有人都能看到这个邀请码,会出现在首页右上角“邀请码”页面里,所有人都可以用这个邀请码来注册。其他普通用户生成的邀请码都会带上他的用户ID(记录在数据库),表示由这个用户生成,而如果有用户使用其他普通用户生成的邀请码来注册,就可以知道这人是谁推荐来的。
接下去我们要部署后端,这样用户才真正可以使用。后端的github地址 https://github.com/mengskysama/shadowsocks-rm
若以上地址已被和谐,可以至网盘下载 http://pan.baidu.com/s/1gdSf8iv
首先我们安装python相关依赖
yum -y install python python-pip m2crypto
pip install cymysql
(有些vps默认源里没有pip,可以自己去pip官网下载或者添加源,先yum install setuptools 然后用python运行pip文件夹中的setup.py,具体不赘述。cymysql是python连接mysql用的库,源里没有的话,自己想办法)
克隆git
git clone -b manyuser https://github.com/mengskysama/shadowsocks-rm.git
顺便一提,不要去git那个shadowsocks,那玩意虽然是python写的多用户后端,但是不会读数据库也不会运行中自动调整端口情况,那玩意和直接用pip install shadowsocks装出来是一模一样的东西。
git克隆完毕后,我们进入目录
cd ./shadowsocks-rm/shadowsocks
在该目录下有一个config.py,这是他的设置文件,我们打开它然后编辑,例如
#Config
MYSQL_HOST = '123.456.789.000'
MYSQL_PORT = 3306
MYSQL_USER = 'root'
MYSQL_PASS = '123456'
MYSQL_DB = 'ss_panel'
MANAGE_PASS = 'passwd'
#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
#BIND IP
#if you want bind ipv4 and ipv6 '[::]'
#if you want bind all of ipv4 if '0.0.0.0'
#if you want bind all of if only '4.4.4.4'
SS_BIND_IP = '0.0.0.0'
SS_METHOD = 'aes-256-cfb'
下面那部分编辑了manage的设置,我也不知道干嘛用的,估计它自己又有一套管理用的API,暂时不管他。需要修改的是第一部分的数据库设置和最后的加密方式。
然后我们运行它
python servers.py
注意,是servers.py,不是server.py,故意没说三遍。
当你看到他有启动后过几秒有类似下面这种东西跳出来就说明能够访问数据库并运行成功了
add: {"server_port": 20000, "password":"123456"}
这个的意思是从数据库获得了更新的用户,第一次启动的时候所有用户都会被更新到后端。运行期间如果用前端修改了用户的ss密码,端口之类的,或者添加了新用户,这种东西又会跳出来。用户端口是由前端自动生成,密码也是。端口号会从最后一个用户的端口号开始随机递增1-5,默认的第一个用户端口号为 10000 ,所以下一个用户的端口号必定在 10001-10005之间。后端会将用户消耗的流量隔几秒钟写回数据库,所以数据库中的用户已使用流量会不停递增,进行这一步的时候后端也会有显示。
此时我们已经部署好了前端和后端,以下是ss panel的使用姿势:
当一个普通用户注册并登陆后,他会跳转到“用户中心”。右侧下面是这个用户的端口号和密码,需要注意的是如果用多个后端读取同一个数据库,所有后端上的设置(用户密码,端口)都会一样。即这个页面显示的端口和密码在所有节点上通用。节点列表页可以看到管理员贴出来的节点地址和加密方式。再用用户中心里的端口和密码就可以使用。管理员添加节点就不说了,各种选项都是字面意思。
日后若想扩展节点,只需要在新服务器上部署后端,把数据库设置指向前端服务器(如果你的数据库在前端服务器上),然后再在管理员控制台上添加节点信息即可。
至此,ss-panel部署完毕,小伙伴们欢呼雀跃!
本文转载自czp的博客,原文地址:http://www.hiczp.com/post-105.html