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 is 60.
  • -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 β€” enable TCP_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:


πŸ’– 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 😘🫢