Skip to content

News

This page list news and announcements related to Immich Distribution. I will only write here if there is something new, interesting or breaking. If you like to follow my release process, see the new-version tag on GitHub.

Localhost

To increase security, with the release of Immich Distribution v1.102 and forward, the backend services will no longer listen on all interfaces. They will only bind to 127.0.0.1:3001, 127.0.0.1:3002 and 127.0.0.1:3003 respectively.

In a less tech-y way. You must access Immich Distribution via HAProxy on port 80 (http) or 443 (https). This has always been the supported and expected way to use Immich Distribution so I do not consider this a breaking change. If anyone has the need to access it directly, open an issue and we can discuss a solution for you.

One Year!

Yesterday was the one year mark of Immich Distribution. It's has been a fun and interesting year with a few ups and downs. Let's reflect on the past year and try to guess about the future.

commit 72d549a5c0344f89a4173623a3f7eaedab6c54ef
Author: Stefan Berggren
Date:   Sat Mar 11 12:20:32 2023 +0100

   init

I have made zero effort to announce the project over the year (except publishing it in the Snap Store). A slow grow was to my advantage, a year ago I had no idea how hard this would be and I like to stay a little quiet while I test the waters.

The upstream Immich projects developers warned me that it may be hard to automatically upgrade a project like Immich in it's current state. I disagreed and thought that this should be doable. They where happy that I was clear that this was an unofficial package. That was important to me, I had no wish to cause any disturbance to them.

I'm happy to report that I have been able to automatically upgrade every single release except one last summer. A few users had to run a single command manually. It's possible that I was the only one affected because it only affected people with older installations.

I think that Immich popularity has been to my advantage, upstream have been forced to be a little more careful when releaseing breaking changes. Most breaking changes has been changes to the configuration files or database versions. Everyting is packaged inside the snap package in Immich Distribution so that has not been a problem for me.

I have had a few occurrences when I considered giving up, especially when I had to troubleshoot buggy or weird libraries for weeks. Some have been a pain and taken a lot of energy from me. This is someting I do as part of my free time, and when the time and motivation has lacked, progress has been slow.

It has been fun to see the users slowly grow. My snap is tiny compared to the official release, and even small compared to the other community packages. But with zero marketing that is expected! That is something I think will change during 2024, because I intend to spread the word a little!

I also published a nice graph with the 89 Immich releases over the last year! 🤯

Release v1.95

This release bumps the version of pgvecto.rs to 0.2.0. The index format has changed and a few database operations are needed. Immich runs these operations as part of it's normal migrations. The problem is that Postgres needs to be restarted after. So the official instructions are just that. "Upgrade, wait, restart".

Story time!

I considered to manually run these database migrations as part of the update hook, alternatively as part of the database startup script. That would have been a clean solution, but I'm a little worried that I would have missed something extra that Immich needes, so I followed the official instructions.

The database restart needs to occur after immich has started. I considered writing some form of logic to detect the appropriate time, but to keep things simple, I just wait five minutes. A simple solution, good enough!

I created a simple "migration" service that I use to trigger this logic. It felt better to write something more generic instead of a one off script that I needed to keep around for months (a few users are slow to upgrade).

What to expect

Zero care automatic updates as usual. If you actively use the system the first five minutes you may notice that search is broken. It should fix it self after five minutes.

Troubleshoot

If search is still broken, please open an issue and report the output of:

Inspect the new migration tools migration version
sudo snap get immich-distribution manager-migrations-version
Inspect the manager service
systemctl status snap.immich-distribution.manager.service

Fix CR2

I noticed that I was unable to process a CR2-file (I think other RAW image formats may have been affected as well). The problem was that libvips fails to difference between TIFF-images and image formats based on top of TIFF like Canons CR2 RAW image format. ImageMagic handles this properly so the fix was to remove TIFF-support from libvips. Libvips will send all unknown formates down to ImageMagic.

ImageMagic is slower compared to libvips so this will slow down TIFF processing a little, but it will fix several RAW image formats. This fix reflects what upstream has done already and I consider it a bug that I missed this when I build my own version of libvips.

Enable blog

I have upgraded mkdocs-material to the latest version and enabled the blog. This was earlier a payed feature. I have migrated all old news articles over.

Release v1.71

Relese updates

From this point on forward, I will omit news posts that says nothing more interesting than "new version". If you like to follow my release process the new-version tag is probably more interesting.

This release was the first one done by GitHub Action Automations. I have written a script that runs a few times a day for new upstream releases. If there is a release, an Issue is created like this one, and a pull request is created like this one. All the output that I normally executed on my computer is added to the PR.

This pattern follows what I have been doing manually for a few months, this is just another tooling improvement that I have implemented in this release utilizing the improved tests and version bump scripts.

Release v1.88

There has been 17 releases since the last news post. The automatic issues and pull requests have simplified the release process and a few have been more or less fully automatic.

BREAKING CHANGE: This release removes the bundled CLI command

The Immich CLI have been included in the package since the begining. It has been removed in this release.

I have included Immich CLI in the package under immich-distribution.cli since the beginning. I initally added it for the upload functionality in the sync feature but choose to expose it to users via immich-distribution.cli.

The bundled CLI has not been that useful, it's restricted from where it can read due the sandbox and I never found it useful myself. I usually install the cli manually outside anyway. The CLI has since five days ago been deprecated in favour of a new CLI that's included in Immich normal repository.

Install Immich CLI

You need to install the new CLI manually, upstream documents it here. There is also a excellent 3rd party cli called immich-go that may be easier to install, and have several interesting features.

I have implemented the file upload logic myself in Python (with inspiration from the documentation). I initally avoided this because I thought the API would change a lot and it would be easier to call the official command line utility. The tests use the same logic to if this fails, the automatic tests should catch it.

Release v1.69

Issue #55 - (Released to beta 2023-07-27)

The last release contains improved update tooling, this release contains improved tests. This should help me find problems earlier, and shorten the amount of manual testing that I need to do.

Release v1.68

Issue #53 - (Released to beta 2023-07-26)

Bumped the version, improved tooling around my update modal patch because it had changed in upstream again. This should make it easier for me to update this in the future if the file changes.

Info

The update was delayed a little due my vacation and the above patch made this a tiny bit more complex.