Homelab Highlights — October 14, 2026

Homelab Highlights for 2026-10-14: self-hosting and homelab notes worth knowing.

[Audio embed placeholder]

The Lead: I replaced 11 SaaS apps with self-hosted ones in a homelab: here is what each one really costs in RAM

A homelab operator installed 11 self-hosted alternatives to common SaaS apps on Proxmox with LXC containers and documented the actual RAM usage for each, from Immich (~4 GB) to Vaultwarden (~128 MB).

Why it matters: Most self-hosted app lists skip real resource numbers. This teardown gives homelab planners a practical baseline for capacity planning, highlighting which apps are lightweight and which demand serious hardware.

Source: DEV Community: homelab

News Roundup

I built an nextcloud app that brings photo rating and collaboration to Nextcloud

StarRate is a free, open-source Nextcloud app that adds photo rating, culling, and client collaboration directly inside Nextcloud folders, with guest links and Lightroom Classic sync.

Why it matters: For photographers using Nextcloud, this fills a long-standing gap: professional photo workflow without sending files off-server.

Source: Self-hosted project communities - Homelab Highlights top (day)

Two Blackwell workstation GPUs in one Minisforum MS-02 Ultra on the stock PSU (RTX PRO 4000 SFF + RTX PRO 2000)

A detailed build log shows two 70W Blackwell workstation GPUs running in a single Minisforum MS-02 Ultra on the stock 350W PSU, with load test results, thermal data, and SSD throttling findings.

Why it matters: This is a reference build for anyone wanting dual GPU inference in a compact form factor, with honest numbers on thermal limits and performance caveats for splitting models across cards.

Source: github.com

Immich Lounge 1.2.0 - photos and memories from Immich on your Roku

Immich Lounge 1.2.0 turns a Roku or TV into a photo frame for self-hosted Immich libraries, adding album/people filters, memory playback, and chronological slideshow ordering.

Why it matters: It extends Immich from a backup tool to a living display, making self-hosted photos more accessible in daily life.

Source: Self-hosted project communities - Homelab Highlights top (day)

I made a tool to re-encode Immich videos to HEVC and reclaim storage

immich-video-optimizer is a Go tool that re-encodes H.264 videos to HEVC through the Immich API, preserving metadata and only deleting originals after successful replacement.

Why it matters: It safely reclaims storage from bloated phone clips without risking database corruption, with one user reporting a 1.7 GB clip shrinking to 110 MB.

Source: Self-hosted project communities - Homelab Highlights top (day)

Tool & Software Highlight: I built an MCP server with Claude Code that lets Claude search and apply to jobs. Here’s how the build went (and what you can learn)

An MCP server built mostly with Claude Code lets the AI assistant search a job database, match resumes, and submit applications on employer sites after user approval, with 450 users in its first week.

Why it matters: The build pattern—a small service exposing tools over MCP—is directly applicable to homelab automation, showing how low the barrier is to creating AI-accessible glue tooling.

Source: r/ClaudeAI - top (day)

Community Highlight: Four Pi 5s, four stadiums, one 3D-printed rack that runs my house

A homelabber escalated from one Pi running Home Assistant to four Pi 5s in a 3D-printed rack, each handling a separate role (HA, data server, backups, DNS) with NVMe boot and 27W supplies.

Why it matters: This is a relatable escalation story with practical lessons on failure isolation, backup strategy, and the trade-offs of distributed Pi clusters versus a single mini PC.

Source: r/raspberry_pi - Homelab Highlights top (day)

Sources

Transcript

Host A: Welcome to Homelab Highlights, the show that surfaces practical homelab wins and useful self-hosted tools.

HOST A: So there’s a write-up on DEV from a homelab operator who did the thing everyone talks about and rarely documents: swapped eleven SaaS apps for self-hosted versions, and wrote down what each one actually costs in RAM. Real numbers from real containers on Proxmox with LXC.

