DBDelve
DBDelve는 Rust 기반 빠른 다중 엔진 데이터베이스 클라이언트, 무료 오픈소스, 텔레메트리 없음
k3s 홈랩용 공개 상태 페이지, AI 지원 FastAPI가 고정 Prometheus 쿼리를 읽고 다중 아키텍처 이미지로 Flux에 배포됩니다
Live public status page for my k3s homelab. AI-assisted FastAPI app that reads fixed Prometheus queries, shipped as a multi-arch image and deployed by Flux.
개발 도구HTML · PythonGitHub @turpinator-x온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A live, public status page for my two-node k3s homelab: https://dashboard.jarrodturpin.dev
It shows CPU and memory use across the cluster, running pods, node health and uptime, and whether each self-hosted app is up. The numbers refresh every 15 seconds.
flowchart LR
V["Visitor"] -- HTTPS --> CF["Cloudflare Tunnel"]
CF --> D["dashboard pod<br>FastAPI, 15 s cache"]
D -- "fixed PromQL queries" --> P["Prometheus<br>(kube-prometheus-stack)"]
main.py): a small FastAPI app. It sends a fixed set of PromQL queries to the cluster's Prometheus in parallel, caches the answers for 15 seconds, and serves them as JSON at /api/stats. /healthz answers the Kubernetes probes without touching Prometheus. If Prometheus is unavailable, it keeps serving the last good numbers. If it has none yet, it returns 503.static/index.html): one static page, with no framework and no third-party scripts or fonts. It polls /api/stats.Dockerfile): a two-stage build. uv installs the locked dependencies in the first stage, and the final image has only Python, the virtualenv and the app, running as UID 10001.The page is public, so it's built to expose as little as possible:
RuntimeDefault/docs is off)main are protected from being moved, force-pushed or deleted.Needs uv and access to a Prometheus.
kubectl -n monitoring port-forward svc/kube-prometheus-stack-prometheus 9090:9090 # in another terminal
PROMETHEUS_URL=http://localhost:9090 uv run uvicorn main:app --reload
Then open http://localhost:8000.
| Setting | Default | Meaning |
|---|---|---|
PROMETHEUS_URL | the in-cluster Prometheus Service | Where to send queries |
CACHE_SECONDS | 15 | How long one round of answers is reused |
APPS | linkding,audiobookshelf | Deployments to show as up or down |
uv run ruff format --check . && uv run ruff check . && uv run pytest
The tests replace the Prometheus call with a fake one, so they need no cluster. They cover the health check, the response shape, app up/down, the cache, the 503 path, and serving the page.
On pushes to main, v* tags and pull requests, GitHub Actions runs the same checks, then builds the image for linux/amd64 and linux/arm64 (the cluster has a mini PC and a Raspberry Pi 5). Pushing a v* tag publishes the image to ghcr.io/turpinator-x/homelab-dashboard with that version. The current release is v0.1.2, on Python 3.15. Commit messages follow Conventional Commits, enforced by Commitizen.
Claude Code wrote the application code: the FastAPI backend (main.py), the frontend (static/index.html), the tests, the Dockerfile and the CI workflow. I set the requirements, typed and edited the code myself, reviewed it and ran it. I also own how it's deployed: the Flux deployment, the pod security settings and the NetworkPolicy, documented in turpinator-x/homelab.
The project idea comes from the KubeCraft community.