shadowsocks
===========

|PyPI version| |Build Status|

A fast tunnel proxy that help you get through firewalls.

`中文说明 <https://github.com/clowwindy/shadowsocks/wiki/Shadowsocks-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E>`__

Install
-------

You'll have a client on your local machine, and install a server on a
remote server.

Client
~~~~~~

-  `Windows <https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients#windows>`__
   / `OS
   X <https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients#os-x>`__
-  `Android <https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients#android>`__
   /
   `iOS <https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients#ios>`__
-  `OpenWRT <https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients#openwrt>`__

Server
~~~~~~

Debian / Ubuntu:
^^^^^^^^^^^^^^^^

::

    apt-get install python-pip python-m2crypto
    pip install shadowsocks

CentOS:
^^^^^^^

::

    yum install m2crypto python-setuptools
    easy_install pip
    pip install shadowsocks

Configuration
-------------

On your server create a config file ``/etc/shadowsocks.json``. Example:

::

    {
        "server":"my_server_ip",
        "server_port":8388,
        "local_address": "127.0.0.1",
        "local_port":1080,
        "password":"mypassword",
        "timeout":300,
        "method":"aes-256-cfb",
        "fast_open": false,
        "workers": 1
    }

Explanation of the fields:

+------------------+-----------------------------------------------------------------------------------------------------+
| Name             | Explanation                                                                                         |
+==================+=====================================================================================================+
| server           | the address your server listens                                                                     |
+------------------+-----------------------------------------------------------------------------------------------------+
| server\_port     | server port                                                                                         |
+------------------+-----------------------------------------------------------------------------------------------------+
| local\_address   | the address your local listens                                                                      |
+------------------+-----------------------------------------------------------------------------------------------------+
| local\_port      | local port                                                                                          |
+------------------+-----------------------------------------------------------------------------------------------------+
| password         | password used for encryption                                                                        |
+------------------+-----------------------------------------------------------------------------------------------------+
| timeout          | in seconds                                                                                          |
+------------------+-----------------------------------------------------------------------------------------------------+
| method           | encryption method, "aes-256-cfb" is recommended                                                     |
+------------------+-----------------------------------------------------------------------------------------------------+
| fast\_open       | use `TCP\_FASTOPEN <https://github.com/clowwindy/shadowsocks/wiki/TCP-Fast-Open>`__, true / false   |
+------------------+-----------------------------------------------------------------------------------------------------+
| workers          | number of workers, available on Unix/Linux                                                          |
+------------------+-----------------------------------------------------------------------------------------------------+

Run ``ssserver -c /etc/shadowsocks.json`` on your server. To run it in
the background, use
`Supervisor <https://github.com/clowwindy/shadowsocks/wiki/Configure-Shadowsocks-with-Supervisor>`__.

On your client machine, use the same configuration as your server, and
start your client.

If you use Chrome, it's recommended to use
`SwitchySharp <https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm>`__.
Change the proxy settings to

::

    protocol: socks5
    hostname: 127.0.0.1
    port:     your local_port

If you can't install
`SwitchySharp <https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm>`__,
you can launch Chrome with the following arguments to force Chrome to
use the proxy:

::

    Chrome.exe --proxy-server="socks5://127.0.0.1:1080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

If you can't even download Chrome, find a friend to download a `Chrome
Standalone <https://support.google.com/installer/answer/126299>`__
installer for you.

Command line args
-----------------

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
    ssserver -p server_port -k password -m bf-cfb --workers 2
    ssserver -c /etc/shadowsocks/config.json

List all available args with ``-h``.

Wiki
----

https://github.com/clowwindy/shadowsocks/wiki

License
-------

MIT

Bugs and Issues
---------------

-  `Troubleshooting <https://github.com/clowwindy/shadowsocks/wiki/Troubleshooting>`__
-  `Issue
   Tracker <https://github.com/clowwindy/shadowsocks/issues?state=open>`__
-  `Mailing list <http://groups.google.com/group/shadowsocks>`__

.. |PyPI version| image:: https://img.shields.io/pypi/v/shadowsocks.svg?style=flat
   :target: https://pypi.python.org/pypi/shadowsocks
.. |Build Status| image:: https://img.shields.io/travis/clowwindy/shadowsocks/master.svg?style=flat
   :target: https://travis-ci.org/clowwindy/shadowsocks