Photos and personal home videos are among the most irreplaceable digital possessions you own. Commercial cloud photo backup platforms (like Google Photos and Apple iCloud) lock your family memories into proprietary ecosystems, compress your original media files, and subject you to ever-increasing monthly subscription costs. Immich is a high-performance, self-hosted photo and video backup solution designed specifically to match the polish, responsiveness, and convenience of commercial alternatives.

Running Immich on a Raspberry Pi 4 or 5 allows your entire household to automatically back up full-resolution photos and videos from iPhones and Android devices straight to local storage under your complete physical ownership.

This guide walks you through hardware selection, mounting dedicated high-speed storage, deploying the multi-container Immich stack with Docker Compose, optimizing machine learning workloads on ARM, configuring automated mobile backups, and safeguarding your library.

Hardware planning and storage requirements

Immich is an advanced, feature-rich platform. It includes background facial recognition, AI semantic clip search ("search for dog on beach"), EXIF geolocation mapping, RAW image processing, and video transcoding.

  • Raspberry Pi Model: A Raspberry Pi 5 or Raspberry Pi 4 with 4 GB or 8 GB of RAM is strictly required. A 64-bit operating system is mandatory. Because machine learning and database vector queries demand memory, 8 GB boards deliver the smoothest experience.
  • Dedicated External Storage: Do not store your photo library on a microSD card. MicroSD cards have limited write endurance and will degrade rapidly under the continuous I/O load of photo uploads, thumbnail generation, and database logging. Connect a fast USB 3.0 SSD or NVMe drive formatted with ext4.
  • Network: Connect your Raspberry Pi via wired gigabit Ethernet to ensure rapid multi-gigabyte photo sync sessions from mobile devices.

Mount dedicated external storage

Identify and mount your external storage drive:

BASH
sudo mkdir -p /mnt/photos
sudo blkid /dev/sda1

Add your drive to /etc/fstab using its unique UUID:

TEXT
UUID=your-uuid-here /mnt/photos ext4 defaults,noatime,nofail 0 2

Mount the storage and create designated Immich data folders:

BASH
sudo mount -a
sudo mkdir -p /mnt/photos/immich-library
sudo chown -R "$USER:$USER" /mnt/photos/immich-library

Deploy Immich with Docker Compose

Immich publishes an official Docker Compose template with microservices for the server, machine learning queue, Redis caching, and PostgreSQL equipped with the pgvector extension for semantic search.

Create an isolated directory for Immich:

BASH
mkdir -p "$HOME/immich-app"
cd "$HOME/immich-app"
curl -fsSL -o docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -fsSL -o .env https://github.com/immich-app/immich/releases/latest/download/example.env

Edit the .env configuration file:

BASH
nano .env

Update your upload storage location and database credentials:

INI
UPLOAD_LOCATION=/mnt/photos/immich-library
DB_PASSWORD=your_secure_postgres_passphrase
IMMICH_VERSION=release

Inspect the docker-compose.yml file. On low-power ARM devices, we recommend adding resource limits or configuring the machine learning service appropriately to avoid overloading the CPU during initial bulk imports.

Launch the Immich stack in the background:

BASH
docker compose up -d
docker compose logs -f

Allow several minutes for the PostgreSQL database migrations and Redis caches to initialize. Open http://<YOUR_PI_IP>:2283 in your browser.

Initial onboarding and administration

When you first access Immich at port 2283:

  1. Create Admin Account: Set up your primary administrator email, password, and display name.
  2. Account Settings: Review settings for automatic storage paths, face detection, and reverse geocoding.
  3. Multi-User Household: Immich supports isolated accounts for every family member. Under Administration -> Users, create individual accounts for household members so personal camera rolls remain private.
  4. Partner Sharing: Like Google Photos, family members can enable Partner Sharing to view each other's photo feeds seamlessly.

Machine learning optimization on Raspberry Pi

Generating AI semantic embeddings and facial recognition across tens of thousands of existing photos requires substantial mathematical compute:

  • Under Administration -> Settings -> Machine Learning Settings, you can select lightweight neural models (like MobileCLIP-s2 or ViT-B-32) designed for lower memory consumption.
  • If you are uploading a massive 50,000+ photo archive from Google Takeout, consider temporarily setting Concurrency to 1 in Administration -> Job Settings to keep CPU temperatures cool and ensure the web interface remains snappy during processing.

Mobile app backup configuration

The primary strength of Immich is automated background camera roll synchronization:

  1. Download the official Immich app from the Apple App Store or Google Play Store.
  2. Enter your server URL: http://<YOUR_PI_IP>:2283 (or your private domain configured through Nginx Proxy Manager/Tailscale).
  3. Log in with your user credentials.
  4. In the app settings, tap Backup, select the camera albums to back up, and enable Foreground / Background backup.
  5. Enable Original Quality to ensure your photos, 4K videos, and Apple Live Photos are backed up completely untouched.

Automated database backup strategy

Your photo files are stored safely in /mnt/photos/immich-library, but albums, face tags, and metadata live inside PostgreSQL. Automate daily database dumps using cron:

BASH
docker exec -t immich_postgres pg_dumpall -c -U postgres | gzip > /mnt/photos/immich-db-backup.sql.gz

Save this backup archive to a separate secondary storage drive or cloud location.

Monitor Immich with Open Pi

Monitoring your Raspberry Pi during intensive machine learning photo analysis ensures your hardware stays well within operating limits.

With Open Pi on your phone: - CPU & Thermal Tracking: Monitor multi-core CPU load and temperature spikes while Immich processes new albums. - Storage Monitoring: Keep track of free gigabytes on /mnt/photos as high-resolution video clips sync from phones. - Container Overview: Monitor the health and memory consumption of the immich_server, immich_machine_learning, and immich_postgres containers.

Troubleshooting Immich

  • Mobile App Cannot Connect Outside Home: Use Tailscale or Nginx Proxy Manager with an SSL certificate. Modern mobile operating systems strictly require valid HTTPS connections for background background photo synchronization APIs.
  • Machine Learning Job Failing or Crashing: If the immich_machine_learning container restarts repeatedly, your Pi may be running out of memory (OOM). Ensure you have enabled at least 2 GB of swap memory on Raspberry Pi OS.
  • Storage Permission Errors: Verify that the user executing Docker has write permissions to /mnt/photos/immich-library.

Sources and further reading

Open Pi logo
Monitor your Raspberry Pi from your phone

Check real-time CPU, RAM, temperature, and service health for your home server projects with Open Pi for iOS and Android. Local-first, private, and no cloud account required.

Explore Open Pi App StoreGoogle Play
About this guide

Researched and validated against official project documentation and community standards on September 11, 2026. Review your board model, storage, and current release notes before deploying.