This project has been archived by its maintainers, and is no longer receiving any updates.
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
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
Metadata
Release files for rns-status-page 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rns_status_page-1.5.0.tar.gz | 179.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rns_status_page-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 357.6 kB
Release files / rns_status_page-1.5.0.tar.gz
| Download URL | rns_status_page-1.5.0.tar.gz |
|---|---|
| Size | 179.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3df809f2e37b96390d94c3ec4aa3e33106c83fc28ec0c6b64712cdaba9d61da1
|
|
BLAKE2b-256 checksum How to use checksums |
dab00d40f8904044ceff09abe52ece549d3acfa7196fd6228438bd3e89be1910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2025.
Transparency logRelease files / rns_status_page-1.5.0-py3-none-any.whl
| Download URL | rns_status_page-1.5.0-py3-none-any.whl |
|---|---|
| Size | 178.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8998b540bfd1e4fdbc490054331ebdc07a9bcf9a20841907d83519ca00034ad1
|
|
BLAKE2b-256 checksum How to use checksums |
0498e4f229e40cd1c9895265e906ad750c7d2d1a82223db4b8349a9b9ee224db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2025.
Transparency log