Setting up a Gopherhole over Reticulum

This guide assumes you're using Debian 12 and have root access to your computer.

Last updated: 2026-04-01

Installing Reticulum

Reticulum is "the cryptography-based networking stack for building local and wide-area networks with readily available hardware. It can operate even with very high latency and extremely low bandwidth. Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption and connectivity, initiator anonymity, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable delivery acknowledgements and more."

In other words, Reticulum does the heavy lifting of figuring out how to reach nodes and then connecting you to them. Reticulum can connect over anything from traditional TCP/IP networks to darknets like Yggdrasil and I2P to exotic networking interfaces like LoRa and packet radio.

Ensure that pipx, the Python package manager, is installed:

sudo apt install pipx

Then install Reticulum:

pipx install rns; pipx ensurepath

Run Reticulum to generate a default configuration:

rnsd

(Yes, the d on the end is meant to be there. It stands for "daemon".)

Hit Control and C together after a few seconds to stop Reticulum. Then, to add some nodes, run:

curl https://letsdecentralize.org/rollcall/reticulum.txt >> ~/.reticulum/config

If you got errors about "possible carrier loss" on one of your network interfaces, either manually specify which network interfaces "Default Interface" should run on:

[[Default Interface]]
	type = AutoInterface
	enabled = Yes
	devices = wlp3s0,tun0
# in this example, Reticulum can use my wireless card (wlp3s0) and Yggdrasil (tun0)
# but no Ethernet ports (enp0s25 or eth0) because they are not listed
			

or just comment out the "Default Interface" section if you only have one network interface (excluding lo) on your machine. To get a list of network interfaces, run ip addr in a separate terminal. However, if you comment out or otherwise remove "Default Interface", you may not be able to automatically connect to peers on your local network. For more information, including connecting to peers over I2P, please consult the Reticulum documentation.

Save the file, then run rnsd again to restart Reticulum with the new peers.

 

Setting up Reticulum as a systemd service (optional)

Stop rnsd if it is currently running.

As root, create the file /lib/systemd/system/reticulum.service and insert the following:

[Unit]
Description=Reticulum
After=network.target

[Service]
User=YourUsernameHere
Group=YourUsernameHere
ExecStart=/home/YourUsernameHere/.local/bin/rnsd -v
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full

[Install]
WantedBy=multi-user.target
			

Then reload systemd and enable the Reticulum service:

sudo systemctl daemon-reload
sudo systemctl start reticulum
sudo systemctl enable reticulum
			

 

Setting up the Gopher server

git clone --depth 1 https://codeberg.org/drkhsh/gopher-rns

If you get an error about missing Python modules, run the following:

pip install --break-system-packages -r gopher-rns/requirements.txt

Note: despite the name of the --break-system-packages flag, that command will not actually break your system because you (hopefully!) ran it as your normal user and not as root.

Now run the Gopher server:

python3 gopher-rns/gopherd.py /path/to/your/website/files

Your Reticulum identity (address) for your server will be saved to ~/..gopher_server_identity. BACK THIS FILE UP!

 

Connecting to the Gopher client

Traditional Gopher clients can't connect to Reticulum gopherholes because Reticulum doesn't use traditional DNS-based hostnames. Thankfully, in the same repo as gopherd.py is a simple client, gopher.py.

Connect to your own server like this:

python3 gopher.py YourDestinationHashHere


made with <3 by your friends at Dead End Shrine Online
CC BY-NC-SA 4.0 © Lethe Beltane