<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="『原创』ShadowsocksR MudbJSON模式多用户一键脚本">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2017-08-21 14:59<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
『原创』ShadowsocksR MudbJSON模式多用户一键脚本 支持流量限制等

系统要求
CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

推荐 Debian 7 x64，这个是我一直使用的系统，我的脚本在这个系统上面出错率最低。并且最容易安装锐速（锐速不支持OpenVZ）

CentOS 7 自带防火墙问题(firewalld)自行解决，其他版本没有做测试。

脚本版本
Ver: 1.0.7

脚本特点：
所有步骤都可以通过 Shell 脚本中文交互 操作。


    支持 限制 用户速度

    支持 限制 用户设备数

    支持 限制 用户总流量

    支持 定时 流量清零

    支持 显示 当前连接IP

    支持 显示 SS/SSR连接+二维码

    支持 一键安装 BBR

    支持 一键安装 锐速

    支持 一键安装 LotServer

    支持 一键封禁 垃圾邮件(SMAP)/BT/PT


安装步骤
简单的来说，如果你什么都不懂，那么你直接一路回车就可以了！

本脚本需要Linux root账户权限才能正常安装运行，所以如果不是 root账号，请先切换为root，如果是 root账号，那么请跳过！

sudo su

输入上面代码回车后会提示你输入当前用户的密码，输入并回车后，没有报错就继续下面的步骤安装ShadowsocksR。


注意：如果你安装的有我的另一个 ssr.sh 脚本，请先卸载ShadowsocksR服务端，再安装这个脚本（不能共存）！

wget -N --no-check-certificate https://softs.fun/Bash/ssrmu.sh &amp;&amp; chmod +x ssrmu.sh &amp;&amp; bash ssrmu.sh

备用下载地址（上面的链接无法下载，就用这个）：

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssrmu.sh &amp;&amp; chmod +x ssrmu.sh &amp;&amp; bash ssrmu.sh

下载运行后会提示你输入数字来选择要做什么。

输入 1 ，就会开始安装ShadowsocksR服务端，并且会提示你输入Shadowsocks的 端口/密码/加密方式/ 协议/混淆（混淆和协议是通过输入数字选择的） 等参数来添加第一个用户。

注意：用户名不支持中文，如果输入中文会一直保存下去！

请输入要设置的用户 用户名(请勿重复, 用于区分, 不支持中文, 会报错 !)
(默认: doubi):doubi
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	用户名 : doubi
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
请输入要设置的用户 端口(请勿重复, 用于区分)
(默认: 2333):2333
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	端口 : 2333
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
请输入要设置的用户 密码
(默认: doub.io):doub.io
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	密码 : doub.io
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
请选择要设置的用户 加密方式
  1. none
 [注意] 如果使用 auth_chain_* 系列协议，建议加密方式选择 none (该系列协议自带 RC4 加密)，混淆随意
 
  2. rc4
  3. rc4-md5
  4. rc4-md5-6
 
  5. aes-128-ctr
  6. aes-192-ctr
  7. aes-256-ctr
 
  8. aes-128-cfb
  9. aes-192-cfb
 10. aes-256-cfb
 
 11. aes-128-cfb8
 12. aes-192-cfb8
 13. aes-256-cfb8
 
 14. salsa20
 15. chacha20
 16. chacha20-ietf
 [注意] salsa20/chacha20-*系列加密方式，需要额外安装依赖 libsodium ，否则会无法启动ShadowsocksR !
 
(默认: 5. aes-128-ctr):5
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	加密 : aes-128-ctr
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
请选择要设置的用户 协议插件
 1. origin
 2. auth_sha1_v4
 3. auth_aes128_md5
 4. auth_aes128_sha1
 5. auth_chain_a
 6. auth_chain_b
 [注意] 如果使用 auth_chain_* 系列协议，建议加密方式选择 none (该系列协议自带 RC4 加密)，混淆随意
 
