相信有很多人和作者一样都自己搭建了VPS,用于科学上网,但一个人每月的流量都用不完,其实是可以分享给他人的嘛,如果随便还能赚点小钱,何乐而不为了。所以就有了下面的教程,请出今天的主角shadowsocks-manager,废话不多少,直接开始
本文所使用的linux环境:CentOS7
另外因为之前我的VPS已经安装了shadowsocks了,所以以下步骤就省略了
安装nodejs
我这里使用的EPEL安装,EPEL(Extra Packages for Enterprise Linux)企业版Linux的额外软件包,是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。
先确认系统是否已经安装了epel-release包:
yum info epel-release
如果有输出有关epel-release的已安装信息,则说明已经安装,如果提示没有安装或可安装,则安装
yum install epel-release
安装完后,就可以使用yum命令安装nodejs了,安装的一般会是较新的版本,并且会将npm作为依赖包一起安装
安装nodejs
yum install nodejs
安装完成后,验证是否正确的安装,node -v,如果输出如下版本信息,说明成功安装
安装shadowsocks-manager
npm安装
npm i -g shadowsocks-manager
安装后的路径为:/usr/lib/node_modules/shadowsocks-manager
若安装过程提示以下错误:
gyp WARN EACCES user "root" does not have permission to access the dev dir "
则只需要运行下面的命令即可:(具体原因作者也不知道,google上的解决方案)
sudo npm install --unsafe-perm --verbose -g sails
如果要更新的
npm update -g shadowsocks-manager
配置
创建配置文件目录
mkdir ~/.ssmgr
cd .ssmgr
- 新建 default.yml
内容如下:
type: s
shadowsocks:
address: 127.0.0.1:6001 # **这里的地址和下面的【启动】中保持一致**
manager:
address: 0.0.0.0:4001
password: '12345678'
db: 'ss.sqlite'
- 新建配置文件webgui.yml
作为webgui这个插件的配置文件,内容如下(如有更新,以官方Wiki为准)
type: m
manager:
address: x.x.x.x:4001
# 这里换成manager所在的服务器的ip
password: '12345678'
# 这部分的端口和密码需要跟上一步 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'
username: 'username'
password: 'password'
host: 'smtp.your-email.com'
# 这部分的邮箱和密码是用于发送注册验证邮件,重置密码邮件
webgui:
use: true
host: '0.0.0.0'
port: '8088' #这个端口默认为80端口,因为有其他作用,所以改成了8088
site: 'http://yourwebsite.com' # 将这里改成自己的 ip 或者域名,注意我这里改成了8088
# cdn: 'http://xxx.com' # 静态资源cdn地址,可省略
# icon: 'icon.png' # 自定义首页图标,默认路径在 ~/.ssmgr 可省略
# googleAnalytics: 'UA-xxxxxxxx-x' # Google Analytics ID,可省略
# gcmSenderId: '456102641793' # gcmSenderId 、gcmAPIKey 这两个是Chrome推送用的
# 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: 'webgui.sqlite'
配置文件中的email建议在vps上自己搭一个邮件服务器吧,后续在写一篇如何搭建邮件服务器
如果想用免费的,作者推荐mailgun,具体使用方法请自行google,这里就不介绍了
另外关于支付方式,paypal国内用的人少,而支付宝现在已停止了个人的当面付功能,需要有营业执照才能开通,作者目前也没有好的方式,若后续找到了好的支付方式,会更新在文章中。
启动
- 用管理器 API 启动 shadowsocks
ssserver -m aes-256-cfb -p 12345 -k abcedf --manager-address 127.0.0.1:6001
m 是加密方式,--manager-address 是监听地址。
启动命令中的地址和端口需要和default.xml中shadowsocks要保持一致
- 运行以下命令:
ssmgr -c default.yml
ssmgr -c webgui.yml
如果启动第一个命令遇到以下错误:
Error: Cannot find module ‘/usr/lib/node_modules/shadowsocks-manager/node_modules/sqlite3/lib/binding/node-v48-linux-x64/node_sqlite3.node’
解决方法是:
cd /usr/lib/node_modules/shadowsocks-manager/
npm install sqlite3 --save
- 添加开机启动
开机启动我用的是supervisord,没有装的就不用往下看了,可以用其他方式:
编辑supervisord.conf
vim /etc/supervisord.conf
在后面添加如下内容:
[program:ssmgr]
command = ssserver -m aes-256-cfb -p 12345 -k abcedf --manager-address 127.0.0.1:6001
directory = /home
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/ssmgr/ssmgr.log
stderr_logfile = /var/log/ssmgr/ssmgr_error.log
environment = LANG="en_US.UTF-8"
[program:ssmgr_default]
command = ssmgr -c /root/.ssmgr/default.yml
directory = /home
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/ssmgr/ss.log
stderr_logfile = /var/log/ssmgr/ss_error.log
environment = LANG="en_US.UTF-8"
[program:ssmgr_webgui]
command = ssmgr -c /root/.ssmgr/webgui.yml
directory = /home
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/ssmgr/webgui.log
stderr_logfile = /var/log/ssmgr/webgui_error.log
environment = LANG="en_US.UTF-8"
重启supervisord
supervisord -c /etc/supervisord.conf
芝麻开门
如上一切正常,在浏览器中输入yourwebsite.com:端口号,
就会出现相应的页面了,后面的大伙自己慢慢玩吧
自己搭建邮件服务器webgui.yml配置
作者用了第三方的邮件插件,发现根本不好用,索性还不如自己搭建一个邮件服务器,我的用的是postfix+dovecot,整个过程中主要是配置文件的修改,如果想自己搭建,请看这里自己搭建邮件服务器
这里主要说下如何在shadowsocks-manager中配置,也是看了源码才知道怎么配置的,直接上配置文件中的email配置,后面会有详细的说明
email:
use: true
type: 'smtp'
username: 'service'
password: 'starlin123'
host: 'mail.starlin.top'
# 原配置文件中是没有定义端口号,如果不定义,默认的端口号是465,
# 因为我们没有配置ssl,所以必须定义端口25,这个也是从日志中发现了,不配置默认走465端口
port: '25'
# 如果此项不配置,虽然页面一直提示验证码已发送,其实根本就收不到
email: 'service@starlin.top