Skip to content

A shadowsocks manager tool for multi user and traffic control.

License

Notifications You must be signed in to change notification settings

11m09d/shadowsocks-manager

 
 

Repository files navigation

NPM version npm license

shadowsocks-manager

A shadowsocks manager tool for multi user and traffic control.
Base on Node.js and SQLite.

For more details, you can see the wiki page.

If you want to use the old version, please switch to this branch.

WebGUI Demo:

https://wall.gyteng.com

Dependencies

Node.js 6.*

Install

From source:

git clone https://github.com/shadowsocks/shadowsocks-manager.git
cd shadowsocks-manager
npm i

use node server.js to run this program.

From npm:

npm i -g shadowsocks-manager

use ssmgr to run this program.

From docker:

docker run --name ssmgr -idt -v ~/.ssmgr:/root/.ssmgr --net=host gyteng/ssmgr [ssmgr params...]

Build docker image:

here is the Dockerfile

FROM ubuntu:16.04
MAINTAINER gyteng <[email protected]>
RUN apt-get update && \
    apt-get install curl git sudo -y && \
    curl -sL https://deb.nodesource.com/setup_6.x | bash - && \
    apt-get install -y nodejs && \
    npm i -g shadowsocks-manager && \
    git clone https://github.com/shadowsocks/shadowsocks-libev.git ~/shadowsocks && \
    mkdir -p ~/build-area/ && \
    cp ~/shadowsocks/scripts/build_deb.sh ~/build-area/ && \
    cd ~/build-area && \
    ./build_deb.sh
ENTRYPOINT ["/usr/bin/ssmgr"]

Usage

  1. Start shadowsocks with manager API, it supports shadowsocks-python and shadowsocks-libev. For example, you can run this command:
    ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:6001
  2. run ssmgr with type s:

config file:

type: s
empty: false
shadowsocks:
  address: 127.0.0.1:6001
manager:
  address: 0.0.0.0:4001
  password: '123456'
db: 'ss.sqlite'

If you want to use MySQL, the db must like this:

db:
  host: '1.1.1.1'
  user: 'root'
  password: 'abcdefg'
  database: 'ssmgr'

And you have to close only_full_group_by when the version of MySQL is greater than 5.7

command:
ssmgr -c /your/config/file/path.yml

  1. If you have several servers, you have to run step 1 and step 2 in every server.
    The listening address in --manager-address of step 1 and in shadowsocks -> address of step 2's config file must be same. For security reseon, we recommend you to use 127.0.0.1 instead of 0.0.0.0.
  2. Now you can use the plugins to manage them. You can read the details in plugins readme page.
+-------------+    +-------------+       +------+
| Shadowsocks |    | Shadowsocks |  ...  |      |
| manager API |    | manager API |       |      |
+-------------+    +-------------+       +------+
       |                 |                  |
       |                 |                  |
+-------------+    +-------------+       +------+
| ssmgr       |    | ssmgr       |  ...  |      |
| with type s |    | with type s |       |      |
+-------------+    +-------------+       +------+
       |                 |                  |
       +------------+----+--------  ...  ---+
                    |
                    |
             +---------------+
             | ssmgr plugins |
             |  with type m  |
             +---------------+

Plugins

[================100%] cli
[================100%] telegram
[================100%] flowSaver
[================100%] email
[================100%] user
[================100%] freeAccount
[================100%] account
[===============90%--] webgui
[================100%] alipay

Parameter

ssmgr --help will show startup parameters info.

Usage: ssmgr [options]

  Options:

    -h, --help                   output usage information
    -V, --version                output the version number
    -c, --config [file]          config file, default: ~/.ssmgr/default.yml
    -d, --db [file]              sqlite3 file, sample: ~/.ssmgr/db.sqlite
    -e, --empty                  clean database
    -t, --type [type]            type, s for server side, m for manager side
    -s, --shadowsocks [address]  ss-manager address, sample: 127.0.0.1:6001
    -m, --manager [address]      manager address, sample: 0.0.0.0:6002
    -p, --password [password]    manager password, both server side and manager side must be equals
    -r, --run [type]             run shadowsocks from child_process, sample: libev / libev:aes-256-cfb / python / python:aes-256-cfb
    --debug                      show debug message

First, ssmgr will read the config file in --config, and other parameters(-detsmp) will replace the config file values.

Donate

If you find this project helpful, please consider making a donation:

  • Alipay

  • WeChat Pay

About

A shadowsocks manager tool for multi user and traffic control.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 72.1%
  • HTML 27.3%
  • CSS 0.6%