Ivan d4099fb9a2 Refactor _scan_pages method and enhance file reading logic in PageNode class
- Updated docstring for _scan_pages to clarify exclusion of .allowed files.
- Improved file reading logic to handle script detection and content retrieval more efficiently.
- Refined error handling during the announce process to catch specific exceptions.
2025-12-02 10:17:16 -06:00
2025-11-08 14:02:06 -06:00
2025-07-14 22:01:12 +00:00
2025-11-12 18:47:08 -06:00
2025-11-23 11:20:52 -06:00
2025-05-28 06:43:59 -05:00
2025-11-23 11:02:29 -06:00
2025-11-23 11:20:23 -06:00

RNS Page Node

Русская

Build and Publish Docker Image Docker Build Test DeepSource

A simple way to serve pages and files over the Reticulum network. Drop-in replacement for NomadNet nodes that primarily serve pages and files.

Features

  • Serves pages and files over RNS
  • Dynamic page support with environment variables
  • Form data and request parameter parsing

Usage

# Pip
# May require --break-system-packages

pip install rns-page-node

# Pipx

pipx install rns-page-node

# uv

uv venv
source .venv/bin/activate
uv pip install rns-page-node

# Pipx via Git

pipx install git+https://github.com/Sudo-Ivan/rns-page-node.git

Usage

# will use current directory for pages and files
rns-page-node

or with command-line options:

rns-page-node --node-name "Page Node" --pages-dir ./pages --files-dir ./files --identity-dir ./node-config --announce-interval 360

or with a config file:

rns-page-node /path/to/config.conf

Configuration File

You can use a configuration file to persist settings. See config.example for an example.

Config file format is simple key=value pairs:

# Comment lines start with #
node-name=My Page Node
pages-dir=./pages
files-dir=./files
identity-dir=./node-config
announce-interval=360

Priority order: Command-line arguments > Config file > Defaults

Docker/Podman

docker run -it --rm -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config -v ./config:/root/.reticulum ghcr.io/sudo-ivan/rns-page-node:latest

Docker/Podman Rootless

mkdir -p ./pages ./files ./node-config ./config
chown -R 1000:1000 ./pages ./files ./node-config ./config
podman run -it --rm -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config -v ./config:/app/config ghcr.io/sudo-ivan/rns-page-node:latest-rootless

Mounting volumes are optional, you can also copy pages and files to the container podman cp or docker cp.

Build

make build

Build wheels:

make wheel

Build Wheels in Docker

make docker-wheels

Pages

Supports dynamic executable pages with full request data parsing. Pages can receive:

  • Form fields via field_* environment variables
  • Link variables via var_* environment variables
  • Remote identity via remote_identity environment variable
  • Link ID via link_id environment variable

This enables forums, chats, and other interactive applications compatible with NomadNet clients.

Options

Positional arguments:
  node_config             Path to rns-page-node config file

Optional arguments:
  -c, --config            Path to the Reticulum config file
  -n, --node-name         Name of the node
  -p, --pages-dir         Directory to serve pages from
  -f, --files-dir         Directory to serve files from
  -i, --identity-dir      Directory to persist the node's identity
  -a, --announce-interval Interval to announce the node's presence (in minutes, default: 360 = 6 hours)
  --page-refresh-interval Interval to refresh pages (in seconds, 0 = disabled)
  --file-refresh-interval Interval to refresh files (in seconds, 0 = disabled)
  -l, --log-level         Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)

License

This project incorporates portions of the NomadNet codebase, which is licensed under the GNU General Public License v3.0 (GPL-3.0). As a derivative work, this project is also distributed under the terms of the GPL-3.0. See the LICENSE file for full license.

Description
A simple way to serve pages and files over the Reticulum network.
Readme GPL-3.0 329 KiB
Languages
Python 84.8%
Makefile 8.5%
Shell 4.6%
Dockerfile 2.1%