
Ask HN: Personal photo library recommendations? Open source, browser-based - trbfred
I&#x27;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.<p>There seem to be lots of alternatives out there (Nextcloud, Piwigo, ...) but I&#x27;d love to hear about recommendations and experiences.
======
damianmoore
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/](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
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?

~~~
damianmoore
I definitely hear you regarding duplication. This whole project evolved from a
script I wrote to do just that. There is a concept of multiple versions
(files) of an image so different edits with the same metadata timestamp will
show only once and you'll be able to select the preferred one. I prefer to
handle things this way to start and then suggest deletions based on same hash
rather than deleting up front.

I don't have any experience of Lightroom but I can have a go at reading the
files if you think it's useful.

~~~
jonathankoren
I have something that works fairly well for duplicates and automatic
organization based on date. It’s python, so you can try integrating it, but
it’s not a module, just a single file script.

[https://github.com/jonathankoren/photo-
autorganize](https://github.com/jonathankoren/photo-autorganize)

~~~
damianmoore
Thank you. I'll definitely check it out.

~~~
jonathankoren
Reach out if you want help

------
mceachen
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/](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
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.

~~~
mceachen
Yeah, I hear you.

Having written many open source libraries (my rubygems have been downloaded
several million times, my node packages are close to that, and I've
contributed to other libraries for over a decade), I personally will choose
open source projects over closed-source because I don't want to be victimized
by abandonware or corporate whims.

It seems like photo software (both closed and open source) is especially prone
to dying on the vine. It's a common need, and it's easy (and fun) to write a
simple script that makes thumbnails from a folder of images. I seen countless
photo projects on github, but as complexity ramps up quickly, the installer
script (if there is one) breaks, updates fail, there aren't any tests, and the
author gets bored and moves on.

I guess I felt justified here because a) it is self-hosted, and b) I'd added
my corporate mandate to open-source the codebase in case of business closure.
(I don't remember a corporation doing this open-source-on-close before, do
you?)

