Linux

Where Does PhotoPrism Store the Index and Originals?

Where PhotoPrism keeps its index database, sidecars, cache, and originals in a standard Docker setup.

Last updated

PhotoPrism splits its world into originals (your photos, mounted read in) and a storage folder holding the index database, sidecar files, cache, and settings. In the stock Docker compose these are /photoprism/originals and /photoprism/storage.

The split is deliberate. Originals stay untouched while everything PhotoPrism computes lands in storage. Backups must therefore cover both mounts: originals for the pixels, storage for the years of indexing and face data. The official compose file uses these exact mount names, so third party guides assume them throughout.

Where PhotoPrism stores this, by platform

Linux
/photoprism/storage

index.db is the default SQLite database, sidecars/ holds generated metadata, cache/ holds thumbnails. Bind this whole tree to a host folder or named volume or every recreate starts from an empty library.

Linux
/photoprism/originals

Your photo library, mounted into the container. Imports land in /photoprism/import with the same treatment. Keep originals and storage on separate mounts so pruning one can never touch the other.

Frequently asked questions

how do i move photoprism originals safely

Reindex from Library > Index after moving files so the database at storage/index.db matches the new originals path. Moving originals without reindexing leaves ghosts of the old paths. Thumbnails regenerate on demand afterward.

does photoprism need a persistent volume

Yes. Map the storage folder to a persistent volume or the index database, settings, and sidecars vanish on container recreate. Originals and storage should be separate mounts so a config mistake cannot eat photos.

where is the photoprism database

In storage/index.db inside the storage folder (SQLite by default). Stop the container and copy the whole storage tree to clone an instance. MariaDB setups keep it in the database container instead.

Notice an outdated path? Let us know.