A proxy for allowing a public IP address to host a service actually provided by a hidden backend.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Onion Proxy

This is a small go module acting as a relay between for TCP connections that should be forwarded to a listening Onion service on the Tor network.

It optionally speaks the PROXY protocol to forward client addresses to the backing service.


An instance of the proxy is parameterized by the following options:

  • -l localhost:9999 Where the proxy listens.
  • -t=false Disable use of tor for backend socket resolution.
  • -r sixteencharacter.onion:80 Where the proxy forwards.
  • -s /var/run/tor/control Where the tor control channel is.
  • -c passwordauth The tor auth password, if using password auth.
  • -p include a PROXY header on forwarded streams.


Install onionproxy via the go command line:

go install github.com/willscott/onionproxy

Then add it as a daemon in your startup script, run it locally, or otherwise invoke it.

onionproxy -l -r sixteencharacter.onion:80 &
onionproxy -l -r sixteencharacter.onion:25 -p &