Show HN: I built a self-hosted status page and monitoring tool for my projects
103 points
10 days ago
| 19 comments
| github.com
| HN
Hey HN! I'm excited to share Statusnook - a status page and monitoring tool.

I built Statusnook for my own projects, but I soon began incorporating bits of feedback from friends & colleagues.

My goal was to create a tool with a solid essential feature set, and to make it easy to self-host.

I welcome any feedback or suggestions.

simonw
9 days ago
[-]
The README offers a whole bunch of different installation options, but none of them are the one I was looking for!

I ended up inspecting "curl -fsSL https://get.statusnook.com | sudo bash" and extracting the script so I could see what it did:

https://gist.github.com/simonw/09b8817b4010cf32e4bfcbe929dcd...

It downloads either the arm64 or amd64 built binaries, both of which are also available from the GitHub releases page: https://github.com/goksan/Statusnook/releases/tag/v0.0.0

Feature request: add those to the README too!

reply
goksan
9 days ago
[-]
Thanks for the suggestion. I've added it to the README.
reply
pastorhudson
9 days ago
[-]
The killer feature I need is heartbeat so I can make some device send a request every 5 min and if it’s not sent then it is down. Currently using UptimeRobot for this.
reply
stanislavb
9 days ago
[-]
Hey mate, I'm using https://healthchecks.io/ for heartbeat monitoring my crons. It's been working flawlessly for quite some time now. The UI is super clean and easy to navigate. It's also free up to 20 monitored jobs. Note - I'm not in any way related to that project.
reply
goksan
9 days ago
[-]
Thanks for sharing this.

I haven’t used the product but I remember reading about if here on Hacker News: https://news.ycombinator.com/item?id=31488910

reply
pastorhudson
9 days ago
[-]
Thank you!
reply
tibu
9 days ago
[-]
You can use also the open-source Uptime Kuma for this (actually for almost everything else what UptimeRobot knows)

https://github.com/louislam/uptime-kuma

reply
pastorhudson
9 days ago
[-]
I’ve considered using this. Just haven’t got around to it.
reply
cobrabyte
9 days ago
[-]
+1 for Uptime Kuma
reply
kaushikt
9 days ago
[-]
I have been using healthchecks.io for over 4 years and I can vouch for it. Super reliable, I think it might do the job :)
reply
goksan
9 days ago
[-]
Thanks for sharing!

I think that could also be helpful for ensuring scheduled jobs are running fine. I can see myself wanting this at some point.

reply
pastorhudson
9 days ago
[-]
It helps for internal servers that don’t have a public ip.
reply
rmbyrro
9 days ago
[-]
DeadManSnitch works pretty well for that
reply
yobert
10 days ago
[-]
Looks great! You just need https://status.statusnook.com/ to demo monitoring yourself :D
reply
goksan
10 days ago
[-]
You're right! I've just spun one up at that url.

Could be cool to have a restricted demo version in the future for people to poke around in.

reply
asmor
10 days ago
[-]
All of that code in one file is certainly... a thing you can do. I'm surprised you used embed on your schema.
reply
goksan
10 days ago
[-]
Haha I was waiting for this comment, thanks
reply
piterrro
10 days ago
[-]
I was about to ask the same question, would you mind sharing more context why did you decided to go with a single 14k main.go file?
reply
wegwerfaccount
10 days ago
[-]
Perhaps because we’re on hacker news and not software architect news?
reply
goksan
9 days ago
[-]
I initially thought the project was going to be much smaller.

I was happy with how things were going in that file and didn’t feel a need to add more files. I’d probably do it again on a solo project.

reply
piterrro
9 days ago
[-]
Thanks that's what I thought. Do you have any specific way of navigating that file or use a functions outline for that?
reply
goksan
9 days ago
[-]
reply
superq
10 days ago
[-]
For a single dev, a single file is often far more efficient than jumping between files.
reply
goksan
9 days ago
[-]
I’ve had a good experience with it. I’ve been jumping around by function.
reply
datascienced
7 days ago
[-]
In Elm in particular it is idiomatic
reply
justusthane
9 days ago
[-]
Apologies for the hijack, but I’ve been looking for a particular kind of monitoring tool lately that I’m not sure exists.

I would like something that allows me to write my own arbitrary monitoring scripts in whatever language I want, and the tool would take care of everything else: scheduling and running the scripts, parsing the output, alerting, authentication, presenting the info on a pretty dashboard with graphs, etc.

I think Monit can do this to some extent, but I haven’t explored it yet — it looks like the dashboard and info presented is a lot simpler than what I’m looking for.

Is there some reason this isn’t a useful concept? For context, I’m looking at this from a homelab/selfhosting/hacking perspective.

reply
moehm
9 days ago
[-]
Good ol' Nagios does this, except maybe for pretty graphing. Maybe look into Icinga2 (fork of Nagios) for that.

The modern Version would be something like Prometheus with Grafana.

Zabbix might be too much for a homelab setup.

reply
mbirth
8 days ago
[-]
Actually, Zabbix runs pretty well in a homelab setup. Doesn’t eat much resources with its 3 containers here.
reply
supriyo-biswas
9 days ago
[-]
I’m not sure how useful this is from a homelab setting as the services are private, but what I’ve typically done to address this need is to write AWS Lambda functions, make them accessible over HTTP, and have the uptime monitor (I personally use uptime kuma) monitor that HTTP endpoint. I can then return a 4xx or 5xx response from the function when a certain condition isn’t as expected.
reply
omnibrain
9 days ago
[-]
Have you considered adding a custom webhook for notifications? In a first iteration it could post some hardcoded JSON payload.

