Setting up I2P

Installing/Running

Download the Java I2P router from geti2p.net. Install via the Easy Install bundle or however you want depending on your operating system.

Once running, you should be able to go to your I2P console here: http://127.0.0.1:7657. The left side of the web page should look like the image below.
Give I2P about 10 minutes to get up and running before attempting to use it for the first time. It is okay if the I2P status says "Firewalled".

Configuring

If your browser was not configured from the Easy Install bundle or whatever installation method you chose, I recommend installing the I2P in Private Browsing Firefox add-on.
If manually configuring, set your proxy settings to use an HTTP proxy at 127.0.0.1:4444. Here is documentation on how to do this in Firefox: https://support.mozilla.org/en-US/kb/connection-settings-firefox

Test!

Test out browsing by going to the Mysu I2P homepage!

Browse a list of sites at http://notbob.i2p. If you get a "destination lease set not found" error immediately when loading a website, just try refreshing.

Connecting to monerod over I2P

Configuring monerod

In Mysu I have been able to connect to moneroexplorer.i2p's b32 RPC node and partially sync a wallet, but I believe they make use of RPC bans, because I cannot sync for very long before I lose connection. This hasn't happened with my personal node that I disable RPC bans on.
Here are the arguments I run monerod with that allow me to connect to my node over I2P:

./monerod --rpc-bind-ip 0.0.0.0 --rpc-bind-port 18081 --confirm-external-bind --restricted-rpc --disable-rpc-ban
		
I do not port forward anything on my router. This forbids other nodes from connecting to my node over the clearnet, though we will still be downloading blocks from other nodes over the clearnet.
If you wish to run your node entirely over Tor/I2P, then please read the Monero documentation. That isn't within the scope of this tutorial.

Configuring I2P

The next step is configuring your I2P hidden service to point to your node.
If you are using the I2P console, create a new Standard hidden service here: http://127.0.0.1:7657/i2ptunnelmgr

You can keep pretty much everything how it is, only changing the name and description to whatever you want, then setting the port to 18081 (or whatever you set --rpc-bind-port to). You can also set the tunnel to start when the router (I2P) starts.
After configuring it, scroll to the bottom of the page and click "Save".

Upon creating the hidden service, you will see the tunnel in your hidden services list. Make sure it is running by looking at the right and looking under the "Status" column.
You will be copying the "Destination" value as seen in the image below. This is your base32 address, and you will be using it to connect to your node in Mysu.


Mine is k6bm6s7zgg2wvwz3mlogc7nccg4ucxpoqveeyjht6a3xflokz7nq.b32.i2p. Yours will look similar but will be entirely different.
Once this tunnel is up and running your node is now accessible over I2P at the base32 address we just copied! We just need to configure the Android/Mysu side now.

Configuring Android

Download the InviZible Pro app from F-Droid: https://f-droid.org/en/packages/pan.alexander.tordnscrypt.stable/. Install and run.
Agree to any user agreements and whatnot (if you do), make sure to check the "Access to I2P sites with Purple I2P" option near the top, and press "Start" in the middle:

Configuring Mysu (v0.4.0+)

Once I2P is running, go to the Mysu settings screen and enable proxy connections, then set the port to 4447. This is the default SOCKS proxy port for I2P in InviZible Pro:

Click on the node under the "Network" category, then click "Add Node", and paste the base32 address you copied earlier from the "Configuring I2P" steps, along with the node port:


After this, you should be able to connect to your I2P node! Syncing will be considerably slower than syncing over the clearnet because of the hops in between you and the node. If you've found this guide helpful, please consider donating some XMR:

87MRtZPrWUCVUgcFHdsVb5MoZUcLtqfD3FvQVGwftFb8eSdMnE39JhAJcbuSW8X2vRaRsB9RQfuCpFciybJFHaz3QYPhCLw