github immich-app/immich v1.91.0

latest releases: v1.120.2, v1.120.1, v1.120.0...
11 months ago

v1.91.0

Welcome to the release v1.91.0 of Immich! This release is packed with changes. Some of the highlights include:

  • A list of breaking changes/action required steps
  • More details about the removal of the Typesense container and switch to pgvecto.rs, including some FAQs
  • Notable fix: Backing up assets from iCloud no longer hangs the process

Important

Action Required

  1. docker-compose.yml updates related to dropping Typesense
  2. Reupload certain iOS Live Photos
  3. Changes to the LOG_LEVEL environment variable

1. docker-compose.yml updates

We are removing the Typesense container and changing the database image. Below are the changes that must be made in your docker-compose.yml file.

  immich-server:
  [...]
    depends_on:
      - redis
      - database
-     - typesense
    restart: always

  immich-microservices:
  [...]
    depends_on:
      - redis
      - database
-     - typesense
    restart: always

-  typesense:
-    container_name: immich_typesense
-    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
-    environment:
-      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
-      - TYPESENSE_DATA_DIR=/data
-      # remove this to get debug messages
-      - GLOG_minloglevel=1
-    volumes:
-      - tsdata:/data
-    restart: always

[...]

  database:
    container_name: immich_postgres
-   image: postgres:14-alpine@sha256:6a0e35296341e676fe6bd8d236c72afffe2dfe3d7eb9c2405c0f3fc04500cd07
+   image: tensorchord/pgvecto-rs:pg14-v0.1.11
    env_file:
      - .env
    environment:

volumes:
  pgdata:
  model-cache:
- tsdata:

Note

Note: If you are running your database with a non-superuser role for Immich, you must enable the pgvecto.rs extension manually. You can do this by connecting to the immich database as a superuser and running:

CREATE EXTENSION vectors;

Note

See below for more details about this change, including frequently asked questions.

2. Reupload certain iOS Live Photos

iOS Live Photos uploaded after v1.89.0 that are not linked need to be deleted and re-uploaded from the mobile app.

This is a one-time action, and future live photos uploaded from the mobile app will be properly linked together.

3. Changes to the LOG_LEVEL environment variable

The LOG_LEVEL value of simple has been removed. The equivalent value is log. If you were using the value simple, the server container will not start until this is updated.

FAQ

I kept Typesense disabled because my CPU doesn’t support AVX. Does this change mean I can’t use Immich anymore?

The new vector search extension we’re using, pgvecto.rs, does not require AVX to function as it does a runtime check on the SIMD instructions your CPU supports.

Does it work with Raspberry Pi?

It is tested to work with Raspberry Pi 5, and should work with Raspberry Pi 4 as well.

Do I need to do a backup and restore for my Postgres database?

While it is recommended to regularly backup your database, this change can be done in-place just by changing the image. You do not need to do a backup and restore unless you run into a specific issue that requires it.

I have a common Postgres instance that I share with other services. What do I need to do with this change?

The Postgres image we use is regular Postgres, just with the pgvecto.rs extension. If your Postgres instance is a regular instance without any third-party extensions, then you can simply switch out the image for that instance with the tensorchord/pgvecto-rs:pg14-v0.1.11 image (changing pg14 to the major version you use - 14, 15 or 16). This is a drop-in replacement that will work without a backup and restore.

If your instance has third-party extensions, then you will need to make a docker image that installs the pgvecto.rs extension in addition to the other extensions based on their installation instructions. An example of this for the CloudNativePG Kubernetes operator can be found here.

If you use a bare-metal instance and have a Debian-based server, then you may instead follow their installation instructions and install the pgvecto.rs Debian package directly.

While trying to backup and restore my Postgres instance, I got the error type “earth” does not exist. What do I do?

This is a bug with Postgres’ earthdistance extension. You can fix the issue by following the instructions here.

Search Background

It turns out that synchronizing data between Postgres and Typesense is quite complicated. It accounts for at least an additional 1000 lines of code and, while very feature-filled, has become a burden to maintain. Also, there have been some serious memory and performance issues with Typesense, especially with large photo collections. It is lightning fast, but at the expense of large indexes that must be read from disk into memory on each restart. There have been reports of this process taking up to 30 minutes!

We effectively remove an entire class of bugs and issues by removing the need to synchronize data. Furthermore, search queries can more easily be combined with the existing database schema, like libraries, partner sharing, albums, etc. After merging #3605, we hope to be able to make significant progress around the search implementation and feature set.

In short, some of the benefits of this change include the following:

  • One less container to run, deploy, and manage
  • Better memory/system resource usage
  • Decreased memory usage
  • Faster Encode CLIP and Recognize Faces jobs
  • Faster startup time
  • Significantly less code to maintain, test, debug
  • Improved developer workflow when adding search-related functionality
  • Ability to integrate smart search into end-to-end testing for improved testing coverage and stability
  • Ability to integrate CLIP search with other (metadata) criteria in the future
  • Ability to add customizable index settings for even lower memory usage and higher performance, such as on-disk indices and quantization

And as always, bugs are fixed, and many other improvements also come with this release.

Please consider supporting the project.

Support

If you find the project helpful, you can support Immich via the following channels.

It is a great way to let me know that you want me to continue developing and working on this project for years to come.

Changelogs

Breaking Changes 🛠

Server

Mobile

Web

Machine Learning

Documentation

Dependency updates

  • fix(deps): update server by @renovate in #5506
  • chore(deps): update base-image to v20231214 (major) by @renovate in #5705
  • chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 5ea70d2 by @renovate in #5707
  • chore(deps): update dependency sql-formatter to v15 by @renovate in #5709
  • fix(deps): bump sharp by @jrasm91 in #5509
  • chore(deps): remove unused cron types by @jrasm91 in #5563
  • chore(deps): pin dependencies by @renovate in #5567
  • chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a by @renovate in #5570
  • chore(deps): update python:3.11-slim-bookworm docker digest to cfd7ed5 by @renovate in #5572
  • chore(deps): update redis:6.2-alpine docker digest to b6124ab by @renovate in #5599
  • chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a by @renovate in #5632
  • chore(deps): bump github/codeql-action from 2 to 3 by @dependabot in #5694

Other changes

  • ci: Automatic categories in generated release notes by @bo0tzz in #5684
  • ci: Catchall category for release notes by @bo0tzz in #5701

New Contributors

Full Changelog: v1.90.2...v1.91.0

Don't miss a new immich release

NewReleases is sending notifications on new releases.