说明以及安装方法

ACBingo edited this page Nov 26, 2016 · 32 revisions

Telegram 频道:https://telegram.me/glzjinmodnews

Telegram 群:https://telegram.me/glzjinmod

反馈表单:https://goo.gl/forms/TbMPtSZ4wf3FLLKC3

欢迎点击 这里 给我一些鼓励。

说明

  1. 此程序为 ssshell 的替代品。
  2. 此程序基于 @breakwa11 的 Shadowsocks RSS 多用户版修改而来,在此表示感谢。
  3. 此程序实现了之前 ssshell 所具有所有特性。
  4. 此程序目前仅适配 魔改版。

特性

除多用户后端所具有的一般特性之外,配合魔改版 ss-panel ,此程序还具有以下特性。

  1. 自定义加密方式,混淆方式,混淆参数,协议以及协议参数(配合 RSS 客户端)。
  2. 节点在线IP上报。
  3. 节点分类,分组,总流量限制。
  4. 节点状态报告,负载以及 UPTIME 上报。
  5. 自动测试节点到三大运营商速度并且上报。
  6. 速度限制。
  7. 有IP离线列表,可以基于这个限制用户IP数。
  8. 可以设置禁止用户访问的IP以及端口。
  9. 云安全,可以上报本地封禁的IP。
  10. 可以自动封禁SS连接密码错误的IP。
  11. 可以接受自动化命令,方便批量管理服务器。

安装方法

参考 https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup(manyuser) ,此处以 Centos 6 x64 为例。

1.请安装 git 等。

yum install python-setuptools && easy_install pip

yum install git

2.请安装 libsodium

yum -y groupinstall "Development Tools"

wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz

tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10

./configure && make -j2 && make install

echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf

ldconfig

(如果提示cannot import name OrderedDict,可能需要给服务器打补丁:第三方插件ordereddict

easy_install ordereddict )

3.安装 cymysql

pip install cymysql

4.下载程序源代码

git clone -b manyuser https://github.com/glzjin/shadowsocks.git

5.配置程序

先得到你的配置文件

cd shadowsocks

cp apiconfig.py userapiconfig.py

cp config.json user-config.json

然后主要编辑 userapiconfig.py ,来解释下里面各项配置的意思

# Config

#节点ID

NODE_ID = 1

#自动化测速,为0不测试,此处以小时为单位,要和 ss-panel 设置的小时数一致

SPEEDTEST = 6

#云安全,自动上报与下载封禁IP,1为开启,0为关闭

CLOUDSAFE = 1

#自动封禁SS密码和加密方式错误的 IP,1为开启,0为关闭

ANTISSATTACK = 0

#是否接受上级下发的命令,如果你要用这个命令,请参考我之前写的东西,公钥放在目录下的 ssshell.asc

AUTOEXEC = 1

是否以多线程模式运行,关闭这个限速就会无效。请优先测试 1 ,开启试试,能运行没。

MULTI_THREAD = 0

多端口单用户设置,看重大更新说明。

MU_SUFFIX = 'zhaoj.in'

多端口单用户设置,看重大更新说明。

MU_REGEX = '%5m%id.%suffix'

#不明觉厉

SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link

#此处不要修改

API_INTERFACE = 'glzjinmod' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, muapiv2(not support)

#mudb,不要管

MUDB_FILE = 'mudb.json'

# Mysql 数据库连接信息

MYSQL_HOST = '127.0.0.1'

MYSQL_PORT = 3306

MYSQL_USER = 'ss'

MYSQL_PASS = 'ss'

MYSQL_DB = 'shadowsocks'

MYSQL_UPDATE_TIME = 60

# 是否启用SSL连接,0为关,1为开

MYSQL_SSL_ENABLE = 0

# 客户端证书目录,请看 https://github.com/glzjin/shadowsocks/wiki/Mysql-SSL%E9%85%8D%E7%BD%AE

MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem'

MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem'

MYSQL_SSL_CA = '/root/shadowsocks/ca.pem'

# API,不用管

API_HOST = '127.0.0.1'

API_PORT = 80

API_PATH = '/mu/v2/'

API_TOKEN = 'abcdef'

API_UPDATE_TIME = 60

# Manager 不用管

MANAGE_PASS = 'ss233333333'

#if you want manage in other server you should set this value to global ip

MANAGE_BIND_IP = '127.0.0.1'

#make sure this port is idle

MANAGE_PORT = 23333

6.运行的话,有几种方式。

  • python server.py 用于调错的
  • ./run.sh 无日志后台运行
  • ./logrun.sh 有日志后台运行
  • supervisord

其他更多。。。。

7.我们优化下

编辑 /etc/security/limits.conf

最后添加

* soft nofile 51200

* hard nofile 51200

然后在运行之前执行

ulimit -n 51200

然后编辑 /etc/sysctl.conf

fs.file-max = 51200

net.core.rmem_max = 67108864

net.core.wmem_max = 67108864

net.core.netdev_max_backlog = 250000

net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.ip_local_port_range = 10000 65000

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.tcp_fastopen = 3

net.ipv4.tcp_rmem = 4096 87380 67108864

net.ipv4.tcp_wmem = 4096 65536 67108864

net.ipv4.tcp_mtu_probing = 1

sysctl -p 来使其生效。

8.此处以 centos 6 x64 下配置 supervisord 为例。

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm --quiet

yum install supervisor python-pip -y

pip install supervisor==3.1

chkconfig supervisord on

wget https://github.com/glzjin/ssshell-jar/raw/master/supervisord.conf -O /etc/supervisord.conf

wget https://github.com/glzjin/ssshell-jar/raw/master/supervisord -O /etc/init.d/supervisord

编辑 /etc/supervisord.conf 最后一段改成如下的,以 /root/shadowsocks/ 为例

[program:mu]

command=python /root/shadowsocks/server.py

directory=/root/shadowsocks

autorestart=true

startsecs=10

startretries=36

redirect_stderr=true

user=root ; setuid to this UNIX account to run the program

log_stdout=true ; if true, log program stdout (default true)

log_stderr=true ; if true, log program stderr (def false)

logfile=/var/log/mu.log ; child log path, use NONE for none; default AUTO

;logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)

;logfile_backups=10 ; # of logfile backups (default 10)

编辑 /etc/init.d/supervisord 在这两行之间添加 ulimit -n 51200

    echo -n $"Starting supervisord: "
    ulimit -n 51200
    daemon supervisord -c /etc/supervisord.conf

然后

service supervisord start

即可。

关于升级

cd shadowsocks

git pull

记得看 https://github.com/glzjin/shadowsocks/wiki/重大更新日志 添加配置项。

关于从 ssshell 迁移

首先你要完全停止 ssshell .

service supervisord stop

killall ss-server

killall python

然后安装前面说明的安装即可,记得修改 supervisord 设置。

反馈

Telegram 频道:https://telegram.me/glzjinmodnews

Telegram 群:https://telegram.me/glzjinmod

反馈表单:https://goo.gl/forms/TbMPtSZ4wf3FLLKC3