A shadowsocks manager tool for multi user and traffic control.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 81ff380 Oct 14, 2018
Failed to load latest commit information.
.github add notice setting Mar 19, 2017
bin drop node 6 support Oct 11, 2018
config set order port range Aug 2, 2018
docker skin Jul 4, 2018
docs Update index.html Aug 8, 2018
init fix load plugin bug Jul 17, 2018
models bug fix Oct 11, 2017
plugins bug fix Oct 14, 2018
services replace Buffer() with Buffer.from() Oct 11, 2018
wikiImage wiki image Mar 5, 2017
.babelrc migrate to babel@7 and webpack@4 Oct 11, 2018
.eslintrc.json null Oct 11, 2016
.gitignore ignore compiled js files Oct 11, 2018
.npmignore npm prepublish Mar 28, 2017
LICENSE Move version 2 to master Oct 8, 2016
README.md add date filter Aug 6, 2018
gulpfile.js drop node 6 support Oct 11, 2018
package-lock.json bug fix Oct 14, 2018
package.json bug fix Oct 14, 2018
server.js drop node 6 support Oct 11, 2018


NPM version npm license


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:


FreeAccount Demo:



Node.js 8.*


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

You may need to use the --unsafe-perm flag if you receive an permission error

npm i -g shadowsocks-manager --unsafe-perm

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:18.04
MAINTAINER gyteng <igyteng@gmail.com>
RUN apt-get update && \
    export DEBIAN_FRONTEND=noninteractive && \
    apt-get install tzdata iproute2 curl git sudo software-properties-common python-pip -y && \
    pip install git+https://github.com/shadowsocks/shadowsocks.git@master && \
    curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    apt-get install -y nodejs shadowsocks-libev && \
    npm i -g shadowsocks-manager --unsafe-perm && \
    echo "Asia/Shanghai" > /etc/timezone && \
    rm /etc/localtime && \
    dpkg-reconfigure -f noninteractive tzdata
CMD ["/usr/bin/ssmgr"]


  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
ssserver -m aes-256-cfb -p 12345 -k abcedf --manager-address
  1. run ssmgr with type s:

config file:

type: s

  password: '123456'
db: 'ss.sqlite'

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

  host: ''
  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

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 instead of
  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  |




ssmgr --help will show startup parameters info.

Usage: ssmgr [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
    -t, --type [type]            type, s for server side, m for manager side
    -s, --shadowsocks [address]  ss-manager address, sample:
    -m, --manager [address]      manager address, sample:
    -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.


If your want to help to translate it to other languages, please edit files here and give me a pull request.


Join the group if you have some problem: https://t.me/ssmgr

VPS recommendation


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

  • Alipay

  • WeChat Pay