Metadata-Version: 2.3
Name: rns-status-page
Version: 1.1.2
Summary: A Flask web server to display Reticulum network status.
License: MIT
Author: Ivan
Author-email: rns@quad4.io
Requires-Python: >=3.13,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: bleach (>=6.2.0,<7.0.0)
Requires-Dist: flask (==3.1.0)
Requires-Dist: flask-cors (>=5.0.1,<6.0.0)
Requires-Dist: flask-limiter (==3.12)
Requires-Dist: flask-talisman (==1.1.0)
Requires-Dist: gunicorn (==23.0.0)
Requires-Dist: python-dotenv (==1.1.0)
Requires-Dist: rns (==0.9.5)
Project-URL: Homepage, https://github.com/Sudo-Ivan/rns-status-page
Project-URL: Repository, https://github.com/Sudo-Ivan/rns-status-page
Description-Content-Type: text/markdown

# Reticulum Status Page

[![Socket Badge](https://socket.dev/api/badge/pypi/package/rns-status-page/1.1.0?artifact_id=tar-gz)](https://socket.dev/pypi/package/rns-status-page/overview/)


[Reticulum](https://reticulum.network/) status page using `rnstatus` and `rsnd` from the utilities. Built using Flask, Gunicorn, and HTMX.

Request to Add or Remove an Interface: Open a [Issue](https://github.com/Sudo-Ivan/rns-status-page/issues/new) or message me on Reticulum `c0cdcb64499e4f0d544ff87c9d5e2485` this only applies to my instance at [rstatus.quad4.io](https://rstatus.quad4.io)

## Install

```bash
pip install rns-status-page
```

## Usage

```bash
rns-status-page
```

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

## Docker/Podman

> [!NOTE]  
> Please wait 5 minutes for rnstatus to work.

```bash
docker run -d --name rns-status-page -p 5000:5000 ghcr.io/sudo-ivan/rns-status-page:latest
```

```bash
docker run -d --name rns-status-page -p 5000:5000 -v ./uptime.json:/app/uptime.json ghcr.io/sudo-ivan/rns-status-page:latest
```

replace `docker` with `podman` if you are using podman.

### Debugging

Verify rnstatus works:

```bash
docker exec rns-status-page rnstatus # or docker exec <your-container-name> rnstatus
```

## To-Do

- [ ] More tracking and stats.
- [ ] Configuration for the status page and API.
- [ ] Filter by reliability, uptime.
- [ ] Micron Status Page.
- [ ] Optional I2P, yggdrasil support.
- [ ] non-root Dockerfile
- [ ] Convert announces recieving/sent into a more readable format.
- [ ] Add health endpoint.

## API

Read the [API.md](API.md) file for more information on api usage.

## How it works

1. starts `rnsd` in a seperate thread.
2. uses `rnstatus` to get the status of the Reticulum network using provided config file. 
3. Flask and Gunicorn are used to serve the status page and API.

## Contributing

All contributions are welcome!

## License

MIT 
