Photoprism – open-source Google Photos Alternative
photoprism.app
photoprism.app
Photoprism has superb performance - I have no lag going shifting through many, many photos.
Nextcloud lately upgraded their gallery, but it is still slow. It generates thumbnails on-the-fly. Maybe I can configure it somehow (I tried for v1 gallery but failed). Anyways, Photoprism is great and works out of the box. I like that I can select photos from different folders/views and do with selected photos something (like add to an album).
Moreover things works (Except delete, but archive is OK) for readonly volume, which is handy to mount nextcloud folder.
However a thing to note - you cannot use RPI4 with 2GB to use AI features - at least I had many other services running and RPI was lacking. But viewing photos was still good.
(We tried to make companion addons to improve photo metadata, etc. for several years, but eventually gave up because Nextcloud is too awful to work with from a dev's perspective.)
generating thumbnails on the fly doesn't have to be slow. It can be slow and often is as most implementation would rely on something like image magick or similar tool but you can get several order of magnitude faster if you go deeper.
I've spent a lot more time than I would dare to admit on that exact topic while working on my OSS project (https://github.com/mickael-kerjean/filestash) and I figured you could build tailored tool in C that rely on say libjeg and leverage very low level tricks like DCT scaling to do things much faster. Typically in Filestash creating a thumbnail takes about 15ms for a picture taken from my camera and it doesn't make a raspberry pi to break a sweat.
Whereas it works for photoprism. I can scroll fast or open a picture and just hold my arrow and it will shift through the pictures.
I'm currently using Immich and although it's still a while away from having a stable release, it shows a great deal of promise. I like that it's being built with a clearly stated purpose of being a Google Photos alternative. It may never be as seamless or smooth as Google Photos, but I think it will be perfectly enough for privacy-conscious self-hosters.
I see a sharing menu in one of their screenshots. Considering that it's self-hosted, how does sharing work in that system?
My server is hosted at home in a Raspberry Pi and an SSD for storage. I have a public domain name and it is forwarded to my home network through CloudFlare. Might be a little risky security-wise, but I want to eventually make this instance usable for my parents.
I personally use Resilio Sync [1] (for iOS and Android) and have tested SyncThing [2] (for Android), and PhotoSync [3] (for iOS and Android). They all work well.
[1] https://www.resilio.com/individuals/ [2] https://syncthing.net/ [3] https://www.photosync-app.com/home.html
There's an ignoreDelete option but the docs advise against using it[0] and IIRC the developers want to remove it.
[0] https://docs.syncthing.net/advanced/folder-ignoredelete.html
EDIT: Don't get me wrong, it's my favourite file syncing tool, especially as one of the few open source syncing solutions. But I worry it always gets recommended as a backup tool and people don't realise it'll also sync deletions, so they'd suffer data loss.
Resilio also doesn't appear to run on iOS.
Apple is very anticompetitive wrt iCloud Photos. There are not a ton on iOS.
Not as seamless as iCloud Photos but it works great.
I still have to click the notification, due to iOS limitations but having the notification show serves as a good reminder to run it.
This struck me... Us techy people should be able to use our knowledge to get more out of our tech setups.
But lately I've felt that opensource tooling has been falling behind. My mum can post a video to YouTube for everyone to see in seconds, but if I try to do the same with opensource tools, I will probably still be battling a bad transcode from ffmpeg that glitches on some family members phones and doesn't have sound for other viewers...
Then, when a user wants to watch a video, they could use HTTP range requests to download just the data they want to view from the megafile, in the format they need. If, midway through watching, their internet gets a bit slow, the browser could auto-switch to a different lower-res format. The megafile would have the necessary indexes etc to know which timestamps of which audio and video feeds are at which byte locations, and where keyframes are for easy switching.
Things like youtube have proprietary code to do this. But the opensource world doesn't have much comparable - at least nothing widely deployed to be able to just send a video to a friend, and know that whatever device and internet connection they have, they'll have a good experience.
You are going up against a probably 1000s strong team of equally techy people whose job it is to do what you are trying to cobble together. Unless there is a niche use case that you are trying to workaround, it is hard to solve a mainstream problem that isn't solved better by one of the Big Corps.
It would probably end up a mess like Wordpress plug-ins. But Wordpress works and it easyish for non technical people to set up..
But that misses the point, which is that in Google Photos you can manage the same collection from the phone or from the web. Adding a pic to an album should feel the same, no matter whether the pic is already synced or not yet synced.
I don't see a problem in using multiple different products to do the job for me.
Photorprism
Photostructure
Lychee
Digikam
Synology Photos (if you have a synology)
And probably a few others I am forgetting.
If you're thinking about self-hosting anything, my first recommendation is to get your backups in order now, before doing anything else. I wrote this a while back: <https://photostructure.com/faq/how-do-i-safely-store-files/>. Having a full, offline backup will only cost ~$20/TiB nowadays, which is cheap insurance if whatever app you try out doesn't quite behave as you expected it to.
The second step is to make sure your server is both hardened (<https://forum.photostructure.com/t/server-hardening-for-begi...>), and ideally, only available via a VPN (like TailScale) or at least via a reverse proxy (Cloudflare has a free solution). I compared and contrasted some of these solutions (along with instructions) here: <https://photostructure.com/faq/remote-access/#accessing-your...>
The situation for self-hosting your photos just a couple years ago was pretty bleak--especially if you had hundreds of thousands (or more!) of photos. That may sound like a lot of photos, but for people shooting digital for 20+ years, it really isn't!
Whatever image manager you pick, make sure the app follows existing metadata storage standards, so in the (seemingly inevitable) future when the app is abandoned, your photos are in directory structures that make sense to you, and the work you've put into organizing them isn't locked up in unreadable databases or folder structures.
Spoiler alert: I got burned by this issue with prior apps, so I designed PhotoStructure from the ground up with exactly this in mind: <https://photostructure.com/faq/why-photostructure/#open-stan...>. Unfortunately, many/most self-hosted solutions don't handle multiple source directories and configurable destination directories.
I normally suggest people just try it out on their stuff—it runs pretty much everywhere. Hop into our discord <https://phstr.com/go/discord> if you have any questions or comments, I’m online.
I don’t have my notes here, so I can’t elaborate much why. But the gist from my memory is that photoprism has a lot of features, and naturally no single user is gonna needs all of those. But the installation is quite a bit more painful, and it is slower as a result. I recalled it building tensorflow on my freebsd machine when installing (which failed, due to bazel failing to build, due to them hardcoding an url download of a library which recently got updated and the link doesn’t work, you get the idea).
> When you view your PhotoStructure library’s home page, you’ll see a random selection, or “sampling,” of images from your library. When you click When, you don’t see all photos in reverse-chronological order, but instead, a random “sample” of images from every year. Click on a year, and you’ll see a random sampling from each month.
This is... just horrendously bad
When I go back in time, same.
"On this day X years ago" is fun, but very optional.
Just random things presented to you... That is just weird.
Regardless, I’m in a bit of a weird situation for the next few months with regards to my home server setup, but I’m bookmarking this to come back & will be absolutely paying for the upgrades too. Thanks for your awesome work!
See https://git-annex.branchable.com/todo/Wishlist__58___Parity_...
I really love it because it does Google Photos' backup workflow where it backs everything up automatically, and allows you to clean up local storage for photos saved in the NAS, and it works reliably for both Android and iOS.
It's a feature that's absolutely necessary when managing phones and tablets from family members who aren't tech-savvy but definitely need to back every photo up without clogging up their phone storage.
I'm setting up setup a new phone which has google photo as the default gallery app, and if you're not in the US and/pr don't want to use the google services, most of the stuff you have in the menus is literally worthless.
The "print service", for one. It's right in your face most of the time, but there is no option to turn it off if you basically can't use it.
I've been using "Simple Gallery Pro", but it lacks basic video editing support. I don't need anything fancy, but trimming videos is something you often need to do for sharing.
Any recommendations on the same vein?
I've had a damn good life, and my kids have had a damn good childhood and my wife and I have done a damn good job of parenting.
It's so nice, and incongruent with 'the daily news cycle', to be reminded of these beautiful things, and it's also a reminder to continue the effort, because it really is so worthwhile.
When I'm too old to do much else, I want to retire into my past.
I actually had to stop using my own library to develop PhotoStructure, because I'd lose an hour or two just hopping through different memories.
I think reminiscing and story telling is the real value proposition here.
If the people in the photo aren't around to tell why a given video or photo or event is relevant, the context is lost, and the relevance of the photo, video, memory, or event is lost as well.
I think printed books with longer descriptions about any given photo or event can help retain relevance. I haven't really seen a DAM or image manager address this issue directly though.
I’ve never heard it stated quite like that.
My childhood was for my parents.
My children's childhoods were for me and my wife.
I don't have much of a personal recollection of my own childhood outside of photos and home videos. I know I had a happy, healthy childhood, but I don't recall specific moments of joy, at least not in the way I can recall and literally re-feel moments of joy captured in photos or videos of my children living through their childhoods.
I lived through their childhood as an adult, so I'll remember it, and be able to recall the joys and disappointments and fun. The same must be true for how my parents experienced and can recall my childhood.
Your childhood is for your parents.
I'm a nostalgic and expect to become even moreso as I age.
When we get / do / have something REALLY want, the satisfaction will wane very quickly. When something bad happens, it will follow us for months.
REALLY wanting things is, IMNSHO, indicative of not yet having reached a full level of maturity. I've felt the emptiness of the satisfaction of consumerism enough times to be able to suppress my immediate emotions and apply a thick layer of reality to it (generally along the lines of 'when the fuck am I going to have time to indulge in that, in amongst all these other things that I do with my time, I'd rather have the money than the thing sitting in a corner as another reminder that I have but one life to live'[0])
Also, focusing on the negatives is a choice. Bad things are to be moved on from, not to remain tethered to. (admittedly, this is incredibly variable depending on the psychological damage and susceptibility of the individual, but even so, one must always try to not let past negativity define the future).
Something I REALLY wanted, was to be able to rollerskate backwards (noticeably not a material thing, but a personal achievement / goal). Took me 18 months of monthly / weekly conscious effort and discomfort, but fuck, I can fucking do it, and look like a pro at least through an amateur's eyes. I'm telling you, that satisfaction doesn't wane! Not for me anyway. That's a fucking lifetime achievement for me, at my age, and I don't care if it would be two weeks work for a 10 year old.
[0]I've recently commented to my long-suffering better half that it feels as if we're trying to squeeze one and a half lives into one.
Was more thinking along the lines of the satisfaction of say having a "perfect" child or your dream job (whatever that may mean to you) vs one that has a grave illness or a job that truly blows. You're going to suffer much more from the latter then find joy from the former.
Or for example your salary. If you suddenly get double, the joy / satisfaction from that will wane fairly quickly even if a few weeks before you imagined it would solve all kind of problems.
Or the toughest one imho: being a relationship with your dream girl / boy vs that relationship ending. You're probably not going to wake up every day thinking you're super happy but if you really get your heart broken you'll suffer for months on end.
It would be very nice to have an open alternative to the Apple/Google ones.
My personal journey was to get rid of my dependency on iCloud Photos. I managed to export two-decades worth of pictures and videos using a separate tool (https://github.com/RhetTbull/osxphotos) and then import into PhotoPrism. Coming from Apple Photos, the UI is a bit lackluster but the freedom of owning the entire data more than makes up for it.
Are these use cases you optimize for?
I'd love to see what you're working on =P
i'll try to get some initial commits pushed up soon. u can follow me here, the project is called montage (open to suggestions on name too lol):
https://github.com/bpatrik/pigallery2
The word "fast" is the first word in their description. I'm using it for about 2 years now, hosted on my Synology
> Also, there is no native support for sharding or cloud storage APIs like S3. Instead, PhotoPrism prefers a fast, local solid-state drive.
Won't use it myself though, as such solution should be centered around s3-like cloud storage with e2ee. Only the index should be in the server (and backup-ed).
But there should be a feature to at least sync to a cloud service for backup purposes.
And you can backup that folder with whatever you like.
And you can get files to that folder however you want. Including mounting a volume from s3 API location via s3 fuse.
I have 1 Tb of pictures.
For example DigitalOcean: 1 Tb volume storage (without the instance) is $100/mo.
S3: $13/mo (most would be infrequent access) + traffic would prob be free (100Gb/mo, I don't think I would read more than that).
I am not interested in single servers that can crash on a low-cost provider that can catch fire, get my account deleted because of a software bug, get stolen at home, etc.
Of course at that point you might as well just use Google photos
- 1TB: 3.81 EUR (100USD cheaper than the DigitalOcean example you made)
- 5TB: 12.97 EUR
- 10TB: 24.75 EUR
- 20TB: 48.31 EUR
https://www.hetzner.com/storage/storage-box
I've been paying for two 5TBs boxes (+ rsync.net) for my backups for a very long time and had one issue one time when the connection to one of the boxes was degraded, but otherwise it's been painless.
With S3 I don't really care about what happens, do a snapshot myself, spend time restoring from snapshots etc. It's there. Worth the upgrade to me.
Also, not from Europe, ping not good.
Edit: also read horror stories about Hetzner, in my former jobs had problems with OVH. No service, unreliable.
Is it? One of those boxes have been running continuously for 5+ years, according to my monitoring that checks the status every 30 seconds. You can snapshot at your own leisure and it's setup with RAID to resist drive failures.
Or do you actually have something that points to it having troubles with reliability?
Having problems with OVH I don't know what has to do with Hetzner, they are separate companies...
That is perfect for me. Let it organize the photos and let me do the backup the way I like it. Single responsibility principle etc.
How do I keep it secured? How can I make sure nobody breaks in and access my photos?
Edit: from a similar comment, see https://photostructure.com/faq/remote-access/#accessing-your...
I thought about it, but aren't the current best practices moving away from VPN access towards more granular authentication and authorization? If I understand it correctly, once someone gets past VPN, it's over. So now I have to secure both VPN and my server (and the services).
Side note: Just last weekend used autocompose.py to pull all of it into Docker compose files. The tool isn't perfect, but it works flawlessly for anything that isn't using weird mounts or host devices. For the problematic containers, I used inspect on the original, stopped it, spun up the compose version, and compared the inspect data. Take so much guesswork and googling out of Linux admin once you're versed in how it works
A group of friends go on vacation together. Everyone takes photos and videos with their own devices. When we get home, we upload all our photos to a central location (self-hosted and running on Free software), so everyone can browse all the photos, and download copies of those they'd like.
From the documentation it looks like I could share my photos with photoprism, but my friends wouldn't be able to contribute theirs.
I'll also add that some of the classification was amusing, but I suppose as time goes on it will get better.
Just a simple guest link.
And yeah, the classification is funny. Apparently I classify as a wall now.
I remember photoprism having some subscription requirement for certain features.
Other notable alternatives:
- PiWiGo [2]
- Photoview [3]
- Zenphoto [4]
[1] http://bpatrik.github.io/pigallery2/
n/m signed up and you use sliders to get what you need.. looks like its about $15 a month for 1Tb of storage which isn't enough for me.. too bad.
I don't think they have cheaper servers at the moment, but Digital Ocean seems awfully expensive.
One of the main things in trying to find is a good system of adding keywords and ratings that is tied to the file without any side cars. Is this even possible? Does Photoprism store it's labels in a sidecar or is it editing the exif of the photo?
It would be nice to be able to organize photos in a platform agnostic way.
1. No sync facility. I have to use some other app or do it manually.
2. No native mobile app. They have a webapp, but it is absolutely not good enough. Slow, laggy, unresponsive, just unusable if you have lots of photos. I know mobile app development is very costly these days, and photoprism is free. So I am putting up with it.
What's the best way to move pics from phone to this? I hope it's not drag/drop in finder to samba share...
I have been dumping photos into Google Photos for years and years, never to be seen again. But then I got a Google Nest photo frame sitting on my kitchen counter and it has dramatically changed things.
Only two minor complaints are there’s no “On this day” function, and the instructions to view full resolution photos are a bit confusing. Otherwise i like it better than anything else.
License: Affero GPL