Skip to main content

A Flask web server to display Reticulum network status.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

Reticulum Status Page

Build and Publish Docker Image Socket Badge DeepSource

Reticulum status page using direct Reticulum library integration and rnsd from the utilities. Built using Flask, Gunicorn, and HTMX.

Features

  • Check status of Reticulum interfaces.
  • Download specific or all interfaces (txt)
  • API for usage in other projects/applications

Security

  • API rate limiting with Flask-Limiter
  • CORS for locking down cross origin requests
  • Talisman for security headers
  • Docker uses Chainguard images for rootless and distroless containers

Install

pipx install rns-status-page

Usage

rns-status-page

It uses uptime.json to track uptime of interfaces and persist across rns-status-page restarts.

No rnsd

If you already have rnsd or nomadnet running you can use the --no-rnsd flag to not start rnsd on a separate thread for the status page.

rns-status-page --no-rnsd

Docker/Podman

[!NOTE]
Please wait at least 5 minutes for RNS to initialize and stats to be available.

docker run -d --name rns-status-page -p 5000:5000 ghcr.io/sudo-ivan/rns-status-page:latest
touch ./uptime.json
chown 65532:65532 ./uptime.json
docker run -d --name rns-status-page -p 5000:5000 -v ./uptime.json:/home/nonroot/uptime.json ghcr.io/sudo-ivan/rns-status-page:latest

If you have existing config, chown 65532:65532 uptime.json

Replace docker with podman if you are using podman.

Docker Compose

# Create uptime.json with correct permissions
touch ./uptime.json
chown 65532:65532 ./uptime.json

# Start the service
docker compose up -d

The compose configuration includes:

  • Resource limits (CPU/Memory)
  • Security capabilities (NET_ADMIN, NET_RAW)
  • Health checks
  • Automatic restart policy

Debugging

Verify rnstatus works:

docker exec rns-status-page rnstatus

Should display interface stats.

To-Do

  • More tracking over time and stats
  • Integrate more with the Reticulum network (Data sharing for more reliable stats, usage by LXMF bots, API over Reticulum)
  • Stale server detection (node is up but no announces being received/sent)
  • Filter by reliability and uptime
  • Micron Status Page
  • Optional I2P, yggdrasil support (in docker)
  • Convert announces received/sent into a more readable format
  • Add API security tests
  • Memory and performance optimization
  • History endpoint for changes over time
  • Sqlite database instead of json for uptime and history
  • Dedicated settings file to configure various things

API

Read the API.md file for more information on api usage.

How it works

  1. Starts rnsd in a separate thread, unless --no-rnsd flag is used which will use existing shared connection or rnsd instance
  2. Uses Reticulum directly to get the status of interfaces/servers. (originally used rnstatus command output)
  3. Flask and Gunicorn are used to serve the status page and API

Contributing

All contributions are welcome!

License

MIT

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_status_page-1.5.0.tar.gz (179.5 kB view details)

Uploaded Source

Built Distribution

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

rns_status_page-1.5.0-py3-none-any.whl (178.2 kB view details)

Uploaded Python 3

File details

Details for the file rns_status_page-1.5.0.tar.gz.

File metadata

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

File hashes

Hashes for rns_status_page-1.5.0.tar.gz
Algorithm Hash digest
SHA256 3df809f2e37b96390d94c3ec4aa3e33106c83fc28ec0c6b64712cdaba9d61da1
MD5 43108f1266a8af6d1a018dd5d1df8d9d
BLAKE2b-256 dab00d40f8904044ceff09abe52ece549d3acfa7196fd6228438bd3e89be1910

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_status_page-1.5.0.tar.gz:

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

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_status_page-1.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rns_status_page-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8998b540bfd1e4fdbc490054331ebdc07a9bcf9a20841907d83519ca00034ad1
MD5 f534289047836200815cf96abd89f2ca
BLAKE2b-256 0498e4f229e40cd1c9895265e906ad750c7d2d1a82223db4b8349a9b9ee224db

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_status_page-1.5.0-py3-none-any.whl:

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

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