Skip to main content

A simple way to serve pages and files over the Reticulum network.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rns_page_node-1.3.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rns_page_node-1.3.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file rns_page_node-1.3.0.tar.gz.

File metadata

  • Download URL: rns_page_node-1.3.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rns_page_node-1.3.0.tar.gz
Algorithm Hash digest
SHA256 c5c18f90f1e7e54d975152f7d45b7e90f820f0d66ec53201bd7475ceb526aeb0
MD5 1f90788a8dea261c450ab04609c15e8b
BLAKE2b-256 83de564d501fe8ff37bb538608106000fa6510eb1637e7e3774c2edb4eef8c7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_page_node-1.3.0.tar.gz:

Publisher: publish.yml on Sudo-Ivan/rns-page-node

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rns_page_node-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: rns_page_node-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rns_page_node-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 777d4de4c2ce579b2fc1eeaef62b7b40206031c1017a4c70061d91aeb8f88335
MD5 3976ea9ff62de62e8b013a52b4bc60f9
BLAKE2b-256 df1369bbded17ef75d0a3bc9c11254a0018bebb35126406f840a7375fdbf56b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_page_node-1.3.0-py3-none-any.whl:

Publisher: publish.yml on Sudo-Ivan/rns-page-node

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page