HOST B: That’s the part that’s usually missing. Every best-self-hosted-apps list is the same ten names with no sense of what they weigh once they’re running. This person installed each one, screenshotted it, and logged the memory footprint. The headline numbers are interesting: Immich instead of Google Photos comes in around four gigabytes, and that’s the heavy hitter — the machine learning container doing face recognition and CLIP search is the big consumer, and it scales with library size. Jellyfin sits around two gigs, but the real cost there isn’t the app, it’s transcoding. Direct play is light; 4K transcodes want a capable CPU or hardware acceleration like Quick Sync or NVENC.

HOST A: And then the other end of the scale is almost funny. [with a small lift] Vaultwarden, the Bitwarden-compatible password vault, is written in Rust and sat under a hundred megabytes at idle for a family-sized vault. If someone’s picking exactly one thing to self-host, that’s the cheapest possible entry point — and arguably the highest-value one. The rest of the table lands in between: Vikunja for tasks around half a gig, FreshRSS a quarter gig, Gitea half a gig, Uptime Kuma a quarter gig, n8n around a gig, Wiki.js and Audiobookshelf around half a gig each. One practical wrinkle worth flagging: several of these need PostgreSQL — Immich, Vikunja, Wiki.js — while Vaultwarden, FreshRSS, Gitea, Uptime Kuma and n8n are happy on SQLite. Worth checking before deploying, because it changes how many databases are being backed up.

HOST B: The author is also honest about the caveats, which is refreshing. n8n uses the Sustainable Use License, so source-available but not classic open source. And the big one: self-hosting means owning the backups and the updates. A password manager without a tested backup is a risk, not a feature — same logic for photos, a self-hosted photo library is not a backup of itself. For capacity planning, the takeaway is that a modest box handles most of this list comfortably; it’s really just Immich’s ML stack and heavy transcoding that change the math. The suggested starting point is sensible too: pick one app that replaces something actually being paid for today, run it in a small container, put a reverse proxy in front, and set up backups before trusting it with real data. And a fair disclaimer — those RAM figures are estimates from one person’s tests, and real usage grows with library size and users, so treat them as a planning baseline, not a guarantee.

HOST B: Quick one first, out of the Nextcloud community. A developer released an open source app called StarRate that adds photo rating and culling to Nextcloud — star ratings, color labels, pick and reject, right inside a folder. It also generates a guest link so a client can rate photos in a browser with no account, and their picks show up in the folder immediately. Ratings sync back to Lightroom Classic, and photos stay on the owner’s server the whole time. It’s AGPL licensed and in the Nextcloud App Store.

HOST A: From brief to beefy: a write-up on GitHub documents running two Blackwell workstation GPUs in a single Minisforum MS-02 Ultra — an RTX PRO 4000 SFF with 24 gigabytes in the x16 slot, and an RTX PRO 2000 with 16 in the top bay where the 25-gig network card normally goes. Both are 70-watt single-slot cards running on slot power from the stock 350-watt PSU. [skeptical] A two-hour load test came back with zero errors, but the top-bay card averaged around 90 degrees Celsius under load, only a degree or two from the driver’s temperature limit. The surprise finding was the SSDs: with BIOS fans on quiet, sustained writes collapsed from over two gigabytes per second down to 120 megabytes because the drive in the CPU-side slot throttled. Copper heatsinks and thermal pad tweaks got a retest back to about 2.1 gigabytes sustained, though the author notes no long-term data yet. For the LLM crowd: one model per card worked well, but splitting a single model across both cards dropped prefill speed significantly, and parallel requests crashed the engine — so treat it as two independent inference slots.

