a tunnel proxy that help you get through firewalls

Downloads in past


1.5.39 years ago11 years agoMinified + gzip package size for shadowsocks in KB


!NPM versionNPM !Build StatusTravis CI
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