I have 2 hidden services hosted on seperate debian servers, they both work perfectly. I'm looking at using my first hidden service as a reverse proxy to access the second one.

So basically if I access my first onion it'll display the second one.

How do I go about this? I've tried socat which I can run perfectly on V2 onions but for some reason not V3 which is what I need.

I'm using debian

Any help is greatly appreciated.

  • What's the goal of this setup? Is it supposed to go Client --- 6 hops --- First onion service --- 6 hops --- Second onion service? And what does reverse proxy mean in this context?
    – Steve
    Commented Jan 27, 2021 at 21:07
  • my main onion is the second hidden service, I want other people to be able to access my website through my first hidden service as well as the second. So the first website is a proxy to the second if that makes sense Commented Jan 27, 2021 at 22:13
  • So you do want 12 relays between the client and server? Or can the first service know the IP address of the second service?
    – Steve
    Commented Jan 27, 2021 at 22:24
  • Doesn't matter really its just to ease the load. I basically want the second hidden service to be accessed by the first hidden service. Commented Jan 27, 2021 at 22:28
  • So anyone accessing the first hidden service will reach the second hidden service as though they'd accesed it by the second hidden services onion. So client accesses Hidden Service 1 and it then proxies hidden service 2 as though they'd accessed it by hidden service 2's onion address Commented Jan 27, 2021 at 22:30

2 Answers 2


As far as I understand, you have two servers. One runs the web server, and you want both servers to run onion services that can access the web server.

An issue with running the onion service on one server and the web server on another is that the onion service will remove all of Tor's encryption, so you don't want to just send the plaintext traffic across the network to the web server.

One option for sending the traffic between two servers might be an SSH tunnel. For example if server A is running the web server and you want to securely send traffic from an onion service on server B, you could run ssh -N -L 8080: serverA on server B to set up a tunnel, and on server B also set up an onion service on port 8080 (example: HiddenServicePort 80 Any onion service traffic will then be tunneled through SSH to the web server on port 8080 on server A. All you need for this to work is to have SSH access from server B to server A.

If the SSH tunnel solution works fine, then you probably want something more permanent. In that case a Wireguard VPN would probably work better than an SSH tunnel.

  • Great thanks, so "ServerA" is that an onion address or an ip address I need to insert here? Commented Jan 28, 2021 at 0:18
  • That's an IP address.
    – Steve
    Commented Jan 28, 2021 at 0:45

Well, it's just as simple as it sounds! Tor - with it's config is, basically, - is a reverse proxy by itself! So you need to use NGinx for some non-straightforward stuff, or - just a TCP port forwarder like bounce for a simple one. There's nothing extra! Feel free to drop me a line if you have any extra questions!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .