• 谢谢你千辛万苦找到了小站( ̄_ ̄ )

  • Telegram频道开通啦,欢迎订阅୧(๑•̀⌄•́๑)૭✧

  • Telegram群组开通啦,快来找我聊天吧(๑•́ ∀ •̀๑)

您的位置:

shadowsocks-manager实现ss多用户管理与流量限制

利用shadowsocks-manager实现shadowsocks的多用户配置和流量统计与限制。基于python版的shadowsocks,科学上网:VPS上搭建shadowsocks。可视化操作界面,动态添加用户、端口,设置流量限制,多种统计流量方式,按小时、天、月等。支持用户注册与连接多台服务器共同管理用户与限制流量。

shadowsocks-manager是基于Node.js和SQLite的一个shadowsocks多用户管理与流量控制工具,当然数据库也可以使用MySQL。目前支持shadowsocks-python和shadowsocks-libev。本文以shadowsocks-python为例。

 

安装Node.js

需要的Node版本为Node.js 6.*,建议采用nodesource进行安装。

系统为Ubuntu,安装方式:

 

安装shadowsocks-manager

直接用npm进行安装:

 

使用shadowsocks-manager实现多用户管理与流量限制

1.开启shadowsocks

注意此处的提示必须是started,而不是ERROR already started at pid ***,如果是后者,就先运行ssserver -d stop。

2.新建配置文件ss.yml,例如我放在~/.ssmgr路径下,内容如下:

3.新建配置文件webgui.yml,作为webgui这个插件的配置文件,内容如下:

