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
  • Automatic rnsd management with configurable options

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
  • 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.0.tar.gz (178.1 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.0-py3-none-any.whl (176.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rns_status_page-1.3.0.tar.gz
  • Upload date:
  • Size: 178.1 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.0.tar.gz
Algorithm Hash digest
SHA256 8976c6827efc117ecd45edfac077cf65ccaf7559ce9ef54dcad278ac984ec3c9
MD5 282bdedcabc26a3e9f0e9b002c5e955a
BLAKE2b-256 6dfb0adaecec34de4224175ba79ab742f1f938fbdec7c04c6f730edef1fffb96

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: rns_status_page-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 176.8 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d121649dc5a80203203cf2dac16dbec6cf10b167561b8c3f808438f0d0ac6f6
MD5 854ffa6b5040a96b7202f97a4774b79f
BLAKE2b-256 ccd05c0c819c4b8a6dab8f4778f380d839b4c62056a298fa63c1ebe02d7fd26f

See more details on using hashes here.

Provenance

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