Photoprism
photoprism is a web based photo management application.
From its website:
PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way. You can run it at home, on a private server, or in the cloud.
Features:
- Browse all your photos and videos without worrying about RAW conversion, duplicates or video formats
- search: Easily find specific pictures using powerful search filters
- places: Includes four high-resolution world maps to bring back the memories of your favorite trips
- Play Live Photos™ by hovering over them in albums and search results
- people: Recognizes the faces of your family and friends
- Automatic classification of pictures based on their content and location
What I found is that it does most things automatically.
My implementation:
- I use a docker instance for photoprism linked to a
mysql
database. (actuallymariadb
). - This photoprism instance is set as
AUTH=public
, so no authentication. Users on my home network can connect directly. From the Internet, I am using an nginx reverse proxy. This reverse proxy requires authentication. - For photo sharing, a different photoprism instance is used pointing to the same
file system and mysql as the main instance. This instance however has
AUTH=password
enabled, so onlyshared
links can be visited. - For uploading photos from my iPhone, I am using PhotoSync. This can be
configured to upload directly to photoprism using WebDav. (See instructions for
syncing with mobile devices.)
On the other hand, it is complicated for me due to permission problems in my home
network. For that reason, I am using a small container running a
sshd
daemon and I sync to that small container usingsftp
protocol.
Some issues I found:
- face recognition is a bit wonky. Specially for kid's faces.
- some tweaks may be needed to get things to display just right.
- running using the embedded
sqlite
database won't scale beyond a handful of photos. - I have a photo library of 400GB. It took a long time to index.
Before I would copy files from my camera to my server. In the case of video files, a re-encoding step was needed. With todays smartphones this is not needed. The smartphone can sync directly to the server and files are already compressed with a good enough CODEC.