地址:https://raw.githubusercontent.com/littlesker/OneClickSsr-ssrpanel/master/install-debian.sh

可以配合ssrpanel在debian搭建酸酸乳多用户

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
clear
echo
echo "#############################################################"
echo "# One click Install ShadowsocksR-Python Manyusers Version    #"
echo "# Author: huiyingwu.com                                      #"
echo "#############################################################"
echo "请输入 数据库地址 > " ;read mip
echo "请输入 数据库端口 > " ;read mport
echo "请输入 数据表名 > " ;read mname
echo "请输入 数据库用户名 > " ;read mid
echo "请输入 数据库密码 > " ;read mpass
echo "请输入 节点ID > " ;read nid
echo "请输入 节点费率 > " ;read nfee
echo Starting......
echo 正在设置时区
sed -i 's/ftp.us.debian.org/opensource.nchc.org.tw/g' /etc/apt/sources.list >/dev/null 2>&1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -r >/dev/null 2>&1
echo 正在关闭防火墙
systemctl stop firewalld.service >/dev/null 2>&1
systemctl disable firewalld.service>/dev/null 2>&1
iptables -F
service iptables save >/dev/null 2>&1
echo 正在配置准备环境
apt-get install -y python-setuptools m2crypto -y >/dev/null 2>&1
apt-get remove nc -y >/dev/null 2>&1
apt-get install git -y >/dev/null 2>&1
easy_install pip >/dev/null 2>&1
cd /root
wget https://raw.githubusercontent.com/mzfqy/OneClickSsr-ssrpanel/master/cron >/dev/null 2>&1
wget https://raw.githubusercontent.com/mzfqy/OneClickSsr-ssrpanel/master/ssr >/dev/null 2>&1
wget https://raw.githubusercontent.com/mzfqy/OneClickSsr-ssrpanel/master/ncat-7.60-1.x86_64.rpm>/dev/null 2>&1
wget https://raw.githubusercontent.com/mzfqy/OneClickSsr-ssrpanel/master/restartssr>/dev/null 2>&1
rpm -ivh ncat-7.60-1.x86_64.rpm >/dev/null 2>&1
ln -s /usr/bin/ncat /bin/nc >/dev/null 2>&1
cd /root
echo 正在安装libsodium
apt-get install build-essential -y >/dev/null 2>&1
apt-get install wget m2crypto git  -y >/dev/null 2>&1
wget -N --no-check-certificate https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz >/dev/null 2>&1
tar xf libsodium-1.0.16.tar.gz >/dev/null 2>&1
cd libsodium-1.0.16
./configure >/dev/null 2>&1
make -j2 >/dev/null 2>&1
make install >/dev/null 2>&1
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig
pip install greenlet gevent M2Crypto >/dev/null 2>&1
echo 正在配置ssr
cd /root
git clone https://github.com/littlesker/shadowsocksr >/dev/null 2>&1
chmod 777 * -R
mv ssr /bin/ssr
mv restartssr /bin/restartssr
crontab cron
cd shadowsocksr
./setup_cymysql2.sh >/dev/null 2>&1
pip install -r requestment.txt >/dev/null 2>&1
rm usermysql.json -r
echo "{" >>usermysql.json
echo "    \"host\": \"$mip\"," >>usermysql.json
echo "    \"port\": \"$mport\"," >>usermysql.json
echo "    \"user\": \"$mid\"," >>usermysql.json
echo "    \"password\": \"$mpass\"," >>usermysql.json
echo "    \"db\": \"$mname\"," >>usermysql.json
echo "    \"node_id\": $nid," >>usermysql.json
echo "    \"transfer_mul\": $nfee," >>usermysql.json
echo "    \"ssl_enable\": 0," >>usermysql.json
echo "    \"ssl_ca\": \"\"," >>usermysql.json
echo "    \"ssl_cert\": \"\"," >>usermysql.json
echo "    \"ssl_key\": \"\"" >>usermysql.json
echo "}" >>usermysql.json
echo 安装完成

    经过科学上网的用户肯定对于宽带要求的比较高,但是9102年了,相较于以前的宽带比较,目前已经有很多不同,现在简单的分析一下,以便选择更好的宽带以达到更高的速度。

    首先科学上网目前大部分都是SSR,而对于SSR来说不同于普通的SOSCK5,它会把流量进行加密然后上传再通过国外正常的VPS访问后再把结果返还给你,所以说使用了后速度肯定不如直接访问,流量还中转了好几次

1.性能

    其次对于机器性能,现在将SSR客户端大部分还是直接运行在电脑或者手机上,这种方式比较这种,总体是  

软路由  >  直接运行在电脑或者手机 > 硬路由

    这方面测评youtube上已经有很多,大概就是加密解密需要很多性能,而软路由在这方面比较强,而电脑或者手机并不是专职干这个,所以速度比较低,对于硬路由就是一般的路由器通过刷固件,这种性能就更不足了,他本来 只是转发流量,也没有那么高的配置

2.带宽

首先带宽也是很重要的东西,这个并不是你的直接的带宽,一般叫做本地带宽,运营商告诉你的比如100M,50M是指中国国内的带宽,但是SSR需要访问国外主机,这方面你的带宽的出国带宽就很重要,可能对于一些网吧用户,中国本地带宽很大,但是出国带宽只有1M 2M,所以使用SSR就很垃圾,这方面一般的家宽分的还不错,不至于网吧的那么惨,但是一般都是共享,例如100M国内带宽,50M出国带宽(这个并不可见)

毕竟有些外国的正常网站也是需要访问的,中国的出国带宽并没有建设的那么大,所以到了晚上高峰的时候就感到很卡

而且像例如迅雷快鸟的加速工具也只是加速的国内带宽,你原来的国外带宽是多大还是多大

3.线路

线路也很重要,比如有些加速器选择的就是优质线路,几乎没有丢包,使用起来就很爽,线路也是如此,例如上海到日本,虽然比较近,但是如果运营商或者服务器商没有优化线路,那么实际走可能是绕到香港,美国等等,并不是走的就是直线距离

所以说线路也是十分重要的,或者比如果两个相同的用户访问某个网站,但是人家宽带运营商有优化的线路例如电信就有CN2线路,而移动没有,那么访问自然不如

目前出国线路基本上如下:

国际出口宽带总量:电信 > 联通 > 移动
国际出口宽带限速:电信 > 联通 > 移动
国内宽带使用人数:电信 > 联通 > 移动
国内宽带相对质量:电信 > 联通 > 移动


首先,电信用户使用最多,而在发达城市对于国际宽带使用需求比较高,电信的国际出口宽带就相对不足,再加上大陆国际出口人均倒数,宽带自然都要留给 专线/企业/政府 等“VIP”用户,民用的都会限制速度。

4.QOS

你是不是经常在高峰期(下午3点-晚上8点左右)遇见你的海外VPS 高延迟、高丢包、甚至全部Ping不通、路由追踪发现一出国就全部丢包 的情况?

没错,这就是动态QOS搞的鬼,在国际出口拥塞的情况下(也就是堵车了),运营商就会自动在出口线路路由上调整策略,把民用宽带用户的数据全部或根据拥塞情况选择性丢弃,以此给 专线/企业/政府 的数据让道,以此达到保证这些“VIP”用户的宽带质量。这时候使用中继服务器(教程)效果会比较明显(前提是服务器线路足够优秀比如阿里云这种BGP)。

同时,你仔细观察也会发现,动态QOS是在“道路”通畅后就恢复了民用宽带用户的数据传输质量和速度,这就是为什么一些动态QOS严重的地区在高峰期时而能用时而不能用的原因,在度过高峰期后就会趋于稳定,当然根据各地区不同的策略设置,QOS效果可能不太一样。

例如现在的HKT线路就对电信QOS很严重,到了晚上QOS的几乎没有速度

用堵车来形容的话是这样子的:

数据的传输路由线路就是高速公路,平时低峰期,车很少,速度飙起来很爽。

但是在一些节假日,比如春节过年回家、五一长假等。高速路就处于高峰期阶段,车多了,速度自然就上不去了。如果车多到一定程度,那就出现了 堵车 情况!

