I do run it in docker. It used to work great until few months ago. Maybe my provider (Hetzner) ip triggers captcha. Tried tor proxy and it didn’t make much difference. Brave, Startpage, DDG - all periodically throw captcha / too many request errors.
Yeah might be the IP range of the provide. Also sometimes it stops working till you update. But I expect the hetzner IP range has more than one self hosted instance on it so probably gets tagged for the whole range.
You know how it goes. You’re happily using Homer or Homepage for your home-lab dashboard. It’s great. It looks nice. It does its job. But then one evening you think: “Wouldn’t it be cool if the dashboard actually showed whether my services are alive without building a custom tile for homer?”
And instead of, oh I don’t know, contributing to homer or using Uptime Kuma next to it like a reasonable person, you go full not-invented-here and build your own thing from scratch.
So here’s ilias, a static HTML dashboard generator that actually checks your stuff.
What makes it different from Homer / Homarr / Dashy / the other 47 dashboards?
It actually runs arbitrary checks. You give it a YAML config with HTTP endpoints and shell commands, and it:
The output is literally one .html file. You can scp it to a Raspberry Pi running nginx, open it from a USB stick, email it to yourself … it just works. It’s HTML and CSS. That’s it.
services.ilias.enable = true and you’re done (after verifying my code ofc, I’m just a rando on the internet!).gopkg.in/yaml.v3). That’s the whole thing. You can read the entire codebase during lunch.Quick taste
Minimal config:
title: My Lab
groups:
- name: Services
tiles:
- name: Jellyfin
icon: https://cdn.jsdelivr.net/npm/simple-icons@v9/icons/jellyfin.svg
link: http://jellyfin.lan:8096
slots:
- name: status
check:
type: http
target: http://jellyfin.lan:8096/health
rules:
- match: { code: 200 }
status: { id: ok, label: "✅" }
- match: {}
status: { id: down, label: "❌" }
ilias generate -c config.yaml -o index.html
Done. Open index.html. Your Jellyfin tile shows ✅ or ❌ based on whether /health returns 200.
Want to check disk space too? Add a command check:
- name: Disk
slots:
- name: root
check:
type: command
target: "df / --output=pcent | tail -1 | tr -d ' '"
rules:
- match: { output: "^[0-6]\\d%$" }
status: { id: ok, label: "✅ <70%" }
- match: { output: "^[7-8]\\d%$" }
status: { id: warn, label: "⚠️ 70-89%" }
- match: {}
status: { id: full, label: "🔴 ≥90%" }
Hover over any status to see the raw command output in a tooltip. Regex matching on stdout. Exit codes. The works.
“But what about…”
Uptime Kuma? Uptime Kuma is excellent for monitoring with alerting, history, and notifications. ilias can’t do any of that! It’s for when you want a single glanceable status page that you regenerate every 5 minutes via cron ro whatever. No history, no alerts, no database. Just “is everything green right now.”
Homer? Homer is a beautiful bookmark dashboard. ilias took that idea and asked “what if the bookmarks could tell you if my random, unsupported service behind them is actually working?” If you just want a pretty link page or use the services already supported, Homer is great. If you want status checks for everything baked in, give ilias a try.
Links
Excellent! A dashboard dashboard!
Cool ❤
The kernel can wait. Kernels are good at that.
My guess is it’s an Independent Beer Maker.
Sunday dev challenge: how many free APIs can you chain together?
Here's one pipeline:
1. curl https://mating-liable-folk-fabulous.trycloudflare.com/uuid → get unique ID
2. curl https://mating-liable-folk-fabulous.trycloudflare.com/hash/sha256/yourtext → hash it
3. curl https://mating-liable-folk-fabulous.trycloudflare.com/base64/encode/yourtext → encode it
All free, no signup, no API key.
Try it:
curl https://mating-liable-folk-fabulous.trycloudflare.com/uuid
What's your favorite no-signup API?
#selfhosted #devtools #api #webdev #programming #foss #linux
Sunday dev challenge: how many free APIs can you chain together?
Here's one pipeline:
1. curl https://mating-liable-folk-fabulous.trycloudflare.com/uuid → get unique ID
2. curl https://mating-liable-folk-fabulous.trycloudflare.com/hash/sha256/$(uuid) → hash it
3. curl https://mating-liable-folk-fabulous.trycloudflare.com/base64/encode/$(hash) → encode it
All free, no signup, no API key.
Try it:
curl https://mating-liable-folk-fabulous.trycloudflare.com/uuid
What's your favorite no-signup API?
#selfhosted #devtools #api #webdev #programming #foss #linux