3 月 29 2015
安装配置Shadowsocks Manyuser + SS-Panel
本文共被喵星人侦察过97,764次。。。写在前面:这个坑我挖了好几天了然而懒癌泛滥一直停留在标题阶段。。。
2015-07-06 update:新版ss-panel更新了一些地方,文章下面更新了。
前段时间响应王老板的号召,IEC的一些牛(xian)逼(de)哄(dan)哄(teng)的小伙伴们一起弄了一个清水寺论坛,做这个肯定不是为了自己弄着好玩儿,我们也想着把这个网站推出去,于是我们想着搞一些大新闻,就能增加知名度。然而其中某个环节就是让我来搞一个你懂得的服务来服务大众。一开始想着直接开个页面用户名密码公布出来大家想用就用,后来觉得这样太Low逼了,也显得不够专业。想起了在V2EX上看到过ss-panel这种东西,查了查资料感觉很简单,但是实际部署的时候遇到了坑。。。为了避免自己或者其它的人踩进坑里于是决定写点什么。。。于是就有了这篇文章。。。
SS-Panel是由Orvice写的一款配合ShadowsocksManyuser的前端程序。这货是用世界上最好的语言PHP写成的,所以你需要一个支持php的VPS。由于用了奇怪的新特性所以只支持PHP5.4以上的版本。当然为了存储用户数据还需要mysql的支持。
SS-Panel的安装很简单,下载这个ZIP包(由于作者现在在开发V3版本但是还没有完成,所以旧的链接下载的未完成版本不能使用现有的配置方法,请下载SS-Panel V2使用。)然后解压放到Web目录(绑定个域名或者子目录啥的都行,最好是https的,原因不解释),建立一个数据库和一个用户,赋予权限之后,打开解压的目录,将lib/config-simple.php改名成config.php然后修改下配置。必须改的配置是数据库用户、数据库密码、数据库名和本站URL,其他的站点名称之类的看心情修改。签到数值神马的直接参考配置文件中的注释就可以。然后将sql目录中的所有sql文件都导入配置文件中指定的数据库。没有问题的话这个SS-Panel就搭建好可以访问了。管理地址是<URL>/admin 默认的用户名、密码是admin 12345678 不知道是作者犯懒还是别的神马原因,admin用户的用户名密码想要修改只能去改数据库。。。不过也不是很麻烦啦。具体方法文章后面再介绍。
前端搭建好了,木有后端支持神马都是白搭。后端搭建的方法略微繁琐但是其实也是很简单的。首先需要安装一些依赖。我用的CentOS,于是直接
yum -y install python-pip m2crypto pip install cymysql
就可以啦。然后找个目录把ShadowSocks Manyuser下载下来
git clone -b manyuser https://github.com/mengskysama/shadowsocks.git
之后进入目录shadowsocks/shadowsocks里面,修改Config.py,指定数据库用户、密码、数据库之后就可以咯~运行
python server.py
后端程序就跑起来了~但是这里是坑了我的第一个地方。一开始的时候按照网上的办法给SS-Panel和ShadowSocksManyuser各自建立了一个数据库和一个用户,然后都装好后发现SS-Panel的配置中对于后端的配置只有名称、地址等几项,并没有配置管理地址、密码什么的的地方,让我百思不得其解,后来在V2EX上的某个帖子上发现:这俩货应该用同一个数据库!想想也是,SS-Panel本来就是一个前端的壳子而已,用同一个数据库也是应该的。。。研究了一下发现ShadowSocksManyuser对于用户的端口密码的控制是在user这个表中的,而SS-Panel的user这个表和SSManyuser的结构基本上是一样的。所以配置好SS-Panel之后配置ShadowSocks Manyuser的时候只需要填写SS-Panel的数据库用户密码神马的就搞定了。
第二个坑在于,我配置完SS-Panel和manyuser之后发现,这货注册新用户之后分配的端口是从5开始。。。5 10 15巴拉巴拉。。。当时我就震惊了,这么不人性化的设计,这样迟早会吧80神马的端口都分出去,迟早出问题。。。于是就找SS-Panel或者ShadowSocksManyuser怎么修改分配的端口范围,后来发现问题出在我自己这里,SS-Panel默认的数据库中带有一个用户,这个用户默认的端口是50000,之后新建的用户都会以第一个用户为基准端口号递增。我第一次装完后直接删掉了测试用户,所以端口号就是从0开始递增得了。手动修改数据库或者重新导入数据库,总之吧uid最低的用户的端口设置成为50000或者其他的,之后的用户端口就会依次递增啦。当然这个用户密码还是建议修改一下~
第三个不能算坑的坑,这货admin的用户名密码要手动修改数据库。。。还好数据库中的密码只是简单的MD5了一次而已。所以直接戳开数据库,打开ss_admin表直接诶修改里面的admin_name email和pass就可以了。pass是明文密码一次MD5得到的,很容易算出来。
150706 update: 新版的SS-Panel数据库中不再单独存储Admin用户名和密码,而是和user共用一套用户名和密码。admin这个表中只存了user中作为管理员的user_id,所以想要添加管理员的话就去数据库中增加对应的user_id就可以了。默认ID为1的用户是管理员。
还有一个坑就是如果想用supervisor之类的守护程序来保证ShadowSocksManyuser后端的稳定运行的话,在配置文件的command里面不能只写 python /server.py 我一开始就是这么写的,然后发现后端总是连接不上,看了一下Supervisor的日志发现这货直接error然后退出了。。。仔细看了看wiki之后发现command里面要加一个参数才行。。。所以command一行应该变成类似这样
command = python <PATH>/server.py -c <PATH>/config.json
这样就可以愉快的用Supervisor保证后端持续运行了。config.json里面带一个用户名密码端口,然而不用管它,这个密码和端口连接不上的。如果你要是觉得不保险的话可以把这个也改掉。
有人可能会问,想要配置多节点怎么办?很容易。。。只要mysql里面允许数据库的用户远程登录(建议用一个单独的用户,给比较少的权限),然后然后再配置后端的时候数据库地址填写前端SS-Panel所在的服务器的地址,然后数据库用户名密码什么的和之前的一样就可以了。然后再去SS-Panel配置里面加上这个新节点的名称和地址就可以了。ShadowSocksManyuser会自动去远程数据库中读取用户的端口密码等值。对于同一个用户来说,在所有节点的端口和密码都是相同的。
150706 update: 最新版的ss-panel有一些奇怪的问题,在开发者修复之前可以参考 issue 里面ilazycat和 604542720 提出的几个issue来手动解决一下。以下是链接 1 2 3
爱探路
2015 年 04 月 01 日 @ 14:50
好给力的说,我让这个ss-spanel折腾了两天 还没弄好…开始白板啊。
另外http://tsemple.com/ 这个论坛用什么搭建的啊 谢谢啦
大懒猫
2015 年 04 月 01 日 @ 15:52
@爱探路:一个RoR的程序 叫做Campo
yiran
2015 年 04 月 20 日 @ 23:17
之前安装好了,但是,这货不支持ipv6啊,v4但是挺好。楼主能否试试你的?谢谢啦。
打酱油
2015 年 04 月 26 日 @ 11:28
大神!请教您一个问题!
关于添加节点该如何操作,后台管理中心里直接添加节点就可以了吗?后台或者数据库要不要做设置呢?文章提到远程访问数据库怎么操作?看不懂,请明示!谢谢~~
正儿八经是小可
2015 年 05 月 13 日 @ 17:31
一筹莫展之际,百度到了这里~
NICE,一切疑问迎刃而解。
另外提问下:Config.py里的
MANAGE_PASS
MANAGE_PORT
到底是干什么用的~
大懒猫
2015 年 05 月 13 日 @ 17:34
@打酱油:数据库不用做其他的设置,配置了远程数据库之后就可以了。
大懒猫
2015 年 05 月 13 日 @ 17:35
@正儿八经是小可:你不用管这个是干什么的,在这里面用不到。同步用户数据用的是远程数据库~
正儿八经是小可
2015 年 05 月 13 日 @ 20:53
@大懒猫:想做下相应的开发而已~
已经加了套餐等功能,想针对套餐设置下节点显示,所说想问问后端是不是预留了API~
大懒猫
2015 年 05 月 13 日 @ 20:55
@正儿八经是小可:你可以直接去改SS-Panel的文件,作者似乎没有提供相关的API。。。
喵~
2015 年 05 月 19 日 @ 18:28
大神,请问用这个ss-panel创建的用户,在管理后台删除后,原先该用户所有的SS为嘛还能连接。。。我在phpmyadmin里面看到用户确实是被删除了的,但是SS却还能使用,请问你有遇到这个问题吗?或者针对这个问题你有解决办法么,谢谢。
大懒猫
2015 年 05 月 19 日 @ 20:32
@喵~:我没有遇到这个问题。。。你重新安装一次试试、?
ysdj3000
2015 年 05 月 19 日 @ 21:54
大神,我弄了过后那个管理面板的原始账号密码登不进去,怎么设置管理的账号密码啊?
主要是在哪里设置!谢谢啊!
“打开ss_admin表直接诶修改里面的admin_name email和pass就可以了。pass是明文密码一次MD5得到的,很容易算出来。” 我这没看到admin_name这个文件呀!
大懒猫
2015 年 05 月 19 日 @ 22:08
@ysdj3000:你有没有吧程序带的数据库文件导入到数据库中?
ysdj3000
2015 年 05 月 19 日 @ 22:23
我导入了 user.sql ,ss_user_admin,ss_node,ss_reset_pwd ,这几个文件到 http://ip/phpmyadmin 里面,是这样吗?
ysdj3000
2015 年 05 月 19 日 @ 22:36
@大懒猫: 打开ss_user_admin 这个,里面没有 admin_name email和pass 这些字母
最终拉面
2015 年 05 月 22 日 @ 19:38
看到这篇。。。如此详细的教程,折腾了我一个下午的问题就搞定了,多谢UP主。
abyss
2015 年 06 月 28 日 @ 18:50
@ysdj3000:user_admin只是规定了那些UID是管理员罢了,真正的用户是在user那个表里
老刘
2015 年 07 月 06 日 @ 16:47
还有一个奇怪的问题,我安装好了后,后台首页-也就是管理中心,什么都没有啊?不知道博主是否出现这个问题
老刘
2015 年 07 月 06 日 @ 16:51
另外,后台账户密码不是 me@me.com 么?
大懒猫
2015 年 07 月 06 日 @ 16:54
@老刘:参考一下最后给出的几个链接,issue里面的修复方法修复一下试试。
后台账户密码可以改的。在数据库里面可以改。
老刘
2015 年 07 月 06 日 @ 16:56
@大懒猫:
多谢博主。博主回复信息好快
大懒猫
2015 年 07 月 06 日 @ 17:02
@老刘:嘿嘿,开了邮件通知的,正好没啥事就回复呗~
macthien
2015 年 07 月 09 日 @ 22:57
shadowsocks manyuser + ss-panel 如何前端修改密码后端ss也自动修改?现在的问题是Supervisor已经可以正确守护进程,但是我前台改了个密码,服务端就报错了(ss也连接不上) WARNING unsupported addrtype 16, maybe wrong password / ERROR can not parse header . 求解
大懒猫
2015 年 07 月 09 日 @ 23:01
@macthien:你指的SS的连接密码?那个应该是自动生效的啊。。。我没遇到你这个问题。。。用户密码和ss连接密码是单独的。。。
macthien
2015 年 07 月 09 日 @ 23:10
@大懒猫:
数据库能正确修改,但是ss服务端并没有生效。就报错了
大懒猫
2015 年 07 月 09 日 @ 23:11
@macthien:你确定所有连接都关闭了么?当前账号的。重启一下ss后端试试
macthien
2015 年 07 月 09 日 @ 23:14
@大懒猫:
就是需要重启SS后端(supervisorctl restart shadowsocks)才会生效,不会前端修改密码后自动生效。
大懒猫
2015 年 07 月 09 日 @ 23:54
@macthien:是不是因为还有链接没有关闭。。。你确定这个账号的所有连接都断开了吗
hello
2015 年 07 月 23 日 @ 11:30
博主,请问ss-panel不能连接其他服务器的数据库吗?只能连接本地的吗,就是面板所在的机子的数据库
大懒猫
2015 年 07 月 23 日 @ 11:34
@hello:可以连接远程数据库的呀,只要修改配置文件的时候吧DB_HOST改了就可以啦
hello
2015 年 07 月 23 日 @ 12:41
@大懒猫:博客你好啊,貌似不行啊,那个配置文件只有数据库地址,用户名,密码,没有远程端口?现在我好像发现在do.php下面可以设置远程端口,不知道是不是,我现在直接把远程数据库的信息打上去,发现不能连接,博主你看看是不是?
hello
2015 年 07 月 23 日 @ 12:43
@大懒猫:还有就是,刚刚我提交评论的时候,WordPress报错啦,可能是我点击了Post Comment,然后再点击一下,会报错
604542720
2015 年 07 月 23 日 @ 16:07
啊哈哈,竟然被翻牌子了,给个好友位呗,扣扣 604542720
大懒猫
2015 年 07 月 23 日 @ 16:09
@hello:报的神马错。。。不能重复提交?还是神马。。。
kevin
2015 年 07 月 25 日 @ 21:04
请问博主搭建vps有用面板吗
大懒猫
2015 年 07 月 26 日 @ 00:07
@kevin:木有。。。直接用命令行
kevin
2015 年 07 月 26 日 @ 01:29
@大懒猫: 额新手不太会直接运行啊 可以在哪里学习吗 只求配置好SS-Panel前后端,今天弄了一天了
kevin
2015 年 07 月 26 日 @ 02:19
我可以问两个问题吗
1.能登录 能注册 账号能保存到数据库 说明成功了吗?
2.里面的节点怎么导入进去 是不是就是shadowsocks.sql导入进去就自动添加节点了?
kevin
2015 年 07 月 26 日 @ 02:42
还有个问题shadowsocks.sql导入的时候说user表已经存在了 导不进去了。因为刚刚 ss-panel中的sql导入过user.sql了 怎么办?
大懒猫
2015 年 07 月 26 日 @ 10:25
@kevin:导入了SS-Panel的表之后就不需要再导入一次Shadowsocks.sql了。。。SS-Panel的User表包含了shadowsocks需要的所有内容
kevin
2015 年 07 月 26 日 @ 14:28
看了前面的评论 说是ss_user_admin里面是指定管理账号的uid,然后真正的账号密码是在user这个 表中吗?
qiu zi
2015 年 07 月 26 日 @ 20:16
后端版本有些老 怎么才能升级最新?
大懒猫
2015 年 07 月 26 日 @ 22:58
@kevin:新版本的SS-Panel是这样的了,之前的旧版本是单独把管理存在一个admin表里面的。
大懒猫
2015 年 07 月 26 日 @ 23:00
@qiu zi:你说后端的shadows-manyuser么?直接升级就好~
kevin
2015 年 07 月 27 日 @ 01:11
@大懒猫:可是我后端进不去呀 不是说默认admin 密码12345678嘛 提示错误的,我进phpmyadmin中看到用户第一个uid邮箱大概是first@blood.com这样子的 默认后端账号是这个吗,怎么登陆
kevin
2015 年 07 月 27 日 @ 02:04
@大懒猫:额 密码是知道了默认管理帐号: first@blood.com 密码 1993,可是登录进去怎么显示是用户中心 不是管理后台的呀,这个和我邀请码注册的界面是一样的 怎么会这样呢
kevin
2015 年 07 月 27 日 @ 02:17
额 我用上面的账号登录是登录进去了 可是登录进去还是显示用户界面,不是后台的管理界面呀,为啥
大懒猫
2015 年 07 月 27 日 @ 07:17
@kevin:后台的地址是/admin不是/user 然后新版本的SS-Panel管理员用户密码也是存在user这个表里面的,ss_user_admin这个表里面存的只是作为admin用户的ID。
kevin
2015 年 07 月 27 日 @ 14:10
看了你添加节点那里还不是很懂。添加节点中没有server_port和password字段 那我节点添加完他自己自动加入了,我应该在哪里去修改这两个参数呢
kevin
2015 年 07 月 27 日 @ 19:01
额 弄好了 找到修改端口号个密码的的字段了 ,直接进入user表中可以改用户的连接密码和端口号,但是每注册一个用户连接端口号连接密码都是不一样的 ,那不是每次都要去改用户的连接端口,我在phpmyadmin中给这两个字段设置了默认 测试下还不是我设置的值