6 ms·
Tinystatus: A tiny status page generated by a Python script
- harsxv 2y agoIt generates a simple, responsive static HTML page for those of you running self-hosted services and wanting to share their status page. It checks things like HTTP pages, open ports, or pings IP addresses. Check the demo here: https://status.harry.id https://status.harry.id
- remram 2y ago> clean, responsive web page Consider adding a screenshot.
- 8n4vidtmkvmk 2y agoWhy he need screenshot when there's a perfectly good demo?
- mrroryflint 2y agoAssuming this isn't snark - because if I am looking for a tool to do a job, seeing an immediate visual representation of what I am likely to expect is very helpful. I don't want to go through the full installation to view a demo and then immediately realise it was not remotely close to what I was expecting.
- deleted 2y ago[deleted]
- fmbb 2y agoI also think a screenshot in a README is very helpful, but do note that the demo requires no install. The linked GitHub repository has a homepage set, and it is https://status.harry.id https://status.harry.id which I think is pretty obviously a demo just from the URL.
- 8n4vidtmkvmk 2y agoGenerally I'd agree, but the link he posted is a single click, requires no install, no login, no nothing. Nevertheless, here I took a screenshot for you: https://i.imgur.com/63kPIh9.png https://i.imgur.com/63kPIh9.png
- remram 2y agoThe demo link is not in the README either. If it was, yes, I agree with you.
- Hamuko 2y agoIt's the homepage link on the GitHub repo.
- deleted 2y ago[deleted]
- 8n4vidtmkvmk 2y agoI thought it was. Good news, OP is responsive and added both the link and a screenshot: https://github.com/harsxv/tinystatus/commit/41d9004b391cf76f473d8900a1630a2621e2060b https://github.com/harsxv/tinystatus/commit/41d9004b391cf76f... https://github.com/harsxv/tinystatus/commit/fcde73820dd9cdd1c0c34c6ef60d17a47f182389 https://github.com/harsxv/tinystatus/commit/fcde73820dd9cdd1...
- remram 2y agoI know, he said so in this very thread 2 days ago.
- lundstrj 2y agoI was also looking for a screenshot in the readme. I somehow missed the link to the demo until it was posted at the top of this thread. Neat project. Thank you for sharing.
- harsxv 2y agoThanks! Screenshot added.
- russfink 2y agoIt follows the UNIX philosophy: do one thing well. Nice work!
- iJohnDoe 2y agoVery cool. Nicely done. I really like projects like this.
- remram 2y agoWhy not put these .env variables inside the checks.yaml config file? What is the advantage of two config files with two separate syntaxes?
- selcuka 2y agoThe idea is the values in .env files can be configured via environment variables, while checks.yaml is for things that can be hard coded. In this case it's a bit moot because the yaml file works like a database, but when you deploy this using, say, Docker or k8s, you can use a different method to configure environment variables and skip .env files.
- librasteve 2y agogood question and answer … on a tangent, it makes me wonder if YAMLscript could be used to preload .env values on startup
- remram 2y agoWhy can't I change the port of my database server via an environment variable? This would be required for e.g. Nomad support. If this is a goal, why is it a goal for only half the configuration?
- jpitz 2y agoSomething I do in my yaml configs is support ${ENV} template variables with the string Template's substitute method using *os.environ.
- dheera 2y agoSuggestion: It would be cool if it could be packaged as a deb package, install itself as a systemd service, and accept a configuration in /etc somewhere. Adding nohup commands to /etc/rc.local is a little hacky.
- harsxv 2y agoThank you for the suggestion!
- thebabayaga29 2y ago[flagged]
- deleted 2y ago[deleted]
- xFuture 2y agoThank you for sharing this project! This is exactly what I am looking for.
- teekert 2y agoVery nice. But for me the Tailscale dashboard fulfills this function, what would make this super usefully for me if it integrated with something like https://ntfy.sh https://ntfy.sh and I could set conditions for notifications.
- kaan_keskin 2y agosimple and gets the job done. nice.
- aucisson_masque 2y agoPython in a nutshell
- thelastparadise 2y agoThere is no reason to take on the added cost of Python for this.
- oneeyedpigeon 2y agoWhat added cost? It generates a flat file.
- pphysch 2y agoThe vast majority of work this script does is over the network, which your choice of language will do little to speed up (latency-wise).
- oneeyedpigeon 2y agoLooks nice. I'm confused by the hover effect which moves each service up a few pixels—this suggest interactivity, but there doesn't seem to be any.
- vocram 2y agoCan this be run as a AWS Lamba instance?
- mariocesar 2y agoYea, you can create a website on S3 and set up a Lambda trigger every minute. To schedule this, you can use a CloudWatch rule with a 'Schedule' expression to trigger the Lambda function. Alternatively, you could use GitHub Actions and schedule the workflow to run every minute. However, I prefer the Lambda approach.
- nicoburns 2y agoNote: Running your status page on Lambda is a bad idea if your main site is on AWS. You want your status page to be on separate infrastructure so that it can be used during an outage.
- masdzub 2y agonice, i love this
- atebyagrue 2y agoWow, great work. This is exactly something I was getting geared up to do for myself. Thanks for sharing!
- lormayna 2y agoThe usage of ping require that to run as root. And this can open a big security issue as the paramater host of the function "check_ping" can be used for a root command injection. I know that this is not going to be exposed on Internet, but I think it should be fixed in any case. I am at work, but I can open a PR fixing it later.
- runjake 2y agoIt doesn't need to be fixed. There isn't an issue here. Depending on the OS, ping is either set setuid[1] as root, or more commonly these days, ping is granted a "capability"[2], such as CAP_NET_RAW on Linux. macOS does things a little different[3]. This allows non-root users to run stuff like ping without granting them full root access. You do not need to, nor should you, run the script as root. % ls -l /usr/bin/ping -rwxr-xr-x 1 root root 89768 Apr 8 09:00 /usr/bin/ping % getcap /usr/bin/ping /usr/bin/ping cap_net_raw=ep ~ % whoami jake ~ % id uid=1000(jake) gid=1000(jake) groups=1000(jake),4(adm),24(cdrom) % ping -c 3 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=117 time=9.195 ms 64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=8.837 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=10.998 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 8.837/9.677/10.998/0.946 ms Hope that helps. Happy to elaborate on any unclear points. 1. https://unix.stackexchange.com/questions/382771/why-does-ping-need-setuid-permission https://unix.stackexchange.com/questions/382771/why-does-pin... 2. https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities https://unix.stackexchange.com/questions/592911/how-does-pin... 3. https://apple.stackexchange.com/questions/312857/how-does-macos-allow-standard-users-to-ping https://apple.stackexchange.com/questions/312857/how-does-ma... Edit: updated explanation a bit.
- gertlex 2y agoFurther, I'm not sure you can do command injection, as the the `host` variable is treated as a single token in the shell call. `host = "google.com; wget exploit"` won't run `wget exploit`. Happy to learn if there's a more nefarious trick that gets around this, though.
- 8organicbits 2y agoIs the demo currently down? It's currently 16:20 UTC and the last update timestamp on the bottom of the demo is 06:36 (unknown timezone).
- harsxv 2y agoHi, it’s up now. I made some updates and ran a few tests earlier
- loganmarchione 2y agoMan, this is cool! I would love if each tile would be clickable! I have a homelab and this would be a great landing page to be able to give out to family to see the status and links to all services in the house.
- alargemoose 2y agoIf you’d like something with a GUI for configuration, I’ve been using [Uptime Kuma](https://github.com/louislam/uptime-kuma https://github.com/louislam/uptime-kuma) for a couple years now with an “internal” status page for all services in my homelab, and a “public” page for family to see the few services they would care about. I also think [Homepage](https://github.com/gethomepage/homepage https://github.com/gethomepage/homepage) might be a good fit since it links to the services on the page, and has a little indicator dot for if it’s online or not.
- johannes1234321 2y agoMight be nice to offer a generalized version of async def check_ping(host): For doing something like - name: MySQL type: exec command: - /usr/bin/mysqladmin - --defaults-file=/path/to/file/handling/credentials - ping Not sure about others, but MySQL after a while blocks a host if there are too many connection attempts without successful signin and the ping code in the repo already calls out to an external process, so it should be quite straight ahead to add.
- oars 2y agoUseful for my own status page. Thanks!