How do I run a Monero node over I2P?
You can run a Monero node over I2P by installing an I2P router and telling monerod, Monero’s node software, to use its local proxy. The important catch is that Monero’s built-in I2P support is mainly for relaying transactions—not for moving all block downloads and node traffic off the public internet.
Know what I2P protects
I2P is a privacy network that routes connections through encrypted tunnels. An I2P address ends in .b32.i2p rather than pointing directly to your public IP address.
With Monero’s transaction proxy enabled, transactions your node originates can travel through I2P. Your node can still use ordinary internet connections to download and share the blockchain—the public record of Monero transactions.
So this setup does not make your node invisible or mean that every connection uses I2P. If your goal is to prevent any direct internet connection, the basic setup below does not meet that requirement.
Install and configure your I2P router
Install a current Monero release and an I2P router. One option is i2pd, a lightweight program that runs I2P in the background.
You need its SOCKS proxy, a local service that forwards connections into I2P. In i2pd’s configuration, enable it explicitly:
[socksproxy]
enabled = true
address = 127.0.0.1
port = 4447
127.0.0.1 means “this computer.” Keeping the proxy on that address prevents other computers from using it.
Restart i2pd after changing the configuration. Give it time to connect to I2P and build tunnels. Check its logs or local status page before starting Monero; a running process does not necessarily mean its tunnels are ready.
Send Monero transactions through I2P
Start your node with:
monerod --tx-proxy i2p,127.0.0.1:4447
You can also put the setting in your existing Monero configuration file:
tx-proxy=i2p,127.0.0.1:4447
Do not include the leading -- in the configuration file.
Your node also needs reachable Monero peers inside I2P. Use current I2P peer information from Monero’s documentation or a trusted node operator. If you supply one manually, the option has this shape:
--add-peer PEER_ADDRESS.b32.i2p
That is a placeholder, not a working peer. Do not substitute a random I2P website address.
Check Monero’s logs and peer connections to confirm that I2P connections actually form. Successful ordinary blockchain syncing alone does not prove that I2P is working.
Optionally accept incoming I2P peers
For incoming connections, create an i2pd server tunnel that forwards to a separate local Monero port. A typical tunnel entry is:
[monero]
type = server
host = 127.0.0.1
port = 18085
keys = monero-i2p.dat
Restart i2pd and find this tunnel’s generated .b32.i2p address in its local status information. Then add this Monero option, replacing the placeholder:
--anonymous-inbound YOUR_ADDRESS.b32.i2p,127.0.0.1:18085
Keep the tunnel’s key file private and backed up; it preserves your I2P address. Forward the tunnel to this peer port, not your wallet or node-control interface.
The bottom line
Use an I2P router, enable its local SOCKS proxy, and connect Monero with --tx-proxy. Add an incoming tunnel if you want to accept I2P peers. Verify the connections, and remember that this protects transaction routing without automatically hiding blockchain syncing or separate P2Pool traffic.
