Guide
7 min read

Immich Post-Install Diagnostics: Volume Mounts, Sidecars, Timezones, and the Database Boundary

Immich is installed but misbehaving — the ML sidecar can't see your photos, timestamps are off by hours, an upgrade complains about the database. A diagnostics checklist for the volume and DB boundary.

Immich Post-Install Diagnostics: Volume Mounts, Sidecars, Timezones, and the Database Boundary

Immich's hard part isn't installing it — it's the cluster of small failures that show up after install, all rooted in the same two boundaries: how Docker volumes are mounted, and where the database's assumptions meet your storage. The machine-learning sidecar "can't find" your library, photo timestamps land hours off, an upgrade complains about the database. None of these are mysterious once you know they all live at the volume/DB boundary. Here's the diagnostics checklist.

Symptom 1: a sidecar/container can't see mounted folders

Immich runs multiple containers (server, ML, microservices) that must share the same view of your photos. When the ML sidecar "can't see" the library, it's almost always a mount mismatch:

  • Every Immich container that touches media must mount the library at the same path. If the server sees /usr/src/app/upload but the ML container mounts something else, they disagree.
  • Bind-mount ownership must match the container user, or it reads an empty/forbidden directory — the host-directory-ownership trap.
  • On NAS/network mounts, confirm the share is actually mounted on the host before Docker starts, or the container binds an empty path. Keep app state local and bulk media deliberate — the storage split.

Symptom 2: timestamps are wrong by hours

Photos showing up on the wrong day is a timezone boundary problem:

  • Set the container's TZ to your actual timezone; without it, Immich interprets times in UTC and your "midnight" photos jump a day.
  • EXIF vs filesystem time: Immich prefers embedded EXIF, but files lacking it fall back to filesystem mtime — which a careless copy can rewrite. Preserve timestamps when you move files (the data-migration discipline).

Symptom 3: upgrades expose database/storage assumptions

When an upgrade suddenly complains, it's the DB boundary surfacing:

  • Immich runs forward-only migrations; an interrupted or mismatched-version start can wedge it. Only ever move forward, and back up the database first — the upgrade-as-restore-problem.
  • The Postgres volume must persist across restarts and use the Immich-specified image/extensions; a generic Postgres or a lost volume breaks it.
  • Database and library must be consistent with each other — restore them together, never one without the other.

The boundary checklist

  • All media-touching containers mount the library at the same path, owned by the container user.
  • Network shares mounted on the host before Docker starts.
  • TZ set correctly; timestamps preserved on any file move.
  • Postgres on a persistent volume with the required image; DB + library backed up and restored together.
  • Upgrades go forward only, after a database dump.

Deploying Immich from a template avoids most of these by wiring the volumes, database, and environment consistently from the start:

ServerCompass selecting the Immich template before deploy A template deploy in ServerCompass provisions Immich's containers, shared volumes, and Postgres together — so the post-install boundary issues above mostly never appear.

Takeaway

Every confusing Immich post-install symptom traces to one of two boundaries: the volume mount (paths, ownership, network timing) or the database (timezone, persistence, forward-only migrations). Check those, keep the DB and library consistent, and Immich settles down — the app was fine; the boundaries needed minding.

immich
docker
postgres
volumes
photo-backup

Keep reading

Guide

Immich newcomers need a library-ownership plan before importing cloud photo archives

Getting Immich running is only the first step — before you import years of Google Drive, OneDrive, or iCloud photos, you need a clear plan for which folders Immich owns, where the data actually lives on disk, and how the rest of your NAS fits into the picture. Skipping this step costs weeks of reorganization or, worse, accidental data loss.

Guide
8 min

First-time self-hosted app launches need preflight maps before Docker, hosting plans, and per-client stacks

Fresh Reddit threads show beginners and small freelancers getting blocked before the application itself is the hard part. One Immich beginner wants to run it on Windows but gets stuck at Docker prerequisites. A Next.js freelancer is planning a separate app…

Guide
8 min

Automation builders need VPS sizing checks before moving n8n and databases out of Docker Desktop

Fresh n8n threads show small automation builders leaving local Docker Desktop and immediately hitting provider and resource-sizing uncertainty. One user wants to run n8n, Qdrant, Postgres, and Gotenberg on a production-like VPS without overpaying or…

Guide
6 min

An Easy Immich Install Path for People Who Don't Live in a Terminal

Immich's power scares off the people who'd benefit most. A gentler install path that skips the hand-edited Compose file and still lands a real, updatable, backed-up instance.

Guide

Homelab consolidation decisions now mix electricity costs, Immich storage, and future migration risk

Running multiple rack servers or stacking new services on aging hardware is forcing self-hosters to weigh power bills, storage safety, and the hidden cost of migrating everything later. Here is how to think through the decision before you buy or consolidate.

Deploy
25 min

How to Deploy Docker Compose Apps to a VPS (Multi-Container Setup)

Deploy multi-container applications with Docker Compose: app, database, cache, and reverse proxy all wired together with persistent storage.