node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey ยป



NPM version Build Status

shadowsocks-nodejs is a node.js port of shadowsocks.

Deprecated; please use Other versions.

Many people are asking why. Here's why.

The GC of node.js sucks.

Python version handles 5000 connections with 50MB RAM while node.js version handles 100 connections with 300MB RAM. Why should we continue to support node.js?


Download the lastest Node stable release. Don't just use master branch of Node source code from Github! It's not stable.


npm install -g shadowsocks

Create a file named config.json, with the following content.


Explaination of the fields:

server          your server IP (IPv4/IPv6), notice that your server will listen to this IP
server_port     server port
local_port      local port
password        a password used to encrypt transfer
timeout         in seconds
method          encryption method, "bf-cfb", "aes-256-cfb", "des-cfb", "rc4", etc. Default is table
local_address   local binding address, leave it alone if you don't know what it means

cd into the directory of config.json. Run ssserver on your server. Use Supervisor.

On your client machine, run sslocal.

Change the proxy setting in your browser into

protocol: socks5
port:     your local_port


You can use args to override settings from config.json.

sslocal -s server_name -p server_port -l local_port -k password -m bf-cfb -b local_address
ssserver -p server_port -k password -m bf-cfb -t timeout
ssserver -c /etc/shadowsocks/config.json

Example of multi-user server support can be found in test/config-multi-passwd.json.


You can build coffee source code and test it:

npm install -g coffee-script
cake build test



Bugs and Issues

Please visit Issue Tracker

Mailing list:

Also see Troubleshooting