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

Socket Badge

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

Request to Add or Remove an Interface: Open a Issue or message me on Reticulum c0cdcb64499e4f0d544ff87c9d5e2485 this only applies to my instance at rstatus.quad4.io

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

pip 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.3.1.tar.gz (178.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_status_page-1.3.1-py3-none-any.whl (176.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rns_status_page-1.3.1.tar.gz
  • Upload date:
  • Size: 178.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for rns_status_page-1.3.1.tar.gz
Algorithm Hash digest
SHA256 118306a7b67e306266c8a0c48ea8fb9c630e66b8bbdbcb34c8789b47909526b4
MD5 e939bc3046f97e88c05b8b8a7f3f09c6
BLAKE2b-256 94fab1e64efa614c0d1fafa85877f39e28a873d4eaca0725f5a165ee1bc1f013

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_status_page-1.3.1.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.3.1-py3-none-any.whl.

File metadata

  • Download URL: rns_status_page-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 176.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for rns_status_page-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe308008768dc6eefdeafa5db878a547d22d07200837e75dc9fb476266d42311
MD5 60e1841351916ca5efa1b217ed3256c2
BLAKE2b-256 f692bad25b021a451e01b67bc6287deb33f091fc10cb7f371c9796574aaaf738

See more details on using hashes here.

Provenance

The following attestation bundles were made for rns_status_page-1.3.1-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