!!! success "The end goal"
        To enable the following services:

        * yourlongb32i2paddress.b32.i2p:18085 - i2p P2P service (for other i2p nodes)
        * yourlongb32i2paddress.b32.i2p:18089 - i2p RPC service (for wallets connecting over i2p)

        **I2P service for P2P network** is useful for other full node users as it allows them to broadcast transactions over I2P (using `--tx-proxy` option).

        **I2P service for wallet interface** is useful for wallet users connecting over I2P because it mitigates Clearnet and Tor exit node MiTM risks (which are very real). By connecting wallet to an I2P service, no MiTM attack is realistic because I2P connections are end-to-end encrypted.

    ??? question "Why different P2P ports for clearnet and i2p?"
        A: The data served by the i2p p2p port differs from clearnet P2P. A different port is required

    1. Elevate to root:
        ``` Bash
        sudo su -
        ```
    2. Install i2pd:
        ``` Bash
        apt install apt-transport-https
        wget -q -O - https://repo.i2pd.xyz/.help/add_repo | bash -s -
        apt update
        apt install i2pd
        ```
    3. Create a server tunnel for the Monero P2P and RPC ports:
        ``` ini
        cat << EOF > /etc/i2pd/tunnels.conf.d/monero-mainnet.conf
        [monero-node]
        type = server
        host = 127.0.0.1
        # Anonymous inbound port
        port = 18085
        inport = 0
        keys = monero-mainnet.dat

        [monero-rpc]
        type = server
        host = 127.0.0.1
        # Restricted RPC port
        port = 18089
        keys = monero-mainnet.dat
        EOF
        ```
    4. Restart i2pd:
        ``` Bash
        systemctl restart i2pd
        ```
    5. Find the new b32 address of the node:

        === "Terminal"
            ``` Bash
            curl -s http://127.0.0.1:7070/?page=i2p_tunnels | grep -Eo "[a-zA-Z0-9./?=_%:-]*" | grep "18089"
            ```
        === "Web console"
            Go to the web console at 127.0.0.1:7070 -> [I2P tunnels page](http://127.0.0.1:7070/?page=i2p_tunnels).    
            Look for Server tunnels and you will see an address like **_`yourlongb32i2paddress.b32.i2p`_** next to **`monero-node`**.

    6. Copy the result into your Monero [**config file** :link:{ title="Monerod Config" }]{{ config }}, enabling these options:

        ``` ini
        anonymous-inbound=yourlongb32i2paddress.b32.i2p,127.0.0.1:18085
        tx-proxy=i2p,127.0.0.1:4447,disable_noise
        ```

        Replace `yourlongb32i2paddress.b32.i2p` with your b32 address.
    7. The node is now available on i2p. You can check that the service is working by using curl:
        ``` Bash
        curl -x socks5h://127.0.0.1:4447 http://yourlongb32i2paddress.b32.i2p:18089/get_info
        ```
    !!! note "(Optional) Register short and memorable .i2p domain on [reg.i2p](http://reg.i2p)"