Introduction: The Headache of Photo Backup
You’ve probably hit that moment when your phone storage is full, but you’re too tired to deal with it? Immich fixes that. The mobile app for Android and iOS syncs your camera roll directly to your Raspberry Pi 5, no middlemen involved.
Now, here’s where things get interesting. With a Raspberry Pi 5, the slick open-source app Immich, and a bit of know-how, you can ditch the cloud circus. Store your photos, auto-sync them from your phone, and keep everything encrypted and under your control. No fees. No tracking. No data centers peeking at your dog selfies.
What you’re building here isn’t just another photo backup solution. It’s your personal, private photo fortress with real power and performance—running off a Pi you can fit in your hand.
Key Takeaways
Immich: The Private Photo Backup You’ve Been Waiting For
Most people think of photo backups and immediately default to iCloud, Google Photos, or maybe some external hard drive that’s been collecting dust since the Obama administration. But if you’re even slightly fed up with cloud lock-ins or monthly charges, Immich hits different.
This isn’t your average homebrew app that breaks after every update. Immich gives you automatic uploads, slick facial recognition, and smart EXIF metadata tagging—all wrapped up in a clean web UI. It supports video playback, album sharing, and even handles duplicate detection, so you’re not storing 40 versions of the same sunset.
And don’t worry, it’s not just a desktop thing. The Immich mobile app works for both Android and iOS, with background syncing that doesn’t nuke your battery. You can fire off a quick QR login, set your upload preferences, and boom—your pics are stored safely on your own gear.
What about usability? Spoiler: it’s actually smooth. The web interface doesn’t look like it came from 2009. Plus, it exposes a robust API, so if you’re the kind of person who likes scripting your own workflows, Immich’s got your back.
Raspberry Pi 5 as a Home Photo Server
All right, if you’re thinking, “Can a Pi really handle this?” the short answer is: the Raspberry Pi 5 isn’t your older cousin’s Pi 3. This thing brings some real muscle. You’ve got a 2.4GHz quad-core processor, actual PCIe expansion, and full-speed USB 3.0 ports. That means faster access to your SSD storage, quicker uploads from your phone, and less waiting around when browsing your photos.
With a decent NVMe or SATA SSD, your image database and media files load fast—none of that external hard drive stutter. And cooling? Yeah, this thing gets warm under load. Stick it in a good case with a fan like the Argon One, and you’ll be fine. Add a proper power supply (don’t cheap out here), and it’ll run 24/7 without flinching.
In short, this isn’t some janky setup where you’re praying the next update doesn’t brick it. It’s a reliable, low-power self-hosted photo solution that fits on your desk, draws under 10 watts, and never asks for a monthly payment.
Step-by-Step Setup: Immich on Raspberry Pi 5
Let’s get one thing out of the way: you’re going to use Docker Compose. Not because it’s trendy, but because it actually makes your life easier. Immich is made up of multiple services—web, machine learning, database, and Redis. Trying to manually install all that is like assembling IKEA furniture without instructions.
Start by flashing Raspberry Pi OS Lite or Ubuntu Server onto an SD card or SSD. Boot it up, do your updates (sudo apt update && sudo apt upgrade
), and install Docker. Then, pull down Immich’s official docker-compose.yml
from GitHub.
You’ll define volumes for:
- Upload directory: where all the photos go
- Config: app settings and environment variables
- Database: SQLite by default, or PostgreSQL if you’re fancy
- Redis cache: performance booster for image processing
Here’s where you map ports (usually 2283), set your timezone, and define storage paths. If you’re using object storage, you’ll also configure Rclone or the built-in S3 backend.
Once you run docker compose up -d
, Immich spins up and stays up. It’s persistent, updates are easy, and logs stay clean. Plus, since it’s containerized, you can wipe everything and start over in minutes if something goes sideways.
Making It Mobile: Syncing Your Phone to Immich
You know that moment when your phone storage is full, but you’re too tired to deal with it? Immich fixes that. The mobile app for Android and iOS syncs your camera roll directly to your Raspberry Pi 5, no middlemen involved.
First time setup? Open the app, scan the QR code on your Pi’s web interface, and you’re in. From there, just enable auto-upload, pick the folders you want, and set it to upload over Wi-Fi only if you’re not trying to burn through mobile data.
There’s also background sync support, but depending on your phone’s battery optimization settings, you might need to whitelist the app. Otherwise, it could snooze in the background like that coworker in Zoom meetings.
The sync respects your EXIF data, so original timestamps and folder structures stay intact. You can even choose whether to upload videos, and set image compression if you’re tight on storage.
Once it’s live, every time you snap a photo, it quietly flies into your local photo vault—no pop-ups, no nags, no Google asking if you want to “free up space.”
Storage That Works: Using S3-Compatible Services
Let’s say your Raspberry Pi 5 has limited local storage. You want off-site backups, but without selling your soul to AWS. That’s where S3-compatible storage options come in. You can plug into services like MinIO, Wasabi, or Backblaze B2 without needing Amazon’s pricing roulette.
Here’s the deal: Immich supports storing your photos and videos on S3 through native config or using Rclone as a bridge. You’ll set up your bucket, grab your access and secret keys, and point Immich to it in your .env
or Docker Compose file.
You can even define storage classes and lifecycle rules. Want photos older than a year to move to cold storage? Done. Want versioning? That too. Encryption? Of course. It’s all handled by your storage provider or MinIO setup.
By linking Immich to object storage, you offload the big media files and keep your Pi’s local drive clear for metadata and thumbnails. It’s scalable, fast, and lets you do things your way—with backup redundancy and geographic separation if you’re using cloud providers.
Organizing and Indexing Like a Pro
All right, so your photos are safe and synced—but can you find that beach photo from 2017 where Uncle Bob wore socks with sandals? With Immich, the answer’s yes, and probably faster than your brain can recall it.
The magic starts with EXIF metadata. Immich reads the time, date, camera model, GPS location, and even focal length. It then organizes your photos automatically by date, location, and device. You don’t have to lift a finger—unless you want to get fancy and start tagging.
The app also does face clustering, which lets you group all photos with Grandma without typing her name 100 times. You can later tag people for real facial recognition. It’s not creepy; it’s just efficient.
Thumbnails are generated on upload, so browsing is snappy. And there’s duplicate detection baked in, so it flags those identical photos you took five times while adjusting your lighting. No more wasting storage on near-identical cat selfies.
Immich also supports reverse geotagging using the coordinates in your photo metadata to label places like “Central Park” or “Berlin” instead of just raw GPS numbers.
Everything’s stored in a searchable PostgreSQL or SQLite database, so your photo archive turns into a quick-lookup library.
Accessing Your Photos from Anywhere Securely
So you’ve got this slick private photo vault humming on your Raspberry Pi 5, but now you want to show off baby pictures to your aunt across the country. You need remote access, but without opening your digital front door to the internet’s weirdos.
Start by setting up NGINX or Caddy as a reverse proxy. This lets you serve Immich over HTTPS using a domain like photos.yourdomain.com
. Use Let’s Encrypt to get a free TLS certificate so browsers stop warning you about sketchy connections.
For a smarter route, use Tailscale or ZeroTier. These tools build a private VPN mesh between your devices—no port forwarding, no router headaches. Once installed, your phone can connect directly to your Pi like it’s on the same local network, even if you’re on hotel Wi-Fi.
You can also enable login controls, like requiring a strong password or setting up two-factor authentication. Immich doesn’t do 2FA natively yet, but you can lock down access with a reverse proxy that supports it.
And if you’re the type who shares albums, Immich supports private sharing links. So you can send a wedding album to family without posting it on social media—and without Google crawling every pixel.
Staying Secure: Encrypt Everything and Monitor It
You’ve got your system set up and your photos syncing, but none of it matters if someone breaks in digitally and swipes your memories. This is where encryption and basic hardening turn your home photo server from “cool project” into something actually secure.
Start with in-transit encryption—use HTTPS with Let’s Encrypt, and don’t even think about exposing Immich over plain HTTP. Your login info and photo metadata need to travel securely. Then there’s at-rest encryption: if you’re using MinIO, Backblaze B2, or Wasabi, they offer native encryption. Turn it on.
On the Pi side, you can encrypt the drive with LUKS or use Rclone’s crypt feature when syncing to object storage. It scrambles filenames and contents so even if someone gets the raw data, they get gibberish.
Now tighten the entry points. Use UFW or iptables to lock down every port you don’t absolutely need. Set up Fail2Ban to block repeated login attempts. Ditch passwords for SSH keys on your Pi. It’s faster, safer, and less hackable.
Finally, monitor the whole thing. Use Netdata or Grafana with Prometheus to keep tabs on disk usage, CPU load, and failed requests. You’ll catch slowdowns or weird behavior before it becomes a problem.
Keeping It Running: Backup, Scale, Restore
Look, setting things up is half the battle. Keeping it running without losing your weekend to server drama? That’s where good maintenance habits kick in.
First, set up scheduled backups. Immich stores your metadata in a PostgreSQL or SQLite database. If that dies, your tags, albums, and face clustering data go with it. Use cron jobs or systemd timers to back up your database and configs daily. If you’re backing up to object storage, use Rclone to sync only new or changed files.
Need more performance? Switch from SQLite to PostgreSQL. SQLite works fine for small libraries, but PostgreSQL scales better for large collections with thousands of images and videos. Immich supports both—just update your Docker Compose file.
You can also split services. Want Immich’s backend on a Pi but use a cloud bucket or remote PostgreSQL server? Go for it. Docker lets you point containers wherever you want.
For storage scaling, expand to RAID or mount additional SSDs. Or migrate your media to a dedicated NAS. As long as you update your mount paths and keep Immich in the loop, it keeps trucking.
And don’t ignore logs. Check your Docker logs, monitor disk health with smartmontools, and always leave yourself a recovery plan. If you need to nuke everything and start over, your backups should have your back.
Troubleshooting: When Things Go Sideways
Let’s not pretend everything works perfectly forever. Sometimes, your photos don’t sync. Sometimes, the app just stares at you like a broken vending machine. Here’s how to deal with the usual suspects.
Problem 1: Mobile uploads fail. First, check if the app has permission to access all files and run in the background. Some Android versions throttle background tasks unless you manually whitelist Immich. Also, check if you’re out of space—yes, that happens more than you’d think.
Problem 2: “Sync complete” lies. If the app says it’s done syncing but photos are missing, open the web UI and check the upload logs. Look for error codes, especially anything pointing to network timeouts or file size limits. Some networks kill large uploads silently.
Problem 3: Object storage won’t mount. Make sure your access keys are still valid, and test your S3 endpoint with another tool like s3cmd
or Rclone. Sometimes it’s not Immich—it’s your provider playing dumb.
Problem 4: Slow performance or 500 errors. Check your Docker logs for out-of-memory errors or database locks. Immich’s machine learning service can be RAM-hungry, especially on low-spec Pis. Restart the containers individually to isolate the culprit.
Problem 5: UI weirdness or app crashes. Clear your browser cache, update your Docker images, and always be on the lookout for upstream changes in Immich’s GitHub issues. New releases fix a lot—just make sure to back up before pulling them.
Comparing Alternatives: What Else Is Out There?
All right, so maybe you’re wondering, “Is Immich really the best option?” Totally fair. There are other tools in the self-hosted photo backup world, but each comes with its own quirks.
PhotoPrism is the go-to for people who love labels and search filters. It supports RAW images, machine learning, and has decent album management. But it’s heavier than Immich and doesn’t play as nicely with object storage out of the box.
LibrePhotos is the spiritual fork of the old OpenPhoto. It’s got face recognition and timeline views, but setup can feel more DIY—more scripts, more tinkering. Performance on the Raspberry Pi can be sketchy too.
Nextcloud Photos gives you something close to Google Photos inside a larger productivity suite. If you’re already using Nextcloud for file sync and calendars, it’s tempting. But for purely photo-focused use? It’s slower and less intuitive.
Piwigo is great if you want a public-facing photo gallery. Not so much for personal backups. And apps like Shotwell and Digikam are better on desktops than servers.
The bottom line? Immich strikes the best balance between performance, mobile support, and object storage integration. Plus, it runs lean on a Raspberry Pi 5, which can’t be said for all the other options.
Final Thoughts and Next Steps
You’ve got the photos, the hardware, and now, hopefully, the know-how. Using Immich on a Raspberry Pi 5 gives you control, privacy, and zero recurring costs. Your mobile photos go straight to your self-hosted photo server, backed by object storage you actually trust.
No ads. No surprise bills. No random deletions when you hit a quota.
If you’re feeling ambitious, here’s what you can do next:
- Switch to PostgreSQL for more speed and stability
- Add RAID or a dedicated NAS to handle massive photo libraries
- Tighten security with 2FA via a proxy or VPN-only access
- Automate your backups with Rclone and scheduled snapshots
- Add user accounts for family photo uploads
This setup is solid today but built to grow with you. Whether you’re a privacy nerd, a DIY tinkerer, or just tired of paying Google, it gives you something rare: your photos, your rules.
FAQ: Immich on Raspberry Pi 5
Can Immich run well on a Raspberry Pi 5?
Yes, Immich runs smoothly on a Raspberry Pi 5, especially with SSD storage and active cooling. Performance is strong enough for syncing, face recognition, and web access.
Is Immich secure for storing private photos?
Yes, Immich supports HTTPS and can be paired with VPNs, reverse proxies, and object storage with encryption for both transit and rest. You control the access.
Does Immich support Android and iOS auto-upload?
It does. The mobile app enables background sync from your device’s gallery and maintains metadata, folder structure, and original timestamps.
Can I use cloud object storage with Immich?
Yes, Immich supports S3-compatible storage like MinIO, Wasabi, and Backblaze B2. You can offload heavy files and keep your local device lean.
What if I run out of space on the Pi?
Move media to object storage or external drives. Immich supports storage volume remapping, and you can mount new devices without breaking the setup.
What are the alternatives to Immich?
PhotoPrism, LibrePhotos, and Nextcloud Photos are popular alternatives. Each has different strengths, but Immich is optimized for mobile sync and container deployment.
References
- https://github.com/immich-app/immich
- https://min.io/docs/minio/linux/index.html
- https://docs.docker.com/compose/
- https://www.raspberrypi.com/products/raspberry-pi-5/
- https://tailscale.com/kb/