On this page
Of all the reasons to build a homelab, this might be the most emotionally compelling: your photos are the one irreplaceable thing you own, and right now you’re renting the shelf they sit on. Google Photos, iCloud, whichever — the price creeps up, the free tier shrinks, and one day you’re paying monthly rent on your own memories.
Immich fixes that. It’s a self-hosted photo and video backup that looks and feels like Google Photos — timeline, albums, sharing, face recognition, “show me photos from the beach” search — except it all runs on your homelab, and the photos never leave your house.
Before you start
Immich runs with Docker Compose, so you need a Docker host. On Proxmox the two clean options are a dedicated Docker LXC or a small VM — see Docker on Proxmox: LXC vs VM to choose. If you’ve never written a compose file, run through Your First Docker Compose Stack first; this will feel familiar afterward.
The single most important decision here is where the photos physically live. Point Immich’s upload location at a shared storage volume or a dedicated disk — never the container’s own root filesystem. Then, no matter what happens to the Immich container, your originals are safe and independently backup-able.
Install Immich
Immich ships an official compose file and an example environment file. You download both, change two or three values, and start it.
On your Docker host, make a folder and pull Immich’s own release files. Using the official files (rather than hand-writing your own) means you always get the correct, matching set of services.
mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
Open .env and set where photos are stored and a database password. The rest of the defaults are fine to start.
# Where your photos and videos will be stored.
# Point this at your shared storage or a dedicated disk:
UPLOAD_LOCATION=/tank/photos
# Set a strong database password (any long random string):
DB_PASSWORD=change-me-to-something-long-and-random
# Keep the version pinned to the release you downloaded:
IMMICH_VERSION=release
Start the whole stack. The first launch pulls several images (server, machine-learning, PostgreSQL with the VectorChord vector extension, and Redis) so give it a few minutes.
docker compose up -d
Immich isn’t a single container — it’s a small stack: the main server, a machine-learning service (faces and smart search), a Redis cache, and a PostgreSQL database using the VectorChord extension for fast similarity search. Recent Immich versions migrated to VectorChord from the older pgvecto.rs extension, which is handled automatically by the official compose file. You don’t have to manage any of this — compose does.
Browse to http://DOCKER-HOST-IP:2283. The first account you create is the administrator. Set it up, and you’re looking at an empty (for now) photo timeline.
The part that hooks you: phone auto-backup
Install the Immich app from the App Store or Google Play. Open it, enter your server URL (http://YOUR-SERVER-IP:2283 on your LAN, or a Tailscale address when you’re out), and log in. Turn on backup, pick which albums to include, and that’s it — from now on every photo you take uploads to your server in the background.
Don’t port-forward Immich to the internet. Instead, install Tailscale on your phone and your homelab. Your phone then reaches Immich over an encrypted private tunnel, so background backup works on cellular exactly as it does at home — with none of the exposure of a public port.
Once your library is in, Immich’s AI quietly indexes it: it groups faces so you can name people, recognises objects and scenes so text search actually works, and plots geotagged shots on a map. It runs entirely on your hardware — no cloud, no scanning, no ads.
Keep your memories safe
Immich holds irreplaceable data, so treat it like it. Because your originals live on a separate volume, they’re easy to protect:
- Snapshot and back up the Docker host with Proxmox Backup Server.
- Keep an independent copy of the
UPLOAD_LOCATIONfolder — the 3-2-1 rule applies to photos more than anything. - Read release notes before a major version jump, and update with a simple
docker compose pull && docker compose up -d.
You’ve just replaced a monthly bill with something you own outright, and your photos are finally home. Add it to your Homepage dashboard and admire the growing stack — then head back to the roadmap for the next build.
Related posts:
- Your First Docker Compose Stack — the deployment pattern Immich uses
- Homelab NAS with Samba Shares — where to store a growing photo library
- Proxmox Storage Guide: LVM, ZFS, NFS, and Ceph — plan disk space for years of photos
- Proxmox Backup Server — back up the library you now own
- Creating Your First LXC Container — an alternative host for Immich
- Tailscale Subnet Router — reach your photos securely from your phone
Comments
Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.