Status Page in Go
https://status.exozy.me
core | ||
proto | ||
public | ||
scanner | ||
templates | ||
.gitignore | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
readme.md | ||
update-dinit-config | ||
util.go |
status
A status page written in Go. Join our Matrix room for development discussion.
TODO
Tech stack
- HTTP Server -
net/http
- listen on unix socket PORT (if set)
- Templating - {{mustache}}
- spawn with dinit/systemd
- Config file - load TOML config (1.
/opt/status-config/config.toml
2. test config atproto/config.toml
)- .socket_path (UNIX socket, string)
- .service (array of services)
- .matrix (Matrix-related settings, see below)
- Auto deploy script (run as dinit service)
Check online methods
- TCP Connect
- HTTP 2xx
- ICMP
Services
- HTML page
- Page Styling
- show service type (tcp/http)
- Increase constrast. Current RED/GREEN is contrast fail. Maybe don't show the border when service is up?
- Bundle directory contents into executable in release mode. (not necessary)
- show historical 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
- self boot up/shutdown
- check service status every 5 minutes since boot
- persist data on disk
- clean up old checkpoints
- store events
- Matrix notification
- serves plain text to curl
Tests
- HTML page works
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 tokenMAUTRIX_ROOM_ID
: Matrix room ID, optional, e.g.#notifications:exozy.me