A simple way to serve pages and files over the Reticulum network.
Project description
RNS Page Node
Русский | 中文 | 日本語 | Italiano | Deutsch
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
Installation
From PyPI
pip install rns-page-node
# or
pipx install rns-page-node
From Gitea Packages
# Pip
pip install --index-url https://git.quad4.io/api/packages/RNS-Things/pypi/simple/ --extra-index-url https://pypi.org/simple rns-page-node
# Pipx
pipx install --pip-args "--index-url https://git.quad4.io/api/packages/RNS-Things/pypi/simple/ --extra-index-url https://pypi.org/simple" rns-page-node
Permanent Configuration for Gitea (Optional):
To avoid typing the index URLs every time when using the Gitea registry, add them to your pip.conf:
# ~/.config/pip/pip.conf
[global]
index-url = https://git.quad4.io/api/packages/RNS-Things/pypi/simple/
extra-index-url = https://pypi.org/simple
Then you can simply use:
pip install rns-page-node
# or
pipx install rns-page-node
Manual Download (Latest Release):
You can download the wheel file directly from the latest release and install it:
# Wget
wget https://git.quad4.io/RNS-Things/rns-page-node/releases/download/v1.4.0/rns_page_node-1.4.0-py3-none-any.whl
pip install rns_page_node-1.4.0-py3-none-any.whl
# Curl
curl -O -L https://git.quad4.io/RNS-Things/rns-page-node/releases/download/v1.4.0/rns_page_node-1.4.0-py3-none-any.whl
pip install rns_page_node-1.4.0-py3-none-any.whl
# Pip
pip install git+https://git.quad4.io/RNS-Things/rns-page-node.git --break-system-packages
# Pipx via Git
pipx install git+https://git.quad4.io/RNS-Things/rns-page-node.git
# UV
uv venv
source .venv/bin/activate
uv pip install git+https://git.quad4.io/RNS-Things/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 ./reticulum-config:/home/app/.reticulum git.quad4.io/rns-things/rns-page-node:latest
Docker/Podman Rootless
mkdir -p ./pages ./files ./node-config ./reticulum-config
chown -R 1000:1000 ./pages ./files ./node-config ./reticulum-config
podman run -it --rm -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config -v ./reticulum-config:/home/app/.reticulum git.quad4.io/rns-things/rns-page-node:latest
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_identityenvironment variable - Link ID via
link_idenvironment 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rns_page_node-1.4.0.tar.gz.
File metadata
- Download URL: rns_page_node-1.4.0.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cffc96b732f32a16db04f65563dba633ffbc6f771a291815a685a1c3e0d3b16a
|
|
| MD5 |
0cd4e3d79cb3c92a56cef25ee0a0b033
|
|
| BLAKE2b-256 |
80961402aacff4842fdecc763b0804ef0f40e49e6505b072bf97266aac67d5ff
|
File details
Details for the file rns_page_node-1.4.0-py3-none-any.whl.
File metadata
- Download URL: rns_page_node-1.4.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
caca30fca26f1cfd365f645e330d6cea5419b5a27cbf76a6d4a619dbef1b9fc7
|
|
| MD5 |
fae254646185affbd34b661153d2342c
|
|
| BLAKE2b-256 |
5c7a051017d91190541d5f2d51f0968e94d7612b531e404e222008d0ba039f90
|