Photos & video
Immich server requirements: how much RAM with machine learning on vs off
Immich is a self-hosted Google Photos replacement. Its hunger for RAM comes almost entirely from one optional piece: the machine-learning container that powers smart search and face recognition. Decide whether you want that first, and the sizing question mostly answers itself.
Sizing guide
Our recommendations, derived from the sourced figures below. Not measurements.
| Scenario | RAM | vCPU | Why |
|---|---|---|---|
| Photo backup only (ML off) | 4 GB | 2 | The documented floor for running without machine learning. Community idle numbers for the non-ML containers sit well under 2 GB, which leaves room for upload bursts and thumbnail jobs. |
| Full features (ML on), small library | 6 GB minimum, 8 GB to be comfortable | 2–4 | The ML container is small when idle but grows while smart-search and face jobs run, which is exactly when uploads are also hammering the server. The 8 GB recommendation is the one to follow if this box runs anything else. |
| Initial import of a big library (ML on) | 8 GB, or cap the ML container | 4 | The first import runs every job over every photo at once. If you have to fit into less, cap the ML container's memory and lower job concurrency so it runs slower instead of pushing the box into swap. |
Official requirements
| Item | What the project says | Source |
|---|---|---|
| RAM | Minimum 6 GB, recommended 8 GB | Immich docs: Requirements checked Oct 21, 2026 |
| CPU | Minimum 2 cores, recommended 4 cores (amd64 or arm64) | Immich docs: Requirements checked Oct 21, 2026 |
| 4 GB systems | "For systems with only 4GB of RAM, Immich can be run with machine learning features disabled." | Immich docs: Requirements checked Oct 21, 2026 |
| Postgres | Database files are typically 1–3 GB; should be on local SSD, never a network share; needs at least 2 GB RAM if you set Docker resource limits | Immich docs: Requirements checked Oct 21, 2026 |
| Library overhead | Thumbnails and transcoded video add 10–20% to the library size on average | Immich docs: Requirements checked Oct 21, 2026 |
| CPU feature level | Since v3 the ML container on amd64 needs x86-64-v2 (most CPUs since ~2012); pick a supported CPU model if you run in a VM | Immich docs: Requirements checked Oct 21, 2026 |
What people report in practice
Individual reports, not controlled tests. Versions, hardware and settings differ, so treat these as data points, not guarantees.
-
Whole stack ~1.14 GiB idle: server 415 MiB, machine learning 551.5 MiB, Postgres 192.9 MiB, Redis 4.3 MiB
Ubuntu Server LTS, Docker, 32 GB host
Reddit r/immich: Use of ram in immich (comment, Feb 2026) · checked Oct 21, 2026
-
Idle: server 698 MiB, machine learning 242 MiB (capped at 3 GB), Postgres 752 MiB, Redis 26 MiB; ML capped to stop an 8 GB box swapping
8 GB NAS, ML container limited with a 3G memory limit
Reddit r/immich: Underpowered NAS for AI (comment, Dec 2024) · checked Oct 21, 2026
-
ML container reported at 1.25 GB, later 4.81 GB of a 7.63 GB host after processing; a maintainer said high RAM during processing is expected
Immich v1.66 (2023). Old version: model loading has changed since, see next item
GitHub GitHub immich-app/immich #3142: Machine learning memory leak · checked Oct 21, 2026
-
ML container under 300 MB right after startup once models load lazily; RAM rises as each ML job loads its model
Developer test in the PR that made lazy model loading the default (2023)
GitHub GitHub immich-app/immich PR #3797: make lazy loading default · checked Oct 21, 2026
Our measurements: coming soon
We haven't measured Immich yet, so there are no VPSfit lab numbers on this page. When we do, they'll show the app version, the plan it ran on, the date, and the raw data. Here's what we'll record:
- Idle RAM per container after the stack settles, ML on and ML off
- Peak RAM during a scripted import (fixed photo set), with default and reduced ML concurrency
- Time to clear all job queues on 2, 4 and 8 GB plans
- Image sizes and on-disk overhead per 1,000 photos
What drives Immich's RAM use
Machine learning is the swing factor
Smart search (CLIP) and face recognition each load a model into the immich-machine-learning container. Models load on first use and stay loaded until an idle timeout unloads them (MACHINE_LEARNING_MODEL_TTL, default 300 seconds per PR #2661), so RAM rises sharply during jobs and drops afterwards. That is why the same install can look tiny at idle and huge during an import.
Uploads and thumbnail generation
The server container does the thumbnailing, metadata extraction and video transcoding. Bulk uploads from the phone app push it hard. This is CPU-bound as much as RAM-bound, which is why the recommended core count doubles from 2 to 4.
Postgres
Immich keeps its metadata and search vectors in Postgres. It wants local SSD and, if you set container memory limits, at least 2 GB of RAM for itself.
Gotchas on a VPS
- Turning ML off is two steps. Disabling machine learning in Administration > Settings stops the jobs, but the container keeps running. To actually free the RAM, also remove the
immich-machine-learningservice from your compose file. (Immich FAQ, checked 2026-10-21.) - Don't put the database on network storage. Cheap VPS plans with small disks tempt people to mount block storage or a storage box over the network for everything. Photos can live there; Postgres (
DB_DATA_LOCATION) should stay on the local SSD. - Disk fills faster than you expect. Budget the library plus 10–20% for generated thumbnails and transcodes, plus the 1–3 GB database. On a VPS, disk is usually the first thing you run out of, not RAM.
- Old CPUs and odd VM CPU models. Since v3 the ML container on amd64 needs the x86-64-v2 instruction level. Almost every current VPS has it, but some virtualization setups expose a generic CPU model that doesn't.
- Idle RAM that never seems to drop. Allocated memory often stays with the process until something else needs it. An Immich maintainer described this as normal in this thread. Judge by whether the box swaps or the kernel kills containers, not by the idle number alone.
Cheapest plans that fit
Immich (machine learning on): 6 GB RAM or more
Threshold: Official minimum (6 GB, 2 cores) (source). Also check vCPU: at least 2.
| Provider & plan | RAM | vCPU | Disk | Price / month | Terms | Source |
|---|---|---|---|---|---|---|
| Contabo Cloud VPS 4 | 8 GB | 4 shared | 100 GB SSD | €4.40 excl. VAT · ≈ $4.93 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
| Contabo Cloud VPS 6 | 12 GB | 6 shared | 200 GB SSD (or 100 GB NVMe) | €6.00 excl. VAT · ≈ $6.73 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
| Contabo Cloud VPS 8 | 24 GB | 8 shared | 300 GB SSD (or 150 GB NVMe) | €11.20 excl. VAT · ≈ $12.56 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
| Hostinger KVM 2 | 8 GB | 2 AMD EPYC | 100 GB NVMe | $14.99 intro $8.79 before tax |
Prepaid intro rate; renews at $14.99/mo | hostinger.com checked Oct 21, 2026 |
Immich (machine learning off): 4 GB RAM or more
Threshold: Official: runs on 4 GB with ML disabled (source). Also check vCPU: at least 2.
| Provider & plan | RAM | vCPU | Disk | Price / month | Terms | Source |
|---|---|---|---|---|---|---|
| Contabo Cloud VPS 4 | 8 GB | 4 shared | 100 GB SSD | €4.40 excl. VAT · ≈ $4.93 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
| Contabo Cloud VPS 6 | 12 GB | 6 shared | 200 GB SSD (or 100 GB NVMe) | €6.00 excl. VAT · ≈ $6.73 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
| Hostinger KVM 1 | 4 GB | 1 AMD EPYC | 50 GB NVMe | $11.99 intro $6.49 before tax |
Prepaid intro rate; renews at $11.99/mo | hostinger.com checked Oct 21, 2026 |
| Contabo Cloud VPS 8 | 24 GB | 8 shared | 300 GB SSD (or 150 GB NVMe) | €11.20 excl. VAT · ≈ $12.56 |
24-month term (effective monthly rate) | contabo.com checked Oct 21, 2026 |
Prices checked Oct 21, 2026 on each provider's official pricing page. EUR prices converted at the ECB rate of Oct 20, 2026 (1 € = $1.1215) only for ranking. See all plans on the cheapest 4 GB VPS page.