Guide · Open source
How to use shadowsocks-rust: install sslocal and ssserver
Updated · written with AI from the project's own documentation and checked against our catalogue data
shadowsocks-rust is a Rust port of shadowsocks, a tunnel proxy that routes network traffic through a server. It ships command-line programs: sslocal runs on your own machine as a local proxy, and ssserver runs on a remote server. This guide shows you how to install it, what the two programs do, and which optional features you may want to build in.
Quick start
- 1Check the Rust toolchain. Confirm that you have a Rust toolchain with cargo installed, since that is the prerequisite for the cargo route.
- 2Install the package. Run cargo install shadowsocks-rust, or use brew install shadowsocks-rust on macOS or Linux.
- 3Find the binaries. After a cargo install, look for sslocal and ssserver in $CARGO_HOME/bin.
- 4Set up the server side. Run ssserver on the remote Linux machine that will handle the traffic.
- 5Run the local proxy. Start sslocal on your own machine and point it at your server URL, binding to a local address such as 127.0.0.1:1080.
- 6Add optional features if needed. If you need HTTP, SOCKS4, TUN or DNS support, build with the matching feature flag from the README.
What shadowsocks-rust is and who it suits
shadowsocks-rust is a native Rust build of the shadowsocks tunnel proxy. The project's README describes it as a set of binaries that run common shadowsocks services. There is no graphical app in the project itself.
- Good fit: developers who want a Rust build, and people comfortable with command-line tools on their own machine or a Linux server.
- Not a fit: anyone who wants a point-and-click client. The README links third-party GUIs separately, such as a GTK front end for sslocal on Linux and a Windows GUI client.
Install shadowsocks-rust with cargo or Homebrew
The simplest route is the Rust package manager. You need a Rust toolchain with cargo installed. After installation, sslocal and ssserver are placed in $CARGO_HOME/bin.
On macOS and Linux you can use Homebrew instead.
- Prerequisite for cargo: a Rust toolchain.
- Other install routes listed in the README include snap, downloadable static-linked release builds, and Docker.
# Install from crates.io
cargo install shadowsocks-rustInstall with Homebrew on macOS and Linux
If you use Homebrew, one command installs the package on macOS or Linux.
brew install shadowsocks-rustRun sslocal as a local proxy and ssserver on a server
sslocal runs on your machine and acts as a local proxy. ssserver runs on a remote server and receives the traffic. The README's snap example shows sslocal listening on 127.0.0.1:1080 with a ss:// server URL, which is a useful pattern to follow when you pass options to sslocal.
The README documents a default config path only for the snap package, so check the help output of each binary for other configuration options.
- sslocal: the local side, run on the machine that needs the proxy.
- ssserver: the remote side, run on a server, typically Linux.
# Example from the README's snap notes: sslocal listening locally
sslocal -b "127.0.0.1:1080" --server-url "ss://...."Choose optional features at build time
Many protocols are not built in by default. You select them with build features, so you only compile the parts you need. The README lists options such as local-http, local-socks4, local-redir, local-tun, local-dns and local-fake-dns, along with cipher and allocator features.
Stream ciphers are deprecated. The README marks the stream-cipher feature as UNSAFE and gates it behind a flag, so avoid enabling it unless you understand the risk.
- local-socks4: SOCKS4/4a protocol for sslocal.
- local-http: HTTP protocol for sslocal, with local-http-native-tls or local-http-rustls for HTTPS.
- local-tun: TUN interface support for sslocal.
- local-dns: a DNS server that proxies queries by ACL rules.
- local-online-config: SIP008 online configuration delivery.
- aead-cipher-2022: AEAD-2022 ciphers (SIP022).
What people use it for
- Running a shadowsocks server on a Linux machine with ssserver.
- Running sslocal as a local SOCKS or HTTP proxy, if those features are enabled.
- Building a minimal binary that includes only the proxy protocols you choose.
- Running sslocal as a DNS server with ACL rules, using the local-dns feature.
- Using a third-party GUI for sslocal on Linux or Windows, since those are separate projects.
Frequently asked questions
Is shadowsocks-rust free and open source?
Yes. The project is licensed under the MIT licence and written in Rust. The README does not mention any paid tier.
How do I install shadowsocks-rust?
Install it with cargo install shadowsocks-rust, which requires a Rust toolchain. On macOS and Linux you can run brew install shadowsocks-rust instead.
Where are sslocal and ssserver after installing?
After cargo install, the binaries are in $CARGO_HOME/bin. The README does not list other install locations for the cargo route.
Is there a GUI for shadowsocks-rust?
The project provides command-line programs. The README links third-party GUIs separately, including a GTK front end for sslocal on Linux and a Windows GUI client.
Is shadowsocks-rust safe to use with stream ciphers?
The README warns that stream ciphers are UNSAFE. They are deprecated and only available through the stream-cipher feature flag, so avoid them unless you understand the risk.
How does shadowsocks-rust compare to shadowsocks-libev or Xray-core?
The README does not compare them, so this guide cannot make a performance or feature claim. shadowsocks-rust is a Rust port of shadowsocks. Other projects in the same space include shadowsocks-libev, v2ray-core, Xray-core and Trojan-go.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
shadowsocks-rust suits developers and Linux admins who are comfortable with command-line tools and want a native Rust build with only the protocols they select. If you want a point-and-click app, or you need guarantees about legal or circumvention outcomes, pick a GUI-based client or a different project.
Install options & downloads