Most active commenters
  • denysvitali(3)
  • esseph(3)

←back to thread

224 points jamesxv7 | 34 comments | | HN request time: 1.241s | source | bottom

First of all, this is purely a personal learning project for me, aiming to combine three of my passions: photography, software engineering, and my family memories. I have a large collection of family photos and want to build an interactive experience to explore them, ala Google or Apple Photo features.

My goal is to create a system with smart search capabilities, and one of the most important requirements is that it must run entirely on my local hardware. Privacy is key, but the main driver is the challenge and joy of building it myself (an obviously learn).

The key features I'm aiming for are:

Automatic identification and tagging of family members (local face recognition).

Generation of descriptive captions for each photo.

Natural language search (e.g., "Show me photos of us at the beach in Luquillo from last summer").

I've already prompted AI tools for a high-level project plan, and they provided a solid blueprint (eg, Ollama with LLaVA, a vector DB like ChromaDB, you know it). Now, I'm highly interested in the real-world human experience. I'm looking for advice, learning stories, and the little details that only come from building something similar.

What tools, models, and best practices would you recommend for a project like this in 2025? Specifically, I'm curious about combining structured metadata (EXIF), face recognition data, and semantic vector search into a single, cohesive application.

Any and all advice would be deeply appreciated. Thanks!

1. crobibero ◴[] No.44426343[source]
I think Immich checks a lot of these

https://immich.app/

replies(5): >>44426505 #>>44426857 #>>44427196 #>>44429603 #>>44434882 #
2. sz4kerto ◴[] No.44426505[source]
This. It's a fascinating project, it is hard to believe how can an FLOSS project be so high quality. In my book it's on the level of Postgres (although it's a smaller project, probably).
replies(2): >>44426592 #>>44426992 #
3. denysvitali ◴[] No.44426592[source]
Their frontend is amazing, their apps are not as performant, and the backend is (IMHO) the worst of them all.

No hate here, I'm really grateful for what they've achieved so far, but I think there's a lot of room for improvement (e.g: proper R/W query split, native S3 integration, faster endpoints, ...). I already mentioned it in their channel (they're a really welcoming community!) and I'm working on an alternative drop-in replacement backend (written in Go) [1] that will hopefully bring all the needed improvements.

TL;DR: It's definitely good, especially for an open-source project, and the team is very dedicated - but it's definitely not Postgres-good

[1]: https://github.com/denysvitali/immich-go-backend

replies(1): >>44427227 #
4. sircastor ◴[] No.44426857[source]
Immich is what I'm using right now. I'm running it in a Docker container on my Synology. It was very advantageous to spin up another docker container on my laptop to do the face recognition work because the Synology was going to take forever on it.

We no longer are auto uploading to Google or Apple.

So far, I really like it. I haven't quite gone 100%, as we're still uploading with Synology's photo app, but Immich provides a much more refined, featured interface.

replies(3): >>44427168 #>>44427672 #>>44428506 #
5. esseph ◴[] No.44426992[source]
Looking at the world around me, so much of it is driven by open source. In fact, I can't name a single piece of electronics around me that isn't using it.
replies(1): >>44429456 #
6. noncoml ◴[] No.44427168[source]
> We no longer are auto uploading to Google or Apple.

May I ask why? Just curious as the main reason I use Immich is for the auto upload

Edit: Ugh. Can’t read. I somehow read don’t auto upload to Immich.

replies(2): >>44427230 #>>44427306 #
7. lucideer ◴[] No.44427196[source]
Been running immich on my home server for about a year now.

Near zero maintenance stack, incredibly easy to update, the client mobile apps even notify you (unobtrusively) when your server has an update available. The UI is just so polished & features so stable it's hard to believe it's open source.

replies(1): >>44431641 #
8. darkwater ◴[] No.44427227{3}[source]
Why the focus on S3 for a self-hosted app? Anyway kudos for the effort, I'm not experiencing performance issues in my locally self-hosted Immich installation but more performant software is always welcome.
replies(3): >>44427550 #>>44428576 #>>44429185 #
9. adezxc ◴[] No.44427230{3}[source]
because you don't want your data being held by Google or Apple?
10. import ◴[] No.44427306{3}[source]
Self hosting and owning your own data
11. rkagerer ◴[] No.44427550{4}[source]
I'm wondering the same thing. He had me until he said "S3".
replies(1): >>44427626 #
12. bargainbin ◴[] No.44427626{5}[source]
Likely means S3 compatibility so it can be used with anything, be it a cloud provider or a locally hosted solution like minio
replies(1): >>44427928 #
13. darknavi ◴[] No.44427672[source]
If you want a solid "just upload the photos" experience, PhotoSync on iOS is really great.

I think you can use Immich to just look at a folder and not use the backup from phone bits.