在堵车的时候,一些车购买了“高级服务(VIP)”但是却和普通用户一起被堵在了路上,他们肯定不服,就会投诉。

那这个时候该如何处理?

有两种办法。一是就这样,啥也不管,但是很显然不行,除非他不想赚钱了。第二种就是把普通用户的车推下高速路,把地方腾出来,并且入口暂时禁止普通用户进入,这时候一些购买了“高级服务(VIP)”的车,就会很满意了,他们不会在乎普通用户到底怎么样了,他们只关心,自己掏了钱就要比没掏钱的或者掏钱少的服务质量更高!

等过去高峰期,就会开放入口,允许普通用户进入。

这就是你用着用着,突然速度很慢,丢包很高,延迟翻倍的原因!

基本上像 广州/上海等 这种高度发达的沿海地区,电信泛滥,同时也是大陆国际出口所在地,动态QOS限速也是非常严重(我相信这些地区的人深有体会)!

5.特殊服务

而在上海,电信开通了国际精品网和氮气瓶业务,意思就是把你的国际宽带速度限速,然后把这些速度再付费卖给你!

在江苏还有一个叫做 国际快车 的软件,也是电信出的,可以免费体验4个小时。

你可能想知道是否有解决的办法,但是我只能说没有,或者换运营商,不过在一些地区比如南方,电信是老大,换联通/移动等也不一定会有太好的效果。

对了,还有那些三流运营商,他们的国际出口宽带是租三大运营商的,部分可能会有独立的海外线路,不过相比三大运营商,他们的国际出口宽带少的可怜,所以更不可能浪费在民用宽带用户身上了,限速情况比电信等更要严重,同时也受制与电信等动态QOS,双重枷锁!

电信目前除了双程CN2线路的基本没几个IDC速度可以,而且即使是CN2,在高峰期该丢包还是丢包。

而且,电信CN2也是分等级的,就都按双程直连来说,现在卖的CN2的VPS都是优先级最低的CN2,在高峰期,就要给优先级高的(掏钱多的)让道让路,来保证优先级高的质量和稳定性,毕竟也就是一分钱一分货。常见的CN2都是 59.43.X.X IP段,这都是普通的CN2,也就是最差的CN2。当然,如果你购买了国际精品网/氮气瓶等电信CN2增值服务,那你在使用这些普通的CN2节点的时候,会提高优先级,更换为更稳定优先级更高的CN2线路。

丢包和延迟对速度的影响:

在丢包≤1%的情况下,延迟对速度基本没影响,在丢包>1%的情况下,延迟越高速度越慢!
所以在双程(来回两趟)不绕道,且不丢包的情况下,延迟对速度没影响。
所以买vps要根据这个买,可惜QOS是高峰期给你疯狂丢包,速度会严重下降,特别是玩游戏的用UDP会很痛苦的。

同时我发现我的联通和电信宽带,在使用Shadowsocks等代理一段时间或者大流量后,我的宽带IP会被限速,不影响Shadowsocks的IP和速度,看来QOS限速已经可以精确的限速国内普通宽带用户了,这时候切换其他的Shadowsocks账号或者重新拨号换本地宽带IP就可以暂时解决了。

所以,目前科学上网速度最快的就是移动和联通了,但是移动在国内没有联通好,所以我更倾向于联通,我目前用的也是联通。

 一些人在分享自己的Shadowsocks账号后可能想要看一下链接自己的Shadowsocks账号的有多少人,我就简单说一下方法。


本方法仅适用于 Debian/Ubuntu 系统(部分代码支持CentOS),ShadowsocksR 服务端和Shadowsocks Python 服务端!

首先,我们是使用netstat命令来查询当前服务器(VPS)的连接数据。

以下方法适用于 ShadowsocksR(Python) 的服务端,因为ShadowsocksR服务端由 Python 编写,并且默认开启ipv6,所以很容易过滤出一些信息。

显示出由Python建立完成的TCP链接列表或连接数

# 显示所有进出链接netstat -anp |grep 'ESTABLISHED' |grep 'python'# 仅显示链接服务器的用户连接netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6'# 仅显示链接服务器的用户连接数量netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |wc -l# 仅显示链接服务器的用户连接并写入到文件netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6'>>/root/log.txt # 如果你是多用户版(多个端口)的服务端,那么你可以用这个命令# 显示当前链接服务器的用户的SS端口netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |awk '{print $4}' |sort -u# CentOS6系统用这个,CentOS7用上面那个。netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp' | grep '::ffff:' |awk '{print $4}' |sort -u# 显示当前链接服务器的用户的SS端口数量netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |awk '{print $4}' |sort -u |wc -l# CentOS6系统用这个,CentOS7用上面那个。netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp' | grep '::ffff:' |awk '{print $4}' |sort -u |wc -l # 显示当前所有链接SS的用户IPnetstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |awk '{print $5}' |awk -F ":" '{print $1}' |sort -u# 显示当前所有链接SS的用户IP数量netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |awk '{print $5}' |awk -F ":" '{print $1}' |sort -u |wc -l

第一条 命令是 把所有的进出链接都列出来,Shadowsocks客户端在链接服务器后 本地的IP和端口 是 “进” 的,服务器在接收到Shadowsocks客户端的数据后会去访问指定的网站或IP,而这是 “出”的。这一条命令就是把这 一进一出 的信息都列出来,可以知道 客户端用户连接的是哪个 SS端口,还有客户 自身的IP和端口。


第二条 命令是 仅显示链接服务器的用户的链接,也就是上面一段话中说的 “进”,这个命令不会吧服务器在访问的网站或IP给列出来,纯粹用来看 Shadowsocks用户的链接信息。

第三条 命令是 仅显示链接服务器的用户连接数量,有时候链接 当前服务器的 Shadowsocks用户很多,你只想知道有几个人链接,那就用这一条命令(这个链接数量不是准确的,具体看下面的注意说明)。

第四条 命令是 仅显示链接服务器的用户连接并写入到文件,有时候在ssh上面查看大量文本不是一个好主意,所以保存到某个目录,然后自己去用sftp下载下来看信息是个不错的选择。

第五条 命令是 显示当前链接服务器的用户的SS端口,这个命令会去除重复的,最后显示的只有 正在链接SS服务器的用户的SS端口。

第六条 命令是 显示当前链接服务器的用户的SS端口数量,这个就是显示 数量。

第七条 命令是 显示当前所有链接SS的用户IP,这个命令会去除重复的,最后显示的只有 正在链接SS服务器的用户的IP。

第八条 命令是 显示当前所有链接SS的用户IP数量,这个就是显示 数量。

注意:你经常会看到 用户IP一样但后面的端口不一样(1.1.1.1:2333、1.1.1.1:6666),那是因为他的SS客户端开了好几条TCP链接,所以一般情况下还是一个人在使用,但是也不排除路由器局域网情况下多个人同时使用,这时候也是这样显示的。

如果你想单独查看一个SS端口的链接数,那你可以看看下面几条命令。

netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |grep VPS_IP:SS_Port# 示例 netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |grep 233.233.233.233:10000 netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |grep VPS_IP:SS_Port |wc -l# 示例 netstat -anp |grep 'ESTABLISHED' |grep 'python' |grep 'tcp6' |grep 233.233.233.233:10000 |wc -l

第一条是 列出 当前SS端口连接的链接数。比如:服务器IP是 233.233.233.233 ,然后你想要知道链接数的端口是10000 ,那命令就是第二行的示例。

第二条是 显示 当前SS端口连接的链接数,这个只是显示有几个链接数。示例如上。

偶然发现一个利用JS基于浏览器端的在线代理的工具,可以很轻量的代理某些网站,并且由于相比于传统的反代网站,这个JS代理可以实现开销很低,对于服务器要求不大,而且还有非服务器版本,直接运行在cloudflare的网站上,看来只要有点价值,都会被撸光,一下取自GITHUB介绍,有问题可以去上面看issue

更新

  • 2019-07-24 v0.1.0 发布,主要修复了缓存失效的问题。网络接口和之前版本不兼容,请及时更新服务端和 cfworker。

  • 2019-06-22 cfworker 无服务器版 发布,长期使用演示服务的请使用该版本。

查看更多

安装

