Show HN: Memories – FOSS Google Photos alternative built for high performance (memories.gallery)
Website: https://memories.gallery/
GitHub: https://github.com/pulsejet/memories
Demo Server: https://demo.memories.gallery/apps/memories/ (demo runs in San Francisco on a free-tier cloud vm)
Memories has been built ground-up for high performance and is extremely fast when configured correctly. In our testing environment, it can load a timeline view with 100k photos in under 500ms, including query and rendering time!
Some features to highlight:
* A timeline similar to Google Photos where you can skip to any time in history instantly.
* AI-based tagging that runs locally on your server, identifying and tagging people and objects.
* Albums and external sharing.
* Metadata editing support
* A world map of your photos, supported both on mobile and the web
* Did I mention it's extremely fast?
Would love to hear feedback from the HN community! :)
244 comments
[ 1.9 ms ] story [ 108 ms ] threadhttps://www.photoprism.app/membership/faq
> Are there alternatives to a recurring subscription? > > Yes, our Plus members automatically receive a free Lifetime Essentials membership after 24 months
https://github.com/pulsejet/memories
When you say "Yes, it's OSS so you can just do it yourself" it's generally viewed as snarky and misleading, as the question wasn't "can I modify it" but "is it available already in another form?" It's just not helpful to anyone to word it like that backwards manner.
By contrast, when I tried to install it manually, the distribution install scripts broke on the second run, on changes that the very same script made on the first run. Anti-idempotent, I dropped it with the impression of drumming up hosting or consulting business.
- Does the metadata editing allow it to write back to the file, storing the edited metadata in a sidecar or in the EXIF data? - Does it support some kind of auto-stacking? E.g. having raw files alongside exported tiff/jpg and recognizing that they are the same file? Especially for a nextcloud based solution, that'd be awesome
For mobile compatibility Nextcloud is better since you can choose which folder photos go to and you can essentially automatically backup albums whereas with Immich you can't automatically specify which album photos from a directory should go [1].
In addition to this, Immich isn't too stable yet and each time you update the server all clients have to be on the latest version, at least since the last time I used Immich.
1. https://github.com/immich-app/immich/discussions/1678
- Immich supports external libraries
- Use docker compose and never worry about versions breaking
You're correct, Immich does support external libraries. To be more elaborate with my original comment, I meant inbuilt apps of Nextcloud which integrate well and complement the memories app. An example app would be the Face recognition one or Recognize if you fancy a different implementation. Nextcloud is after all an ecosystem so using memories gains you the other benefits of such an ecosystem. This might be overkill for some so it's upto your usecases.
Versions breaking is an issue since both mobile and server clients have to be on the same version. Compared to Nextcloud Memories this is not an issue. This was an issue when I've last used Immich so this may have changed since then.
The last time I looked, Immich can’t work with a existing file and folder structure without importing (copy) everything in his own structure (database). That’s a big no go for me.
In Memories, the file structure of your photos is preserved as-is. And you can run it alongside with other solutions that respect your folder structure.
EDIT: looks like Immich can work with external folders. But: Does it put pictures from my phone in that external folder or in its own folder?
https://immich.app/docs/features/libraries#external-librarie...
So if you want custom structure, synchronize files from mobile to server in any way you prefer (Syncthing, PhotoSync, etc.) and add that folder as an external library.
If you're running an instance for less technical users it's more hiccups to setup syncthing etc and have to explain why another app is needed.
There's a mobile app for Android: https://play.google.com/store/apps/details?id=gallery.memori...
On iOS, you can use the PWA ("add to homescreen") and it behaves almost exactly as a native app
Seems that it is possible to get it mostly working based on this issue: https://github.com/pulsejet/memories/issues/110
Also, is there a mobile app? Most of the time when I look at pictures I am on the phone
If you need the AI features those require separate apps and depending on your deployment it might need some effort. I'm running a docker image and had to ensure I have some of the required libraries for the AI things to work. It isn't too hard to misconfigure though and I believe there's a decent amount of resources for this.
As for mobile app, there isn't an explicit one but the webapp interface is mobile friendly and works pretty well. I also use NC photos and it still works with the tags and face recognition things. That app doesn't require "Memories" as far as I know.
F-Droid Link: https://f-droid.org/packages/gallery.memories/
GitHub releases:
https://github.com/pulsejet/memories/releases?q=android
If I take photos with my phone, I have to manually upload them to NextCloud?
I see "external sharing" is mentioned but haven't found more information on that. Ideally I'd want the option to share an album with password protection, doesn't require an account to view, and allows comments on photos. Bonus would be to have a running album feed with view receipts per account.
I know that's a lot but wanted to be specific. I'm ready to migrate but haven't found a platform that has feature parity on this front.
Albums: partial support. You can share links to albums that are viewable or share albums with others with an account on your nextcloud instance. People who have an account can upload photos to the shared albums.
The reason I pay for tons of extra Google photos storage is it tags and uploads and pics of my kiddos to an album shared with all the grandparents. It's their favourite app in the world and I'm never allowed to cancel.
Could I replicate that here?
Awesome, this is the main piece of puzzle I (or rather: my wife) miss from Nextcloud (the default Photos has terrible performance and lacks some features). Gonna set it up. Also nice to see Face Recognition app is used. Now I'm gonna have to edit my docker-compose.yml for the dependencies but that is fine.
Also, I've been trying Photoprism and also I tried Immich in past. They have disadvantages: they don't sync with whatever got uploaded to Nextcloud and they either do not have a mobile front-end or it is some web app. They also have stability issues, though I had most success with Photoprism.
I suppose it won't be as useful to me as it could be as I'm stripping all EXIF data from any photo uploaded by Nextcloud because I fear my wife stupidly just shares whatever when she should not. Yes, I know you can do OSINT analysis anyway, but that is a skill as of yet.
I like it very much.
That said, to each their own, thanks for sharing.
After installing Nextcloud Preview plugin it might've improved. I am currently processing entire library with Nextcloud Face Recognition plugin model 4 (= 1 + 3) since model 1 only recognizes our kids as same person. Almost done, then I tag clusters and give it a whirl.
Nextcloud Memories is ready as I speak but because I put strip EXIF on uploads, it isn't as useful.
https://github.com/scubajeff/lespas - comes with built-in two-way sync with Nextcloud server
(no affiliation, just a curious Nextcloud user)
The facial recognition is subpar and performs worse the more faces you tagged, but it's always the users fault somehow, instead of accepting that yes even though you put a lot of work and effort into it, the result might be bad.
Then somehow immich comes along and manages to basically become a better photoprism over night because it's somehow just a well managed project accepting a lot of contributions without the code turning into complete shit.
I don't know what to say. I'm still a sponsor of photoprism bot it seems the guy running it is his own worst enemy in some ways.
Sometimes it works, but sometimes the project is just too big, I think.
https://gitlab.com/nkming2/nc-photos
https://play.google.com/store/apps/details?id=gallery.memori...
A big part of the problem, it seems, is that, when you have a large library, and you jump/scroll to a specific year or so, it won’t cancel the previous page(s) worth of thumbnails loading. So as soon as you’re scrolling to search for something, it quickly accumulates hundreds of useless requests that quickly overload the PHP workers, and make everything crawl to a standstill.
I personally had to give up. When trying to grab photos from abroad for my shortly upcoming proposal, I’ve literally deleted Nextcloud/Memories, plopped Immich in docker compose, let it index/transcode/generate thumbnails from scratch against my “external library” (so Immich doesn’t duplicate the medias), and that ended up savings me days of buffering, and was able to find the nice pictures for the occasion!
(R740xd with 48 cores and 96TB SSD-backed ZFS pool)
Thumbnail caching exists (it's even highly configurable), there's absolutely zero buffering even with 100k photos+ on a raspberry pi. You obviously did not read the documentation or install the preview generator (which the docs clearly tell you to)
Your deployment skills are hot garbage
EDIT 3: ^the last line was in response to something that has been edited out of the original comment
EDIT: the comment this is in reply to was edited multiple times. This is pointless and a lot of it is just false.
EDIT 2: (at least currently the previous comment claims unnecessary PHP requests) this only happens if your configuration is incomplete; you didn't install preview generator as the docs say. Secondly it happens exactly once, the first time you see the image. All other requests are gracefully cancelled.
And it’s only “pre-optimized” if you are cool with PHP memory limit crashes, PHP operation timeouts, PHP request size limits, and the works.
Another joy associated with using Nextcloud sync is that uploads don’t even seem to support multi-part resumable uploads. So not only is it crazy slow, if there’s any error during the auto-upload of a 2G video clip, or the app is temporally backgrounded by iOS, it’ll go into an exponential back off (which you can force start), and eventually just start the upload for that/those file(s) over from scratch - good ways to waste days burning in your screen while in a trip and trying to ensure your medias are backed up in case you lose your phone on a trip. Try uploading raw images & 4k clips shot on iPhone to Nextcloud using the Nextcloud app + the AIO image from abroad.
I’m telling you, I’ve tried to use them for quite some time, and I’m far from DevOps-illiterate - I’ve been using k8s since it’s infancy, we wrote the original Operators at CoreOS way back.
Otherwise, mostly all of this is just false. I routinely upload massive files (both RAW and 4K, yes) with almost default configuration and it just works. You also lied with "no thumbnail caching" in the first comment, no idea why.
also, they meant that their SMB share didn't have thumbnail caching
EDIT: yeah, they edited that out too.
I'm sure it doesn't feel very good to have someone criticize it, I get that. But, this person cared enough about the thing you made to use it, troubleshoot it, and post a comment about it on HN.
At the end of the day, it's valuable user feedback :)
Valuable user feedback (which I absolutely love) is someone pulling the server logs, filing a bug on GitHub and following through till it gets fixed. Or, even attempting to see what parts are slow and reporting it. Worse but still very helpful, providing a link to an affected instance that might help "see" what might be happening.
Spending a few hours trying random things and then complaining loudly like a know-it-all is NOT valuable feedback; it's bullshit. Nothing here is helpful, at all. There's absolutely zero indication of what could be fixed and why this particular person's deployment is broken while thousands of others on much slower hardware work just fine. None.
The other comments you posted are also a bit odd without you disclosing you're the author. just saying
In this case I was rather annoyed since the original comment was very offensively worded and the person obviously had zero intention of helping out. Their only goal was to stroke their own ego by shouting out how something they couldn't get to work is crap.
This is part of the reason for open source maintainer burnout -- useless comments about how something is broken with zero intention of helping to fix it. Hey, it's free -- if you don't like it then either help, or stop crying and move on to something else.
Your work has given me reminders to memories I long forgot about, and nothing can come close to the importance of recalling good memories.
You are doing great stuff with Memories. Community building skills need some work though.
That is my feedback. Which you asked for.
If something doesn't work—regardless of how unhelpful the report or oddly configured the deployment machine is—I would love to hear about it so I temper my own expectations before trying it myself.
While I sympathize with the developer whose product is popular enough to collect 1000 issues as of two days ago, some of your many thousands of users can also get fatigued by spending resources (time, money, mental effort) on deployments that fail because the machine and network running Docker is still different enough from yours that issues arise.
My Hetzner Photoprism bug report has been sitting unanswered for two weeks. Getting the log data and trying out different DNS configurations and writing the bug report took a few hours, because I had to SSH into the Docker image and run curl verbosely and figure out which of the five docker-compose elements was causing problems; running Docker and setting up servers isn't my day job. I don't feel like paying 25 bucks a year for an IPv4 address and don't really want to figure out how to get Let's Encrypt to work on Hetzner's IPv6 by manually adjusting the Docker Compose configuration. I thought that's the point of Docker Compose: that you wouldn't need to dick around with it to get it working. I'll probably delete the thing and replace it with something else—potentially Nextcloud as there's no preconfigured Immich image. So, you know... expect my Memories bug report in a few days.
I can't imagine this user's complaint was fabricated from thin air. Rude or not, they are having problems with the thing you made. Make a mental note, "at least some small percent of users are still having issues, in this case no clear root cause, probably a small enough population to ignore, maybe one day further reduce the friction for reporting bugs or find a way to gather more detailed info." Maybe put them in their place if they actually attack you personally or actually have no useful information e.g. "Product Sucks!!" but beyond that, I (as a potential fellow user) find these not-very-dev-helpful reports insightful, as there are two dozen competing FOSS photo storage programs and I want to efficiently figure out which application has features I prefer, is actually stable and easy to deploy, not likely to switch licenses going forward, has a clear goal and steady progress, documentation is well-written and not just a "Brothers Karamazov" dump of one developer's stream of consciousness, etc.
Should I take two or three hours to file bug reports for each of the 20 photo albums I'd consider testing instead of spending time with family or practicing music? Maintainer fatigue is no joke, but it's also a burden on users if the software does not run, and they've already sunken some opportunity cost, and then not every user knows how to be kind and helpful through their frustration.
Anyway, your reaction is valid. I hope you keep working on the project, but I'd also be okay with not having so many different FOSS options and still no clear winner.
I got done loading a Nextcloud image and it works fine. It's also a different base server and configured differently, and it has IPv4 without extra cost. The only issue so far is that ffmpeg is not detected by Memories so transcoding cannot be enabled, even if I install the only app related to ffmpeg, "Automated media conversion." I'll have to keep reading to see if that's the right app. The server is managed in a way that I can't ssh or change anything Docker-related. I can only log in to Nextcloud at a given URL, so I don't know how run commands from the documentation such as "occ ..." With enough time, I can search if this is usable or not.
It will take probably 20 or 30 minutes to figure out running commands and if ffmpeg can be installed/accessed. I've already committed an hour to this platform even before uploading a single ARW, although I'm already farther along than I was with Photoprism...
EDIT: 24 minutes. I can run occ commands. I can't install ffmpeg. Many others have the same well-known problem: no video thumbnails. Oh well, not a dealbreaker.
Ente is commercial, Memories is free
Ente is focused on E2EE, Memories is focused on self-hosting.
https://ente.io/blog/open-sourcing-our-server/
The result: each request overall only takes a few milliseconds for the hardest part, the rest of the optimization is a game of caching.
It's FOSS and I only work on this in my free time, so please keep the bug reports coming as you run into them! :)
Hopefully it changed a lot in the meantime because I would really like this to be integrated into NextCloud.
I the meantime, I'm really happy using Immich
My biggest complaint about Mylio is there is still no automatic synchronisation from Android. You have to leave the app open for it to sync.
Wondering if the Memories Android app can handle both of these points?
The Nextcloud app is used for auto-upload, that does support background upload at least on Android.
I'm looking at this Memories now, but I don't like first page, sorry, with all photos is small and divided with white spaces and dates...
But I don't need any metadata editing, AI and mobile apps, I need gallery for high-quality photos to view on big screens.
https://github.com/sponsors/pulsejet