--onlynet=onion. See
Tor Integration for the
protocol-level design.
Quick start
Install Tor and enable its control port in/etc/tor/torrc:
sudo systemctl restart tor), add the user running
parallaxd to the Tor group (debian-tor on Debian/Ubuntu, tor on
Arch — on Arch also add DataDirectoryGroupReadable 1 to torrc, since
the auth cookie lives inside /var/lib/tor there), then simply start
the node:
--onion wasn’t
set — asks the Tor daemon for its SOCKS listener and configures it as
the onion proxy automatically. Watch for:
network reachability line logged at startup summarizes what the
resolved configuration allows.
Flags
The onion service identity
The service key persists in<datadir>/onion_v3_private_key, so the
node keeps the same .onion address across restarts. Treat the file
like the node key: back it up to keep the address, protect it because
whoever holds it can impersonate the service. Deleting it yields a
fresh address on next startup.
The onion service always advertises the network default port (32110)
regardless of the local --port, so nodes on non-standard ports are
not decloaked by their port number.
Verifying
On the console:admin.peers shows each peer’s transport and logical address. A
proxied peer’s remoteAddress is always the SOCKS5 proxy — the
socket-level truth — while network.address names the actual target:
address: it reached us
through a Tor rendezvous and is anonymous by design.
To test reachability from another machine with Tor, dial the address
directly:
setban/listbanned accept onion addresses the same way, and
removenode accepts them too — outbound peers are matched by the
address they were dialed at, so a peer reached through a proxy is
addressed by its real address rather than the proxy’s.
Fully dark: --onlynet=onion
Clearnet through Tor: expectations
--proxy=127.0.0.1:9050 routes clearnet connections through Tor exit
relays. This works, but most exit policies do not carry non-standard
ports, so only a fraction of circuits complete a connection to
clearnet peers on 32110 — measured at roughly 1 in 6 on the live
network (Bitcoin has the same property on 8333). Onion-to-onion
connections use rendezvous circuits, never exits, and connect
reliably in seconds. Treat exit-based clearnet dialing as a
bootstrap fallback; onion peering is the real transport.
Troubleshooting
- No
torcontrol:lines at all — the control port isn’t answering, or the auth cookie is unreadable. The controller retries with backoff and logs failures only at debug level; rundebug.verbosity(4)on the console to see the exact error (connection refused→ torrc lacksControlPort;permission denied→ group membership or, on Arch, the missingDataDirectoryGroupReadable 1). - Onion dial says
no route to network— the node has no onion proxy: no--proxy/--onion, and no control port for the auto-discovery. Onion entries are then neither stored nor dialed. - First dial to a fresh onion address fails with
onion service descriptor can not be found— the descriptor hasn’t propagated yet; retry after 30-60 seconds.