curl https://raw.githubusercontent.com/EtherDream/jsproxy/0.1.0/i.sh | bash
  • 自动安装目前只支持 Linux x64,并且需要 root 权限

  • 安装过程中 80 端口能被外网访问(申请 HTTPS 证书)

无法满足上述条件,或想了解安装细节,可尝试手动安装

测试: https://服务器IP.xip.io:8443(具体参考脚本输出)自定义域名

将域名 example.com 解析到服务器 IP,然后执行:

curl https://raw.githubusercontent.com/EtherDream/jsproxy/master/i.sh | bash -s example.com

访问: https://example.com:8443自定义端口

默认端口为 8443 (HTTPS) 和 8080 (HTTP) ,如需改成 443 和 80,推荐使用端口转发:

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

同时修改 www.conf 中的 :8443 为 :443。使用 GitHub Pages 前端

本项目支持前后端分离,前端部分(www 目录下的文件)可部署在第三方 Web 服务器上。

例如演示站点的前端部署于 GitHub Pages 服务,从而可使用个性域名(*.github.io),还能减少一定的流量开销。

Fork 本项目,进入 gh-pages 分支(该分支内容和 www 目录相同),编辑 conf.js 文件:

  • 节点列表(node_map 字段,包括节点 id 和节点主机)

  • 默认节点(node_default 字段,指定节点 id)

访问 https://用户名.github.io/jsproxy 预览。维护

# 切换到 jsproxy 用户
su - jsproxy

# 重启服务
./run.sh reload

# 关闭服务(参数和 nginx -s 相同)
./run.sh quit

# 启动服务
./run.sh

# 查看代理日志
tail server/nginx/logs/proxy.log

目前暂未实现开机自启动。禁止外链

默认情况下,代理接口允许所有 github.io 子站点调用,这可能导致不必要的流量消耗。

如果希望只给自己网站使用,可编辑 allowed-sites.conf。(重启服务生效)安全策略

如果不希望代理访问内网(避免 SSRF 风险),可执行 setup-ipset.sh:

/home/jsproxy/server/setup-ipset.sh

需要 root 权限,依赖 ipset 命令

该脚本可禁止 jsporxy 用户访问保留 IP 段(针对 TCP)。nginx 之外的程序也生效,但不影响其他用户。相关文章

相比传统在线代理,本项目具有以下特点:服务端开销低

传统在线代理几乎都是在服务端替换 HTML/JS/CSS 等资源中的 URL。这不仅需要对内容做大量的分析和处理,还需对流量进行解压和再压缩,消耗大量 CPU 资源。并且由于逻辑较复杂,通常使用 Python/PHP 等编程语言自己实现。

为降低服务端开销,本项目使用浏览器的一个黑科技 —— Service Worker。它能让 JS 拦截网页产生的请求,并能自定义返回内容,相当于在浏览器内部实现一个反向代理。这使得绝大部分的内容处理都可以在浏览器上完成,服务器只需纯粹的转发流量。

因此本项目服务端直接使用 nginx,并且转发过程不修改内容(只修改 HTTP 头),避免了内容处理产生的巨大开销。同时得益于 nginx 丰富的功能,很多常用需求无需重新造轮子,通过简单配置即可实现。并且无论性能还是稳定性,都远高于自己实现。


API 虚拟化

传统在线代理大多只针对静态 URL 的替换,忽视了动态 URL 以及和 URL 相关的网页 API。例如 a.com 反向代理 google.com,但页面中 JS 读取 document.domain 得到的仍是 a.com。这可能导致某些业务逻辑出现问题。

为缓解这个问题,本代理在页面头部注入一个 JS,用以重写绝大部分和 URL 相关的 API,使得页面中的 JS 获取到的仍是原始 URL:

对于有些无法重写的 API,例如 location,本代理会将代码中字面出现的 location 替换成 __location,从而将操作转移到自定义对象上。当然对于非字面的情况(例如 this['lo' + 'cation']),目前还无法处理。


类似项目

目前找到的都是传统后端替换 URL 的方案。当然后端替换也有不少优点,例如浏览器兼容性高,甚至低版本的 IE 都可以使用。

mirror

GitHub: https://github.com/aploium/zmirror

php-proxy

GitHub: https://github.com/jenssegers/php-proxy

项目意义

本项目主要用于以下技术的研究:

  • 网站镜像 / 沙盒化

  • 钓鱼网站检测技术

  • 前端资源访问加速

当然请勿将本项目用于非法用途,否则后果自负。

Demo 页面文明使用,不要进行登陆等涉及隐私的操作。

最近经常有小白找我让我把他们安装ShadowsocksR服务端,一开始都是手动安装的,后来嫌麻烦,就打算用脚本,但是网上基本上只是安装一下就没了,只能算一键安装脚本,并不足够方便和适合懒人和小白,于是自己写了一个一键管理脚本,一键安装和一键管理的区别!


更多的Shadowsocks安装教程/一键脚本请看这里:Shadowsocks指导篇