HOST B: Two Immich items to close the roundup. First, Immich Lounge hit version 1.2.0 — it turns a Roku or TV into a photo frame for a self-hosted Immich library. This release adds album and people filters, an option to show only photos with detected faces, saved memories alongside On This Day, and oldest-first or newest-first playback; the saved memories and face filters need Immich 3.2 or later. Second, a Go tool called immich-video-optimizer re-encodes bloated H.264 phone clips to HEVC — crucially through the Immich API rather than scripts against raw storage, which the developer notes is an easy way to corrupt database records. It preserves timestamps, GPS, and camera metadata, only deletes the original after the replacement uploads and verifies, and has a size guard to skip anything that didn’t actually shrink. One community commenter reported a 1.7-gigabyte clip dropping to about 110 megabytes. Worth a dry run before pointing it at a whole library.

HOST A: For the tool segment, a project from the Claude AI community that’s an interesting build story as much as a tool. A developer building a job search platform with Claude Code kept getting the same question: whether all of it could be done from inside Claude itself. The answer was to build an MCP server — again mostly with Claude Code — which launched last Thursday. For anyone who hasn’t touched MCP, it’s the Model Context Protocol — a standard way to plug external tools and data into an AI assistant, so the model can call them as functions instead of the user pasting things around.

HOST B: In this case, adding the server lets Claude search the platform’s jobs database for free, drop in a resume to see matches, generate tailored resumes, and then have the backend submit applications on the employer’s own site once the user approves each one. The developer reports around 450 users with 75 daily active in the first week, and says the backend pulls in roughly fifteen thousand new jobs a day, with a scheduled mode where the agent surfaces new matches daily. [thoughtful] Those are launch-week numbers from the developer, so take them as early traction rather than a trend.

HOST A: The homelab-relevant angle isn’t the job hunting — it’s the pattern. An MCP server is just a small service exposing tools over a protocol, the same pattern someone would use to let an assistant query a self-hosted service: check what’s running, search a document store, trigger a backup job. The interesting part of this build is that a working integration shipped in about a week, mostly written by the coding agent — which says something about how low the barrier to this kind of glue tooling has gotten. Whether an agent auto-applying to jobs on someone’s behalf is a good idea is a separate question, and the approval step before each submission is doing a lot of work there.

HOST B: Community highlight this episode is a classic escalation story from the Raspberry Pi community. It started with Home Assistant on one Pi. Then the operator wanted backups that didn’t live on that same Pi. Then something to watch the backups. Four Pi 5s later, there’s a 3D-printed rack running the whole house: four Pi 5s with 4 gigabytes each, booting from NVMe on Geekworm hats with no SD cards, a gigabit switch in the base of the rack, and — a detail worth stealing — 27-watt supplies on every Pi, because a 3-amp supply caps USB power and starves the NVMe hats.

HOST A: The way the work is split shows the thinking. One Pi runs Home Assistant OS. A second is the data server — local database, Grafana, a second Pi-hole, Tailscale, all fitting in about a gig and a half of RAM. A third runs Uptime Kuma plus a Samba share holding Home Assistant’s daily backups, and the fourth is the primary Pi-hole. The guiding rule: every job lives on a different Pi from the thing it protects. If primary DNS dies, devices fall back to the second Pi-hole, kept in sync with a tool called nebula-sync. The operator is honest about the one flaw: if Uptime Kuma itself dies, it can’t report its own death. A commenter suggested having Kuma email a periodic health check, so an absent email becomes the alarm — a dead-man’s switch in an inbox.

HOST B: [lighter] The fun part: Home Assistant sensor events flow into BigQuery, the data server pulls the history down nightly — over 5.4 million events so far — and the Pi computes trends and anomalies locally, sending only summaries to Claude to write up as a nightly email. Commenters were quick to poke at the claim that raw readings never leave the house when summaries are going to a cloud model, which is a fair distinction to keep in mind. Others asked the eternal question — why not one mini PC instead of four Pis — and the honest answer from the thread was basically: because it’s fun, and because the failure isolation is the point.

Host A: That’s Homelab Highlights for Wednesday. Until next time, happy hosting!