VPS安装ssmanager

starlin 1,429 2018-06-07

相信有很多人和作者一样都自己搭建了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

  1. 新建 default.yml
    内容如下:
type: s

shadowsocks:
  address: 127.0.0.1:6001 # **这里的地址和下面的【启动】中保持一致**

manager:
  address: 0.0.0.0:4001
  password: '12345678'

db: 'ss.sqlite'
  1. 新建配置文件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

参考

wiki
mailgun设置smtp


# ss