Writing

I Built My Own Google Photos with Immich

Saturday. Mar 28, 2026

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.