Further iterations could add more configuration capabilities or even templating for custom payloads.

reply
goksan
9 days ago
[-]
Hey, thanks for the question.

This is something I've considered but haven't needed just yet. I think it would be helpful.

reply
westurner
9 days ago
[-]
awesome-status-page > Open Source: https://github.com/ivbeg/awesome-status-pages?tab=readme-ov-...

Logging cert hashes and checking them against a configurable list and/or CT Certificate Transparency logs would be helpful

reply
goksan
9 days ago
[-]
Thanks for the suggestion, I hadn't considered this.
reply
noah32
9 days ago
[-]
All fun and games until you need a status page for your status pages' status page. Nice looking project tho.
reply
goksan
9 days ago
[-]
Thank you!
reply
martinbaun
10 days ago
[-]
I was thinking of making something like that using SQLite, and Go - which is exactly what you did :)

Could you maybe make a feature list in the README so it's easy to see if it supports what I need myself?

And, do yo accept PRs if they're good quality?

reply
goksan
10 days ago
[-]
Good shout on the feature list on the README, thanks. In the meantime, there's some additional detail at https://statusnook.com to that end.

Honestly, I'm not sure about PR's yet. To prevent any disappointment I'd encourage discussing any changes before beginning work intended to be upstreamed. I should include this in the README.

reply
robby1110
8 days ago
[-]
Nice this looks useful, look forward to using it for a future project. Starred the repo
reply
goksan
6 days ago
[-]
Thank you!
reply
unclebucknasty
9 days ago
[-]
Nice work. Funny how even simple/clean UI designs can require so much CSS.

How'd you like working with HTMX? First time?

reply
goksan
9 days ago
[-]
There's gotta be lots of duplicated styles. I've mostly been starting fresh with each page and copying similar bits around.

I've been a fan of htmx for a few years. I was already subscribed to the approach having previously cobbled stuff together which resembled hx-boost and hx-swap-oob. htmx feels natural to me, I feel I get to focus on what I want to accomplish vs thinking about how to use htmx.

reply
unclebucknasty
9 days ago
[-]
Thanks for the feedback. Yeah, HTMX reminds me of the early days of AJAX and seems like a breath of fresh air, especially if you're more interested in providing enhancements via some dynamic functionality versus building a full-on SPA.

It also actually looks fun to use, which has been missing from webdev for a while IMO.

Anyway, thanks again. Really appreciate your approach in keeping things simple.

reply
goksan
6 days ago
[-]
Give it a try - you might like it. Thank you!
reply
avtar
10 days ago
[-]
Perhaps I'm not looking in the right places, but is there a way to configure everything using a config file?
reply
goksan
10 days ago
[-]
Hey, thanks for the question.

Once Statusnook is deployed everything is configured via the web interface. If I've understood the question - what you're looking for doesn't currently exist.

It's something I've thought about and have received suggestions on. I think I personally will just need the ability to occasionally import/export configurations between instances. At the moment I can just copy the db.

Interested to hear more about what you would have wanted to see.

reply
hadlock
10 days ago
[-]
A config file would be useful, as I can template the config file, which means I can effectively do auto-discovery of intranet resources working on my cluster.

Stepping further into config files, a helm chart (once config file support is added) would be very useful

reply
goksan
9 days ago
[-]
Interesting point regarding auto-discovery, thank you.

Somebody else has also told me a helm chart would be useful.

reply
avtar
10 days ago
[-]
Yup that's what I was referring to. I always feel more confident configuring services using config files that can be managed using version control. It's PTSD from having to deal with software such as Jenkins ages ago.
reply
simonw
9 days ago
[-]
Same here - I want my configs for EVERYTHING in version control at all times. That way I can see exactly why things are working / not working, when things were changed, who changed them etc.
reply
goksan
9 days ago
[-]
This makes sense, noted.
reply
goksan
9 days ago
[-]
Got you, thanks for sharing your experience.

I’ll keep this in mind.

reply
eh8
10 days ago
[-]
Design is super clean--looks great!
reply
goksan
10 days ago
[-]
Thank you!
reply
sisve
9 days ago
[-]
Good webpage and nice job with all the different infra/deploy options.

well done, will try it out!

reply
goksan
9 days ago
[-]
Thank you!
reply
alberduris
10 days ago
[-]
Is this like the status pages of big companies but for indie hackers or personal use?
reply
lionkor
10 days ago
[-]
big companies shy away from real status pages and prefer those that look live, but aren't, so they can pretend theyre 100% up.
reply
ghnws
10 days ago
[-]
I've never seen more green checkmarks than on AWS status page during a major outage.
reply
gnuser
9 days ago
[-]
goods ops teams always have a real(time) one somewhere though
reply
goksan
10 days ago
[-]
Thanks for the question! I haven't made a conscious decision here, my needs are certainly a lot closer to that of an indie hacker vs a bigger company though.
reply
hrishikshpathak
10 days ago
[-]
Nice status page. Using SQLite in your project makes it very easy to self-host.
reply
goksan
10 days ago
[-]
Thank you!
reply
dddw
10 days ago
[-]
Oh this is nice! Thanks for sharing! Will try and run it on some things
reply
goksan
10 days ago
[-]
Thank you!
reply
iJohnDoe
9 days ago
[-]
Looks nice and clean. Congrats on the launch!
reply
goksan
9 days ago
[-]
Thank you!
reply
kzshantonu
9 days ago
[-]
Very nice. Hate to be that guy but a dark theme would be awesome
reply
goksan
9 days ago
[-]
All good, thanks for sharing.

Maybe it'll happen at some point in the future.

reply