{"slug": "self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram", "title": "Self-host Immich: I measured what Google Photos replacement actually costs in RAM", "summary": "A developer at FreeTierWatch deployed the self-hosted Google Photos alternative Immich as a four-container Docker Compose stack and measured its resource footprint, finding a settled working set of roughly 2.4 GB of RAM across the server (962 MB), machine-learning (928 MB), vector-enabled Postgres (465 MB) and Valkey (14 MB) containers. The stack pulled 4.7 GB of images and took about 2.5 minutes to start, while CPU-based ML smart search returned the correct photo for \"sunset over water\" in 2.2 seconds. The measurements show the ML search and face recognition features, not the gallery itself, drive the multi-gigabyte memory cost.", "body_md": "*Originally published on [FreeTierWatch](https://freetierwatch-eax.pages.dev/apps/immich-docker), where we actually deploy and measure what we write about.*\n\nImmich is the self-hosted Google Photos replacement — 115,000+ GitHub stars, mobile apps with automatic backup, face recognition, and ML-powered search (\"sunset over water\" actually finds your sunset photos). It's the app that convinced a generation of self-hosters that leaving Google Photos was possible.\n\nIt's also the heaviest thing we've deployed in this series. Where [Vaultwarden runs in 14 MB](https://freetierwatch-eax.pages.dev/apps/vaultwarden-docker) and [Uptime Kuma in ~150 MB](https://freetierwatch-eax.pages.dev/apps/uptime-kuma-docker), Immich is a four-container stack that wants **gigabytes**. We deployed it, uploaded photos, ran the ML search, and measured what it really costs.\n\nImmich ships its own Compose file — use it rather than hand-rolling:\n\n```\nmkdir immich && cd immich\ncurl -LO https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml\ncurl -L -o .env https://github.com/immich-app/immich/releases/latest/download/example.env\n```\n\nEdit `.env` before starting — two changes are non-optional:\n\n```\n# generate a real DB password (alphanumeric only — special chars break it)\nDB_PASSWORD=$(openssl rand -hex 16)\n\n# set your timezone or every photo's date will be UTC\nTZ=Asia/Kolkata\n```\n\nAlso note `UPLOAD_LOCATION=./library` — point this at your biggest disk; it's where every photo lives.\n\n```\ndocker compose up -d\n```\n\nFirst start pulled **4.7 GB of images** (server 2.44 GB, machine-learning 1.1 GB, Postgres-with-vector-extensions 989 MB, Valkey 180 MB) and took ~2.5 minutes on our connection. Then open `http://localhost:2283`, create the admin account, and click through onboarding.\n\n| Container | RAM (settled, 5 photos processed) | Notes | \n|---|---|---|\n| immich_server | 962 MB | Peaked at 1.3 GB during initial processing | \n| immich_machine_learning | 928 MB | ~200 MB idle; balloons when generating embeddings | \n| immich_postgres | 465 MB | Vector-enabled Postgres (pgvecto.rs/VectorChord) | \n| immich_redis (Valkey) | 14 MB |  | \n| **Total working set** | **~2.4 GB** |  | \n\n| Other metrics | Measured | \n|---|---|\n| Images on disk | 4.7 GB | \n| Database size (5 photos) | 330 MB (ML models + vector indexes dominate) | \n| Upload speed | 5 photos (470 KB avg) in 235 ms via API | \n| **ML smart search** | \"sunset over water\" → correct photo ranked #1, **2.2 s** on CPU | \n| Server restart to ready | 5 s | \n\nThe headline: **the machine-learning magic is real and runs fine on CPU** — but it's why this stack needs several GB of RAM where a plain photo gallery would need 200 MB. That's the trade: Google-Photos-grade search, Google-Photos-grade resource bill (except you pay in RAM, not rupees).\n\n`DB_PASSWORD` break the connection string — the env file warns you; believe it. Alphanumeric only.`docker compose pull`.` immich-machine-learning` service entirely — uploads and browsing work; you lose smart search and face recognition.`library` folder AND a `pg_dump` — the official docs have a", "url": "https://wpnews.pro/news/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram", "canonical_source": "https://dev.to/karthik_yk/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram-506", "published_at": "2026-10-30 12:41:21+00:00", "updated_at": "2026-10-30 12:50:37.938900+00:00", "lang": "en", "topics": ["machine-learning", "computer-vision", "ai-tools", "mlops"], "entities": ["Immich", "FreeTierWatch", "Google Photos", "Docker", "Postgres", "Valkey", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram", "markdown": "https://wpnews.pro/news/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram.md", "text": "https://wpnews.pro/news/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram.txt", "jsonld": "https://wpnews.pro/news/self-host-immich-i-measured-what-google-photos-replacement-actually-costs-in-ram.jsonld"}}