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
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
- Starts
rnsdin a separate thread, unless--no-rnsdflag is used which will use existing shared connection or rnsd instance - Uses Reticulum directly to get the status of interfaces/servers. (originally used
rnstatuscommand output) - Flask and Gunicorn are used to serve the status page and API
Contributing
All contributions are welcome!
License
Project details
Release history Release notifications | RSS feed
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_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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3df809f2e37b96390d94c3ec4aa3e33106c83fc28ec0c6b64712cdaba9d61da1
|
|
| MD5 |
43108f1266a8af6d1a018dd5d1df8d9d
|
|
| BLAKE2b-256 |
dab00d40f8904044ceff09abe52ece549d3acfa7196fd6228438bd3e89be1910
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rns_status_page-1.5.0.tar.gz -
Subject digest:
3df809f2e37b96390d94c3ec4aa3e33106c83fc28ec0c6b64712cdaba9d61da1 - Sigstore transparency entry: 575255345
- Sigstore integration time:
-
Permalink:
Sudo-Ivan/rns-status-page@bd98b3cd247874527b6330e5727f39cafd6598b2 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/Sudo-Ivan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bd98b3cd247874527b6330e5727f39cafd6598b2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rns_status_page-1.5.0-py3-none-any.whl.
File metadata
- Download URL: rns_status_page-1.5.0-py3-none-any.whl
- Upload date:
- Size: 178.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8998b540bfd1e4fdbc490054331ebdc07a9bcf9a20841907d83519ca00034ad1
|
|
| MD5 |
f534289047836200815cf96abd89f2ca
|
|
| BLAKE2b-256 |
0498e4f229e40cd1c9895265e906ad750c7d2d1a82223db4b8349a9b9ee224db
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rns_status_page-1.5.0-py3-none-any.whl -
Subject digest:
8998b540bfd1e4fdbc490054331ebdc07a9bcf9a20841907d83519ca00034ad1 - Sigstore transparency entry: 575255351
- Sigstore integration time:
-
Permalink:
Sudo-Ivan/rns-status-page@bd98b3cd247874527b6330e5727f39cafd6598b2 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/Sudo-Ivan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bd98b3cd247874527b6330e5727f39cafd6598b2 -
Trigger Event:
push
-
Statement type: