top | item 19756110

Ask HN: Personal photo library recommendations? Open source, browser-based

191 points| trbfred | 7 years ago | reply

I'd like to move away from Apples Photo.app to open-source, self-hosted, and browser-based application that may run on a NAS or Linux server.

There seem to be lots of alternatives out there (Nextcloud, Piwigo, ...) but I'd love to hear about recommendations and experiences.

118 comments

order
[+] damianmoore|7 years ago|reply
Shameless plug: I'm currently working on a solution called Photonix, though it's still very much pre-1.0 at the moment.

https://photonix.org/

Installation is fairly simple with Docker, frontend is web-based (React), backend is Python with a sprinkling of Tensorflow. So far auto-tagging of photos by location, object detection and colour is fairly decent. UI is progressing and is useable on most devices, though quite minimal.

Please feel free to check out the demo site and the GitHub issues. I'd really appreciate feedback and help. Thanks.

[+] zerkten|7 years ago|reply
Will you have support for handling duplicate images? People are either super organised, or the complete opposite. When you have multiple copies for backup and then want to consolidate to a library you want to hide your messiness.

I've been struggling to find a tool that handles that handles the duplicates problem within a web interface. I've been experimenting with some approaches including perceptual hashes and was wondering if that's something you'll include?

Is there any way to use metadata from Lightroom Catalogs, or enable people tagging in your current implementation?

[+] ConfusedDog|7 years ago|reply
I really like it, though I'm not photographer, so I won't be able to speak for your main user base. One thing I would like is when I open a large image, it should give me a loading status. Instead, it just blacked out for a moment and image suddenly loaded.
[+] alfredo_burgess|7 years ago|reply
Hey mate,

I have checked this out, running the docker-compose method, and kudos for your work. Looks great.

One issue I ran into was regarding videos (tried with a couple of MOV and MP4) - it doesn't generate a thumbnail and in fact throws an error along the lines of: File "/srv/photonix/photos/models.py", line 84, in base_image_path AttributeError: 'NoneType' object has no attribute 'base_image_path'

Happy to open a gitHub issue, but thought I'd drop you a line here to see if it was your intention to support videos (which would be cool!)

Cheers,

[+] jayniz|7 years ago|reply
I have ~1TB of photos from various sources, including backups of old iPhoto libraries. Therefore I often have one photo available in many different sizes, cropped thumbnails, etc. I'd pay money for working duplicate detection :)
[+] bloopernova|7 years ago|reply
Does Photonix work with a read-only volume for /data/photos?

I'm looking at the docker-compose.yml and wanted to give it a go, but not allow it any way of deleting anything :)

[+] barrystaes|7 years ago|reply
I like this architecture and wil spin up a Photonix docker on my Unraid server in a few weeks or so. I wonder why you used graphql for the api?
[+] mceachen|7 years ago|reply
Personal plug: I'm working on PhotoStructure, after trying many, many open source photo projects (and being a committer for years of one of the most popular, "gallery.")

PhotoStructure is browser-based (using Vue), and scales to hundreds of thousands of assets over millions of files. Your library can be created on a Mac, saved on your NAS, then later opened and managed by a Linux box, seamlessly. Raw images have highlight restoration before rendering previews. Videos are auto transcoded for mobile and desktop web use. Corrupt images are detected automatically and culled. Image source sets are used to minimize network data and maximize viewing quality. XMP sidecars are imported for metadata. Importing aggressively coalesces duplicate images and videos using direct and inferred metadata, so even your downsized Google photos takeout will be deduped with your originals.

Once you've got a huge library, though, it needs a novel UX. Scroll-reverse-chron and a search bar shouldn't cut it. PhotoStructure has a couple novel and unique approaches to navigation, which you can read about here: https://blog.photostructure.com/introducing-photostructure/

It scales down to odroids, and up to as many CPUs as you can throw at it, and self-throttles CPU during library sync so the machine is still useable. Installation takes under a minute, and updates are automatic.

It's closed-source because it's how I want to pay for my food and clothing, but it's a corporate mandate to open source in case of business closure, which is also explained in that blog post.

I'm sending out another wave of beta testers later today, and during the beta it's free. I'm giving heavy discounts to my beta testers that share feedback.

I'd love to hear what you think.

[+] xtracto|7 years ago|reply
Personally I don't like this response. The post specifically asks for Open Source software, and the top response is a closed-source service?

I am not making any judgement on the service, just that it is not an appropriate reply for what is being asked here.

[+] pheeney|7 years ago|reply
I have been looking for a photo meta data app for a long time, not sure if this is something you have/will offer.

I am essentially looking to leave the original photos on external drives and have an app that indexes them and stores a customizable thumbnail with the app to view them on my local machine. This way I can browse through all my photos and figure out the original file path if I want to retrieve them. The most important aspect is that I can take the drives offline while the thumbnails and index remains within the app and re-indexing when connected again.

