我的超强照片管理系统 (Immich 版本)
My Ridiculously Robust Photo Management System (Immich Edition)

原始链接: https://jaisenmathai.com/articles/my-ridiculously-robust-photo-management-system-immich-edition/

超过二十年来,作者一直在完善一种照片管理流程,重点在于长期保存照片、统一来自多个来源的图库以及改善查看体验。至关重要的是,此流程*完全*依赖于嵌入在照片文件中的EXIF元数据——避免了外部数据库的脆弱性。 在Google Photos的变动扰乱了他之前的设置后,作者寻找替代方案并发现Immich很有前景。他将Immich用作只读查看器,连接到他位于Synology NAS上的主要照片存储,该存储由一个名为Elodie的自定义命令行工具组织。 他开发了一个插件,将Immich与Elodie集成,从而可以通过EXIF更新实现组织(相册、描述、收藏夹),并自动备份到他的NAS和Dropbox。这通过直接将更改写入照片文件来避免Immich对数据库的依赖。虽然由于Immich和Elodie的交互方式而具有挑战性,但该解决方案比标准文件系统提供了更丰富的查看体验,满足了他重温回忆的愿望,并确保了照片的长期保存。代码可在GitHub上找到(issue #496)。

## Immich:一个强大的自托管照片管理系统 一篇Hacker News讨论强调Immich是苹果照片等云端照片存储的一个有吸引力的替代方案。多位用户报告了流畅的迁移过程,称赞其易于安装和强大的功能,如上下文搜索和OCR。 一个主要优势是能够利用本地硬件——即使是低功耗NAS,也可以使用桌面GPU进行机器学习任务,如图像处理。用户正在探索创新的设置,包括与家庭实验室节点的需求扩展。 虽然提到了Nextcloud + Memories等替代方案,但Immich凭借其专门的图像管理和对象标记等功能脱颖而出(尽管人脸识别在Nextcloud中更好)。有人提出了对EXIF中元数据存储以及去重/备份潜在问题的担忧,但Immich在文件组织方面的灵活性是一个优点。 最终,用户欣赏Immich的搜索功能以及自托管带来的安心感,即使它需要维护。有些人更喜欢像Pigallery2这样更简单的解决方案,但Immich对外部库的支持为手动文件管理和高级索引之间提供了一个潜在的桥梁。
相关文章

原文

TL;DR: Changes to albums, descriptions, location, date/time and favorites through Immich are stored in the photo’s EXIF and automatically backed up to my Synology NAS and into Dropbox; no database needed. Below is a video for those who prefer to watch instead of read.

I created a simpler version of the plugin I use that is suitable for those with their own workflows which might differ from mine. It’s available at immich-exif.


I’ve been working on my photo management and archiving workflow for over 2 decades. It’s changed a lot over that time but usually in bursts. It works really well and I don’t have to touch it much.

By far, the most durable aspect of my photo management workflow is that it only relies on EXIF to store metadata about photos. No reliance on an external database to keep track of descriptions, favorites or albums. I’m not sure of any other workflow which does this but I think they all should. But we’re not here to talk about that. I want to tell you all how I’m using Immich.

I outlined my philosophy for photo management in detail in another post but I’ll summarize them here in order of importance.

  • Preserve. My photo library needs to be future-proof for decades into the future.
  • Unify. Photos from my wife and my phones need to be combined into a single library.
  • Experience. The photos and videos need to come to life and help us re-experience the moments when they were taken.

I was using Google Photos as a read-only viewer of my photos and fell in love with the discovery features. But a change back in 2019 to how Google Photos and Google Drive worked together broke my workflow.

The primary source of my photos is my Synology NAS at home. I organize my photos using a simple command-line tool, named Elodie, that I wrote over 10 years ago that’s grown to 10k lines of code, 1,300 stars and 150 forks. The best way to describe it is that it materializes your photo library onto the file system using only the EXIF. It’s my canonical organizer.

I clobbered together a plugin for Elodie that would replace the Google Drive + Google Photos capabilities that Google deprecated. This let me continue using Google Photos as a read-only viewer for my photos. But I was growing tired of relying on Google services and especially handing over all of the data embedded in my photos. So I stopped using Google Photos.

I was left with several years of not having a great way to view my photos. I desire a richer experience than the folder-based default experience I have with Synology and Dropbox. I was very optimistic about Synology Photos but it was unfortunately underwhelming. Maybe because my Synolgoy NAS is 10 years old but I also didn’t want to upgrade it.

I’ve been hearing a lot of positive feedback from others about Immich and had been keeping a close eye on it. At the end of 2025, I decided to take a closer look. The aha moment was when I learned about external libraries. If you’re not familiar with them, they’re existing folders that you can tell Immich about and it’ll add them to your photo library. Most importantly, you can mount them as read-only.

I immediately drew paralells to my prior use of Google Photos. I quickly determined that I could restore what I lost with Google Photos using Immich. But I wondered … what if I could do more? Been wondering for a few years, actually.

Turns out the answer is yes. I was able to turn Immich from a read-only viewer to a full fledged way to organize my photos while relying only on EXIF. Now, Immich doesn’t modify EXIF of photos. Instead, it stores information into its Postgres database. Immich can read from and write to XMP sidecar files. But sidecars are too clunky for me. I want everything embeded in the photo file itself. As far as I understand, Immich authors don’t want to edit the original photo file. I get their reasoning but I still want to be able to.

What I thought would require a 4 hour session with Claude Code turned into a two week rendevous learning a lot more than I anticipated about how Immich works. External libraries are great but there are some obvious gotchas with how Elodie works. If you add a photo to an album using Elodie then it will update the photo’s EXIF and also move the photo into a folder with the name of the album. To Immich, this is interpretted as deleting the original file and creating a new one. This creates all sorts of challenges but I was able to solve it using an eventually consistent approach. This means, all of the changes are stored and will eventually materialize.

There were other smaller challenges but I was able to overcome them all with some elbow grease. Immich’s API is pretty great and I’m probably just scratching the surface. But for now, I’ve been spending a lot of time enjoying my photos like I haven’t been able to for a while without compromising my core principles for making sure they’re around in a couple decades.

A detailed technical explanation is outside the scope of this post but if folks want to know I’ll write it up separately. For now, follow GitHub issue 496 to track progress and see the code.

联系我们 contact @ memedata.com