Nostr I2P Relay Tutorial
So I saw Ryan's post on how you can run your own Nostr relay over Tor using Citrine and figured I would try the same on I2P.
It took quite a bit of trial error, but eventually I got it to work.
You will need:
- Android (unless Amethyst becomes available on iOS)
- Amethyst installed
- Citrine installed
- I2P installed
***Citrine Configuration***
First, you will need to set up your local relay on Citrine. The default port is 4869, but I changed it to 8080. You can change it to any port you want. You also need to put your npub as relay contact.
Once you have done that, you will also need to whitelist your npub in accept events signed by and events that refer to so you'll be allowed to post using the local relay.
It's also a good idea to enable authentication if you want WoT for your relay to lock things down.
***I2P Configuration***
Now that Citrine is configured. You must configure I2P so it can route Nostr traffic over the I2P network.
It doesn't matter what kind of I2P service you use for this step, but for my case, I preferred using I2Pd on Invizible Pro because it was the simplest way.
In your tunnels.conf, write the following configuration for your I2P Nostr relay:
/``````[Nostr Server]
type = server
host = localhost
port = 8080 # Same port that you used on Citrine
keys = nostr-server.dat
inbound.length = 8
inbound.quantity = 16
outbound.length = 8
outbound.quantity = 16
The configuration will be different if you use a different I2P iteration, such as I2P .
After doing this, I restarted I2Pd and then went to 127.0.0.1:7070 to get my address for my relay.
Once you see your relay, you have completed the steps on I2P.
***Adding relays to Nostr***
If you haven't already, add your Citrine relay to Amethyst by pressing your PFP and going to Relays. Once there, scroll down to Local Relays and add your Citrine relay, which will be ws://127.0.0.1:your-port
Once you've done, add your Nostr I2P relay address to your Public Outbox, Public Inbox, DM Inbox, and Private Home Relays. Your address will be in this format:
ws://your-address.b32.i2p:your-port
Once you have done that, hit Save and you are finished.
Now it may take a few minutes and you may start getting these errors, but they'll go away soon because I2P relays tend to be slower than Tor relays from my experience.
I have my own I2P Nostr relay if you want to try it out. I look forward to seeing how it functions over the next few days. Let just me know if you're interested and I'll add you to the whitelist. My relay is below.
ws://6skmgu3kgo527fpkofbi5srubrj4tqmxbozvn5ubrwh2jyo7lmva.b32.i2p:8080
Stay sovereign my friends!
#Nostr #Tor #I2P #I2Pd #Amethyst #Citrine #Tutorial #DIY #Zap #Citrine
Once you have done that, you will also need to whitelist your npub in accept events signed by and events that refer to so you'll be allowed to post using the local relay.
It's also a good idea to enable authentication if you want WoT for your relay to lock things down.
***I2P Configuration***
Now that Citrine is configured. You must configure I2P so it can route Nostr traffic over the I2P network.
It doesn't matter what kind of I2P service you use for this step, but for my case, I preferred using I2Pd on Invizible Pro because it was the simplest way.
In your tunnels.conf, write the following configuration for your I2P Nostr relay:
/``````[Nostr Server]
type = server
host = localhost
port = 8080 # Same port that you used on Citrine
keys = nostr-server.dat
inbound.length = 8
inbound.quantity = 16
outbound.length = 8
outbound.quantity = 16
The configuration will be different if you use a different I2P iteration, such as I2P .
After doing this, I restarted I2Pd and then went to 127.0.0.1:7070 to get my address for my relay.
Once you see your relay, you have completed the steps on I2P.
***Adding relays to Nostr***
If you haven't already, add your Citrine relay to Amethyst by pressing your PFP and going to Relays. Once there, scroll down to Local Relays and add your Citrine relay, which will be ws://127.0.0.1:your-port
Once you've done, add your Nostr I2P relay address to your Public Outbox, Public Inbox, DM Inbox, and Private Home Relays. Your address will be in this format:
ws://your-address.b32.i2p:your-port

#Amethyst Tricks
How to run a private relay over Tor on Android.
With the latest Amethyst supporting outbox & Tor this is more feasible than ever. Host one of your outbox relays on your phone, totally under your control.
🔹Citrine setup
Go to the settings tab.
Fill things in as appropriate. Leave the network related settings default.
Under "Accept events that refer to" add your npub. This will keep extraneous events from clogging your relay, but still allow DM to function. Note: If you add your npub to "Accept events signed by" your DM partner will not be able to send messages to your relay. You would need to add their npub as well. Maybe a security feature?
🔹Orbot setup
In orbot got to more > hosted onion services.
Add a new service.
Citrine uses port 4869, so set that for both ports. Name it anything. "Nostr" will do.
You will need to restart orbot after you save.
Then you can go back and copy your onion service address. You'll need it for the next step.
🔹Amethyst Setup
Add ws://ONIONADDRESS:4869 as Outbox and DM relays in Amethyst.
Also add ws://127.0.0.1:4869 as a local relay.
You should be able to check the relay info in Amethyst by clicking on the icon. It should now reflect what you have set in Citrine!
😎👌
Software required
https://github.com/vitorpamplona/amethyst
https://github.com/greenart7c3/Citrine
https://github.com/guardianproject/orbot
View quoted note →
View quoted note →
Fill things in as appropriate. Leave the network related settings default.
Under "Accept events that refer to" add your npub. This will keep extraneous events from clogging your relay, but still allow DM to function. Note: If you add your npub to "Accept events signed by" your DM partner will not be able to send messages to your relay. You would need to add their npub as well. Maybe a security feature?
🔹Orbot setup
In orbot got to more > hosted onion services.
Add a new service.
Citrine uses port 4869, so set that for both ports. Name it anything. "Nostr" will do.
You will need to restart orbot after you save.
Then you can go back and copy your onion service address. You'll need it for the next step.
🔹Amethyst Setup
Add ws://ONIONADDRESS:4869 as Outbox and DM relays in Amethyst.
Also add ws://127.0.0.1:4869 as a local relay.
You should be able to check the relay info in Amethyst by clicking on the icon. It should now reflect what you have set in Citrine!
😎👌
Software required
https://github.com/vitorpamplona/amethyst
https://github.com/greenart7c3/Citrine
https://github.com/guardianproject/orbot
View quoted note →