I Built My Own Google Photos with Immich
Hosting Immich
After Jellyfin (video) and Audiobookshelf (audio), I wanted something like Google Photos, but not Google Photos — automatic phone backups, a clean timeline, and the fun stuff like face grouping and smart search. That’s where Immich fits: a self-hosted photo/video manager built around browsing, searching, and backing up your library on your own server.
The key decision I made for this install: store all uploaded photos/videos on a separate hard drive mounted at: /srv/storage/pictures.
1. Create the Immich app folder
This is just where I keep the compose file + env file.
sudo mkdir -p /srv/appdata/immich
sudo chown -R $USER:$USER /srv/appdata/immich
cd /srv/appdata/immich
2. Download the official docker-compose.yml + .env
Immich’s docs have you grab these from the latest release assets.
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
3. Put the photo library on a mounted hard drive
I’m making sure the heavy stuff (photos/videos) lives on the big drive, while the database stays fast and local. I made sure the drive is mounted before starting Immich, so uploads don’t accidentally land on the root disk.
sudo mkdir -p /srv/storage/pictures/immich
sudo mkdir -p /srv/appdata/immich/postgres
sudo chown -R $USER:$USER /srv/storage/pictures/immich /srv/appdata/immich/postgres
Edit .env:
vim .env
Set these values:
# Store uploaded photos/videos on the mounted drive
UPLOAD_LOCATION=/srv/storage/pictures/immich
# Keep database data on the server disk
DB_DATA_LOCATION=/srv/appdata/immich/postgres
# Timezone
TZ=America/Los_Angeles
4. Start Immich
docker compose up -d
5. First boot
On another device, I opened: http://<server-ip>:2283
Clicked Getting Started, created the first account, and that first user becomes the admin. Next, I uploaded a photo from the browser and watch it land on the hard drive path.
6. Mobile app + auto-backup
Once Immich was running on my LAN, the next thing I did was get my phone backing up automatically. Immich’s Quick Start flow is basically: install the app, connect to your server, then enable backup from the cloud/backup screen.
Then in the app I:
- opened the Backup screen (cloud icon)
- selected the album(s) I want backed up
- toggled Enable backup
On iOS, I also made sure Background App Refresh is enabled for Immich (and I avoid Low Power Mode when I want uploads to happen), because iOS controls when background uploads actually run.
The first batch of photos took a while and made the fans run, but after that everything worked smoothly.