4.启动shadowsocks-manager(我直接使用screen启动了,如果要调试,自行取消screen -dmS ssmgr/webgui

启动时我遇到这个错误Error: Cannot find module ‘/usr/lib/node_modules/shadowsocks-manager/node_modules/sqlite3/lib/binding/node-v48-linux-x64/node_sqlite3.node’,Google之作者的回复是由于网络原因安装失败,建议我们重新安装试试:

但是我重新安装了几次都没有成功,最后的解决方法是是:

 

在网页上配置shadowsocks-manager

按照第二部分配置好之后,打开http://yourwebsite.com就可以看到注册界面了,首次注册的账号即为管理员~

《shadowsocks-manager实现ss多用户管理与流量限制》

如上图所示,shadowsocks-manager可以实现shadowsocks新用户注册,用户管理,账号管理(端口配置&流量限制),甚至可以将多台服务器一起管理起来,实现多台服务器的shadowsocks流量限制与用户管理。

点赞
  1. 风住尘香说道:

    [2018-04-24 05:26:40.544] [ERROR] system - { Error: connect ECONNREFUSED 176.122.190.121:4001
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1105:14)
    code: 'ECONNREFUSED',
    errno: 'ECONNREFUSED',
    syscall: 'connect',
    address: '176.122.190.121',
    port: 4001 }
    [2018-04-24 05:26:40.545] [ERROR] account - Error: connect to ssmgr[s] fail [176.122.190.121:4001]
    at Socket.client.on.err (/usr/lib/node_modules/shadowsocks-manager/lib/services/manager.js:103:14)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at emitErrorNT (net.js:1296:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    [2018-04-24 05:26:55.016] [ERROR] email - Send code fail: Error: Connection timeout
    [2018-04-24 05:26:55.017] [ERROR] webgui - { Error: Connection timeout
    at SMTPConnection._formatError (/usr/lib/node_modules/shadowsocks-manager/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
    at SMTPConnection._onError (/usr/lib/node_modules/shadowsocks-manager/node_modules/nodemailer/lib/smtp-connection/index.js:579:20)
    at Timeout._connectionTimeout.setTimeout (/usr/lib/node_modules/shadowsocks-manager/node_modules/nodemailer/lib/smtp-connection/index.js:261:18)
    at ontimeout (timers.js:386:11)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5) code: 'ETIMEDOUT', command: 'CONN' }
    验证码一直在转圈。大佬看看,还有域名ip能ping,域名不行该怎么解决?

    1. 风住尘香说道:

      域名可以ping了也可以打开了,大佬看下前面的错误日志 :idea:

    2. flyzy小站说道:

      ECONNREFUSED 是端口被占用的错误

      1. 风住尘香说道:

        我不知道应该怎么处理。谢谢,找了网上的方法好像没用

        1. flyzy小站说道:

          ps -aux查看所有进程,把所有有ssmgr的进程都kill掉

          1. 风住尘香说道:

            没有找到这样的进程,请问SQLite数据库是不是要去安装还是什么的?教程里没有提到

          2. flyzy小站说道:

            你在安装shadowsocksmanager的时候会装SQLite的

  2. 风住尘香说道:

    “按照第二部分配置好之后,打开http://yourwebsite.com就可以看到注册界面了,首次注册的账号即为管理员~”,大佬这里是用什么打开的?前面的最后一步两个都读出system start了,还有之前的80端口报错改成了100过了没问题吧?

    1. flyzy小站说道:

      1.浏览器打开
      2.80改成100就要加上:100,因为http的默认端口是80

      1. 风住尘香说道:

        域名解析后出现记录,回域名官网填上了这两个f1g1ns1.dnspod.net,f1g1ns2.dnspod.net,这里操作有错吗?之后怎么确认进度?还有域名就是自己选的xxx.com吗,前面要不要加www

  3. 吉子说道:

    你好,为什么SS开启后,过一段时间又会自己关闭,如何设置一直开启?

    1. flyzy小站说道:

      啥意思?ss怎么会自动关闭

      1. 吉子说道:

        对啊,过一段时间就不能打开网页了,然后得重新 使用screen 命令就好了,另外,分配新用户后,新用户的帐号无法上外网,怎么破?

  4. 风住尘香说道:

    大佬,请问这个可以用在搬瓦工vps网站上直接搭ss的上吗?还是必须在Ubuntu里安shadowsocks?

    1. flyzy小站说道:

      可以用centos的 但是我的教程是基于ubuntu的 centos的命令可能不一样

      1. 风住尘香说道:

        如果搬瓦工系统系统重装为ubuntu后是否可以通过putty来按教程操作 :idea:

          1. 风住尘香说道:

            putty配置ss时启动ss出现option -d not recognized :idea:

          2. flyzy小站说道:

            你的ss版本过低 卸载了重新安装

          3. 风住尘香说道:

            SSH服务器拒绝了密码,重装了好多次系统还有修改密码都没用,可不可以qq远程一下,我qq1278003006

          4. flyzy小站说道:

            。。。你是不是翻译页面了?用户名root,密码就是直接复制就行了啊

  5. Jcp说道:

    博主,我在安装那个shadowsocks-manager时 出现
    npm WARN deprecated [email protected]: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
    npm WARN deprecated [email protected]: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
    npm WARN deprecated [email protected]: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
    npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
    npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
    npm WARN deprecated [email protected]: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
    npm WARN deprecated [email protected]: This module relies on Node.js's internals and will break at some point. Do not use it, and update to [email protected]

    是不是要更新 upgrade

    1. Jcp说道:

      系统kill了
      Killed ...] | extract:later: verb gentlyRm don't care about contents; nuking /usr/lib/node_modules/.stagin

      1. flyzy小站说道:

        kill是因为你机子内存不够 一般1G够用 512经常被KILL

        1. Jcp说道:

          那我是不是需要换服务器啊?
          请问博主,是不是日本的服务器比较稳定

          1. flyzy小站说道:

            日本和洛杉矶都不错

          2. Jcp说道:

            好的,谢谢

    2. flyzy小站说道:

      WARN没关系的,只要没有被killed就行

  6. Tommy说道:

    啊,为什么搭建好几次都出错了啊

    1. flyzy小站说道:

      不要用screen方式启动,看错误日志

  7. 一诺千金说道:

    博主你好,我按照你的教程操作, 过程也没出现错误问题 ,但是打开http://IP:8080网页的时候,无法打开。运行完“screen -dmS ssmgr ssmgr -c ~/.ssmgr/ss.yml screen -dmS webgui ssmgr -c ~/.ssmgr/webgui.yml”命令还需要其他操作吗?

    1. flyzy小站说道:

      把screen -dmS ssmgr/webgui 取消了运行看看日志信息

      1. 一诺千金说道:

        博主 我运行了 “ssmgr -c ~/.ssmgr/ss.yml” 和“ssmgr -c ~/.ssmgr/webgui.yml” 提示:ssmgr: command not found。求指教。 :razz:

        1. flyzy小站说道:

          你应该是ssmgr没有安装成功,是不是安装的时候被kill掉了?512兆内存的经常被kill的

          1. 盒子说道:

            请问ssmgr没有安装成功的问题怎么解决啊 没有发现重新装ssmgr的步骤

          2. flyzy小站说道:

            你是指装的过程中被Killed掉了吗?直接再安装就可以了

  8. shas说道:

    碰到太多问题心烦直接重装服务器了 重新配置后前面都挺成功 但又出现了这个问题
    ssmgr -c ~/.ssmgr/webgui.yml
    /usr/lib/node_modules/shadowsocks-manager/lib/
    [2018-03-25 11:23:43.404] [INFO] system - System start.
    Error: connect ECONNREFUSED 104.156.239.8:4001
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1105:14)
    code: 'ECONNREFUSED',
    errno: 'ECONNREFUSED',
    syscall: 'connect',
    address: '104.156.239.8',
    port: 4001 }

    换了其他端口也是报4001端口的错误 netstat -lnp|grep 4001也没有回应

    1. flyzy小站说道:

      关闭了所有进程 配置文件里全部改成不是4001 都会报这个错?

      1. shas说道:

        对 都是报4001

        1. flyzy小站说道:

          重启服务器后再试试

          1. shas说道:

            没用 就不停跳这两个错误
            [2018-03-25 15:39:55.297] [ERROR] system - { Error: connect ECONNREFUSED 104.156.239.8:4001
            at Object.exports._errnoException (util.js:1020:11)
            at exports._exceptionWithHostPort (util.js:1043:20)
            at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1105:14)
            code: 'ECONNREFUSED',
            errno: 'ECONNREFUSED',
            syscall: 'connect',
            address: '104.156.239.8',
            port: 4001 }
            [2018-03-25 15:39:55.319] [ERROR] account - Error: connect to ssmgr[s] fail [104.156.239.8:4001]
            at Socket.client.on.err (/usr/lib/node_modules/shadowsocks-manager/lib/services/manager.js:103:14)
            at emitOne (events.js:96:13)
            at Socket.emit (events.js:188:7)
            at emitErrorNT (net.js:1296:8)
            at _combinedTickCallback (internal/process/next_tick.js:80:11)
            at process._tickCallback (internal/process/next_tick.js:104:9)

  9. shas说道:

    发送不了验证码
    ssmgr -c ~/.ssmgr/webgui.yml
    /usr/local/nodejs/node-v6.9.1-linux-x64/lib/node_modules/shadowsocks-manager/lib/
    /usr/local/nodejs/node-v6.9.1-linux-x64/lib/node_modules/shadowsocks-manager/bin/ssmgr:7
    process.chdir(lib);
    ^

    Error: ENOENT: no such file or directory, uv_chdir
    at Error (native)
    at Object. (/usr/local/nodejs/node-v6.9.1-linux-x64/lib/node_modules/shadowsocks-manager/bin/ssmgr:7:9)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    这是什么问题?

    1. flyzy小站说道:

      不清楚 看日志信息是你少什么文件

      1. shas说道:

        如何干净卸载呢 npm uninstall -g shadowsocks-manager后 ssmgr --help已经是-bash: /usr/local/bin/ssmgr: No such file or directory了 但打开服务器地址依旧能打开ssmgr页面

        1. flyzy小站说道:

          ps -aux,然后用kill pid把那个进程杀了

          1. shas说道:

            ssmgr -c ~/.ssmgr/webgui.yml
            /usr/local/nodejs/node-v6.9.1-linux-x64/lib/node_modules/shadowsocks-manager/lib/
            [2018-03-25 14:14:32.300] [INFO] system - System start.
            [2018-03-25 14:14:34.211] [ERROR] webgui - express server error: Error: listen EADDRINUSE 0.0.0.0:80
            这次又是什么问题 80端口被占用了? Apache端口已经改成90了啊

          2. flyzy小站说道:

            RADDRINUSE就是端口已经被占用的错误,你看下别的进程有没有占用80

  10. 火火火说道:

    能问下最后支付宝支付哪里到底怎么做的么?怎么实现支付的 :idea:

    1. flyzy小站说道:

      要去支付宝申请的,直接打到你的支付宝账号。参考:https://github.com/shadowsocks/shadowsocks-manager/wiki/WebGUI

      1. 火火火说道:

        支付宝要商家注册不行了,PayPal也不知道该怎么弄。。。
        试着启动了下,发下在webgui那里出问题了,能帮看下么
        [email protected]:~# ssmgr -c ~/webgui.yml
        /usr/lib/node_modules/shadowsocks-manager/lib/
        [2018-03-17 04:14:02.692] [INFO] system - System start.
        [2018-03-17 04:14:04.734] [ERROR] system - { Error: connect ECONNREFUSED 45.76.195.110:4001
        at Object.exports._errnoException (util.js:1020:11)
        at exports._exceptionWithHostPort (util.js:1043:20)
        at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1105:14)
        code: 'ECONNREFUSED',
        errno: 'ECONNREFUSED',
        syscall: 'connect',
        address: '45.76.195.110',
        port: 4001 }
        [2018-03-17 04:14:04.744] [ERROR] flowSaver - connect to server [email protected]:4001 fail.

        1. flyzy小站说道:

          看信息似乎是服务器地址写的不对了那个用了4001端口的

          1. 火火火说道:

            这部分我解决了,可是开了ss.yml和webgui.yml后,访问结果是拒绝了访问请求。。。不知道是怎么回事。。。

          2. 火火火说道:

            哈,不弄这个了,花了我很多时间,还是用你之前写的那个ss-bash吧,等我以后会写简单的服务器在说吧

  11. tt说道:

    教程很好,可惜自己不懂系统,能详细一点(比如怎么编文件,存文件..etc)就更好的

  12. 娜迦亡说道:

    求图解教程 这样看不懂

  13. shang说道:

    怎么新建配置文件啊

    1. flyzy2005说道:

      以我的为例:
      新建~/.ssmgr文件夹:mkdir ~/.ssmgr
      新建配置文件并保存(以ss.yml为例):vi ~/.ssmgr/ss.yml

  14. 娜迦亡说道:

    这里看不懂 :exclaim: ,如果我想给多个人用我就只用那个一件搭建的二维码是不是就够了,还有我延迟怎么一直在160ms,但是电脑上看油管又能带4k

    1. flyzy2005说道:

      根据不同的流量限制与多用户配置需求,参考:shadowsocks配置多用户多密码
      延时不等于网速。vultr开了bbr,网速还是可以的,延时没办法,毕竟服务器在美国。

      1. 娜迦亡说道:

        No command 'type:' found, did you mean:
        Command 'typer' from package 'erlang-typer' (universe)
        type:: command not found
        按照博客上写的到了第三步,粘贴后出现这一段话,感觉不太妙,然后第四段怎么都看不懂

        1. flyzy2005说道:

          那个是配置文件啊 不是直接写在命令行里的 要新建一个文件写在文件里

  15. young说道:

    博主哒哒,这一套走到最后都成功了打开网址却没有注册界面,请帮我分析一下。辛苦了,赞助一杯茶钱 :biggrin:
    第一个疑问:最后这一步 4.启动shadowsocks-manager(我直接使用screen启动了,如果要调试,自行取消screen -dmS ssmgr/webgui)
    screen -dmS ssmgr ssmgr -c ~/.ssmgr/ss.yml
    screen -dmS webgui ssmgr -c ~/.ssmgr/webgui.yml
    这两句执行完很干净,没提示也没报错,应该是成功了吧?
    第二个疑问:
    使用shadowsocks-manager实现多用户管理与流量限制
    1.开启shadowsocks
    ssserver -m aes-256-cfb -p 12345 -k abcedf --manager-address 127.0.0.1:6001 -d start
    这一步是必须的吗,启动ss之前不是后台运行了吗?P 12345 k abcedf 是端口密码吗?我的shadowsocks.json没有配置这个端口 配置的server端口:20000 本地是127.0.0.1:1080

    1. young说道:

      对了,网站是https://young2018.weebly.com/ 用的weebly现成的没关系吧

      1. flyzy2005说道:

        只要DNS解析到你的ip就可以

    2. flyzy2005说道:

      1. 用screen运行,都没有提示的,所以你如果要看有没有错误,把screen -dmS ssmgr去掉(就如我括号里的说明一样),如果这样没有红字提示的话,说明ssmgr正常。
      2. 这是开启shadowsocks的命令行用法,-p接端口,-k接密码,用命令行开启的话,你的本地shadowsocks.json就不起作用了。注意用这个开启,保证之前服务器端的ss服务没有开启,即运行完是started,而不是already started at pid ***

      1. young说道:

        上面的问题都解决了 :eek: ,但是注册的时候获取验证码"验证码发送错误"

        1. flyzy2005说道:

          SMTP不是你登录邮箱的账号密码,是独立生成的一个验证码,去你的邮箱服务商那里申请开通SMTP服务。
          我试过163(有时候发送失败),QQ(相对比较稳定,发送QQ&gmail邮箱都是秒到)。
          如果还是错误,你将最后screen -dmS webgui ssmgr -c ~/.ssmgr/webgui.yml改成ssmgr -c ~/.ssmgr/webgui.yml看看错误是啥。

          1. young说道:

            这个地方我是这样填的:
            use: true
            type: 'smtp'
            username: '我的[email protected]'
            password: 'qq邮箱的登录密码'
            host: 'smtp.qq.com'
            执行结果:
            [email protected]:~# ssmgr -c ~/.ssmgr/webgui.yml
            /usr/lib/node_modules/shadowsocks-manager/lib/
            [2018-03-01 03:50:25.182] [INFO] system - System start.
            这个没错的吧.
            pop3和imap都开启了,但是qq邮箱设置那里有个温馨提示:登录第三方客户端时,密码框请输入“授权码”进行验证.是这个授权码的问题吗?

          2. young说道:

            等了3分钟,有错误了
            [email protected]:~# ssmgr -c ~/.ssmgr/webgui.yml
            /usr/lib/node_modules/shadowsocks-manager/lib/
            [2018-03-01 03:50:25.182] [INFO] system - System start.
            [2018-03-01 03:53:00.060] [ERROR] system - { code: 1 }
            [2018-03-01 03:53:00.072] [ERROR] flowSaver - Error: ssmgr[s] return an error code [我的vps的ip:4001]
            at receiveData.then.message (/usr/lib/node_modules/shadowsocks-manager/lib/services/manager.js:90:18)
            at process._tickCallback (internal/process/next_tick.js:109:7)
            好奇怪,ss.yml和webgui.yml manager我都是配置的8001端口

          3. young说道:

            我觉得问题应该是,qq邮箱开启smtp后在第三方登录时需要授权码,这个好恶心,不知道怎么破,我先换gmail试试

  16. yang说道:

    走到下面这一步卡住了,这段命令识别不了,应该怎么操作啊 :idea: :idea:
    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'

    1. flyzy2005说道:

      什么意思?就是新建一个配置文件ss.yml啊这一步

      1. yang说道:

        博主大神,我指令还没学好,新建指令这样写可以吗? vi/~/.ssmgr/ss.yml

        1. flyzy2005说道:

          mkdir ~/.ssmgr # 新建文件夹
          vi ~/.ssmgr/ss.yml # 新建配置文件,vi后面有个空格

          1. yang说道:

            太到位了,蟹蟹博主了,我去试试先。

    1. flyzy2005说道:

      就是填你的站点url

      1. :exclaim: 怎么解析呢,把域名解析到这个vps上?

        1. flyzy2005说道:

          嗯,在域名服务商那里添加DNS解析到这个IP就行了

  17. NDJ说道:

    :evil: 老哥稳,发的东西都有用,如果能教下搭建私有云就更好了 :evil:

    1. flyzy2005说道:

      哈哈,那个我以后有时间可以研究研究,现在没有需求

发表评论

电子邮件地址不会被公开。 必填项已用*标注