利用shadowsocks-manager实现shadowsocks的多用户配置和流量统计与限制。基于python版的shadowsocks,科学上网:VPS上搭建shadowsocks。可视化操作界面,动态添加用户、端口,设置流量限制,多种统计流量方式,按小时、天、月等。支持用户注册与连接多台服务器共同管理用户与限制流量。
shadowsocks-manager是基于Node.js和SQLite的一个shadowsocks多用户管理与流量控制工具,当然数据库也可以使用MySQL。目前支持shadowsocks-python和shadowsocks-libev。本文以shadowsocks-python为例。
如果觉得搭建难度较大,可以结合视频一起来看,视频教程在文章底部。
更新:多个节点管理起来参考:利用shadowsocks-manger将多台vps上的ss连接起来
安装Node.js
需要的Node版本为Node.js 8.*,建议采用nodesource进行安装。
系统为Ubuntu,安装方式:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs
安装shadowsocks-manager
直接用npm进行安装:
npm i -g shadowsocks-manager
更新:如果一直报错(WARN没有关系,要有ERR才是报错),则尝试执行:npm i -g shadowsocks-manager --unsafe-perm
。
使用shadowsocks-manager实现多用户管理与流量限制
1.开启shadowsocks
ssserver -m aes-256-cfb -p 12345 -k abcedf --manager-address 127.0.0.1:6001 -d start
注意此处的提示必须是started,而不是ERROR already started at pid ***,如果是后者,就先运行ssserver -d stop。
2.新建配置文件ss.yml,例如我放在~/.ssmgr路径下,内容如下:
type: s shadowsocks: address: 127.0.0.1:6001 # 这里的地址和端口需要跟上一步的 --manager-address 参数保持一致,连接上述 udp 端口 manager: address: 0.0.0.0:4001 # 这个 address 参数会让程序监听一个 tcp 端口,用于接收 webgui 发送过来的控制命令 password: '123456' db: 'ss.sqlite'
3.新建配置文件webgui.yml,作为webgui这个插件的配置文件,内容如下(如有更新,以官方Wiki为准):
type: m manager: address: 45.77.58.123:4001 # 这里换成manager所在的服务器的ip password: '123456' # 这部分的端口和密码需要跟上一步 manager 参数里的保持一致,以连接 type s 部分监听的 tcp 端口 plugins: flowSaver: use: true user: use: true account: use: true macAccount: use: true group: use: true email: use: true type: 'smtp' username: 'username' password: 'password' host: 'smtp.your-email.com' # 这部分的邮箱和密码是用于发送注册验证邮件,重置密码邮件 webgui: use: true host: '0.0.0.0' port: '80' site: 'http://yourwebsite.com' # cdn: 'http://xxx.com' # 静态资源cdn地址,可省略 # icon: 'icon.png' # 自定义首页图标,默认路径在 ~/.ssmgr 可省略 # googleAnalytics: 'UA-xxxxxxxx-x' # Google Analytics ID,可省略 # gcmSenderId: '456102641793' # gcmSenderId 、gcmAPIKey 这两个是Chrome推送用的 # gcmAPIKey: 'AAAAGzzdqrE:XXXXXXXXXXXXXX' webgui_telegram: # telegram 机器人的配置,可省略 use: true token: '191374681:AAw6oaVPR4nnY7T4CtW78QX-Xy2Q5WD3wmZ' alipay: # 如果不使用支付宝,这段可以去掉 use: true appid: 2015012108272442 notifyUrl: 'http://yourwebsite.com/api/user/alipay/callback' merchantPrivateKey: 'xxxxxxxxxxxx' alipayPublicKey: 'xxxxxxxxxxx' gatewayUrl: 'https://openapi.alipay.com/gateway.do' paypal: # 如果不使用paypal,这段可以去掉 use: true mode: 'live' # sandbox or live client_id: 'At9xcGd1t5L6OrICKNnp2g9' client_secret: 'EP40s6pQAZmqp_G_nrU9kKY4XaZph' db: 'webgui.sqlite'
注:
1.其中http://yourwebsite.com是指你的域名(也可以用IP代替),如果是用域名,推荐使用Namesilo。
2.如果邮箱使用qq和163的邮箱一直发送失败(密码不是你的QQ密码,是一个独立的很长的密码,host是smtp.qq.com,163的自己搜看smtp服务器是什么),那么你可以试一下使用自己的域名邮箱:Zoho免费域名邮箱,正好可以让网站使用域名而不是IP。
4.启动shadowsocks-manager(我直接使用screen启动了,如果要调试,自行取消screen -dmS ssmgr/webgui)
screen -dmS ssmgr ssmgr -c ~/.ssmgr/ss.yml screen -dmS webgui ssmgr -c ~/.ssmgr/webgui.yml
启动时我遇到这个错误Error: Cannot find module ‘/usr/lib/node_modules/shadowsocks-manager/node_modules/sqlite3/lib/binding/node-v48-linux-x64/node_sqlite3.node’,Google之作者的回复是由于网络原因安装失败,建议我们重新安装试试:
npm uninstall -g shadowsocks-manager npm install -g shadowsocks-manager
但是我重新安装了几次都没有成功,最后的解决方法是是:
cd /usr/lib/node_modules/shadowsocks-manager/ npm install sqlite3 --save
更新:如果运行ssmgr提示“/usr/bin/env: ‘noder’: No such file or directory”,那么是因为你在Mac上安装或者更新的shadowsocks-manger,导致换行符有点编码问题。解决方法是修改文件/usr/lib/node_modules/shadowsocks-manager/bin/ssmgr,修改方式,用vim编辑器在命令模式执行如下命令:
:se ff=unix :wq
在网页上配置shadowsocks-manager
按照第二部分配置好之后,打开http://yourwebsite.com就可以看到注册界面了,首次注册的账号即为管理员~
如上图所示,shadowsocks-manager可以实现shadowsocks新用户注册,用户管理,账号管理(端口配置&流量限制),甚至可以将多台服务器一起管理起来,实现多台服务器的shadowsocks流量限制与用户管理。
搭建shadowsocks-manager视频教程
录制了一个视频教程,可以关注公众号flyzy小站,回复多用户视频,即可获得
最新评论
5211314
能不能教我 一点不会