Single C file. Config file. One-command systemd install. Auth, IP allow-lists, and an event-driven core — without a stack of dependencies.
Needs a C11 compiler. That is it.
Bind to localhost unless you mean to share the proxy.
curl --socks5-hostname alice:s3cret@127.0.0.1:1080 https://example.com
--bind 127.0.0.1, --user, or --allow-ip
before exposing the port.
Settings live in a config file. The systemd unit reads that file — passwords stay out of ps and unit files.
One C11 file, no runtime dependencies. Typical RSS stays around 5 MB.
SOCKS5 (RFC 1928), username/password (RFC 1929), optional GSSAPI (RFC 1961).
epoll on Linux, kqueue on macOS/BSD. One thread, non-blocking I/O, CONNECT / BIND / UDP.
Users, IP allow-lists, connect-only mode, and idle timeouts. Open-proxy installs are refused.
--config and --auth-file keep secrets off the command line. CLI flags still override the file.
--install systemd writes the binary, /etc/socks5.conf, and a hardened unit, then starts it.