replies(2): >>44431070 #>>44437965 #
14. denysvitali ◴[] No.44427928{6}[source]
S3-compatible storage. In my case, Backblaze B2. The idea is to make the backend compatible with rclone, so that one can pick whatever storage they want (including B2 / S3 and others)
replies(1): >>44432237 #
15. old-gregg ◴[] No.44428506[source]
May I ask: why not use Synology's own photo stack? The web UI is pretty good, the iPhone app is great, it runs locally without depending on Synology servers, and does have face recognition and all other features.
replies(3): >>44429245 #>>44429755 #>>44432124 #
16. jasonjayr ◴[] No.44428576{4}[source]
I have and love my self-hosted immich install. If self-hosted could also use S3 storage, that allows me to use Garage (https://git.deuxfleurs.fr/Deuxfleurs/garage) , which also lets me play games with growable/redundant storage on a pile of second-hand hard drives. IIRC it can only use a mounted block device at the moment, (unless there is a nfs-exposed s3 translator ....)

A lot of existing tooling supports the s3 protocol, so it would simplify the storage picture (no pun intended).

17. toomuchtodo ◴[] No.44429185{4}[source]
S3 compatible means one can point it at any storage that talks S3, which is a lot more flexible than POSIX or NFS.
18. itsdrewmiller ◴[] No.44429245{3}[source]
Have you tried Immich? It is extremely polished and has every feature you mentioned, along with being open source with tons of community energy and no lock in.
19. weird-eye-issue ◴[] No.44429456{3}[source]
Most tend to be backend only or much lower level. Open source projects with complex UIs and mobile apps is pretty rare I think
replies(1): >>44429487 #
20. esseph ◴[] No.44429487{4}[source]
I would find that argument plausible if the comment I replied to didn't mention Postgres as the bar.
replies(1): >>44430494 #
21. nradk ◴[] No.44429603[source]
Been running Immich for a couple years now and it has been awesome. There are a few rough edges but I’m sure most of them will be smoothed out by the first stable release.
replies(1): >>44429763 #
22. sircastor ◴[] No.44429755{3}[source]
I didn’t want to be attached to the Synology system or hardware anymore. Synology Photos is great (and we’re still using it for the upload atm), but Immich lets me control the whole thing, top to bottom.

I’m running a DS1813+. It’s stopped getting new feature updates. This approach lets me keep the storage running while migrating away the server components.

23. magicalhippo ◴[] No.44429763[source]
Haven't had great results with the AI portion though, even with the recommended model. Embeddings seem really poor, and has lots of misses and false positives.

Given how good the new multimodal models are, I've been thinking it would be much better to just have a multimodal model describe the image, and let the searching be done by the already included melleisearch.

That said, due to reasons I haven't had time to mess with it past couple of months, so perhaps something drastic has changed.

24. weird-eye-issue ◴[] No.44430494{5}[source]
Again, Postgres is lower level software
replies(1): >>44431219 #
25. xiconfjs ◴[] No.44431070{3}[source]
ACK. The best part is the one-time-pay option to unlock background sync with many different triggers which can be combined - mine 03:00 am with charger connected in my WLAN. Love the software.
26. esseph ◴[] No.44431219{6}[source]
Apologies, misread.
27. hammyhavoc ◴[] No.44431641[source]
This seems in stark contrast to others complaining enough about breaking updates that I haven't bothered to try it until it is deemed "stable".

Is it really that stable and flawless in terms of updates?

Because I'm sat here with ZFS, snapshotting and replication configured and wondering why people scare others off of it when the tools to mitigate issues are all free and should be used anyway as part of a bog-standard self-hosted stack.

replies(2): >>44432816 #>>44432953 #
28. graealex ◴[] No.44432124{3}[source]
To avoid the same debacle that already happened once with Video Station?
29. darkwater ◴[] No.44432237{7}[source]
I backup my immich photos in B2 with rclone but I prefer having it as a separate process (also, the backup is append-only). I don't need "hyperscale", and storing directly on S3/B2/remotely breaks a bit the 3-2-1 rule I want to follow.
replies(1): >>44432680 #
30. denysvitali ◴[] No.44432680{8}[source]
On B2 (and S3 storage in general) you can set a retention policy for what happens after you delete an object (e.g: object lock with persistance for at least 30 days). Of course this is not a substitute for a backup - but it's better than discovering that you deleted your whole 1TB library when it's too late
31. i-am-gizm0 ◴[] No.44432816{3}[source]
I've also been running it for a year or two now. There used to be a lot more "breaking" releases but that's slowed way down recently as they approach a "stable" release. As long as you don't use Watchtower or other tools that blindly update containers immediately, you're all set. When there are breaking changes, they are extremely clearly marked in the release notes with migration steps included. So as long as you read those you're all set
32. lucideer ◴[] No.44432953{3}[source]
I've only been running it for about a year (August last year) & from skimming those comments I get the impression I got in at the right time - there's a sense that they've improved stability a lot lately compared to what it was like & it may still be burdened with the fallout of reputational damage from that period.

I also perform all my updates manually - it's fully automated: a simple script that runs in seconds across my entire home server - but I don't have it on any schedule so I'm not doing anything blind. That at least affords me the luxury of being present if/when anything breaks (though for Immich that has not occurred yet).

33. techsystems ◴[] No.44434882[source]
I feel this is the only answer needed. It's also very average-person friendly.
34. SirMaster ◴[] No.44437965{3}[source]
I tried PhotoSync, but it feels like a really misleading name. When I delete photos from my phone, they don't delete on the sync destination, so it's not actually a "sync".

So my photo storage on my home server is getting filled with a bunch of useless images that I only have on my phone temporarily and that I end up deleting shortly after.