本脚本的 二维码图片链接,是调用我自建的 二维码API 来生成二维码图片( http://doub.pw/qr/qr.php?text=xxx )。

当访问API页面后,PHP网页文件会把 GET参数( ?text=xxx ) 传递给JS脚本,浏览器会加载JS脚本,然后由JS脚本根据 GET参数的文本 生成二维码图片!图片是在你本地浏览器中生成,服务器中不存在图片!

请确定你信任我和我的脚本,否则请不要用我的脚本,少BB!

系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

推荐 Debian 8 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。并且最容易安装锐速(锐速不支持OpenVZ)

CentOS根据大家的要求,加入了CentOS 6和7的支持,CentOS 7 自带防火墙问题(firewalld)自行解决,其他版本没有做测试。

脚本版本

Ver: 2.0.38

本脚本与另一个SSR脚本 『原创』ShadowsocksR MudbJSON模式多用户一键脚本 支持流量限制等 的区别是什么?

ssrmu.sh 脚本是单服务器多用户脚本,使用的是 SSR服务端的MudbJSON模式,可以给每个用户(端口)设置不同的加密方式/协议/混淆/限制速度/设备数限制/可用总流量等功能。即实现单服务器多用户流量管理等功能。

而 ssr.sh 则是单服务器单用户脚本,使用的是 SSR服务端的单用户配置方式,即使实现了多端口,但是还算不算多用户,不支持每个用户(端口)不同的加密方式/协议/混淆等,并且无法管理流量使用。

如何选择这两个脚本?

根据你的需求选择,比如你仅仅是 一个或两个人使用,并且不需要流量管理功能,那么选择 ssr.sh 好了。而如果很多人使用,并且都需要限制流量来管理,那你适合使用 ssrmu.sh ,所以自己看着选,多试试(两个脚本不能共存)!

脚本特点:

目前网上的各个ShadowsocksR脚本基本都是只有 安装/卸载 等基础功能,对于小白来说还是不够简单方便,要修改账号配置还要手动修改文件,所以那些ShadowsocksR脚本只能称得上一键安装脚本。既然没有我满意的ShadowsocksR一键管理脚本,那么我就自己造喽,于是特意学了Shell,然后写出来了这个ShadowsocksR一键管理脚本!

  1. 支持 限制 端口限速
  2. 支持 限制 端口设备数
  3. 支持 显示 当前连接IP
  4. 支持 显示 SS/SSR连接+二维码
  5. 支持 切换管理 单/多端口
  6. 支持 一键安装 BBR
  7. 支持 一键安装 锐速
  8. 支持 一键安装 LotServer
  9. 支持 一键封禁 垃圾邮件(SMAP)/BT/PT

安装步骤

简单的来说,如果你什么都不懂,那么你直接一路回车就可以了!

本脚本需要Linux root账户权限才能正常安装运行,所以如果不是 root账号,请先切换为root,如果是 root账号,那么请跳过!

  1. sudo su

输入上面代码回车后会提示你输入当前用户的密码,输入并回车后,没有报错就继续下面的步骤安装ShadowsocksR。


v2.0.0 版本以后的脚本,请先卸载旧脚本ShadowsocksR服务端,再重新安装!

  1. wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

下载运行后会提示你输入数字来选择要做什么。

输入 1 ,就会开始安装ShadowsocksR服务端,并且会提示你输入Shadowsocks的 端口/密码/加密方式/ 协议/混淆(混淆和协议是通过输入数字选择的) 等参数。

如果安装过程中报错,请看 常见问题解决方法

点击展开 查看更多

  1. 请输入要设置的ShadowsocksR账号 端口
  2. (默认: 2333):
  3.  
  4. ——————————————————————————————
  5. 端口 : 2333
  6. ——————————————————————————————
  7.  
  8. 请输入要设置的ShadowsocksR账号 密码
  9. (默认: doub.io):
  10.  
  11. ——————————————————————————————
  12. 密码 : doub.io
  13. ——————————————————————————————
  14.  
  15. 请选择要设置的ShadowsocksR账号 加密方式
  16. 1. none
  17. [注意] 如果使用 auth_chain_a 协议,请加密方式选择 none,混淆随意(建议 plain)
  18. 2. rc4
  19. 3. rc4-md5
  20. 4. rc4-md5-6
  21. 5. aes-128-ctr
  22. 6. aes-192-ctr
  23. 7. aes-256-ctr
  24. 8. aes-128-cfb
  25. 9. aes-192-cfb
  26. 10. aes-256-cfb
  27. 11. aes-128-cfb8
  28. 12. aes-192-cfb8
  29. 13. aes-256-cfb8
  30. 14. salsa20
  31. 15. chacha20
  32. 16. chacha20-ietf
  33. 注意:salsa20/chacha20-*系列加密方式,需要额外安装依赖 libsodium ,否则会无法启动ShadowsocksR !
  34.  
  35. (默认: 5. aes-128-ctr):
  36.  
  37. ——————————————————————————————
  38. 加密 : aes-128-ctr
  39. ——————————————————————————————
  40.  
  41. 请选择要设置的ShadowsocksR账号 协议插件
  42. 1. origin
  43. 2. auth_sha1_v4
  44. 3. auth_aes128_md5
  45. 4. auth_aes128_sha1
  46. 5. auth_chain_a
  47. [注意] 如果使用 auth_chain_a 协议,请加密方式选择 none,混淆随意(建议 plain)
  48.  
  49. (默认: 2. auth_sha1_v4):
  50.  
  51. ——————————————————————————————
  52. 协议 : auth_sha1_v4
  53. ——————————————————————————————
  54.  
  55. 是否设置 协议插件兼容原版(_compatible)?[Y/n]
  56.  
  57. 请选择要设置的ShadowsocksR账号 混淆插件
  58. 1. plain
  59. 2. http_simple
  60. 3. http_post
  61. 4. random_head
  62. 5. tls1.2_ticket_auth
  63. [注意] 如果使用 ShadowsocksR 加速游戏,请选择 混淆兼容原版或 plain 混淆,然后客户端选择 plain,否则会增加延迟 !
  64. (默认: 1. plain):
  65.  
  66. ——————————————————————————————
  67. 混淆 : plain
  68. ——————————————————————————————
  69.  
  70. 是否设置 混淆插件兼容原版(_compatible)?[Y/n]
  71. 请输入要设置的ShadowsocksR账号 欲限制的设备数 ( auth_* 系列协议 不兼容原版才有效 )
  72. [注意] 设备数限制:每个端口同一时间能链接的客户端数量(多端口模式,每个端口都是独立计算),建议最少 2个。
  73. (默认: 无限):5
  74. ——————————————————————————————
  75. 链接设备数 : 5
  76. ——————————————————————————————
  77.  
  78. 请输入要设置的每个端口 单线程 限速上限(单位:KB/S)
  79. [注意] 单线程限速:每个端口 单线程的限速上限,多线程即无效。
  80. (默认: 无限):666
  81.  
  82. ——————————————————————————————
  83. 单端口单线程 : 666 KB/S
  84. ——————————————————————————————
  85.  
  86. 请输入要设置的每个端口 总速度 限速上限(单位:KB/S)
  87. [注意] 端口总限速:每个端口 总速度 限速上限,单个端口整体限速。
  88. (默认: 无限):2333
  89.  
  90. ——————————————————————————————
  91. 单端口总限速 : 2333 KB/S
  92. ——————————————————————————————

同时最后也会提示是否设置 混淆 兼容原版(也就是使用原版SS也能链接),不懂 直接回车 或 输入 y 。(协议不在兼容原版)

注意:关于限制设备数数,这个协议必须是非原版并且不兼容原版才有效,也就是必须SSR客户端使用协议的情况下,才有效!

不输入一路回车就是 默认参数:

  1. 端口 : 2333
  2. 密码 : doub.io
  3. 加密 : aes-128-ctr
  4. 协议 : auth_sha1_v4_compatible
  5. 混淆 : plain
  6. 设备数限制: 0(无限)
  7. 单线程限速: 0 KB/S (不限速)
  8. 端口总限速: 0 KB/S (不限速)

最后会提示让你确认是否输入正确,如果没问题那就按任意键继续安装,如果输入错误,那么就使用 Ctrl + C 退出脚本。

  1. ——————————————————————————————
  2. 请检查Shadowsocks账号配置是否有误 !
  3.  
  4. 端口     : 2333
  5. 密码     : doub.io
  6. 加密     : aes-128-ctr
  7. 协议     : auth_sha1_v4_compatible
  8. 混淆     : plain
  9. 设备数限制: 5
  10. 单线程限速: 666 KB/S
  11. 端口总限速: 2333 KB/S
  12. ——————————————————————————————
  13.  
  14. 请按任意键继续,如有配置错误请使用 Ctrl+C 退出。

如果安装过程没有出错,那么最后就会提示:

  1. ############################################################
  2. ShadowsocksR账号 配置信息:
  3.  
  4. I P     : xxx.xxx.xxx.xxx
  5. 端口     : 2333
  6. 密码     : doub.io
  7. 加密     : aes-128-ctr
  8. 协议     : auth_sha1_v4_compatible
  9. 混淆     : plain
  10. 设备数限制: 5
  11. 单线程限速: 666 KB/S
  12. 端口总限速: 2333 KB/S
  13.  
  14. SS链接: ss://xxxxxxxxxxxxx
  15. SS二维码: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ss://xxxxxxxxxxxxx
  16. SSR链接: ssr://xxxxxxxxxxxxx
  17. SSR二维码: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ssr://xxxxxxxxxxxxx
  18.  
  19. 提示:
  20. 在浏览器中,打开二维码链接,就可以看到二维码图片。
  21. 协议和混淆后面的[ _compatible ],指的是 兼容原版协议/混淆。
  22.  
  23. ############################################################

SS/SSR链接(格式: ss://XXXXXXX ,很长),可以从剪辑版导入Shadowsocks客户端,不懂的话看下面二维码。

SS/SSR二维码,复制后面的链接在浏览器打开,就会显示一个二维码的图片,可以用Shadowsocks客户端扫描二维码来添加。

使用说明

运行脚本,

  1. bash ssr.sh

输入对应的数字来执行相应的命令。

  1.   请输入一个数字来选择菜单选项
  2.  
  3. 1. 安装 ShadowsocksR
  4. 2. 更新 ShadowsocksR
  5. 3. 卸载 ShadowsocksR
  6. 4. 安装 libsodium(chacha20)
  7. ————————————
  8. 5. 查看 账号信息
  9. 6. 显示 连接信息
  10. 7. 设置 用户配置
  11. 8. 手动 修改配置
  12. 9. 切换 端口模式
  13. ————————————
  14. 10. 启动 ShadowsocksR
  15. 11. 停止 ShadowsocksR
  16. 12. 重启 ShadowsocksR
  17. 13. 查看 ShadowsocksR 日志
  18. ————————————
  19. 14. 其他功能
  20.  15. 升级脚本
  21. 当前状态: 已安装 并 已启动
  22. 当前模式: 单端口
  23.  
  24. 请输入数字(1-15):

当你为 单端口模式时,使用 7. 设置 用户配置 是 修改 单端口账号配置。

当你为 多端口模式时,使用 7. 设置 用户配置 是 添加/删除/修改 多端口账号配置。

文件位置

安装目录:/usr/local/shadowsocksr

配置文件:/etc/shadowsocksr/user-config.json

其他说明

ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。

  1. 启动 ShadowsocksR:/etc/init.d/ssr start
  2. 停止 ShadowsocksR:/etc/init.d/ssr stop
  3. 重启 ShadowsocksR:/etc/init.d/ssr restart
  4. 查看 ShadowsocksR状态:/etc/init.d/ssr status

ShadowsocksR 默认支持UDP转发,服务端无需任何设置。

本脚本已经集成了 安装/卸载 锐速(ServerSpeeder)开心版,但是是否支持请查看 Linux支持内核列表 。(锐速不支持OpenVZ)

v2.0.0 以前的旧版本下载地址:

点击展开 查看更多

  1. wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssr_old.sh && chmod +x ssr_old.sh && bash ssr_old.sh

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服务端才行。

请查看这个文章:ShadowsocksR服务端 限制设备连接数 和 限制端口速度 的方法

解决 可使用原版协议,但无法使用ShadowsocksR协议 的问题

点击展开 查看更多

如果发现Shadowsocks原版协议/混淆可以使用,而ShadowsocksR的协议/混淆无法使用,那么多半是 VPS时区问题

这个命令,我的ShadowsocksR脚本在安装的时候已经执行了,如果你发现没有执行,那你可以手动执行。

我们可以通过下面这个命令,把VPS的时区调整为北京时区,这样就避免了ShadowsocksR 协议/混淆 因为时差太大造成的无法验证。

  1. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

注意,部分VPS会提示你是否覆盖文件,输入 y 然后回车。

如果你遇到,crontab设定的定时任务不按更换时区后的VPS时间执行,那么请看下面:

crontab设定的定时任务不按VPS的时间执行,那是因为你更换VPS时区后还需要重启crontab。

CentOS 系统:

  1. /etc/init.d/crond restart

Debian/Ubuntu 系统:

  1. /etc/init.d/cron restart

提示 Media change: please insert the disc labeled‘Debian GNU/Linux 7.0.0 Wheezy — Official amd64 CD 等信息是 apt源 的问题,更换 apt源

点击展开 查看解决办法

我发现有一些人的VPS的 apt源有问题,导致安装失败,所以我这里写上如何更换 apt源。

本步骤仅适合 Debian 系统,Ubuntu系统自行搜索 apt源。

下面的手动改的方法一些人可能嫌麻烦,所以你们可以这样字更换apt源。

依次输入就可以更换apt源了,下面的代码是以 us美国 为例,你可以自己去这里选一个近一些合适的,然后替换下面代码中 us.sources.list 的 us 。

  1. wget -N --no-check-certificate -P /etc/apt https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/sources/us.sources.list
  2. rm -rf /etc/apt/sources.list
  3. cp /etc/apt/us.sources.list /etc/apt/sources.list

手动更换(上面的命令执行完毕就不要重复执行这个了)

打开你的apt源文件,

  1. vi /etc/apt/sources.list

然后按 I 键 进入编辑模式,如果你没有安装vim,也无法通过 apt-get install vim -y 安装,那么你就只能通过SFTP下载这个文件本地编辑了。

把下面的内容复制过去,注意下面示例是美国的apt源,想要其他地区的apt源,请看:Debian全球镜像站(替换下面的 ftp.us.debian.org 中的 us )

  1. deb http://ftp.us.debian.org/debian/ jessie main
  2. deb-src http://ftp.us.debian.org/debian/ jessie main
  3.  
  4. deb http://security.debian.org/ jessie/updates main contrib
  5. deb-src http://security.debian.org/ jessie/updates main contrib
  6.  
  7. # jessie-updates, previously known as 'volatile'
  8. deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
  9. deb-src http://ftp.us.debian.org/debian/ jessie-updates main contrib

修改完毕之后,按 ESC 键 退出编辑模式,然后输入 :wq 保存并退出,然后再试一试 apt-get update 是否正常。

ShadowsocksR启动失败,日志提示:Exception: libsodium not found 的错误

这是你使用了 chacha20 系列加密方式,但是却没有安装 libsodium支持库,导致ShadowsocksR无法启动,运行脚本选择选项 4 安装 libsodium支持库即可,如果安装失败,请选择其他的加密方式,对速度影响不大。

提示wget: unknown host "raw.githubusercontent.com" 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

点击展开 查看更多

  1. echo "nameserver 8.8.8.8
  2. nameserver 8.8.4.4" > /etc/resolv.conf
  3. # 两行一起复制一直执行

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

点击展开 查看更多

CentOS系统:

  1. yum install -y wget

Debian/Ubuntu系统:

  1. apt-get install -y wget

升级脚本

升级脚本只需要重新下载脚本文件就可以了,会自动覆盖原文件。

定时重启

一些人可能需要定时重启ShadowsocksR服务端来保证稳定性等,所以这里用 crontab 定时。

点击展开 查看更多

  1. crontab -l
  2. # 输入这个命令可以查看当前配置的定时任务,如果提示命令不存在,那么安装crontab:
  3. # CentOS系统:
  4. yum update
  5. yum install -y crond
  6. # Debian/Ubuntu系统:
  7. apt-get update
  8. apt-get install -y cron

安装 crontab 后,我们就能开始添加定时任务了:

  1. crontab -l > "crontab.bak"
  2. sed -i "/ssr restart/d" "crontab.bak"
  3. echo -e "\n10 3 * * * /etc/init.d/ssr restart" >> "crontab.bak"
  4. crontab "crontab.bak"
  5. rm -r "crontab.bak"
  6.  
  7. # 下面的只是让你对照理解用于修改上面第三行的定时间隔,只需要执行上面的代码即可。
  8. # 如果你需要修改定时时间,那么重复执行上面代码就行了(记得修改第三行的定时间隔)。
  9. # 如果你要删除定时重启任务,那么还是重复上面的代码,但是要跳过第三行代码。
  10. # 下面代码前面的 * * * * * 分别对应:分钟 小时 日 月 星期
  11.  
  12. 10 2 * * * /etc/init.d/ssr restart
  13. # 这个代表 每天2点10分重启一次 ShadowsocksR
  14.  
  15. 10 2 */2 * * /etc/init.d/ssr restart
  16. # 这个代表 每隔2天的2点10分重启一次 ShadowsocksR
  17.  
  18. 10 */4 * * * /etc/init.d/ssr restart
  19. # 这个代表 每隔4小时的第10分重启一次 ShadowsocksR


本脚本只是本人的第一个Shell脚本学习练手作品,在逻辑结构上问题不少,大家遇到什么BUG请积极反馈!

更新日志

2018年07月10日,版本 v2.0.38

1. 新增 升级脚本时,将一起升级服务脚本(Service)。

2018年01月02日,版本 v2.0.37

1. 修复 Debian9 系统下,无法使用 显示连接信息 功能的问题。

2017年11月12日,版本 v2.0.36

1. 优化 显示链接信息功能的 显示内容排版(对齐了一下)。

2017年11月03日,版本 v2.0.35

1. 修改 SSR服务端安装方式为:ZIP压缩包安装(考虑到SSR服务端不更新了,所以为了降低git依赖安装出错率,就改成zip压缩包了)。

2. 修改 JQ安装方式为:集成与SSR服务端文件夹内(减少了一个安装JQ的下载步骤,节省时间)。

2017年10月06日,版本 v2.0.34

1.恢复 libsodium以前安装方式。

2017年09月22日,版本 v2.0.33

1.修复 因为系统缺少automake,而libsodium安装失败的问题。

点击展开 查看更多更新日志

2017年09月22日,版本 v2.0.32

1.更新 libsodium最新版本安装方式。

2017年09月18日,版本 v2.0.31

1. 新增 IPv6防火墙开放端口规则功能(原先只开放IPv4防火墙)。

2017年08月31日,版本 v2.0.30

1.修复 显示链接信息 功能,不同端口 链接IP显示重复的问题(例如链接 8080端口的IP同样显示在 80端口下)

2017年08月24日,版本 v2.0.29

1.新增 几个外网IP获取源,避免一些服务器获取外网IP失败。

2017年08月12日,版本 v2.0.28

1.修复 封禁/解封 BT/PT/SPAM功能运行后没有正常删除脚本的问题。

2017年08月11日,版本 v2.0.27

1.取消 安装ShadowsocksR过程中修改DNS为谷歌DNS的步骤(个别服务器会导致未知问题)。

2017年08月10日,版本 v2.0.26

1.修复 BBR文件位置问题。

2017年08月08日,版本 v2.0.25

1.修复 显示 链接信息 功能 CentOS7系统不可用的问题(缺少 netstat)。

2017年08月07日,版本 v2.0.24

1.新增 显示 链接信息 选项可以选择 IP+IP归属地 的输出格式。

2017年08月04日,版本 v2.0.23

1.更新 脚本内 逗比云地址(旧域名被墙,更换新域名)。

2017年07月28日,版本 v2.0.22

1.新增 协议插件:auth_chain_b (刚才v2.0.21版本更新完了才看到这个)。

2017年07月28日,版本 v2.0.21

1.更换ShadowsocksR项目 Github源(Fork)。

2017年07月26日,版本 v2.0.20

1.修复 CentOS7 无法显示链接信息(IP链接信息)的问题。

2.新增 Git 安装是否成功判断。

2017年07月26日,版本 v2.0.19

1.新增 ROOT账号(或权限)检测功能,避免因为没有ROOT权限而安装失败。

2017年06月16日,版本 v2.0.18

1. 更新 应ShadowsocksR客户端要求,规范化SS/SSR链接生成格式

2017年05月01日,版本 v2.0.17

1.修复 部分客户端无法识别 SS/SSR连接和二维码的问题

2017年04月30日,版本 v2.0.16

1.修复 多端口模式下,修改用户配置中选择用户时,因端口重复导致报错的问题(如用户1端口是 80 用户2端口是 8080)

2.修复 部分系统删除多端口用户报错的问题(报错内容如 [ x +x ])

2017年04月29日,版本 v2.0.15

1.修复 部分系统无法识别 单/多 端口模式的问题

2017年04月28日,版本 v2.0.14

1.新增 新协议 auth_chain_a,建议加密方式为 none,混淆插件为 plain。

—— 新协议目前仅支持 Windows PC C# 客户端,服务端也请更新!

2.修复 升级脚本BUG。

2017年04月27日,版本 v2.0.13

1.修改 升级脚本功能,先尝试从逗比云获取最新版本号并更新脚本,其次才是Github,避免被Github的缓存坑。

2017年04月26日,版本 v2.0.12

1.新增 none 等加密方式(以前因为很多加密方式没人用,所以只把常用的加密方式加入进去了,这次全都给加上了)

2017年04月26日,版本 v2.0.11

1.新增 LotServer 配置选项。

2.更新 锐速安装脚本下载地址。

3.修改 锐速/BBR配置选项到菜单子选项 [其他功能] 中。

2017年04月22日,版本 v2.0.10

1.修复 多端口模式下,显示链接信息功能,无法正确显示IP的BUG。

2017年04月22日,版本 v2.0.9

1.修复 各种BUG。

2017年04月22日,版本 v2.0.8

1.新增 脚本升级功能(可以在脚本内检测脚本的最新版本并升级了)

2.新增 修改日志输出模式功能,可以修改日志输出为详细默认(详细的连接日志+错误日志)

3.修复 部分系统无法正常启动ShadowsocksR的问题

2017年04月19日,版本 v2.0.7

1.修复 一键解封 BT、PT、SPAM功能的BUG

2017年04月19日,版本 v2.0.6

1.更新 一键封禁 BT、PT、SPAM功能中的脚本

—— 我重新了封BT…的脚本,所以这里也需要改一改。

2017年04月16日,版本 v2.0.5

1.修复 显示连接信息中的 IP总数显示错误

2.修改 显示连接信息中的 IP 分隔符为 " | "(原为空格)

2017年04月15日,版本 v2.0.4

1.新增 一键解封 BT/PT/SPAM功能

2017年03月24日,版本 v2.0.3

1.新增 自动检测 Libsodiumr最新版本功能(Chacha20等加密方式依赖)

—— 正好Libsodiumr更新到了 1.0.12,我干脆就把自动检测版本功能加上好了,以后就不用在管这个了。

2.优化 安装ShadowsocksR过程中提示的信息。

2017年03月24日,版本 v2.0.2

1.修复 修改配置时,因包含空格而导致修改无效的问题。

2.更换 ShadowsocksR服务脚本下载地址为 Github。

3.优化 安装ShadowsocksR时,ShadowsocksR已存在的提示文本。

2017年03月17日,版本 v2.0.1

1.修复 多端口模式下,混淆参数多一个 中括号的BUG。

2.修复 一些判断错误BUG。

2017年03月17日,版本 v2.0.0

1.重写 ShadowsocksR脚本。

2.完善 诸多细节。

3.降低 出错几率。

4.减少 安装速度。

5.增加 系统服务,可以使用 service ssr start | stop | restart | status 来控制。

6.取消 多语言功能,有需要的人我会保留 旧版本脚本的下载链接。

7.取消 定时重启功能。

 —— 因为这个脚本是我当初学习 Shell后写的第一个脚本,所以逻辑什么的非常乱,一点都不简洁,这两天没事就重写/重构了脚本,在功能上和旧版本差别不大,主要是 一些细节处理的更好更完美了,更多的差别请升级脚本~

2017年03月08日,版本 v1.2.9

1.修复 脚本输入字符后,使用退格键(删除键)会显示 ^H 而不正确删除字符的问题。

—— 其实这个在03/04的时候就已经修复更新了,不过当时并没有算成新版本,这次更新顺带写出来。

2.更换 二维码链接为自建二维码图片生成API。

2017年03月01日,版本 v1.2.8

1.优化 开机启动功能

2017年02月22日,版本 v1.2.7

1.修复 显示用户配置,多端口模式下 SSR链接+二维码 错误问题

2.修复 因为上个版本的中英文切换导致的文字错误问题

2017年02月19日,版本 v1.2.6

1.新增 菜单 脚本 中文/英语 语言切换选项。

—— 有部分国外友人表示看不懂中文,所以就把脚本做成了可以中英文切换的了,虽然是谷歌翻译- -。

2017年02月15日,版本 v1.2.5

1.新增 设置 ShadowsocksR 端口限速功能(单位 KB/S)。

—— 2月15日更新的ShadowsocksR服务端已经支持端口限速了,分端口单线程限速 和 端口总限速,区别看这里

注意:如果要使用这个功能,需要重新下载ShadowsocksR脚本,并重装ShadowsocksR服务端!

2.修正 连接IP数的文字错误,应该是 设备数限制,而不是IP数限制。

2017年02月14日,版本 v1.2.4

1.修复 部分系统无法启动ShadowsocksR的nohup BUG。

2.修复 卸载锐速 提示没有安装的 BUG。

2017年02月14日,版本 v1.2.3

1.移除 OTA(verify_sha1)、auth_sha1以及auth_sha1_v2协议。

—— 新版ShadowsocksR客户端和服务端都已移除OTA(verify_sha1)、auth_sha1以及auth_sha1_v2协议。

2.修复 CentOS系统 安装libsodium(chacha20)支持库失败 问题。

3.修复 查看ShadowsocksR日志 无法正常显示问题。

2017年02月10日,版本 v1.2.2

1.新增 菜单选项 设置 ShadowsocksR 连接数限制。

—— 不需要去修改用户配置,直接通过菜单的这个选项就可以修改 IP连接数限制。

2.优化 CentOS系统不再显示 BBR安装选项。

—— 因为我的BBR安装脚本不支持CentOS,所以就在CentOS系统不显示好了。

3.修复 多端口模式下,依然能 修改单端口用户配置 的BUG。

2017年02月10日,版本 v1.2.1

1.新增 加密方式 aes-128-ctr 选项。

—— 目前最新ShadowsocksR服务端默认加密方式都改为 aes-128-ctr 了,根据作者介绍,这个加密方式是 aes-* 系列加密方式中速度最快的。

2.新增 菜单显示当前模式。

—— 可以显示当前是 单端口模式还是多端口模式 ,总归还是有点用的。

3.调整 一些不影响使用的小问题。

2017年02月03日,版本 v1.2.0

1.新增 设置ShadowsocksR定时重启 选项(目前只支持设置一个定时重启任务)

—— 自动添加到 crontab 中,脚本里包含了 crontab 的格式示例,不懂的建议查一查。

2017年02月02日,版本 v1.1.9

1.新增 安装 BBR 选项(其实就是把我写的另一个BBR一键脚本加了进去)

—— 只支持 Debian / Ubuntu 系统更换内核,OpenVZ虚拟化技术的VPS不支持更换内核。

还有,关闭BBR和查看BBR状态,请使用 bash bbr.sh stop / bash bbr.sh status

2017年02月01日,版本 v1.1.8

1.修复 部分 Debian/Ubuntu系统 无法开机启动的BUG。(CentOS的好像还是有问题,不是很熟悉)

2.修复 JSON解析器 JQ 部分VPS编译安装失败的BUG。

3.修复 若干BUG。

2017年01月31日,版本 v1.1.7

1.新增 查看 ShadowsocksR 日志功能。

—— 应逗比们的要求,加上了查看日志的功能,因为启动方式改变了,更新脚本后需要重启ShadowsocksR才能生成日志。

2.更新 ShadowsocksR启动方式(所以才支持日志)

注意:如果后面没有BUG,那么这个更新就是这个脚本的最后一次更新了,我能想到的简单的功能都已经加上去了,基本上不会再添加新功能了。

2017年01月17日,版本 v1.1.6

1.新增 菜单中显示当前状态

—— 直接在菜单中显示当前是否安装ShadowsocksR服务端,是否在运行信息。

2.优化 脚本依赖 jq JSON解析器全部改为编译安装。

—— 这样可以保持 jq的版本一致,避免一些apt源比较老,安装的版本不一致导致BUG。

3.修复 CentOS 6 系统中删除多端口用户配置相反的BUG。

—— 我脚本的重要依赖 jq JSON解析器在Debian/Ubuntu和CentOS系统中解析结果竟然是相反的,一直没注意到,修复了这个问题。

2017年01月14日,版本 v1.1.5

1.新增 显示 单/多端口 链接信息 功能。

—— 可以显示出 当前正在连接某端口的 用户IP 和 各端口总IP数 等信息。

2.新增 显示 单/多端口 账号信息 时,显示出当前ShadowsocksR的运行状态。

—— 免得有的人没有意识到ShadowsocksR根本没在运行,然后死活连不上。

3.优化 显示SS/SSR连接和二维码 判断逻辑。

—— 比如协议和混淆都不是原版也不兼容原版,那么就不再显示 SS链接和二维码,智能判断当前协议和混淆的设置来确定显示SS连接/二维码还是显示SSR连接/二维码,还是都显示。

2017年01月12日,版本 v1.1.4

1.新增 协议 verify_sha1、auth_sha1_v2、auth_sha1_v4 兼容原版设置。

—— 目前ShadowsocksR的协议中,只有 verify_sha1、auth_sha1_v2、auth_sha1_v4 依然可以兼容原版,以后的协议都不在兼容。

2.取消 安装ShadowsocksR时安装 Libsodium(chacha20加密方式依赖) ,需要的用户可以随后在菜单里选择 2 安装。

3.修复 SS/SSR链接 和 SS/SSR 二维码链接 换行问题,现在复制出来就是一行了(Xshell 测试通过)。

4.修复 漏掉 混淆原版参数"plain" 的逗比问题。

2017年01月10日,版本 v1.1.3

1.新增 加密方式从手动输入改成了选择数字

2.新增 设置连接数限制功能,当然这个需要设置协议才行,并且协议不能兼容原版,虽然现在协议已经不可以兼容原版了。

—— 连接数针对的是 IP,比如设置 1,有一个客户端IP在连接这个端口,那么其他的客户端IP都无法链接。

3.修复 iptables防火墙规则BUG。

2017年01月10日,版本 v1.1.2

1.新增 多端口管理功能。

—— 可以 添加/修改/删除 多端口用户。

2.新增 单端口/多端口切换功能。

2017年01月08日,版本 v1.1.1

1.新增 CentOS 6 / 7系统支持,只在这个系统做了测试,CentOS 7请自行解决自带的firewalld防火墙问题。

2.新增 封禁 BT/PT/垃圾邮件(SPAM) 功能,其实就把这个文章里的脚本加进去了。

3.修复 修改配置信息 但是显示错误的BUG。

2016年12月30日,版本 v1.1.0

1.修改 取消ShadowsocksR 协议兼容原版设置(混淆依然支持)

—— 因为ShadowsocksR最新版本取消了ShadowsocksR协议兼容原版设置,所以我的也取消了。具体影响看着个

2.修复 各种BUG。

2016年12月28日,版本 v1.0.9

1.新增 修改VPS时区为北京时区,避免 协议/混淆 因为时差而无法使用。

2.修复 安装失败等问题。

3.修改 ShadowsocksR安装目录。

—— ShadowsocksR的Github位置和目录文件名改变了,所以脚本里面很多东西都改了,并且借着这次机会,更改了ShadowsocksR的安装位置为: /etc/shadowsocksr 。同时以前安装的ShadowsocksR全部失效。

建议:先用旧脚本卸载ShadowsocksR,然后再用新脚本安装ShadowsocksR!

2016年12月10日,版本 v1.0.8

1.修复 git克隆Shadowsocks文件夹后卡住的BUG。

2.修复 git克隆Shadowsocks文件夹提示SSL证书无法验证的BUG。

2016年12月10日,版本 v1.0.7

1.修复 检测系统的BUG。

2016年12月03日,版本 v1.0.6

1.修复 选择 6. auth_aes128_sha1 但是 显示的是 auth_sha1_v4 的BUG。

2.修复 检测 外网IP错误 的BUG。

3.新增 查看ShadowsocksR运行状态 功能。

2016年12月01日,版本 v1.0.5

1.修复 一个 成功下载但是提示ShadowsocksR下载失败 的BUG。你们重新下载新的脚本覆盖旧的脚本执行就行了。记得卸载旧的安装文件。

2016年11月30日,版本 v1.0.5

1.新增 修改用户配置时,设置混淆和协议 可以通过输入数字选择。

2.新增 显示用户配置是,显示SSR链接和SSR二维码,这个相比原来的SS是加上了混淆和协议的参数。

3.修复 一些小BUG

2016年11月29日,版本 v1.0.4

1.修复 无法获取 VPS外网IP 的问题。

2016年11月28日,版本 v1.0.3

1.新增 中文提示脚本。

2016年11月27日,版本 v1.0.3

1.新增 锐速安装后加入开机启动 功能。

2016年11月26日,版本 v1.0.2

1.新增 修改 协议和混淆 的功能(选项 4 )。

2.新增 显示账号信息中 SS链接和二维码链接。

2016年11月25日,版本 v1.0.0

1.推出 正式版本。

第二版补充,版本 v1.0.1

鉴于一些人可能会一开始安装ShadowsocksR会跳过 libsodium 的安装,所以又单独加上了安装 libsodium 的选项。

新增 安装 libsodium(chacha20加密方式) 的选项。

新增 查看锐速状态、停止锐速、重启锐速 的选项。

登陆NAT VPS总是很慢,这是因为UseDNS 选项打开状态下,当通过终端登录SSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施,但一般我们的是动态IP不会有PTR记录,对于静态IP还有点用,对于NAT主机似乎一点用都没有,打开这个选项没什么用,不如关闭。

注意:可能会带来安全性问题

每次登录SSH时总是要停顿等待一下才能连接上,,这是因为OpenSSH服务器有一个DNS查找选项UseDNS默认情况下是打开的。

通过编辑sshd_config配置文件可将其关闭:

  1. 命令:vi /etc/ssh/sshd_config
  2. 找到:#UseDNS yes
  3. 在下方输入:UseDNS no
  4. 保存退出

然后重启ssh服务:

service sshd restart

即可。

 说明:我们有时候需要将一些脚本代码或者文件上传到Github托管,而Github客户端有点难用,在网页上上传又慢,所以我们需要另想办法,这里就说下在VPS上直接将文件推送到Github方法,而且速度很快。如果你可以建立私人项目,还可以用来备份网站等私密文件。

方法

1、配置Git SSH密钥

ssh-keygen -t rsa

连续按几次Enter,这时候会在/root/.ssh文件夹生成2个ssh密钥,然后我们查看并复制公钥id_rsa.pub。

cat /root/.ssh/id_rsa.pub

复制好了后,登录Github,进入https://github.com/settings/ssh/new,Title随便填,然后Key填入刚刚复制的密匙点击Add SSH Key添加即可。
请输入图片描述

2、推送文件
首先我们需要进入https://github.com/new,新建一个项目用来存放文件,如果你想将网站等私密文件放在Github,新建项目的时候,选择Private建立私人项目,反之选择Public。
请输入图片描述

然后开始配置,如果我们需要推送的文件在网站/home文件夹,这时候运行命令:

#进入文件夹
cd /home
#建立本地仓库
git init
#关联到Github仓库
git remote add origin git@github.com:MOERATS/TEST.git

关联仓库的时候,后面可以用HTTPS链接也可以用SSH,这里建议选择SSH。
请输入图片描述

接下来在/home文件夹里,继续操作。

#把目录下所有文件更改状况提交到暂存区
git add -A
#提交更改的说明
git commit -m "push"
#开始推送到Github
git push -u origin master

这时候打开项目地址就可以看到推送的文件了。
请输入图片描述
如果我们推送的文件在修改后再次推送同步的话,就需要从提交暂存区步骤开始。

 说明:Hexo是一个很简洁的博客程序,可将其部署到Github上并使用Git二级域名进行访问,等于为我们节省了服务器和域名成本,而且还可以绑定自己的域名访问,这里就说下具体搭建教程。

简介

Hexo是一个快速、简洁且高效的博客框架。Hexo使用Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

截图

请输入图片描述

搭建

1、创建Github账户
浏览器进入https://github.com,注册一个账号,再打开https://github.com/new创建一个项目。名称填Github用户名.github.io。
请输入图片描述

2、安装Node.js和Git
使用SSH客户端登录VPS,运行命令:

#Ubuntu和Debian系统
curl -sL https://deb.nodesource.com/setup_9.x | bash -
apt-get install -y nodejs git

#Centos系统
curl -sL https://rpm.nodesource.com/setup_9.x | bash -
yum install nodejs git -y

3、安装Hexo

#新建文件夹存放Hexo文件,名称自己定
mkdir /Rats && cd /Rats
#安装Hexo
npm install hexo-cli -g
#初始化配置
hexo init
#安装必要组件
npm install
#启动Hexo
hexo server

然后打开http://ip:4000,就可以进入Hexo博客了,如果进不了,请放行服务器的4000端口。接下来我们就同步到Github上。

4、配置Git信息

#请将下面Git用户名和邮箱修改成自己的
git config --global user.name "MOERATS"
git config --global user.email "admin@moerats.com"
#生成密匙
ssh-keygen -t rsa -C "admin@moerats.com"

生成过程可以直接回车,此时会在/root/.ssh目录中生成2个文件,然后打开id_rsa.pub,并复制里面的内容。

cat /root/.ssh/id_rsa.pub

复制好后,使用浏览器进入https://github.com/settings/ssh/new,Title随便填,然后把刚刚复制的内容填到Key确认。

再编辑_config.yml文件,文件在之前新建的文件夹里,你可以使用ftp客户端编辑,也可以使用vi或nano编辑。

nano /Rats/_config.yml
#编辑网站信息,自己看情况修改
title: Rat's Blog
subtitle: A blog
description: A blog
keywords: A blog
author: Rat's
language: zh-CN
timezone: Asia/Shanghai

#添加配置,在最后添加,请修改为自己的Git地址
deploy:
  type: git
  repo: https://github.com/MOERATS/MOERATS.github.io.git
  branch: master

5、同步到Github
同步前,先安装一个拓展,不然会出现deloyer not found:git错误。

npm install hexo-deployer-git --save

再使用命令同步

hexo g
hexo d

同步的时候,会要求我们输入Github用户名和密码,然后我们就可以通过https://xx.github.io/进入博客了。

6、发布文章
使用命令新建文章。

hexo new "标题"

此时会在/Rats/source/_posts目录下生成个markdown文件,然后你就用Markdown编辑器进行编辑。

接下来就可以使用命令发布并同步到Github了。

hexo d -g

绑定域名

如果你想用Github二级域名访问,就无视这一步,如果你想用自己的域名访问,请继续看。

先解析域名的CNAME记录到你的Git二级域名。如果你想用Https访问,可以使用CloudFlare解析域名,并开启CDN强制Http转Https。
请输入图片描述

然后访问你的博客Git项目地址,点击Create new file新建文件,命名CNAME,内容写上你的域名,不要http等。
请输入图片描述

这时候就可以通过自己的域名访问博客了。

一般每次同步到Git的时候,CNAME文件都会消失,这时候我们需要在本地服务器的/Rats/source目录里新建个同样的CNAME文件。这样可以防止CNAME文件消失,导致域名404错误。

#你可以用ftp添加CNAME文件,也可以使用命令,注意后面的路径
echo "www.moerats.com" > /Rats/source/CNAME

 说明:之前发过一个在Github上搭建个人的Hexo博客教程,其特点是不需要域名和服务器就可以搭建一个博客,不过由于Hexo为静态的,所以只能当成一个纯写作博客,而博主刚刚发现了个新项目,同样搭建在Github上,与Hexo不同的是为动态博客,非常美观和强大,还支持自定义设置。

简介

博客基于GitHub Pages与Github API实现无后台,可动态发布博客的系统,博客数据储存于gist通过Github API进行增删改查,带音乐播放区,社交圈,可以动态修改标题,描述,背景等配置。

演示地址:https://github-laziji.github.io
Github地址:https://github.com/GitHub-Laziji/vblog

截图

请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述

特点

  • 基于GitHub Pages无需服务器
  • 改进传统GitHub Pages不能动态发布的缺陷
  • 包含电脑端和移动端
  • 单页面应用

快速搭建

快速搭建博客只需2步,首先去右上角点击github头像旁边的"+"号 选择"Import repository"克隆地址填"https://github.com/GitHub-Laziji/GitHub-Laziji.github.io"项目名填"${你的用户名}.github.io"。
请输入图片描述

克隆完成后,进入所建项目,修改文件/static/configuration.json中的"github-username"为自己的github用户名,其他自己看着办。

接下来打开https://${你的用户名}.github.io就可以进入自己博客了,然后管理博客需要Token,获取如下:

在github > settings > Developer settings > Personal access tokens 勾选gist权限就可以获取Token

绑定域名

如果你想用Github二级域名访问,就无视这一步,如果你想用自己的域名访问,请继续看。

先解析域名的CNAME记录到你的Git二级域名。如果你想用Https访问,可以使用CloudFlare解析域名,并开启CDN强制Http转Https。
请输入图片描述

然后访问你的博客Git项目地址,点击Create new file新建文件,命名CNAME,内容写上你的域名,不要http等。
请输入图片描述

这时候就可以通过自己的域名访问博客了。

 说明:tinyPortMapper是一个易安装配置的端口转发工具,可转发UDP和TCP流量,其实和博主之前发的Socat差不多,查看:Socat一键安装脚本,都只能一次转发单个端口。虽然没啥明显区别,但此类工具不嫌多,就拿出来说下。

脚本

系统要求:支持CentOS 6+ 、Debian 7+、Ubuntu 14+。
脚本说明:脚本默认开启UDP、TCP转发,带开机自启功能,且一次只能转发单个端口,如果想转发多个端口请重复运行本脚本。

使用root运行以下命令:

wget https://www.moerats.com/usr/shell/tinyPortMapper.sh && bash tinyPortMapper.sh

按要求输入以下信息:

#如果你要用本地服务器的2222端口转发IP为1.2.3.4服务器的8888端口,那就依次填入指定参数。
请输入本地端口:2222
请输入远程端口:8888
请输入远程IP:1.2.3.4

输入后直到配置完成。

卸载

1、删除tinyPortMapper

rm -rf /tinyPortMapper

2、清空开机自启

#CentOS系统,编辑/etc/rc.d/rc.local,删除tinyPortMapper启动命令。
#Debian/Ubuntu系统,编辑/etc/rc.local,删除tinyPortMapper启动命令。