(默认: 2. auth_sha1_v4):2
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	协议 : auth_sha1_v4
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
是否设置 协议插件兼容原版(_compatible)？[Y/n]y
 
请选择要设置的用户 混淆插件
 1. plain
 2. http_simple
 3. http_post
 4. random_head
 5. tls1.2_ticket_auth
 [注意] 如果使用 ShadowsocksR 代理游戏，建议选择 混淆兼容原版或 plain 混淆，然后客户端选择 plain，否则会增加延迟 !
 另外, 如果你选择了 tls1.2_ticket_auth，那么客户端可以选择 tls1.2_ticket_fastauth，这样即能伪装特征 又不会增加延迟 !
 
(默认: 5. tls1.2_ticket_auth):5
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	混淆 : tls1.2_ticket_auth
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 
是否设置 混淆插件兼容原版(_compatible)？[Y/n]y
 
请输入要设置的用户 欲限制的设备数 ( auth_* 系列协议 不兼容原版才有效 )
[注意] 设备数限制：每个端口同一时间能链接的客户端数量(多端口模式，每个端口都是独立计算)，建议最少 2个。
(默认: 无限):5
 
请输入要设置的用户 单线程 限速上限(单位：KB/S)
[注意] 单线程限速：每个端口 单线程的限速上限，多线程即无效。
(默认: 无限):666
 
请输入要设置的用户 总速度 限速上限(单位：KB/S)
[注意] 端口总限速：每个端口 总速度 限速上限，单个端口整体限速。
(默认: 无限):2333
 
请输入要设置的用户 可使用的总流量上限(单位: GB, 1-838868 GB)
(默认: 无限):1
 
请输入要设置的用户 禁止访问的端口
[注意] 禁止的端口：例如不允许访问 25端口，用户就无法通过SSR代理访问 邮件端口25了，如果禁止了 80,443 那么用户将无法正常访问 http/https 网站。
(默认为空，无限制):
 
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
	禁止的端口 : 无限制
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;

同时最后也会提示是否设置 混淆 兼容原版（也就是使用原版SS也能链接），不懂 直接回车 或 输入 y 。（协议不在兼容原版）

注意：关于限制设备数数，这个协议必须是非原版并且不兼容原版才有效，也就是必须SSR客户端使用协议的情况下，才有效！
不输入一路回车就是 默认参数：

用户 : doubi
端口 : 2333
密码 : doub.io
加密 : aes-128-ctr
协议 : auth_sha1_v4_compatible
混淆 : tls1.2_ticket_auth_compatible
设备数限制: 0(无限)
单线程限速: 0 KB/S (不限速)
端口总限速: 0 KB/S (不限速)
禁止的端口 : 无限制
用户总流量 : 819.21 TB

如果安装过程没有出错，那么最后就会提示：

############################################################
 用户 [doubi] 的配置信息：
 
 I P     : xxx.xxx.xxx.xxx
 端口     : 2333 
 密码     : doub.io
 加密     : aes-128-ctr
 协议     : auth_sha1_v4_compatible
 混淆     : tls1.2_ticket_auth_compatible 
 设备数限制: 5
 单线程限速: 666 KB/S 
 端口总限速: 2333 KB/S 
 禁止的端口 : 无限制
 
 已使用流量 : 上传: XXX KB 下载: XXX MB
 剩余的流量 : 980 MB 
 用户总流量 : 1 GB
 
 SS链接: ss://xxxxxxxxxxxxx
 SS二维码: http://pan.baidu.com/share/qrcode?w=300&amp;h=300&amp;url=ss://xxxxxxxxxxxxx
 SSR链接: ssr://xxxxxxxxxxxxx
 SSR二维码: http://pan.baidu.com/share/qrcode?w=300&amp;h=300&amp;url=ssr://xxxxxxxxxxxxx
 
 提示: 
 在浏览器中，打开二维码链接，就可以看到二维码图片。
 协议和混淆后面的[ _compatible ]，指的是 兼容原版协议/混淆。
 
