Photoprism for self-hosted photo management

Photoprism: A true Google Photos replacement?

In my quest to rid myself of all Google services, and self-host all that I can, I found Photoprism awhile back as a possible Google Photos replacement. I tried it before, but it felt slightly unpolished so I decided to wait a bit for it to improve, but now that Google has announced they will start charging for storage on Google Photos, I decided to give Photoprism another shot.

Check out the Photoprism Demo to see what it looks like.

If it looks interesting, keep reading about my experience trying to get it to run (smoothly!).

If you’re on Yunohost, see my Yunohost installation guide.

Server Specifications

This is the system I am installing it on.

Lenovo Ideacentre Q190

  • IntelĀ® Mobile CeleronĀ® Dual-Core 1017U (1.60GHz 2MB)
  • 4GB PC3-10600 DDR3 SDRAM 1333 MHz
  • Debian 10

Installation #1

I followed the photoprism guide to install Docker Compose before beginning. I edited the volumes in the docker-compose.yml from my old installation and started indexing my huge photo collection.

This turned out to be a rookie move. My 176 GB photo collection took 202,000 seconds (about 56 hours) to index. Photoprism showed that I had 46,036 photos after finishing indexing.


  • Scrolling through photos is slow. After indexing my photos, my photo collection grew by many GB. The jpg thumbnails, and metadata files take up lots of space. My hard drive is only a 5400 RPM drive, I’m not sure how much speed I would get from moving to a 7200 RPM or even SATAIII SSD drive.
  • No batch editing! The only batch feature is highlighting many files to add them to an album, or archive them. This is a major problem.
  • Poor support for older video formats.
  • No way to delete photos from within the web browser interface.
  • No facial recognition. Hard to keep track of the people in my photos except by manually ’tagging’ people by keywords.

Installation #2

After exploring the docker-compose.yml file some more, and reading up on things I changed my thinking of how to run this. I moved the installation to my Lenovo Ideacentre Q190 running Yunohost. I put the volumes on my RAID1 3 TB 7200 RPM drives. I also discovered there is an option to use MariaDB or even MySQL instead of SQLite. It even says ““use MariaDB for better performance”” in the docker-compose file.

Also in Installation #1, my sidecar files, thumbnails, & metadata files were in a docker volume which is annoying. I changed the location for these files to be in my photo album.

/mnt/hermes (my RAID1 setup) /mnt/hermes/Pictures/import (folder to put files I want to add) /mnt/hermes/Pictures/originals (the organized area of my photos, after being imported) /mnt/hermes/Pictures/.photoprism (the database, sidecar and metadata files are stored here now)

This installation started so, so very fast. I could browse the files it added very quickly. Unfortunately, it bogged down my Yunohost system very quickly. This system only has 1 GB of swap space, and is running Nextcloud, my blog, and XMPP on it. It reached 100% CPU utilization very quickly, maxed out my 4 GB RAM, and my pitiful 1 GB swap space and the whole system became unresponsive.

Installation #3

  • Changed ‘workers’ setting to 2.
  • Switched my 1 GB swap partition, to a 5 GB swapfile.

This time it worked much better. Using ‘htop’ I could see RAM utilization hovering about 2.7-3 GB, and 1.5 GB of swap being used. All other services were responsive during indexing.

Stats After Indexing original pictures folder: 151 GB .photoprism sidecar/thumbnail folder: 72 GB


  • Give your photos a huge disk to live on. I would make a disk at least 3x or 4x times the size of your photos to give them room to grow because the metadata/sidecar/thumbnails take up lots of space.
  • Make the /.photoprism directory a part of your photo directory so you can easily move your whole collection to another bigger drive, or another computer in the future.
  • Use MariaDB, or MySQL, don’t use the default SQLite.
  • Turn off ‘Stacks’ in settings before you import photos. It’s super time consuming to ‘unstack’ photos.

Final Thoughts

Despite some of its shortcomings (batch editing, facial recognition), using Photoprism is still better than continuing to entrust my photos to Google Photos, and having to pay them for using my data.

And a big thank you Google! If you didn’t decide to charge for Google Photos, I don’t think I would’ve taken the plunge and committed to using Photoprism. I hope many people start improving, funding, and using this in the coming months. I am going to kick a $50 USD donation right now.

Built with Hugo
Theme Stack designed by Jimmy