WebGUI - wxingheng/shadowsocks-manager GitHub Wiki

本文描述webgui插件的基本使用方法。

安装

  1. 安装 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

  2. 安装Node.js 6.*

    建议采用nodesource里边的方式安装 curl -sL https://rpm.nodesource.com/setup_6.x | bash - yum install gcc-c++ make

  3. 安装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
  1. 在每台机上启动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

  2. 在每台机的~/.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'
    
  3. 在每台机的启动ssmgr

    pm2 --name "yourname" -f start ssmgr -x -- -c ss.yml

    ssmgr -c ss.yml

  4. 然后是使用 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'
    
  5. 然后再启动一个ssmgr,就可以运行webgui了:

    ssmgr -c webgui.yml

    pm2 --name "webgui.yml" -f start ssmgr -x -- -c webgui.yml

  6. 如果上面的配置一切正常的话,打开http://yourwebsite.com就可以看到注册界面了,注册一个帐号,首个注册的帐号即为管理员

    signup

  7. 管理员登录后,在“服务器”菜单里已经有一个名为 default 的服务器,就是刚刚配置的 1.1.1.1 这个ip的,下面要把另外两个服务器也添上去,端口和密码要跟第二步配置文件里的 manager 一项保持相同:

    addServer

  8. 添加服务器以后,在“账号”菜单里可以添加 shadowsocks 账号了,添加之后3个服务器都会自动生效:

    addAccount

后台运行

如果需要让ssmgr后台运行,可以使用pm2,首先安装 pm2:

`npm i -g pm2`

使用 pm2 运行程序:

`pm2 --name "ssyml" -f start ssmgr -x -- -c ss.yml`

当然也可以用 screentmux 之类的工具。

重启服务 全部后台运行

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服务器:

  1. 把配置文件的 webgui 部分更改为:

    webgui:
      use: true
      host: '127.0.0.1'
      port: '8080'
      site: 'http://yourwebsite.com'
    
  2. 添加 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 打开,都可以添加到主屏幕,这样可以全屏浏览,隐藏地址栏:

homeScreenChrome
homeScreenSafari

HTTPS

某些特性必须在启用 https 后才能使用:

  • service worker
  • notification push

支付宝

使用支付宝插件,首先需要申请当面付接口,然后进入“商家中心”进行签约管理。然后在蚂蚁金服开放平台中的“PID和公钥管理”的开放平台密钥对你生成的应用进行密钥设置。其中的主要步骤如下:

  1. 设置 RSA2(SHA256) 密钥,按官网提示完成密钥上传

  2. 将步骤1中生成的 rsa_private_key.pem 中的 private key 填到 merchantPrivateKey 项

  3. 将商户后台的“查看支付宝公钥”内容填到 alipayPublicKey 项

如果使用支付宝提供的“RSA签名验签工具”生成应用密钥,请注意密钥格式选择PKCS1(非JAVA适用)。另外,merchantPrivateKeyalipayPublicKey这两项也可以采用_填写文件路径_的方式读取到key。