I've actually already open-sourced some of the trickier bits:
[https://exiftool-vendored.js.org/](https://exiftool-vendored.js.org/) and
[https://batch-cluster.js.org/](https://batch-cluster.js.org/). I expect that
to continue.

------
sfifs
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](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
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.

~~~
sfifs
It's needed just to build the front end on dev machine. The front end HTML JS
and resource files are embedded into the binary executable during
compilation.. so i literally just copy over a binary

------
canada_dry
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
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.

~~~
mceachen
> Are there any photo clients for windows that present multiple folders as a
> single coherent timeline?

PhotoStructure does this (and I believe is the only software that does robust
time zone inference, as well). (I've posted elsewhere here with more details).

------
jonahbenton
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/](https://perkeep.org/doc/)

~~~
zimpenfish
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.

~~~
vorpalhex
Could you try to troubleshoot some of the issues and open PRs? It doesn't take
an army to resuscitate a project...

\-- Edit --

Actually on checking, it doesn't seem like Perkeep is at all dead. I'm seeing
several updates in the last month...

~~~
zimpenfish
I was going off
[https://groups.google.com/forum/#!topic/perkeep/Kqvh2dJVmoo](https://groups.google.com/forum/#!topic/perkeep/Kqvh2dJVmoo)

Which seems to me fairly definite about it no longer being actively
maintained. There haven't been any updates to that posted on the @perkeeporg
Twitter at least.

~~~
vorpalhex
Sounds just like their full time maintainers got busy. May well be able to
find another one, or even have a few folks fill in.

I'm actually going to check out perkeep when I get a chance and see if I can't
help out some.

------
preek
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
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](https://github.com/LycheeOrg/Lychee)

~~~
dsd
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
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
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/](https://mediagoblin.org/)

~~~
kermitismyhero
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.

~~~
privong
> 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.

Agreed. I guess I could've been more specific in my original comment, easy of
installation/maintenance are the things I wish they'd have worked on before
worrying about federation. At this point I'm thinking about what will e the
least painful way to migrate from mediagoblin to something else.

------
ChymeraXYZ
I haven't tested it but
[https://github.com/photoprism/photoprism](https://github.com/photoprism/photoprism)
looks promising.

------
reacharavindh
One more option...

[https://github.com/hooram/ownphotos](https://github.com/hooram/ownphotos)

Have not had that weekend to try these options myself.

------
fundamental
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
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
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
The static gallery generator
sigal([http://sigal.saimon.org](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.

------
aosaigh
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
rsync and then reindex worked well for me. But I’d agree that’s not really a
sensible solution for non-technical users.

------
demosthenex
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
> 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.

------
yourfate
I use Lychee: [https://lycheeorg.github.io/](https://lycheeorg.github.io/)

easy to set up, looks decent, even shows exif data like exposure time, lens
used etc.

------
walterbell
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](https://www.photosync-
app.com/home.html)

------
jmarxer4
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
I really like thumbsup:
[https://thumbsup.github.io/](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
Seems like a lot of people have their own solution, I'll add mine to the pile:
[https://github.com/pR0Ps/PhotoFloat](https://github.com/pR0Ps/PhotoFloat)

Screenshot: [https://i.imgur.com/F6w8Ixz.png](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)

------
mitchtbaum
If you don't end up finding what you want, then you could start with scoping
out what you intend to find or create (..and post it somewhere find-able :)

For example, I've gone back to Shantsel's UX research several times over the
course of thinking through app designs, eg:

* [http://shnatsel.blogspot.com/2012/08/irc-client-new-tab-mock...](http://shnatsel.blogspot.com/2012/08/irc-client-new-tab-mockup.html)

* [http://shnatsel.blogspot.com/2012/03/true-app-center.html](http://shnatsel.blogspot.com/2012/03/true-app-center.html)

------
pjc50
Bonus question: I, like a lot of other people, did a full Flickr export due to
the reduction in hosted pictures. I now have all the metadata - is there a way
I could import or use this locally?

(I did take a brief look at it, it's fairly normal json)

------
demosthenex
I've been unable to find an open source multiuser local photo product. I'd
love for my whole family to upload cell phone photos and SD cards to a central
place we could share and tag from, without it belonging to Google.

~~~
pnutjam
I run a small linux server that acts as a NAS. I rsync everyone's phones to a
home directory, manually, and then pull that into a shared directory.

I just went through and renamed all my pictures by the exif create date,
adding any unique names to exif UserComment.

I'm working on scripting all of this, but it works for me and I can pull data
from anything into the directory. Everyone in the house can access it via
samba and view the pictures.

------
mnutt
I’ve been tinkering on something adjacent, to replace my Instagram usage
rather than Photos.app. I was thinking of a sort of “album as a blog post”
concept using Ghost, which could be a single image per entry, or a series of
images with optional prose interspersed. The idea is to take an album and
auto-generate a blog entry with inline photos that can be edited in Ghost. It
can also pull out photo metadata and create a map, etc.

Unfortunately Ghost isn’t as modular as I hoped so it is involving lots of
edits to the source, and automatically extracting album metadata from
Photos.app has also turned out to be difficult.

~~~
mboperator
Hey Mnutt,

My passion project, Odyssey, accomplishes something similar to what you're
describing here.

With Odyssey, you can create stories that combine videos, photos, text, and
drawings all on a digital canvas.

If you're interested, I encourage you to sign up for the closed beta. I'd love
to get your feedback :)

[https://theodyssey.app/](https://theodyssey.app/)

------
decasteve
Any particular reason for the browser-based requirement?

I’ve used Lightroom and CaptureOne to manage my photo library but ended up
using digiKam in the end because I can just mount a volume and use it from any
desktop.

------
flurdy
Many years ago I was dumping all my photos into Coppermine [1]

It was/is very good. But patching it and PHP became a chore and I eventually
migrated away to a messy matrix of Dropbox, Flickr, Google Photos and Apple
Photo...

I should look into consolidating them all. Always tempted to write my own,
aimed at photo albums for non-photographers... but it will probably not move
beyond a readme.md...

[1] [https://coppermine-gallery.net/](https://coppermine-gallery.net/)

------
uptown
Check out Koken. Pair it with Lightroom for editing if desired. Self hosted
and quite powerful.

[http://koken.me/](http://koken.me/)

~~~
icebraining
Unfortunately not under an open source license, and the license can be revoked
or changed "at any time, for any reason, without notice."

(EDIT: clarified that the issue is the license; the source is readable)

~~~
uptown
So basically it satisfies all of trbfred's specified requirements.

------
Odenwaelder
I've been looking for the same thing. An Apple Photo clone would be perfect,
as I like this product very much, but I would like to have control over my
photos.

~~~
ImprovedSilence
Yeah, I’m in the similar boat here too. I have an iPhone, and a Mac, but any
interface between the two is needlessly completely busted unless you use
iCloud. I want out of that game.

------
tenebrisalietum
Try Shimmie2. It works like the danbooru or ouroboros style imageboards.
Requires LAMP stack and php-gd, and ffmpeg if you want video thumbnails.

\- Stores files by md5 hash and doesn't allow duplicates.

\- Database is used to store tags and support searching and is not very large.

\- Can tag pictures and search by tag.

\- Is fast. Can handle large number of images and large number of search
results.

\- Can enable pools feature and arrange pictures in a pool.

\- Can enable wiki feature, which while primitive, is nice for adding notes.

\- Is multiuser.

------
yboris
Shameless plug: if you are want a library for videos, I created an MIT open
source _Video Hub App_ \- nearing version 2.0.0

[https://github.com/whyboris/Video-Hub-App](https://github.com/whyboris/Video-
Hub-App)

Sorry unsure about good photo alternatives, but my first place to research is
[https://alternativeto.net](https://alternativeto.net)

------
Dnguyen
I used [https://galleryserverpro.com/](https://galleryserverpro.com/) many
years back. It was one of the better ones back then. I switched to Amazon
Photo as I didn't want to deal with another server and backing up my precious
family photos. Looks like it's open sourced now, which is even better, if you
don't mind .Net and SQL Server.

------
sirmac1k
With online photo galleries either private or work related for many years I'm
always relaying on piwigo. It's great, handy and easy to setup after the first
try. We're hosting even big internal photo archives with upload via ftp, and
piwigo does a great job at handling it.

------
jpb0104
I haven't tried [https://github.com/agile-leaf/50mm](https://github.com/agile-
leaf/50mm) yet. But am curious about it and similar solutions.

------
davidbanham
I wrote Photobomb to solve this need for myself:

[https://github.com/davidbanham/photobomb](https://github.com/davidbanham/photobomb)

------
JustSomeNobody
I wish iOS photos app would allow me to sync to my server (SMB, sFTP,
whatever). It is the only app allowed to sync in the background without using
the location hack.

------
machbio
Drawing Parallels - really would be happy if there was an application that
could use Object storage as backend.. and could be hosted with AuthN and AuthZ

------
xingped
Out of all these tools posted here, are there any that provide a way for you
to authorize friends to also upload photos to your library?

~~~
silversconfused
mediagoblin is multiuser

------
qwerty456127
Is there one that can import Mac photo libraries an remove duplicate pictures
by the way?

~~~
naikas
I am looking for this exact feature. Identifying duplicates from multiple
back-ups. Is there a cool way?

~~~
JustSomeNobody
Exiftool allows you to handle dupes while organizing photos.

[http://owl.phy.queensu.ca/~phil/exiftool/](http://owl.phy.queensu.ca/~phil/exiftool/)

------
fouc
I'm surprised none of the suggestions seem to have anything for user-inputted
tags.

