Part 2 - Running a Private Monero Remote Node over Tor (with Client Authorization)

Introduction

Many Monero users either connect their wallets to public remote nodes or run a full node on every machine they own. Both approaches are unnecessary and come with real privacy and operational downsides.

Public nodes can:

Running multiple full nodes:

This post shows how to run one authoritative Monero node on a workstation and access it securely from a laptop over Tor, without exposing RPC to the LAN or clearnet, and without trusting third parties.

Access to the node is cryptographically restricted using Tor v3 client authorization.

Prerequisite:
This post assumes you already have a working Tor client as described in
“A Secure Tor Client Setup on Artix Linux (runit)”.
If not, read that first.


Threat Model and Scope

This setup is designed to protect against:

This setup does not protect against:

The goal is private, authenticated access to your own Monero node — not absolute anonymity.


Architecture Overview

Workstation (Node Host)

Laptop (Wallet Client)

Laptop (wallet)
   |
   |  Tor SOCKS + client auth
   v
Tor Network
   |
   v
Workstation (monerod)
RPC: 127.0.0.1:18081

Workstation: Monero Node Setup

Install Monero:

sudo pacman -S monero

Create a dedicated data directory:

sudo mkdir -p /var/lib/monero
sudo chown monero:monero /var/lib/monero
sudo chmod 700 /var/lib/monero

Example monerod.conf:

data-dir=/var/lib/monero
rpc-bind-ip=127.0.0.1
rpc-bind-port=18081
restricted-rpc=1
confirm-external-bind=1

Run monerod as a service (Artix/runit users can adapt this to their setup).

Verify locally:

ss -ltnp | grep 18081

You should only see 127.0.0.1:18081.


Workstation: Tor Hidden Service for RPC

Edit /etc/tor/torrc on the workstation and add:

HiddenServiceDir /var/lib/tor/monero-rpc
HiddenServiceVersion 3
HiddenServicePort 18081 127.0.0.1:18081

Restart Tor:

sudo sv restart tor

Retrieve the onion address:

sudo cat /var/lib/tor/monero-rpc/hostname

At this stage, the service is reachable over Tor, but not yet access-controlled.


Laptop: Wallet as a Thin Client

Monero GUI (Primary)

In Settings → Node:

Restart the GUI after applying changes.

Monero CLI (Optional)

monero-wallet-cli \
  --daemon-address <your-onion-address>:18081 \
  --proxy 127.0.0.1:9062 \
  --trusted-daemon

The laptop will not download the blockchain. Any “syncing” shown is wallet scanning, not node synchronization.


Why Onion Addresses Are Not Access Control

An onion address identifies a service — it does not authenticate clients.

If someone obtains the onion address:

RPC usernames and passwords provide weak protection and operate after the connection is established.

Proper access control must happen at the Tor layer, before traffic reaches monerod.


Tor v3 Client Authorization

Tor v3 client authorization restricts access using public-key cryptography.

This is strong, clean access control.


Implementing Client Authorization

Workstation: Authorize the Laptop

Generate a client keypair and create an authorization file in:

/var/lib/tor/monero-rpc/authorized_clients/

The file format is:

descriptor:x25519:<client-public-key>

Restart Tor after adding the file.

Laptop: Install the Client Key

Ensure the client auth directory exists:

sudo mkdir -p /var/lib/tor/onion_auth
sudo chown tor:tor /var/lib/tor/onion_auth
sudo chmod 700 /var/lib/tor/onion_auth

Install the client key in:

/var/lib/tor/onion_auth/<name>.auth_private

Restart Tor on the laptop:

sudo sv restart tor

Verification and Enforcement

Test access from the laptop:

curl --socks5-hostname 127.0.0.1:9062 \
  http://<your-onion-address>:18081/get_info

You should receive JSON output.

Remove the client key temporarily and restart Tor. The connection should now fail.

Restore the key and restart Tor again. Access should return.


Operational Notes


What This Setup Does Not Do

This setup does not:

It provides private, authenticated access to your own node — nothing more and nothing less.


Summary

This approach is simple, robust, and scales cleanly if you later add more authorized clients.