############################################################

SS/SSR链接（格式： ss://XXXXXXX ，很长），可以从剪辑版导入Shadowsocks客户端，不懂的话看下面二维码。

SS/SSR二维码，复制后面的链接在浏览器打开，就会显示一个二维码的图片，可以用Shadowsocks客户端扫描二维码来添加。



使用说明
运行脚本，

bash ssrmu.sh
 
# 还有一个 运行参数，是用于所有用户流量清零的
bash ssrmu.sh clearall
# 不过不需要管这个，可以通过脚本自动化的设置 crontab 定时运行脚本

输入对应的数字来执行相应的命令。

  ShadowsocksR MuJSON一键管理脚本 [vX.X.X]
  ---- Toyo | doub.io/ss-jc60 ----
 
  1. 安装 ShadowsocksR
  2. 更新 ShadowsocksR
  3. 卸载 ShadowsocksR
  4. 安装 libsodium(chacha20)
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
  5. 查看 账号信息
  6. 显示 连接信息
  7. 设置 用户配置
  8. 手动 修改配置
  9. 清零 已用流量
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 10. 启动 ShadowsocksR
 11. 停止 ShadowsocksR
 12. 重启 ShadowsocksR
 13. 查看 ShadowsocksR 日志
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
 14. 其他功能
 15. 升级脚本
 
 当前状态: 已安装 并 已启动
 
请输入数字 [1-15]：

注意：添加/删除/修改 用户配置后，无需重启ShadowsocksR服务端，ShadowsocksR服务端会定时读取数据库文件内的信息，不过修改 用户配置后，可能要等个十几秒才能应用最新的配置（因为ShadowsocksR不是实时读取数据库的，所以有间隔时间）。

文件位置
安装目录：/usr/local/shadowsocksr

配置文件：/usr/local/user-config.json

数据文件：/usr/local/mudb.json


注意：ShadowsocksR服务端不会实时的把流量数据写入 数据库文件，所以脚本读取流量信息也不是实时的！



其他说明
ShadowsocksR 安装后，自动设置为 系统服务，所以支持使用服务来启动/停止等操作，同时支持开机启动。


    启动 ShadowsocksR：service ssrmu start

    停止 ShadowsocksR：service ssrmu stop

    重启 ShadowsocksR：service ssrmu restart

    查看 ShadowsocksR状态：service ssrmu status


ShadowsocksR 默认支持UDP转发，服务端无需任何设置。

本脚本已经集成了 安装/卸载 锐速(ServerSpeeder)开心版，但是是否支持请查看 Linux支持内核列表 。（锐速不支持OpenVZ）

ShadowsocksR目前支持的协议和混淆：
协议（Protocol）：origin，auth_sha1_v4，auth_aes128_md5，auth_aes128_sha1，auth_chain_a，auth_chain_b

混淆（Obfs）：plain，http_simple，http_post，random_head，tls1.2_ticket_auth，tls1.2_ticket_fastauth(这个是客户端用的，而服务端需要选择tls1.2_ticket_auth)

origin 和 plain 是原版，加粗的是推荐使用的。


如果你想要使用 tls1.2_ticket_fastauth 混淆插件，那么服务端选择 tls1.2_ticket_auth，客户端选择 tls1.2_ticket_fastauth 即可。

如果服务端 设置混淆参数为：tls1.2_ticket_auth_compatible (兼容原版)

那么客户端 可使用的混淆为：plain / tls1.2_ticket_auth / tls1.2_ticket_fastauth

tls1.2_ticket_auth 与 tls1.2_ticket_fastauth 的区别为，后者不会等待服务器回应，所以不会增加延迟。适合于，因为混淆插件增加延迟的原因不得不选择原版混淆 plain，但是又因为QOS等因素而处于延迟与干扰/限速等之间抉择的时候，可以选择 tls1.2_ticket_fastauth 客户端混淆插件！




