Skip to content
A shadowsocks manager tool for multi user and traffic control.
JavaScript HTML Other
Branch: master
Clone or download

Latest commit

Latest commit 33510df May 24, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci bug fix Feb 24, 2020
.github add notice setting Mar 19, 2017
bin drop node 6 support Oct 11, 2018
config set order port range Aug 2, 2018
docker update Dockerfile Apr 14, 2020
docs docs May 10, 2020
init Add support for udp forwarding on rust server Mar 8, 2020
models fix #483 Oct 29, 2018
plugins bug fix May 24, 2020
services bug fix May 17, 2020
wikiImage wiki image Mar 5, 2017
.eslintignore support clash Dec 26, 2018
.eslintrc.json bug fix Dec 25, 2018
.gitattributes bug fix Dec 25, 2018
.gitignore css Oct 31, 2018
.npmignore support clash Dec 26, 2018
LICENSE Move version 2 to master Oct 8, 2016 node version Jan 3, 2020
gulpfile.js terser Dec 16, 2019
package-lock.json bug fix May 24, 2020
package.json bug fix May 24, 2020
server.js subscribe Jul 3, 2019

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 docs.

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

WebGUI Demo:

FreeAccount Demo:


  • Node.js 12.*
  • Redis


From source:

git clone
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 <>
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+ && \
    curl -sL | 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.

Telegram Group

Join the group if you have some problem:

VPS recommendation


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

  • Alipay

  • WeChat Pay

You can’t perform that action at this time.