WebGUI - wxingheng/shadowsocks-manager GitHub Wiki
本文描述webgui插件的基本使用方法。
安装
-
安装
shadowsocks-libev
wget --no-check-certificate -O shadowsocks-libev.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh
chmod +x shadowsocks-libev.sh
./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log
-
安装
Node.js
6.*建议采用nodesource里边的方式安装
curl -sL https://rpm.nodesource.com/setup_6.x | bash -
yum install gcc-c++ make
-
安装
ssmgr
npm i -g shadowsocks-manager
npm i -g pm2
使用
假设有3台 VPS,ip地址分别为:
1.1.1.1
2.2.2.2
3.3.3.3
-
在每台机上启动
shadowsocks
,需要指定 manager address,启动后会监听这个 udp 端口:ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:4000
或者使用下面的文件方式
ss-manager-start.js [ ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:4000 ]
pm2 --name "ss-manager" start ./start-ss-manager.sh --interpreter bash
-
在每台机的
~/.ssmgr
路径下新建配置文件ss.yml
,内容如下(root/.ssmgr/ss.yml):type: s shadowsocks: address: 127.0.0.1:4000 # 这里的地址和端口需要跟上一步的 --manager-address 参数保持一致,连接上述 udp 端口 manager: address: 0.0.0.0:4001 # 这个 address 参数会让程序监听一个 tcp 端口,用于接收 webgui 发送过来的控制命令 password: '123456' db: 'ss.sqlite'
-
在每台机的启动
ssmgr
:pm2 --name "yourname" -f start ssmgr -x -- -c ss.yml
ssmgr -c ss.yml
-
然后是使用 webgui 这个 plugin,这部分可以在3台机的其中一台运行,也可以运行在其他位置,本文假设运行在
1.1.1.1
这台机上,首先在路径~/.ssmgr
下添加配置文件webgui.yml
:type: m manager: # 本机服务器IP地址 <176.122.181.47:4001> 这里的4001就是上面监听tcp的端口 address: 176.122.181.47:4001 password: 'Aiyuwan' # 这部分的端口和密码需要跟上一步 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' # [email protected] username: 'username' password: 'password' host: 'smtp.163.com' # 这部分的邮箱和密码是用于发送注册验证邮件,重置密码邮件 -- 需要开启邮箱 smtp webgui: use: true host: '0.0.0.0' # webgui 网页服务端口 port: '80' # webgui 网页访问地址或者是访问域名 site: 'http://176.122.181.47' # cdn: 'http://xxx.com' # 静态资源cdn地址,可省略 # icon: 'icon.png' # 自定义首页图标,默认路径在 ~/.ssmgr 可省略 # skin: 'default' # 首页皮肤,可省略 # googleAnalytics: 'UA-xxxxxxxx-x' # Google Analytics ID,可省略 # gcmSenderId: '456102641793' # 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: 'ss.sqlite'
-
然后再启动一个
ssmgr
,就可以运行webgui了:ssmgr -c webgui.yml
pm2 --name "webgui.yml" -f start ssmgr -x -- -c webgui.yml
-
如果上面的配置一切正常的话,打开
http://yourwebsite.com
就可以看到注册界面了,注册一个帐号,首个注册的帐号即为管理员 -
管理员登录后,在“服务器”菜单里已经有一个名为 default 的服务器,就是刚刚配置的 1.1.1.1 这个ip的,下面要把另外两个服务器也添上去,端口和密码要跟第二步配置文件里的 manager 一项保持相同:
-
添加服务器以后,在“账号”菜单里可以添加 shadowsocks 账号了,添加之后3个服务器都会自动生效:
后台运行
如果需要让ssmgr
后台运行,可以使用pm2
,首先安装 pm2:
`npm i -g pm2`
使用 pm2 运行程序:
`pm2 --name "ssyml" -f start ssmgr -x -- -c ss.yml`
当然也可以用 screen
或 tmux
之类的工具。
重启服务 全部后台运行
pm2 start start-ss-manager.sh
pm2 --name "ss.yml" -f start ssmgr -x -- -c ss.yml
pm2 --name "webgui.yml" -f start ssmgr -x -- -c webgui.yml
配合nginx使用
如果80端口还有别的网站占用,或者需要采用 https 的方式访问(强烈推荐),需要先配置nginx服务器:
-
把配置文件的 webgui 部分更改为:
webgui: use: true host: '127.0.0.1' port: '8080' site: 'http://yourwebsite.com'
-
添加 nginx 的配置文件:
server {
listen 80;
server_name yourwebsite.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name yourwebsite.com;
ssl on;
ssl_certificate /xxx/chained.pem;
ssl_certificate_key /xxx/domain.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8080;
}
}
关于 https 证书,可以到Let's Encrypt等网站申请,当采用谷歌或火狐浏览器以 https 的方式访问站点的时候,可以使用 service worker 的功能,加快浏览速度,而且支持离线浏览部分内容。
使用MySQL
如果想要用 MySQL 替代 SQLite,把配置文件的db
部分改为:
db:
host: '127.0.0.1'
port: 3306
user: 'abc'
password: 'xxxxx'
database: 'ooooo'
注意,当使用5.7或更高版本的 MySQL 时,必须关闭only_full_group_by
这个特性。
使用Mailgun API
将配置文件的 email 部分替换成下面的格式:
email:
use: true
type: 'mailgun'
baseUrl: 'https://api.mailgun.net/v3/sandbox31d0f2c9c753a343f2e7c54da78ca89e.mailgun.org'
apiKey: 'key-f1e6a7558c7c5a37a33fdba53a87ea82'
WebApp
在 Android 系统下用 Chrome 打开,或者 iOS 系统下用 Safari 打开,都可以添加到主屏幕,这样可以全屏浏览,隐藏地址栏:
HTTPS
某些特性必须在启用 https 后才能使用:
- service worker
- notification push
支付宝
使用支付宝插件,首先需要申请当面付接口,然后进入“商家中心”进行签约管理。然后在蚂蚁金服开放平台中的“PID和公钥管理”的开放平台密钥对你生成的应用进行密钥设置。其中的主要步骤如下:
-
设置 RSA2(SHA256) 密钥,按官网提示完成密钥上传
-
将步骤1中生成的
rsa_private_key.pem
中的private key
填到 merchantPrivateKey 项 -
将商户后台的“查看支付宝公钥”内容填到 alipayPublicKey 项
如果使用支付宝提供的“RSA签名验签工具”生成应用密钥,请注意密钥格式选择PKCS1(非JAVA适用)。另外,merchantPrivateKey
和alipayPublicKey
这两项也可以采用_填写文件路径_的方式读取到key。