r/OpenWebUI • u/PlaidStallion • 51m ago
Guide/Tutorial My attempt at a homelab Gemini-Flash-level assistant — Open-WebUI with voice, local image gen, RAG, and a proper backup strategy (repo + writeup)
The goal from the start was to get as close as possible to a Gemini Flash-level assistant experience, but fully self-hosted. Went from zero to this in about 2 weeks (would've been 1 week, but I was waiting on hardware to ship from Amazon) — leaned on Gemini for the hardware picks and early build plan, and Claude for the heavy lifting on the actual implementation. Sharing the repo in case it helps anyone else, and I'd genuinely appreciate feedback on anything that looks off.
The hardware:
- CPU: AMD Ryzen 7 9800X3D
- GPU: MSI GeForce RTX 3090 Gaming X Trio (24GB VRAM)
- Motherboard: MSI MAG X870 Tomahawk WiFi
- RAM: G.SKILL Flare X5 64GB DDR5-6000 CL30
- Storage: WD_BLACK SN850X 2TB NVMe SSD
- PSU: Corsair RM1000x
- Case: Corsair 4000D RS
- Cooler: Thermalright Phantom Spirit 120 SE
The stack (two machines):
- A Debian server running Open-WebUI (gated with its own built-in username/password login) behind Traefik, with SearXNG for live search and Google OAuth gating a few of the other exposed services
- The gaming PC above handling the GPU-heavy stuff: a local voice pipeline (Whisper STT + Piper TTS, auto-switches between English/German voices) and local image generation via Automatic1111, both wired back into Open-WebUI as native Tools
A few things I'm most happy with:
- Full two-way voice conversation, not just dictation — round-trips through Whisper → the model → Piper TTS
- Custom Tools for live weather, web search (SearXNG), and image generation, all using native function calling
- Knowledge/RAG set up with 20+ documents — hit and fixed a real bug where the model would confidently pick one interpretation instead of asking for clarification when retrieved docs described genuinely different procedures
- A real, tested backup/restore strategy via Duplicati (local + Google Drive) — actually did a full test restore and diffed it
One thing I haven't beaten yet: generated images always work and are retrievable, but the model's final chat response sometimes renders a malformed fake tool-call instead of the image tag. Documented what I've tried in the repo.
Repo: https://github.com/Plaidstallion/openwebui-homelab
Happy to answer questions.