My existing workflow is to import all photos on my mac to the Photos app. I pull them from different devices (phones, camera, etc). The photos app does an OK job at de-duping any matches. I also run PhotoSweeper to further de-dupe which analyzes the photos itself and I can leave the best ones remaining. After that I run some custom scripts to export the data as [year]-[month]/[year]-[month]-[day] [hour].[min].[sec].jpg. I then merge those onto my external drive and kick off my backup process to clone them to other drives and sync to cloud.

The closest I have come is Lightroom which indexed the drive a little bit but the "thumbnails" and catalog is huge. It allows some tagging and other features to discover old photos but some processes are a bit manual. This workflow seems to be common among digital asset management software which is expensive and way more then I am looking for.

[+] MrGilbert|7 years ago|reply
Also just signed up for the beta. :) If I can choose, I'll pay for a project that allows self-hosting rather than pumping my pictures into the cloud. I'm doing the same for Bitwarden, my go-to password manager.
[+] jayniz|7 years ago|reply
Signed up for the beta! I've been looking for something like this for my ~1TB photo database ranging back to 1999.
[+] meepl|7 years ago|reply
awesome, just signed up for the beta
[+] sfifs|7 years ago|reply
I created NasPics specifically for this reason. I wrote it in pure Go with no dependencies for ease of cross compilation since my NAS runs a weird old Debian based distribution of Linux on ARM. Running it is just cross compiling a binary, copying over and executing. For restart across boots, I just added a simple SystemD service file.

https://github.com/srinathh/naspics

(edit: some data destination paths are probably hard coded since I wrote it for myself but can be easily broken out into command line options if needed)

[+] hwj|7 years ago|reply
I appreciate the "no dependencies" but it seems the client still needs NodeJS:

> It is build on React using the Create React App tool, written in Javascript and requries a NodeJS development environment.

[+] howerkraft|7 years ago|reply
Do you have a demo somewhere or some screenshots of the client?
[+] canada_dry|7 years ago|reply
I'd love to find one that incorporates the functionality that Picasa (windows desktop) circa 2000 i.e. face recognition/matching.

It was way ahead of it's time, and actually worked!

Best of all, it did everything locally... not cloud based and thus retained privacy of your personal photo collection.

[+] bloopernova|7 years ago|reply
Picasa was so useful, so of course Google had to kill it.

It took multiple disparate photo directories and presented everything in a timeline of folders. And because everything was local, that happened quickly, rather than waiting for your browser to get the next 100 photo results from a javascript call or whatever.

Are there any photo clients for windows that present multiple folders as a single coherent timeline? And can manage tens of thousands of pictures? I've got stuff going back to the late 1990s and would love to be able to find all those old cat pictures or whatever.

[+] hazz99|7 years ago|reply
Google Photos does some really handy stuff with facial recognition, which was super helpful when searching & collating photos.

Doesn't help much for privacy, however.

[+] dashundchen|7 years ago|reply
Digikam has facial recognition and tagging using OpenCV. Can't speak to its accuracy though.
[+] mceachen|7 years ago|reply
I started writing PhotoStructure because I got tired of being burned by failed open and closed source media apps. I wrote more details about it in a top level post, but this blog post describes why I quit my job to do this full time, where the project is currently, and where it's going. https://blog.photostructure.com/introducing-photostructure/

I'd love to have you try out the beta and have you share feedback!

[+] jonahbenton|7 years ago|reply
Not specifically for photos, but I have been a user of Perkeep, a long running project from one of the golang maintainers that focuses on long term storage of one's data:

https://perkeep.org/doc/

[+] zimpenfish|7 years ago|reply
Although it's no longer actively maintained (IIRC) and some of the importers are currently broken for me (Mastodon importer can't talk to Pleroma, Pinboard has a JSON error, Twitter gives random "account not found", etc.)

Which is a shame because I really like Perkeep/Camlistore as a concept.

[+] preek|7 years ago|reply
I did exactly that a couple of months ago. After exporting my pictures, I ran fdupes to find duplicates and then imported all images into Shotwell.

I can still take pics on the phone which will be synced via Dropbox and Shotwell picks them up immediately. The sync is faster than I’m used to on iCloud and finally I just have files that I can tag, again.

Shotwell is also super fast, has a similar UI to photos.app (automatic events for example), but it also had hierarchical tags which it can even write to the files itself. So it’s very simple and yet portable without lock-in. Couldn’t be happier. Of course ymmv.

Good luck!

[+] andyjohnson0|7 years ago|reply
I've been using Lychee [1] on a vps with good results.

It looks pretty good, has multi-user capability, metadata editing, etc. It would be nice if it had some geotagging integration and ability to group albums into sets.

I filed a bug report and the developers/maintainers fixed it very quickly.

[1] https://github.com/LycheeOrg/Lychee

