Skip to content

Command-line Options

This page is ordered so you can:

  1. Pick a mode
  2. Fill in the key flags
  3. Add other flags only when you need them

Most setups only need the key flags. Other flags cover authentication, performance, and direct transport.

Modes at a Glance

ModeCommandsPurpose
Forward proxylinksocks server + linksocks clientServer exits to the internet; hybrid local proxy (SOCKS5 + HTTP) listens on the client
Reverse proxylinksocks server -r + linksocks client -rClient exits to the internet; hybrid local proxy (SOCKS5 + HTTP) listens on the server
Relay proxylinksocks server -r -c ... + linksocks provider + linksocks connectorServer is only a relay; provider exits, connector exposes the hybrid local proxy
Relay proxy (self-managed connectors)linksocks server -r -a + linksocks provider -c ... + linksocks connectorRelay proxy variant where each provider registers its own connector token
Direct transportClient --direct-*, server --direct-enablePrefer peer-to-peer after relay handshake succeeds

Roles

RoleResponsibility
serverWebSocket relay. May also listen for the hybrid local proxy in reverse proxy mode
clientGeneral client. Default: forward hybrid local proxy endpoint. With -r: acts as provider
providerShortcut for client -r. Shares this machine's outbound network
connectorUses a connector token, opens the hybrid local proxy, traffic exits via the matching provider

Server Command

server runs the WebSocket relay. Add -r for reverse / relay-style modes (local proxy on the server, or left to connectors).

The local listen port is hybrid: it accepts SOCKS5 and HTTP proxy clients on the same port. HTTP supports CONNECT (recommended for HTTPS) and absolute-form HTTP requests. UDP remains SOCKS5-only. When --socks-username / --socks-password are set, both SOCKS5 username/password and HTTP Proxy-Authorization: Basic use the same credentials.

Key Flags

ParameterShortDefaultDescription
--token-tauto-generated when omitted on server-managed modesMain authentication token. Also LINKSOCKS_TOKEN.
--ws-host-H0.0.0.0WebSocket listen host. Also LINKSOCKS_WEBSOCKET_HOST.
--ws-port-P8765WebSocket listen port. Also LINKSOCKS_WEBSOCKET_PORT.
--reverse-rfalseSwitch from forward relay to reverse / relay-style modes
--socks-host-s127.0.0.1Hybrid local proxy listen host in reverse mode
--socks-port-p9870Hybrid local proxy listen port in reverse mode

Other Flags

ParameterShortDefaultDescription
--connector-token-cauto-generated when omittedConnector token for relay proxy. Also LINKSOCKS_CONNECTOR_TOKEN.
--connector-autonomy-afalseLet providers register their own connector tokens. Also LINKSOCKS_CONNECTOR_AUTONOMY.
--socks-username-nLocal proxy username (SOCKS5 and HTTP Basic) in reverse mode. Also LINKSOCKS_SOCKS_USERNAME.
--socks-password-wLocal proxy password (SOCKS5 and HTTP Basic) in reverse mode. Also LINKSOCKS_SOCKS_PASSWORD.
--socks-nowait-ifalseStart the hybrid local proxy immediately without waiting for a provider
--api-key-kEnable the HTTP API. Also LINKSOCKS_API_KEY.
--buffer-size-b1048576Transfer buffer size in bytes
--upstream-proxy-xOutbound proxy for server-side connections. Also LINKSOCKS_UPSTREAM_PROXY.
--fast-open-ffalseAllow data transfer before the remote side is fully confirmed. Also LINKSOCKS_FASTOPEN.
--connector-wait-provider5sHow long a connector waits for a provider to reconnect
--direct-enablefalseEnable direct signaling for compatible clients
--direct-rendezvous-udpfalseEnable server-side UDP rendezvous. Needs a real UDP listener; not supported on Cloudflare Workers.
--direct-rendezvous-hostsame as ws-hostRendezvous UDP host
--direct-rendezvous-portsame as ws-portRendezvous UDP port
--debug-dDebug logging; use -dd for trace

Client, Provider, and Connector

These three share the same client implementation. The difference is the default role and the flags you usually set:

CommandEquivalent toTypical use
linksocks clientForward proxy clientLocal hybrid proxy, exit via server
linksocks client -rProvider in reverse / relayShare this machine's outbound network
linksocks providerShortcut for client -rSame as above
linksocks connectorClient alias for connector tokensLocal hybrid proxy, exit via a matched provider

Key Flags

