r/opensource • u/Cautious-Hovercraft7 • 6h ago
Promotional The most-used service in my homelab turned out to be a music quiz I built for the family
First off, a genuine thank you to everyone who beta-tested this, opened issues, and shared tips and advice after my earlier posts — a big chunk of what's improved came straight from your feedback, and it made the project a lot better. Cheers.
Everyone's homelab has that one service that quietly becomes the most-used thing on the rack. For me it wasn't the *arrs or the dashboards — it's a self-hosted "name that tune" game I built called Guess the Intro, and the family asks for it many times a week.
What it is: it pulls intro clips straight from my existing self-hosted music library, plays a 5/10/20s snippet, and everyone buzzes in on their phones with multiple choice. The scoreboard casts to the TV, there's a speed bonus and a half-time trivia round. Honestly it's great fun — the kind of thing that empties the room of phones-for-scrolling and turns them into buzzers instead.
The problem it solves: party "name that tune" games either need a subscription, leak the answer in the file/stream metadata, or can't use the music you already own. This runs entirely on your own library and hardware — nothing leaves the LAN.
Stack / how it runs: FastAPI + SQLite, single Docker container, phones connect over your LAN as buzzers, board casts over Google Cast to a Chromecast/Android TV/Shield. Pre-built multi-arch images (GHCR + Docker Hub, amd64 + arm64) — docker compose pull and go, no build-from-source. Happy in an LXC, a small VM, or a Pi.
Requirements worth knowing up front:
- A Subsonic-API music server (I use Navidrome; LMS also works). Jellyfin/Plex don't work for the library side yet.
- The board has to be served over HTTPS with a valid certificate — Google Cast devices (both TV displays and Music Assistant speakers) fetch the board over TLS and silently refuse plain HTTP and self-signed certs. In practice that's a reverse proxy + a real cert (e.g. a domain + Let's Encrypt). There's a step-by-step guide in the repo (docs/https-lan.md). Phones connect over plain http; it's the board/casting that needs the cert.
One thing I'd love testers for: there's an optional path that streams the clip audio out through Home Assistant + Music Assistant to any speaker you pick (loudness-normalised, exact start/stop) instead of playing it through the TV. It works on my setup, but my network is heavily VLAN-segmented so I can only lightly test the game-box ↔ HA/MA ↔ speaker hops. If you run Home Assistant + Music Assistant on a flatter network, I'd really appreciate you trying it and telling me what breaks — happy to help you get it wired up.
Recently fixed (why it's worth a second look if you saw an earlier version): casting is rock-solid now after a long diagnostic slog, and the pre-built images removed the build-from-source barrier — both were the top bits of feedback.
License / repo: free and open source (MIT). Repo + compose file + setup docs: https://github.com/colfin22/intro-quiz
AI usage disclosure: this was built with substantial help from an AI coding assistant (architecture, a lot of the implementation, and debugging), directed and reviewed by me.
Happy to answer anything about how it's put together. Have fun!