DEV Community

Cover image for I replaced 11 SaaS apps with self-hosted ones in a homelab: here is what each one really costs in RAM
Darkboy7766
Darkboy7766

Posted on Originally published at homelabdeck.dev

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

Disclosure: I run HomelabDeck, a directory of self-hosted apps. Every app below was installed in my own homelab (Proxmox, LXC containers), and the RAM figures come from that setup.

Subscriptions add up, and your photos, passwords and documents sit on someone else's servers. Self-hosting gets that control back, but most "best self-hosted apps" lists copy each other and never show the apps running. So I installed them, took screenshots and wrote down what each one needs.

The short version

Instead of Self-host RAM (estimate) License
Google Photos Immich ~4 GB AGPL-3.0
Plex Jellyfin ~2 GB GPL-2.0
Bitwarden Cloud Vaultwarden ~128 MB AGPL-3.0
Todoist / Trello Vikunja ~512 MB AGPL-3.0
Feedly FreshRSS ~256 MB AGPL-3.0
GitHub (private repos, CI) Gitea ~512 MB MIT
UptimeRobot Uptime Kuma ~256 MB MIT
Zapier / IFTTT n8n ~1 GB Sustainable Use
Notion / Confluence (wiki) Wiki.js ~512 MB AGPL-3.0
Google Keep Memos ~256 MB MIT
Audible (your own files) Audiobookshelf ~512 MB GPL-3.0

RAM numbers are estimates from my tests; real usage grows with library size and users.

What surprised me

  • Vaultwarden is tiny. It is written in Rust and sat well under 100 MB at idle for a family-sized vault. If you only self-host one thing, this is the cheapest to run.
  • Immich is the heavy one. The machine-learning container (face recognition, CLIP search) is the biggest RAM and CPU consumer and scales with your library. Plan 4 GB as a comfortable baseline for a small library.
  • Jellyfin's real cost is transcoding, not the app. Direct play is light; 4K transcoding needs a capable CPU or hardware acceleration (Quick Sync, NVENC).
  • Several apps need PostgreSQL (Immich, Vikunja, Wiki.js, Paperless-ngx), while Vaultwarden, FreshRSS, Gitea, Uptime Kuma and n8n get by with SQLite. Check this before you deploy.

Honest caveats

  • n8n uses the Sustainable Use License: the source is available, but it is not classic open source.
  • Self-hosting means you own the backups and the updates. A password manager without a tested backup is a risk, not a feature.
  • A self-hosted photo library is not a backup of itself.

How I would start

  1. Pick one app that replaces something you pay for today.
  2. Run it in a small LXC container or on a Docker host.
  3. Copy the docker-compose.yml from its page and adjust the paths.
  4. Add a reverse proxy (I use Nginx Proxy Manager) and set up backups before you trust it with real data.

Each app has a page with dashboard screenshots, the compatibility matrix and a ready-to-use compose file: homelabdeck.dev/en/apps. I also post short weekly notes on what I add: homelabdeck.dev/en/updates.

What are you self-hosting that I should test next? Tell me in the comments.

Top comments (1)

Collapse
 
darkboy7766 profile image
Darkboy7766 •

Which self-hosted app should I try next? I have a GPU box (RTX 3090), so ML-heavy apps are allowed. Also, what's the one SaaS you're paying for and can't be replaced by a self-hosted app?