Please someone make a photo/video storage for families. Our photo stream is not artisan award-winning landscapes, they're messy bunch of travel photos, pictures of receipts and random exif-less pngs sent to us.
The novel random "taste" UI makes navigating even very large libraries fun and serendipitous.
There are a ton of configurable image and video filters that can prevent the exif-less screenshots and other random nose from getting imported in the first place. Hop into the discord if you need any help with setup, I'm online.
(Also, know that I've open sourced a bunch of the core functionality, but this is commercial software, albeit with a very generous "free" tier).
Personally, with things as serious as photo libraries, proprietary software is a no-go for me. I'd rather use something with community support like Lychee than pray that e.g. photostructure will be available years later.
As an open source developer for more than 20 years, I agree--using proprietary software that "locks up" your work leaves you somewhat of a hostage to that app.
That's why all of PhotoStructure's metadata changes are stored using EXIF or XMP standards either within the file, or alongside in a sidecar (if you prefer). File organization is also completely customizable, and designed to work in concert with other DAMs, if desired. Details are here: https://photostructure.com/faq/system-of-record/
This sounds like something I always wanted. But I can't really figure out if I understand correctly from your website. So could you please clarify: when I edit the keyword of a photo in your software, will this keyword be written back into the EXIF data of the original file? If so, you just got a new paying user.
This looks really nice and I think I'll try it soon in my home server. Out of interest, do you have some blog posts on the "how it's made" side of things? I see some toml files for configuration so that would point to core being written in Rust, what else? Thanks!
IDK it's just tailored for my own needs. There's nothing fancy there, standard features: importing from all our family devices, optimizing for browsers, showing date/folder trees, face recognition, showing on map, geotagging, etc.
I think their actual multi-user story is somewhat lacking, but if you want a shared picture dump with some features that help sorting through a bunch of random images it should work well.
I've tried most of these tools at home and I tried to get on with Photoprism, but once I got to the point where I'd increased the VM RAM size all the way to 32GB and it was still eating it all, I gave up; the experience wasnt quite right particularly for multi-user; what's the use in a family photo library if my wife can't access it too?
Right now I'm working on a desktop tool (Linux-first because that's what I run) to take a bunch of folders as input, find duplicates and let you clean up the duplicates or "merge to destination" because this has been one thing I've struggled to find something nice to use for.
It's early days and I'm only so far at the point of hashing images and detecting and counting duplicates, but as an experienced backend software engineer the UI tools are a real learning curve.
I'm also trying to make the UX clean and simple with next to no UX nouse.
I'm using Wails + Svelte; I've not worked with Node, Svelte or Wails before so I may or may not end up switching techs but the backend is in Go.
It's not one of these photo gallery/management tools but I've been finding that really, all I honestly need for my family photos that are reaching terabytes in size is: that I'm not waating space and I have a good archive of everything in one place.
I'm curious if this is a tool others might be interested in.
Weird. I'm interested to know your setup. Did you use MariaDB or the built in SQLite?
I have photoprism running on docker, which is running as a VM on a proxmox server that is a 13 year old Dell Optiplex 9020. Only 6Gb ram dedicated to the VM (2GB initial, ballon to 6GB), and photoprism uses 2 workers. I have a large 50k set of photo's from starting from when my daughter was born till now (17). I have never sorted through these photo's other than to dump them from my phone every 6 months (camera before smartphones become common). Initial import took less than 45 minutes and that was before tweaking settings. Full manual index with all options, still takes less than 45. Initial face recognition was about 33 people, once I tweaked settings, it's recognized 97 people with little input from me other than tagging the name correctly for a few photo's per person.
The only difference in my docker file vs the official are optimized settings, and I'm using a separate VM for the database server as I find multi tendency and backups easier with a VM. (VM only has 2GB ram allocated to it)
I'm extremely happy with it, as I always put off organizing my photo collect due to how massive it is. It's made the task so much easier.
I am however always looking for other tools. I'm interested in give yours a try, just wanted see what could be the massive difference in experiences.
I don't remember specifics, though I can find out; I have it seemed in Kubernetes with hand written manifests. I had to tie Photoprism to a specific node which had had more resources than it's peers; I would have to refer to the manifests to recall which DB I used. All storage was over NFS (meaning the storage speed was limited by my 1Gb network backbone), which probably created some of the resource issues.
Edit: as for my tool, it won't replace Photoprism, its primary goal is to deduplicate your photo library.
Not sure about the memory requirements. My container currenty uses 128MB RES memory. But I also only have a couple thousand images. Not sure how strictly in memory some DB/structures are.
I assume importing an existing library takes a lot, as it does the inference/training for face detection and auto-tagging.
I've seen that it uses a lot of CPU at least, haven't looked into the memory.
Multi-user is lacking to missing. I'm not 100% sure which state photoprism is in, as I was shopping for a self host service.
OTOH I don't care about that for family. I'm not hosting anything for untrusted people, or to default backup everything, but as common library. So I'm fine if everyone sees everything and expect people to play nice.
But I do agree that multi user (and maybe integrated auto-sync for phones) are major missing features. I'm just in the situation that it doesn't really matter to me currently.
That's fair enough. Same situation for me really I don't need the auth functionality.
The way I had Photoprism set up is that mine and my wife's phones would sync images nightly to the server, the photos would be rsyncd from the public facing sync server to an internal one (not in the DMZ) then I'd have the server send me a link to the import page on Photoprism because it lacks the feature to autosync when new files are added; I think having to open the page while on LAN (link was internal only) and click a button was the straw that broke the camels back here for me.
I think I also had something like 10-12 cores dedicated to it, which alongside the RAM use that constantly crept up, and the manual intervention, was just too much for a photo management tool that wasn't really even managing the photos in a way that was useful to us.
I haven't tried PhotoPrism, but I'll give it a whirl. In my case, I'm looking for the best way to enable multiple family members to upload, tag, and effectively browse tens of thousands of photographs as we all continue digitizing family albums.
I'm currently using HomeGallery[0] behind Authelia[1] for authentication to view so many images effectively. For uploading, I'd been using Nextcloud, but it began to lag noticeably after a few thousand photos. I switched to FileRun[2] with symlink'd photo directories and a user for each family.
With HomeGallery, I get the desired performance on mobile devices with de-duplication and tagging. My instance detects objects fine, but I owe it troubleshooting time to figure out face recognition. The "similar images" feature can be fun with so many photos. A nice tagging modal on keybind per image would be a nice-to-have.
Using FileRun for uploads works fine, but I also needed a continuous cron job for docker exec to generate any missing thumbnails.
I tried it, but was surprised by the way it imports pictures.
It does it in few steps, like reading metadata, creating thumbnails, transcoding for browsers, face detection, nudity detection (lol they really do have it) etc etc. The thing is _all_ the steps are performed for each picture/video in your library. Picture 5 won't be even visible in your library until pictures 1,2,3 and 4 don't have all the thumbnails, optimized versions, labels from TF model, detected nudity and many other things.
My 10yo two-core celeron nuc begged for help, I couldn't see it suffer.
I tried to contact devs on github, the response was "go import all your 40K pictures manually, subfolder by subfolder". I checked, it's now marked as "accepted answer", haha.
I'm also looking for "Google Photos but self-hosted" with the main feature being automatic object detection.
I just tried the Photoprism demo (https://demo.photoprism.app/browse), searched for "person", "grass", "wave", "head", "eye", "neon" and a bunch of other terms, nothing seemed to find any pictures although I took the concepts from existing photos I found.
Back button is also broken on the demo, which makes it seem like the most basic UX is not there yet in the application.
I'm pretty happy with Synology Photos on my NAS. It's got face detection, interprets the exif and gives you geo maps, has albums and sharing. Got it set up for my entire family.
It doesn’t back up photos. It exports them. Not the same. Take a slow motion video. The version on your NAS will be 30 FPS, slowed down in the middle. For a backup I expect it to be the 240 FPS version.
This is on my list to keep an eye on. I like that it's just a simple front end and not trying to be everything like Photo prism. I use Photo prism but I don't like how heavy it is. I want to use something like immich but it's not quite ready for production usage for me.
I'm making something similar for my own use for now.
Create a trip, upload a 1000 of pictures, delete all but 100-200, see them on the map or on the timeline. Add comments to individual pics or to location or to dates.
And yes, the whole family can upload pics and they can be batch assigned a date or location.
It's not a shared album with lower res dupes, it's a real camera roll implemented as iCloud photo stream that multiple people can be permissioned to, with photos from your regular camera going in either manually, or automatically based on geofencing or proximity to other roll members. It can also retroactively suggest merging photos from shared events etc.
Your main camera roll then can show only private photos, shared photos, or both.
Apple One for Family includes 2TB storage and account owner can now optionally merge in their own 2TB for a total of 4TB for family photos.
In other news, iOS 16.0 now makes it easier for photo notes to end up in Notes not photos, also easier to snap send and delete, snap images of text to actual text, etc, many easier ways to avoid gunking up the photo roll.
I researched my options for self hosted file storage that would include (modest) photo viewer and audio player. I tried, among others, Lychee and Photoprism.
I found not so popular web app - FileRun - and have been very happy with it so far.
Hello Vlad, I just came to tell you that I'm a big fan of your wallpapers since forever. Your style is one of my very few favourites. Thanks a lot for your work!
Just want to say that filerun is a really good option for self-host NAS with WebDAV support as well as a nice web app. Would definitely recommend.
Even though you use filerun to host files, you can still point Lychee/Plex etc to the photos and videos, which might be inside a subdirectory under the root directory of your filerun instance.
I considered Lychee but went for Photoview [1] for internal exploration of my photos [1], which follows the 4-facets principle (who, what, when, where). There's a map (where), an album view (what), face recognition (who), and a timeline (when). All of these make it pretty convenient for different purposes. It is also folder-based and I set it up in read-only mode, so Photoview doesn't modify my files or structures.
Disclaimer: I'm not associated with the Lychee dev team, just a very happy user. I've been using Lychee to self-host my photos for years now and the experience has been extremely positive. The interface is beautiful, intuitive and very streamlined. The layout supports both desktop and mobile browsers. The project is under active development and the developers take a lot of effort in addressing the open issues on the github repo. If you're looking for a self-hosted photo gallery solution, this is highly recommended.
I haven't (yet) used this myself, but it seems Lychee is also available as an application[1] that can be installed for those using YunoHost[2]. This should make trying this out even simpler.
Deduplication is a hairy problem, and was my first priority to solve when trying to get my own mess of photos together when I started writing PhotoStructure.
I'm on the fifth major iteration of image hashing at this point, using a L*a*b mean hash, along with a kmeans-gathered set of dominant colors, along with dynamic thresholds that take into account differing mimetypes, fuzzy captured at times, and monochromatic images.
You can't build a hip start up around it and get millions of VC money. Because of the APGL you'd have to open source your service. Something the typical unicorn startup isn't too keen on. Taking community software: yes. Building a for profit product around it: yes. Giving back to the community: lol no.
I agree, for me for this kind of thing it isn't a deal breaker. But for many people it may be.
However, I will say that combined with the freemium model it does give me pause. The reason is I will likely want to add some features that will conflict with the premium version. That means that my changes have near zero chance of getting incorporated into the community version and I'll have to maintain a public fork.
Ugh, not a fan of open source projects like these with a freemium model. The company behind it eventually fails, then starts pulling shenanigans or at best stops supporting the open source version. For example, Netgate and PFSense.
There's no problem per se. I am not against this model. I just see it as a detracting element when choosing a particular project, as it adds significant risk to using it. All else being equal, I will choose the project that doesn't have a company behind it.
I feel like only scripting language projects like this ever take off (owncloud, wordpress, ghost, etc..)
Like the kind of developer that tries to write the Rust/Go/Erlang/Haskell version ends up stuck on finding the perfect way to handle errors, trying to include a complex ML recommendation system, or creating a custom embedded database with fast lookup times for the possibility of albums with 100 million photos.
Meanwhile, PHP and Ruby keep pumping out these fun little systems that have security holes every few months and need constant babysitting.
Sorry, I don't mean to be negative. I'm really glad to see this, it just prompted some reflection.
Maybe because scripting languages are very pleasant to use in backends. Few things in web development beat the joy of changing a single line, pushing the affected file, and (usually) seeing it take effect immediately. I've developed websites in .Net and doing a tiny change becomes a big chore of serious business.
Surely there are critical web applications that need compiled code and scalability, but hobby projects benefit from the accessibility interpreted languages provide. Maybe if it becomes popular the effort of porting it to a safer and more performant platform would be worth it.
The bigger a backend system, the more you crave for static guarantees like a type system.
I think that such tools are mostly successful as products, not as code bases. So the successful ones are likely designed and implemented by competent photograpers with some programming chops, who naturally pick languages with very low barrier of entry.
The barrier to entry is way lower, way more developers will only learn scripting languages in their careers. A greater percentage of the projects who can succeed as a product will be using scripting languages.
Especially considering performance is often not crucial, as long as it's fast enough: worst case scenario, you just throw more servers at it.
The cost of hosting is often a small part of your budget compared to developers time (unless you're using AWS or developers from third world countries).
One nitpick, the .git directory is rather large and probably needs some attention as it is 129MB. The tests directory also has a bit of photo content. Perhaps this could be stored outside of git somehow? Excluding those directories the repository would be less than 11MB.
It's all tradeoffs. If it's test data taking up space, it's useful to have the tests tracked along side the source so it's reasonable to put it in the repository. It could be put in a separate git repository and then tracked as a submodule, but it adds a bit of complexity for arguably minimal gain (developers need the tests anyway so it's only really helpful for users who want to download the sources and not the tests). Something like git lfs could maybe have a use but it also adds complexity. Unless they expect it to grow into the GB range personally I like the decision to just put it directly in the repository.
Thumbs up for Lychee. I've used it for a couple of years, and it works great. I have begun to upload my photos (and even video snippets) to my own public website for sharing. For me it was important to be able to share private albums via some simple kind of user management, and that works fine. Not affiliated in any way. Just a happy user. I've recently upgraded to PHP 8, and Lychee still works without problems.
One of my favorite features in Google Photos is the map view. I often can't remember when I took a photo, but know where it was. Open the map, navigate to where I took it, and there it is. I consider it a must have for a photo manager now.
I use Lychee currently for my photo sharing, but have just installed Nextcloud and will certainly test this out. There are a few things I miss in Lychee such as commenting and statistics, but I don't know if Nextcloud will make this easier.
Ente[0] is similar. Haven't tried it but looks promising. There's also Pixelfed[1] which isn't as private but great if you don't want to join the Instagram brigade.
Been putting together a spreadsheet of self-hosted file apps and trying them out. Still haven't found something that meets all my requirements. Does anything exist with:
* Automatic album generation based on detection of an "event", e.g. a cluster of photos taken together around the same time, organizing them in a folder, even better using an optional album title, e.g. 2022-06-24 - Picnic at the Park
* Modern UX
* Mobile support
* If no sync support, at least the detection of new files in a folder, say from syncthing
These are the core features IMHO, and everything else is icing. I'm basically looking for something that can replace Google Photos in a reasonable way.
Immich (https://www.immich.app/) is still under heavy development, but looks like it will hit most of those requirements (but not automatic album generation).
Is there any online tool where I can upload a photo that doesn't contain GPS data in the EXIF metadata, but gives me an estimate of the location that the photo was taken from - e.g. not just identifying the Eiffel Tower but also whereabouts I was standing when I took it. I'd love to be able to enrich my older photos with reasonably accurate GPS location - or at least a '95% chance that the photo was taken within 500m of this point'.
there is this: https://twitter.com/whereml. Another option is to use something like GPT which might have sufficient understanding of some of the objects... But I think unless you have some very memorable objects like eiffel tower or big ben it will be very rough.. E.g. a picture of a beach will be impossible yet this system might put it somewhere... So I would be a bit worried about trying to automate it..
if the authors are around, here is a couple of things to improve on the « done right » part :
- loading thumbnails should be near instantaneous for the whole album. If it is taking longer, then let me downscale further.
- loading full-scale, several megabytes, photos must continue in the background. otherwise I’ll be waiting on a black screen for several seconds during a slideshow. It’s something dumb to do, but somehow Plex can’t seem to handle that properly…
I still fail to understand why instead of try building networked apps, like Plan 9 have started showing in the past, we keep going adding web-apps for anything reducing powerful desktops to mere dumb terminal and impose a central point of failure even at home.
Oh, sure, it's easier but going that route means end up in the mess we all know of modern "devops and alike" no one can really know nor manage.
In this specific case, web apps may be very suited as I guess a major usecase is sharing images with other people, and just sharing a link is much easier than having them (say a grandparent with limited technical skills or a one off share with a friend of a friend) installing an application which may not even exist for their device
A link can also be a link to a mountable fuse fs share, like webdav/sshfs/9P etc and the other side can simply browse content not with a specific UI but with it's own favorite UI.
If we rediscover the classic Plan 9 idea of anything is a stream on a network we can create our OWN web on our desktop, choosing what to cache locally, what to sync etc, in a far more powerful, simple, resilient and flexible way.
A small example: we have since decades OFX feeds for financial operations. Why instead of spending gazillion of resources to build and keep up web-banking porcals (portals are another kind of beasts) when we can just give customers credentials and relevant links and the customer operate on a simple XML stream with his/shes favorite tool, with anything in a single place, it's style, automation, ... Perhaps because of surveillance capitalism?
Dumb terminal you say? These days webbrowsers are insanely complicated pieces of software. Servers are much "dumber", especially the ones hosting just photos at home.
Yes, dumb terminals in the spirit, since they are used by most as mere bootloader for a WebVM who is just a way to render a remote application... While incredibly complicated (more than complex) is just the mainframe+dumb terminals model.
My point here is why the hell tie our external masculine genitals to someone else computer and layer crap o crap investing gazillion of resources to make the monster work well enough to be used instead of rediscovering the classic networked desktops model like the one Xerox propose many decades ago?
Oh, sure surveillance capitalism... But are we really so dumb in mean to keep this crap stand?
How simple is just offer a webdav/sshfs (with isolated and scponly accounts) on a homeserver that have an ipv6 global with a proper dns nice domain and those who want just mount the share and read it with their own preferred software like the old classic Plan 9 model?
Currently using Nextcloud Photos with Yaga on Android for viewing photos. It works well enough, but there's room for improvement. Does Lychee have an Android app? Can anyone compare?
The UI from the screenshots look slick, but I can't help but notice that there is barely any JavaScript listed in the repo. Is this a primarily server-side rendered UI?
So their JavaScript source code is in a separate "Lychee-front" repository and they commit the build artifacts into the main "Lychee" repo. Not sure why they would do this.
Looking to move away from google photos but hard to find anything close to the features that google photos provide. Closest thing has been synology photos.
The best way to self-host and manage photos is to put them in a directory on your filesystem and then look at them with your eyes using your operating system file manager. Trying to implement this functionality, again, in the browser is just absurd.
The best way for other people to look at them is via a static webserver serving static html files generated by some photo gallery tool like jigl. It has no active components to fail or get exploited in the future.
I would love a photo managing tool that would allow me to import photos, do backup and auto-organize by some predefined rules (eg. folders by year, month etc), but also be able to use the current file structure (no proprietary library blobs like iphoto, with no way to export). It wouldn't let me delete photos by accident, or overwrite them, etc. There would be a clear distinction between source and destination when importing. I would be able to lock files for safe keeping. No stupid dialogs like "copying 9999 files, found one with the same name, skip/skip all". Instead it would have a "dry" run, a preview of the result, thumbnails etc. It would allow me to scan for duplicates or find similar images, detect anomalies and corrupt files.
For previewing, it would find faces and locations, I would be able to group by date, location, etc. There would be a way to see the photos in a browser and share, but only see the photos, so kids can't accidentally delete theme (unlike Synology's crap software only made to tick boxes, boy was that a waste of money). And it needs a timeline view, like google photos, or what smartphones do.
But this comment is so inaccurate I had to comment.
iPhoto/Photos doesn’t store your photos in a blob. They are exportable either via the stupid app or by the file system. The library is literally just a folder, and the images are stored by year month and day. It’s not magic.
Possible, I remember having to use some script to export all of my photos, not sure what the reason was. Perhaps I wanted to export by album, because I know a bunch of old photos from my olympus camera had incorrect timestamps.
I'm a ux designer, as well as a photographer and keen with data curation. I believe that currently there is nothing like this and in the past I tried to design my vision for this kind of product. I'd happy to design and build if someone with technical skills can help me with the tech stack.
That might be the "best way" for you, but not for everyone.
Personally I have so many pictures that I really appreciate the "memories" that Apple Photos extracts and shows me from time to time. That would be very hard to implement yourself. It always picks good pictures and not random screenshots you have lying around or blurry pictures.
A directy listning is definitly not a scalable solution if you are not looking to just go through all pictures of a specific date.
> The best way for other people to look at them is via a static webserver
For some use cases only. Most of my photos are not public and a large chunk of them is being shared with small groups of people only. I'm not going to risk public-but-hidden URLs just in case they'll get indexed by accident. A static site is not usable at all for me.
HTTP basic authentication is very easy to set up and maintain (and keep secure) on pretty much every webserver ever made.
A dynamic system PHP like Lychee is very hard to infeasible for an average non-technical user to keep maintained and secure. Even technical web developers have trouble keeping php projects secure over years. A static webserver with http basic auth is more secure now and incomparably more secure over 5-10 years. If you are worried about security then definitely do not give a third party PHP system access to your files.
i use kphotoalbum to manage photos. mainly because it has a great tagging interface. what it doesn't have is good folder management. it will read images in whatever folder structure is there, but it is clunky when it comes to browsing photos with that folder structure. i can either navigate folders or i can see thumbnails sorted by time. i can't see thumbnails in the folder structure.
to augment that i use a plain file browser. nemo in this case with the cover-thumbnailer extension works great. i could use another image manager, but then i'd be switching back and forth between different image managers to have the features i need. so why should i, when a plain file browser just works
Please someone make a photo/video storage for families. Our photo stream is not artisan award-winning landscapes, they're messy bunch of travel photos, pictures of receipts and random exif-less pngs sent to us.