[+] dsd|7 years ago|reply
I've been helping on the laravel v4 project. The devs are pretty friendly and I haven't found anything with a better UI than lychee. Three project doesn't do everything but what it does do, it does well.
[+] asark|7 years ago|reply
Do any of these open-source solutions support Apple's Live Photos and videos alongside ordinary photos? I don't really want to have multiple applications for my family memories stuff. Just want to toss them in a directory and let on-photo/video-file metadata tags sort it out. Face auto-tagging and geo- and time-based grouping a must. Otherwise, can (ideally, would, in fact) just serve up dead-simple ugly HTML, if it's gonna be a web-tech thing, to minimize the developer workload if I have to take it over because the project dies.
[+] privong|7 years ago|reply
I was excited about MediaGoblin[0] for a while, but it seems development has mostly stalled. The last release was in March 2016(!). Things were going smoothly until they seemingly started devoting their resources to implementing federated sharing instead of developing the core media hosting functionality.

[0] https://mediagoblin.org/

[+] kermitismyhero|7 years ago|reply
Media Goblin is one of those projects that I really WANT to like, but I can't. The project goals are admirable. And when it's up and running it's great. But it's incredibly finicky to maintain and it's quite challenging to install.
[+] ebg13|7 years ago|reply
This is so sad to hear. I wonder how many total hours have been wasted and projects ruined chasing federation that nobody actually wants in the first place. :|
[+] fundamental|7 years ago|reply
I tried out a few options a couple of years back and I've stuck with Piwigo since then. It seems to work well enough for my needs and the export functionality built into digikam seems to make it simple to sync up photos between my desktop and server.
[+] Maakuth|7 years ago|reply
Me too. For me, it was important to be able to point it to my folders (well, symlinking to them) and 'syncing' so it read the metadata and generated the thumbnails without the need to upload them anywhere. Also the calendar view has proven useful. My collection of around 90k photos works well with it, even with my meek Atom-based home server.

One feature I'm missing at the moment is raw conversion support. It would be great if thumbnails and previews of raw photos could be automatically generated. I've solved this via generating previews with ImageMagick, but native raw support in Piwigo would be better.

[+] SpyKiIIer|7 years ago|reply
Is there any of these that can be pointed at a photo library on a NAS or harddrive, instead of having the application copy all the images into it's own location/database (which therefore required double the harddrive space)?
[+] jonathanp88|7 years ago|reply
The static gallery generator sigal(http://sigal.saimon.org) supports this. You can configure it to include the original images in the file tree it builds, but instead of copying the images just make a symlink.
[+] silversconfused|7 years ago|reply
I wrote a shell script to generate thumbnails (including gifs for video) and a page with the thumbnails, file size, and a link to the original. Something like that?
[+] aosaigh|7 years ago|reply
I’m looking for the exact same thing. Seems to be few and far between. I have a Synology which has two photo products but they can be a little clunky. The challenge seems to be a sensible way to add an import.
[+] cobbzilla|7 years ago|reply
rsync and then reindex worked well for me. But I’d agree that’s not really a sensible solution for non-technical users.
[+] demosthenex|7 years ago|reply
I should explain what I've tried.

Nextcloud photos is not a photo application. It's basically a shared gallery with thumbnails. There's no metadata support or editing. No true multiuser access other than granting sharing through Nextcloud like Dropbox. The only good part is you can autoupload from your phone.

I've looked at several webapps, like Piwigo. Most of them feel like a single user application or have limited upload and metadata support.

The closest I have found is Digikam using external SQL, but this requires a local application carefully configured with a DB and a fileshare.

[+] extra88|7 years ago|reply
> I've looked at several webapps, like Piwigo. Most of them feel like a single user application or have limited upload and metadata support.

Piwigo definitely supports having multiple users. What kind of metadata do you mean? It supports tagging and reads and displays EXIF data. It has extensions/plugins for adding capabilities.

[+] walterbell|7 years ago|reply
For those willing to use local (non-browser) apps, Photosync (iOS, Android, Windows, macOS) will transfer photos between mobile/desktop/cloud and a private central NAS. From there, you can mount the NAS or sync folders to another mobile/desktop device, for use with local apps.

https://www.photosync-app.com/home.html

[+] jmarxer4|7 years ago|reply
Try digiKam. Its GPL-licensed and runs on GNU/Linux, Windows and Mac OSs. The developers are readily available via a mailing list and a new version just came out. I've used it for years and find is quite good. It is very full-featured though, so you might need to spend some time getting to know it.
[+] realcoopernurse|7 years ago|reply
I really like thumbsup: https://thumbsup.github.io/

It generates a static web site, creates thumbs, etc. I just run it on my laptop and rsync to my personal nginx server. You could probably host the output directly from S3 or similar.

[+] pR0Ps|7 years ago|reply
Seems like a lot of people have their own solution, I'll add mine to the pile: https://github.com/pR0Ps/PhotoFloat

Screenshot: https://i.imgur.com/F6w8Ixz.png (just took it now so I redacted some info)

It consists of 2 parts:

- a Python script to parse metadata from photos into json files and create thumbnails.

- A JS-based frontend that consumes the json files and thumbnails to provide a UI.

Features:

- Can be hosted completely statically making it ideal for low-power servers

- Serves up your photos in the same file structure as they are on the disk

- Works with many types of photos, including most raw files

- Parses and displays common EXIF data

- Works well on slower connections (minimal HTML+CSS+JS, small thumbnails, placeholders, preloads images as you view, etc)