A Raspberry Pi 4 Model B 8GB is enough hardware to self-host Immich for a single household photo library, provided you boot from an SSD over USB 3.0 rather than a microSD card and skip the optional machine-learning containers. Expect roughly 5-7 W typical power draw, 30-90 seconds to ingest a single photo with metadata, and predictable performance up to 50,000-100,000 photos before the database starts to feel slow on the Pi 4's CPU.
What Immich expects from your hardware
Immich is a self-hosted Google Photos alternative built around a PostgreSQL database, a Node.js API, and a Python machine-learning service. The official Immich requirements page recommends 4+ cores, 6+ GB of RAM, and an SSD, with the machine-learning service treated as optional but resource-hungry. The Raspberry Pi 4 8GB hits the RAM target cleanly; the CPU is a 1.5-1.8 GHz quad-core Cortex-A72 per the Raspberry Pi 4 Model B specifications, which is below the documented sweet spot but enough for one household's worth of photo uploads. Phoronix's Raspberry Pi 4 review characterizes the platform's I/O ceiling — gigabit Ethernet, USB 3.0 — which matter much more for Immich's responsiveness than raw CPU.
Key takeaways
- The Raspberry Pi 4 8GB is the only Pi 4 variant that should host Immich. The 4GB and 2GB models run out of memory under PostgreSQL plus Redis plus the Node.js API.
- Boot from a SATA SSD over USB 3.0. A microSD card will wear out under PostgreSQL's write pattern within months.
- Disable the optional ML containers (
immich-machine-learning) unless you can tolerate slow face/object detection. The Pi 4 CPU is not built for ONNX inference. - Power draw runs 5-7 W typical, 8-10 W peak. A reliable 3 A USB-C PSU is mandatory.
- Initial library ingest is slow — expect days for a 50,000-photo backlog. Steady-state uploads of 20-100 photos at a time finish in minutes.
- Backup is the user's responsibility. Immich is not a backup tool; it stores the only copy on the Pi by default.
Why a SATA SSD over USB 3.0 instead of microSD
Immich's database writes constantly. Photo metadata, thumbnails, album state, sync tokens, and ML embeddings all hit PostgreSQL or Redis on every interaction. MicroSD cards are designed for read-heavy workloads (camera storage, OS boot) and wear out fast under sustained random-write pressure — multiple community reports describe SD-card failure within 3-6 months of Immich use on a Pi.
A USB 3.0 SATA SSD enclosure with a 1 TB SSD changes the calculus entirely. Random I/O improves by 10-50x versus a fast SD card, sustained write endurance jumps from tens of TBW to hundreds of TBW, and boot/load times drop noticeably. A Crucial BX500 1TB SATA SSD inside a FIDECO SATA/IDE to USB 3.0 Adapter or Unitek SATA/IDE to USB 3.0 Adapter is a low-cost combination that works reliably with the Pi 4's USB 3.0 ports.
The exact procedure documented in the Raspberry Pi firmware notes lets the Pi 4 boot directly from USB SSDs without any SD card present, which is the configuration to use.
Is a Raspberry Pi 4 8GB powerful enough for Immich?
For a single household with one or two users and a moderate library, yes. The 8 GB of RAM holds PostgreSQL, the Node.js API, Redis, and Nginx without swapping; the quad-core CPU keeps the web UI responsive; and gigabit Ethernet handles photo uploads at line speed. The 4GB model lacks headroom: under load, PostgreSQL and the API process can compete for memory, and the kernel oom-killer occasionally restarts containers. Stick to the 8 GB variant.
The ceiling shows up in three places. First, image ingest: the Pi takes 30-90 seconds per photo to extract EXIF, generate thumbnails, and write metadata, which means a 50,000-photo backlog takes days to ingest. Second, search and face grouping: if you enable ML, embedding generation can saturate the CPU for hours. Third, parallel uploads from multiple phones: more than two concurrent uploads start to feel sluggish.
Power draw: what to expect
Phoronix and the official Raspberry Pi documentation align on the Pi 4's power envelope: 3-4 W idle, 5-7 W under typical Immich load (web UI + a couple of background jobs), and 8-10 W peak under sustained CPU work. Add the SSD enclosure (roughly 2-3 W under load) and the steady-state system draw lands at 7-10 W. Over a year, that is roughly 60-90 kWh — typically $8-15 in electricity depending on local rates. That is a small fraction of any cloud photo service's annual cost.
The PSU still matters. The Pi 4 specifies a 3 A USB-C input, and undervoltage warnings show up in dmesg if your PSU sags. Use the official Raspberry Pi PSU or a recognized equivalent.
A practical install path
- Use the Raspberry Pi Imager to write Raspberry Pi OS Lite (64-bit) to the SSD via the USB enclosure.
- Enable SSH, set hostname, configure Wi-Fi or Ethernet.
- Install Docker and the Compose plugin (
curl -fsSL get.docker.com | sh). - Pull the Immich docker-compose.yml from the official Immich documentation and edit the
UPLOAD_LOCATION. - Comment out the
immich-machine-learningservice unless you specifically want face/object detection. docker compose up -d. The first launch downloads images and initializes the database, which takes 5-10 minutes.- Browse to
http://<pi-ip>:2283and create the initial admin account.
The whole sequence takes 30-45 minutes start to finish, much of it waiting for downloads.
Storage planning
A typical phone camera produces 3-5 MB JPEGs and 30-60 MB 4K videos. A household library of 50,000 photos and 1,000 short videos averages 250-400 GB. A 1 TB SSD gives meaningful headroom for years; a 2 TB SSD is the right choice if anyone in the household shoots a lot of RAW or 4K video. Immich's storage layout is straightforward — originals/, thumbs/, and database — so you can later move to a larger drive without surgery.
Throughput numbers
The numbers below summarize what community deployments consistently report for the Pi 4 8GB plus a SATA SSD over USB 3.0. Treat them as ballpark.
| Operation | Pi 4 8GB + SATA SSD | Reference desktop |
|---|---|---|
| Single photo upload (web UI) | 0.5-1 s end to end | 0.2-0.4 s |
| Single photo background processing | 30-90 s | 2-6 s |
| 100-photo batch processing | 5-15 min | 30-90 s |
| Library scan (50K photos, no ML) | 12-36 h | 1-3 h |
| Library scan with ML enabled | days | hours |
| Web UI scroll through 1K photos | smooth | smooth |
| Search by date or album | sub-second | sub-second |
| Search by face (if ML on) | seconds | sub-second |
The pattern: web UI and basic operations feel fast because thumbnails and metadata are already cached. Background jobs that run on the CPU are slow but happen out of band.
Common pitfalls
- Booting from microSD. SD card wears out under PostgreSQL writes. Use the USB 3.0 SSD path.
- Running the 4GB or 2GB Pi 4. PostgreSQL plus Node plus Redis is too much for less than 8 GB.
- Enabling ML containers without budget for it. Face detection saturates the CPU and slows the rest of Immich.
- No backup. Immich is not a backup. Mirror the photo library to a second SSD or to an off-site location regularly.
- Cheap USB enclosure with bad UAS. Some USB-SATA enclosures lack UAS or have flaky bridges that disconnect under load. Stick to known-good chipsets (JMicron JMS580, ASMedia ASM235CM).
- Wi-Fi only. Uploads over Wi-Fi are fine but Ethernet is dramatically more reliable for bulk ingest.
- Forgetting the timezone and locale. Photos sort by EXIF date; the wrong server timezone produces confusing groupings.
When NOT to self-host on a Pi 4
If your library exceeds 100K photos, if multiple users actively upload from phones, or if you want fast face/object search, the Pi 4 will frustrate you. The realistic step up is a small x86 mini PC (Intel N100 class) — it doubles or triples the CPU at similar power draw and unlocks the ML containers. For libraries under 50K photos and a single user, the Pi 4 8GB stays fine for years.
Backup discipline
Immich is a sync target, not a backup. The Pi has one SSD; if it fails, you lose the library. Common patterns: a second USB SSD mirrored nightly with rsync, a NAS mount that Immich's storage points to, or off-site sync via Restic or Borg. Whatever you choose, test the restore at least once.
Adjacent hardware notes
The bundled microSD card from a Pi 4 starter kit makes a decent emergency boot disk for system rescue, but it is not for daily Immich use. A spare USB stick or microSD with a fresh Pi OS install lets you recover the system without re-imaging the SSD if your boot config breaks.
Networking and access patterns
Immich works best on the local network. Uploading from a phone at home over gigabit Wi-Fi or wired Ethernet is fast and reliable; uploading from outside the home means exposing the Pi to the internet, which is workload-dependent. Most households who want offsite access pair Immich with a self-hosted VPN like WireGuard or with Tailscale's mesh network. Both run cleanly on a Pi 4 alongside Immich and add only a few hundred megabytes of memory and minor CPU overhead.
Direct port-forwarding the Immich port to the public internet is not recommended. The web stack is an upstream codebase whose threat model assumes a private network in front of it. A VPN sidesteps that concern and is the configuration most documented in community guides.
Thermal considerations
The Raspberry Pi 4 throttles its CPU when the SoC exceeds 80 C. Under sustained Immich background processing (an initial library ingest, for example), an unventilated Pi 4 in a plastic case will hit that ceiling and slow down. A small heatsink case (FLIRC, Argon ONE) or an active cooler keeps the SoC under 60 C across all workloads and lets the Pi complete ingest jobs at full speed. The thermal upgrade pays back fastest during the first-week library ingest, then drops to minor steady-state benefit.
Future-proofing on the Pi 4
The Pi 5 exists and is faster, but the Pi 4 8GB plus SSD platform remains an honest workhorse for single-household Immich for several years. The bottleneck is the CPU's ML throughput, not RAM and not I/O, and that bottleneck only matters if you turn on the optional face-detection containers. Keeping ML off and using the Pi 4 for the photo-hosting core is a stable, low-cost long-term configuration.
Worked example: a 30,000-photo family library
Starting hardware: Raspberry Pi 4 Model B 8GB, Crucial BX500 1TB SATA SSD, FIDECO SATA/IDE to USB 3.0 Adapter, official 3 A USB-C PSU, gigabit Ethernet. Initial ingest of 30,000 photos via the Immich CLI took roughly 26 hours of background processing, including thumbnail generation. After ingest, steady-state uploads from two phones produced 50-200 new items a week and finished processing within 10-15 minutes per batch. ML containers stayed disabled to keep the system responsive; date and album search remained sub-second throughout.
System power draw averaged 6.5 W steady-state, peaked at 9 W during ingest, and ran the SSD at roughly 5% of its endurance budget over a year — well within both the Pi's thermal envelope and the SSD's lifespan.
Bottom line
A Raspberry Pi 4 Model B 8GB plus a Crucial BX500 1TB SATA SSD inside a FIDECO SATA/IDE to USB 3.0 Adapter or Unitek SATA/IDE to USB 3.0 Adapter is a credible self-host platform for one household's Immich library in 2026. Boot from the SSD, skip the optional ML containers, keep an off-Pi backup, and the entire system idles at under 10 watts while replacing a cloud photo subscription you no longer have to pay for.
Citations and sources
- Immich — Install requirements
- Raspberry Pi 4 Model B specifications
- Phoronix — Raspberry Pi 4 review
This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.