ParameterShortDefaultDescription
--token-tAuthentication token. Also LINKSOCKS_TOKEN.
--url-uws://localhost:8765WebSocket server URL. Also LINKSOCKS_URL.
--reverse-rfalseTurn client into a provider (reverse / relay exit side)
--socks-host-s127.0.0.1Local hybrid proxy host for forward or connector mode. Also LINKSOCKS_SOCKS_HOST.
--socks-port-p9870Local hybrid proxy port for forward or connector mode. Also LINKSOCKS_SOCKS_PORT.

Other Flags

ParameterShortDefaultDescription
--connector-token-cConnector token registered by a provider in relay / self-managed mode. Also LINKSOCKS_CONNECTOR_TOKEN.
--socks-username-nLocal proxy username (SOCKS5 and HTTP Basic). Also LINKSOCKS_SOCKS_USERNAME.
--socks-password-wLocal proxy password (SOCKS5 and HTTP Basic). Also LINKSOCKS_SOCKS_PASSWORD.
--socks-no-wait-ifalseStart the hybrid local proxy immediately
--no-reconnect-RfalseExit when the server disconnects (default: reconnect)
--threads-T1Number of transfer threads
--upstream-proxy-xOutbound proxy used to reach the WebSocket server. Also LINKSOCKS_UPSTREAM_PROXY.
--no-env-proxy-EfalseIgnore proxy environment variables
--fast-open-ffalseAllow data transfer before the remote side is fully confirmed. Also LINKSOCKS_FASTOPEN.
--direct-modeautorelay-only, auto, or direct-only
--direct-discoverystunDirect candidate discovery method
--direct-host-candidatesautoHost candidate advertisement policy
--stun-serverbuilt-in poolAdditional STUN server, repeatable
--direct-only-actionexitWhat to do when direct-only cannot connect
--direct-upnpfalseEnable UPnP mapping for direct transport
--direct-upnp-lease30mUPnP lease duration
--direct-upnp-keepfalseKeep UPnP mapping on exit
--direct-upnp-external-port0Explicit UPnP external port (0 = auto)
--debug-dDebug logging; use -dd for trace

Mode Recipes

1. Forward Proxy

bash
linksocks server -t my_token
linksocks client -t my_token -u ws://localhost:8765 -p 9870

2. Reverse Proxy

bash
linksocks server -t my_token -r -p 9870
linksocks client -t my_token -u ws://localhost:8765 -r
# or: linksocks provider -t my_token -u ws://localhost:8765

3. Relay Proxy

The server manages both provider and connector tokens. The hybrid local proxy listens on the connector.

bash
linksocks server -t provider_token -c connector_token -r -p 9870
linksocks provider -t provider_token -u ws://localhost:8765
linksocks connector -t connector_token -u ws://localhost:8765 -p 1180

4. Relay Proxy (Self-Managed Connectors)

The server only authenticates providers. Each provider registers its own connector token with -c. A connector reaches only its matching provider; there is no cross-provider load balancing.

bash
linksocks server -t provider_token -r -a
linksocks provider -t provider_token -c my_connector_token -u ws://localhost:8765
linksocks connector -t my_connector_token -u ws://localhost:8765 -p 1180

5. Direct Transport

bash
linksocks server -t my_token --direct-enable
linksocks client -t my_token -u ws://localhost:8765 --direct-mode auto

Environment Variables

These flags can also be provided as environment variables (handy for Docker / Compose):

Environment VariableFlag
LINKSOCKS_MODEroot command mode alias (server, client, provider, connector)
LINKSOCKS_URL--url
LINKSOCKS_WEBSOCKET_HOST--ws-host
LINKSOCKS_WEBSOCKET_PORT--ws-port
LINKSOCKS_SOCKS_HOST--socks-host
LINKSOCKS_SOCKS_PORT--socks-port
LINKSOCKS_TOKEN--token
LINKSOCKS_CONNECTOR_TOKEN--connector-token
LINKSOCKS_SOCKS_USERNAME--socks-username
LINKSOCKS_SOCKS_PASSWORD--socks-password
LINKSOCKS_API_KEY--api-key
LINKSOCKS_CONNECTOR_AUTONOMY--connector-autonomy
LINKSOCKS_UPSTREAM_PROXY--upstream-proxy
LINKSOCKS_FASTOPEN--fast-open

Upstream Proxy Format

--upstream-proxy accepts both SOCKS5 and HTTP proxy URLs:

text
socks5://[username[:password]@]host[:port]
http://[username[:password]@]host[:port]

Examples:

  • socks5://proxy.example.com:1080
  • socks5://user:pass@proxy.example.com:1080
  • http://user:pass@proxy.example.com:8080

Released under the MIT License.