status/readme.md
2024-02-12 01:09:07 +00:00

49 lines
1.6 KiB
Markdown

# status
A status page written in Go. Join our [Matrix room](https://matrix.to/#/#status-page:exozy.me) for development discussion.
## TODO
Tech stack
- [x] HTTP Server - `net/http`
- [x] listen on unix socket PORT (if set)
- [x] Templating - {{mustache}}
- [x] spawn with dinit/systemd
- [x] Config file - load TOML config (1. `/opt/status-config/config.toml` 2. test config at `proto/config.toml`)
- .socket_path (UNIX socket, string)
- .service (array of services)
- .matrix (Matrix-related settings, see below)
- [x] Auto deploy script (run as dinit service)
Check online methods
- [x] TCP Connect
- [x] HTTP 2xx
- [x] ICMP
Services
- [x] HTML page
- [x] Page Styling
- [x] show service type (tcp/http)
- [x] Increase constrast. Current RED/GREEN is contrast fail. Maybe don't show the border when service is up?
- [x] Bundle directory contents into executable in release mode. (not necessary)
- [ ] show historic data
- Status history, database
note for integration: the dumb database code is in `core/database.go`. When integrating, you don't need to touch that code much.
- store events
- [x] self boot up/shutdown
- [x] check service status every 5 minutes since boot
- [x] persist data on disk
- [x] clean up old checkpoints
- [x] Matrix notification
- [x] serves plain text to curl
## Environment Variables
When config file is down, those variables will be made non-optional and load from config instead of envvar.
- `MAUTRIX_USER_ID`: Matrix user ID, optional, e.g. `@bot:exozy.me`
- `MAUTRIX_ACCESS_TOKEN`: Matrix access token
- `MAUTRIX_ROOM_ID`: Matrix room ID, optional, e.g. `#notifications:exozy.me`