SS-LOCAL(1)
π ss-local β the manual, but make it make sense
Hey bestie π«Ά so this is ss-local, straight out of the Shadowsocks-libev Manual, section 1. It's the little local-side client that makes your traffic look like it's going somewhere totally normal, and honestly? Iconic. Let's get into it β¨
β¨ NAME β¨
ss-local β the shadowsocks client that runs as a socks5 proxy, and it's the libev port, periodt.
πΈ SYNOPSIS πΈ
ss-local [-uv6] [-h|--help] [-s <server_host>] [-p <server_port>] [-l
<local_port>] [-k <password>] [-m <encrypt_method>] [-f <pid_file>] [-t
<timeout>] [-c <config_file>] [-i <interface>] [-a <user_name>] [-b
<local_address>] [-n <nofile>] [--fast-open] [--reuse-port] [--acl
<acl_config>] [--mtu <MTU>] [--no-delay] [--plugin <plugin_name>]
[--plugin-opts <plugin_options>] [--password <password>] [--key
<key_in_base64>]
That's the whole vibe in one block, no cap π
π¦ DESCRIPTION π¦
Okay so Shadowsocks-libev is a lightweight and secure socks5 proxy β and when I say lightweight I mean it. It's a port of the original shadowsocks that clowwindy made, and it's written in pure C, taking full advantage of libev</civ> to serve you both high performance AND low resource consumption. The way it just does that ππ
Shadowsocks-libev is a whole squad β five components β and ss-local is the one that works as a standard socks5 proxy on local machines to proxy TCP traffic. That's its whole job and it ate fr fr π
Want the full lore? Check out shadowsocks-libev(8), bestie π§
π OPTIONS π
Get comfy, there's a lot, but every single one is here because we do NOT skip details in this house π
π Server & local setup
-s<server_host>β set the server's hostname or IP. That's where your traffic is headed β¨-p<server_port>β set the server's port number.-l<local_port>β set the local port number. This is the door on your machine πͺ-b<local_address>β pick the local address to use while this client is making outbound connections to the server. Very "which of my addresses am I leaving from" energy.
π Passwords, keys & ciphers
-k<password>,--password<password>β set the password. The server and the client gotta use the same password, bestie, or nothing clicks β like matching friendship bracelets π«Ά--key<key_in_base64>β set the key directly. Heads up: the key should be encoded with URL-safe Base64. Don't come in here with regular Base64 and expect it to slay π-m<encrypt_method>β set the cipher.
Shadowsocks-libev accepts 19 different ciphers, here they are in all their glory:
aes-128-gcm, aes-192-gcm, aes-256-gcm, rc4-md5, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-ctr, aes-192-ctr, aes-256-ctr, bf-cfb, camellia-128-cfb, camellia-192-cfb, camellia-256-cfb, chacha20-ietf-poly1305, xchacha20-ietf-poly1305, salsa20, chacha20 and chacha20-ietf.
The default cipher is chacha20-ietf-poly1305 β the main character cipher π
β οΈ If it's built with PolarSSL or custom OpenSSL libraries, some of these ciphers may not work. So likeβ¦ vibe check your build first π
π§ Running as someone else, or in the background
-a<user_name>β run as a specific user.-f<pid_file>β start shadowsocks as a daemon with a specific pid file. Ghost mode π»-t<timeout>β set the socket timeout in seconds. The default value is60.-vβ enable verbose mode. She's chatty and we love that for her π¬
π Config files & limits
-c<config_file>β use a configuration file.
Refer to shadowsocks-libev(8) CONFIG FILE section for more details πΈ
-n<number>β specify max number of open files.
Only available on Linux, bestie π§
π Network interface stuff (the multi-interface tea)
-i<interface>β send traffic through a specific network interface.
Real talk, here's the situation: say you've got three interfaces on your device β lo (127.0.0.1), eth0 (192.168.0.1) and eth1 (192.168.0.2). And meanwhile you configure ss-local to listen on 0.0.0.0:8388 and bind to eth1. That results in the traffic going out through eth1 β but not lo nor eth0. Slay π
This option is genuinely useful for controlling traffic in a multi-interface environment. Very "I choose who I talk to" energy.
π‘ UDP, IPv6 & relay modes
-uβ enable UDP relay.-Uβ enable UDP relay and disable TCP relay. Both at once, she contains multitudes π-6β resolve hostname to IPv6 address first. Six girlie 4 life π¦
β‘ Speed & port tricks
--fast-openβ enable TCP fast open.
Only available with Linux kernel > 3.7.0 π₯
--reuse-portβ enable port reuse.
Only available with Linux kernel > 3.9.0 β¨
--no-delayβ enableTCP_NODELAY. Less waiting, more doing π¨--mptcpβ enable Multipath TCP.
Only available with MPTCP enabled Linux kernel π§
π‘οΈ Access control & MTU
--acl<acl_config>β enable ACL (Access Control List) and specify the config file. Your bouncer at the door πͺ--mtu<MTU>β specify the MTU of your network interface.
π¦ Buffer sizes (yes, all four)
--tcp-incoming-sndbuf<size>β set the TCP send buffer size for incoming connections.--tcp-incoming-rcvbuf<size>β set the TCP receive buffer size for incoming connections.--tcp-outgoing-sndbuf<size>β set the TCP send buffer size for outgoing connections.--tcp-outgoing-rcvbuf<size>β set the TCP receive buffer size for outgoing connections.
Incoming/outgoing Γ send/receive β the full set, we stan a complete collection π
π Plugins (experimental, we're being brave)
--plugin<plugin_name>β enable SIP003 plugin. (Experimental) π§ͺ--plugin-opts<plugin_options>β set SIP003 plugin options. (Experimental) π§ͺ
π Help
-h,--helpβ print help message. When in doubt, ask for help, it's literally self care π
β EXAMPLE β
ss-local(1) can be started from the command line and run in the foreground. Here's the example, exactly as it lives:
# Start ss-local with given parameters
ss-local -s example.com -p 12345 -l 1080 -k foobar -m aes-256-cfb
Copy it, paste it, tweak your own details, go live πΈ
π SEE ALSO π
Go give these a read too, iykyk:
ss-server(1)ss-tunnel(1)ss-redir(1)ss-manager(1)shadowsocks-libev(8)iptables(8)/etc/shadowsocks-libev/config.json
π and that's the whole page, bestie π
Cute little sign-off before you close the tab: this was Shadowsocks-libev 3.3.6, dated 10/11/2026, manual section SS-LOCAL(1) β go forth and proxy responsibly, mwah ππ«Ά
π¦ where this page comes from
- opensuse-leap 16.0: shadowsocks-libev 3.3.6-bp160.3.1 Β· GPL-3.0-or-later
- opensuse-leap 16.0: shadowsocks-libev 3.3.6-bp160.3.1 Β· GPL-3.0-or-later
- opensuse-leap 16.0: shadowsocks-libev 3.3.6-bp160.3.1 Β· GPL-3.0-or-later
- opensuse-leap 16.0: shadowsocks-libev 3.3.6-bp160.3.1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms