// set up a node

Setting up your first node

Running a Reticulum node is the step beyond an ordinary client. You set up a background process that manages interfaces, keeps track of paths and routes traffic. Below is the minimum you need.

Installation

There are two main flavours: the original Python stack (RNS) and the Rust stack (rsReticulum, used by Ratspeak). Both speak the same protocol and work together on the same network.

Stack Installation Config location Daemon
Python (RNS) pip install rns ~/.reticulum/config rnsd
Rust (rsReticulum) cargo build --release ~/.rsReticulum/config rnsd-rs

The examples on this page use the Python stack (rnsd, rnstatus). The Rust equivalents are called rnsd-rs, rnstatus-rs, etc.

First start

On the first start, rnsd automatically generates an identity and a config file. After that you adjust the config to your situation and start it again.

# First start: generates config

rnsd

# Stop (Ctrl+C), edit config

nano ~/.reticulum/config

# Start again

rnsd &

rnstatus

The config file

The config file roughly consists of two parts: a [reticulum] section with general settings and an [interfaces] section with one or more interface definitions.

# ~/.reticulum/config

[reticulum]

enable_transport = no

share_instance = yes

shared_instance_port = 37428

[interfaces]

# Add your interfaces here

[[ReticulumNet]]

type = TCPClientInterface

enabled = yes

target_host = voorbeeld.nl

target_port = 4242

Setting What it does Default
enable_transport Forwards traffic for other nodes (transport node) no
share_instance Lets local apps (Ratspeak, MeshChat) connect to this daemon yes
shared_instance_port Port for local app connections 37428

Only turn on enable_transport = yes if you have an always-on machine that should forward traffic for others. For normal use (sending and receiving messages) it is not needed.

Transport node vs propagation node

If you run a node for others, you pick from two roles. They are separate processes that can also run on the same machine.

Role Process What it does
Transport node rnsd (or rnsd-rs) Forwards packets between interfaces. Enables multi-hop reachability. The backbone of the mesh.
Propagation node lxmd -p (or lxmd-rs) Stores LXMF messages for offline recipients. Delivers them when they come back. Similar to a mail server.

# Both running on the same machine

rnsd &

lxmd -p &

A transport node does not store messages and a propagation node does not route packets. If you want both, run both processes.

Management and diagnostics

Command Function
rnstatusShow interfaces, paths and status of the running daemon
rnpath <hash>Inspect, request or refresh a path to a destination
rnprobe <hash>Test whether a destination is reachable (similar to ping)
rncp <file> <hash>Copy a file over a Reticulum resource (encrypted)
rnsh <hash>Open an encrypted remote shell on another node
rnidCreate, inspect, import or export identities

Running always-on

A Raspberry Pi 4 or Pi Zero 2 W as a headless node is a very common setup. Run rnsd as a systemd service so it restarts automatically after a reboot. Optionally attach a LoRa radio over USB for off-grid coverage.

systemd service example

# /etc/systemd/system/rnsd.service

[Unit]

Description=Reticulum Network Daemon

After=network.target

[Service]

Type=simple

User=kel

ExecStart=/usr/local/bin/rnsd

Restart=always

[Install]

WantedBy=multi-user.target

sudo systemctl enable rnsd

sudo systemctl start rnsd

Use /dev/serial/by-id/... paths in your interface config if you have a USB radio. Device numbers are not stable after a reboot. Want to set up a network for a group? See build a network. For a larger network with multiple operators, see community mesh.