Run and register a node outside Iran
By the end of this page you have an IranTalk node on a server outside Iran, registered on the dashboard, and you know what to do every 90 days to stay in the signed list.
Tier 2: open internet · Needs internet.
This guide is for someone outside Iran who rents a small server so the network has one more door: a Reticulum transport node others route through and, if you want, an Offline Inbox and a NomadNet node. The more there are, the less the network falls when one server is blocked.
Only a server outside Iran. A node inside Iran is never registered and never listed; the dashboard asks, and you must answer truthfully. Some providers' address ranges are filtered inside Iran and are useless for transit; ask in the help room before renting.
1. The server
- A fresh Ubuntu 24.04, one public IPv4, root access. A domain name is better than an IP; it is what goes into the list.
- At the provider's firewall: SSH and port 4242 (TCP) open.
2. Install
Everything that runs on a node is in the node/ folder of the IranTalk repository and is installed by one script; nothing on the server is edited by hand.
-
Copy the repository to the server and check out the released version (a tag).
-
As root:
PRIVATE_NET_CIDR=127.0.0.1/32 bash node/scripts/install.shThe script installs i2pd, the
reticulumuser, a Python environment with locked versions, the configs, the services (rnsd,lxmd,nomadnet,rrcd,bridge) and the firewall.PRIVATE_NET_CIDRis the range the internal API may be reached from; for a community node that does not want it, the local address is enough. -
Decide what the node offers. For transit only, switch the rest off so no second chat room or news page announces itself under the IranTalk name:
systemctl disable --now rrcd nomadnet(and
lxmdif you do not want an Offline Inbox.) -
Links into the network: in
node/config/reticulum.conf, fill the twoTCPClientInterfaceentries with well-known public transport nodes (never a host inside Iran) and run the script again. A node without links is an island. -
Check:
runuser -u reticulum -- /opt/irantalk/venv/bin/rnstatusmust show the TCP interface up and the links connected;journalctl -u rnsd -n 50with no errors.
3. Register on the dashboard
No account is needed: you prove the node is yours by signing with the node's own identity.
-
Open dashboard.irantalk.com/register. Choose the kind (TCP entry, I2P entry, propagation node, NomadNet node or chat hub), the address to list, and the region: "outside Iran". You get a challenge string.
-
On the server, sign the challenge with the identity behind that address:
runuser -u reticulum -- /opt/irantalk/venv/bin/rnid -i IDENTITY -S "CHALLENGE" -bFor a TCP or I2P entry, the transport identity under
/home/reticulum/.reticulum/storage/; for a propagation node, the lxmd identity; for a chat hub, the hub identity. Never paste the identity file itself anywhere. -
Paste the whole output, with its start and end lines, into the dashboard. The signature is checked and the node waits as "pending"; a maintainer approves it and it goes into the next signed list.
-
Every 90 days, repeat this with the same identity, or the node drops out of the list.
4. With an AI agent
The same steps, with the hard rules about keeping secrets, are written for coding agents in the repository's node/AGENTS.md and ready in the prompt library as "Build a transit node abroad". The agent installs and signs; registering and approving are always a person's job.
The identity files under /home/reticulum/ are the node's private keys. Keep an encrypted backup; losing them changes the node's hash and means registering again.