因为阿里云/腾讯云的服务器还有一个外部的防火墙也就是叫 安全组或规则组。

一般来说默认是只开放 22(SSH)端口，所以一些人在搭建ShadowsocksR服务端后，会出现无法访问的情况，ShadowsocksR客户端的统计窗口显示超时。

同时ShadowsocksR服务端开启详细日志模式(其他功能中)后，ShadowsocksR客户端访问ShadowsocksR账号无日志输出。



ShadowsocksR 端口限速中 单线程限速 和 端口总限速 的区别
注意：如果要使用脚本中的这个功能，需要重新下载脚本，并重装安装 2月15日 以后的ShadowsocksR服务端才行。

如果发现Shadowsocks原版协议/混淆可以使用，而ShadowsocksR的协议/混淆无法使用，那么多半是 VPS时区问题

这个命令，我的ShadowsocksR脚本在安装的时候已经执行了，如果你发现没有执行，那你可以手动执行。

我们可以通过下面这个命令，把VPS的时区调整为北京时区，这样就避免了ShadowsocksR 协议/混淆 因为时差太大造成的无法验证。

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

注意，部分VPS会提示你是否覆盖文件，输入 y 然后回车。

如果你遇到，crontab设定的定时任务不按更换时区后的VPS时间执行，那么请看下面：

crontab设定的定时任务不按VPS的时间执行，那是因为你更换VPS时区后还需要重启crontab。

CentOS 系统：

service crond restart

Debian/Ubuntu 系统：

service cron restart



提示 Media change: please insert the disc labeled&lsquo;Debian GNU/Linux 7.0.0 Wheezy &mdash; Official amd64 CD 等信息是 apt源 的问题，更换 apt源
ShadowsocksR启动失败，日志提示：Exception: libsodium not found 的错误
这是你使用了 chacha20 系列加密方式，但是却没有安装 libsodium支持库，导致ShadowsocksR无法启动，运行脚本选择选项 4 安装 libsodium支持库即可，如果安装失败，请选择其他的加密方式，对速度影响不大。

提示wget: unknown host &ldquo;softs.fun&rdquo; 之类的错误
这是无法解析我的域名，多半是DNS的问题，请更换DNS为谷歌DNS。


echo &quot;nameserver 8.8.8.8
nameserver 8.8.4.4&quot; &gt; /etc/resolv.conf
# 两行一起复制一直执行



提示 wget: command not found 的错误
这是你的系统精简的太干净了，wget都没有安装，所以需要安装wget。


CentOS系统:

yum install -y wget

Debian/Ubuntu系统:

apt-get install -y wget



升级脚本
升级脚本只需要重新下载脚本文件就可以了，会自动覆盖原文件。

定时重启
一些人可能需要定时重启ShadowsocksR服务端来保证稳定性等，所以这里用 crontab 定时。

crontab -e
# 首先打开定时设置，然后会出现文本编辑，按 I键 进入编辑模式，根据需求添加下下面的代码到 这个文本编辑框内！！
------------
# 如果提示命令不存在，那么安装crontab：
# CentOS系统：
yum update
yum install -y crond
# Debian/Ubuntu系统：
apt-get update
apt-get install -y cron

安装并打开 crontab 后，我们根据需求添加下面的代码，添加后我们按 ESC键 退出编辑模式，然后输入 :wq 保存并退出。

# 添加定时重启任务
# 是添加到 crontab -e 文本编辑框内，而不是让你执行！
# 下面代码前面的 * * * * * 分别对应：分钟 小时 日 月 星期
 
10 2 * * * /etc/init.d/ssr restart
# 这个代表 每天2点10分重启一次 ShadowsocksR
 
10 2 */2 * * /etc/init.d/ssr restart
# 这个代表 每隔2天的2点10分重启一次 ShadowsocksR
 
10 */4 * * * /etc/init.d/ssr restart
# 这个代表 每隔4小时的第10分重启一次 ShadowsocksR
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
