Upgrade Path

Immich 1.49.0 → 3.2.4

221 versions, 38 with breaking changes (4 repeat an earlier entry), 31 with upstream notes or warnings only (4 repeat an earlier entry), 2 required stops

Required stops

Version by version, oldest first

1.50.0 – 1.50.1: no action items (2 versions)

1.51.0 2023-03-20

1 Breaking — show quotes

Breaking

This release added a new container to Immich's ecosystem, namely Typesense. Please update your docker-compose.yml file to include the new container and .env file to have the new environment variable, which is TYPESENSE_API_KEY=some-random-text, TYPESENSE_API_KEY is a requirement for Typesense container to spin up, you can use any text for the key, the server will use that value to create a client to communicate with the Typesense container.

Please make sure to have your server and mobile app on the same version so that the app can work correctly.

Typesense container is required for now, but we plan to make it optional with the fallback of using Postgres full-text search for the searching mechanism.

  immich-server:
    depends_on:
      ...  
      - typesense
   
  immich-microservices:
    ...  
    depends_on:
      ...
      - typesense
  
  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.0
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
    logging:
      driver: none
    volumes:
      - tsdata:/data

[...]

volumes:
  pgdata:
  model-cache:
  tsdata:

Please ensure to add typesense to the depend_on section of the immich-server and immich-microservices containers.

Full release notes for 1.51.0

1.51.1 – 1.55.1: no action items (9 versions)

1.56.0 2023-05-18

2 Note — show quotes

Note

NOTE: This feature has not been implemented on the mobile app NOTE: Anytime you trigger the ALL option to run Recognize Faces, the previous name/nickname that was assigned to the people will be deleted as well

Note

NOTE: This feature has not been implemented on the mobile app

Full release notes for 1.56.0

1.56.1 – 1.56.2: no action items (2 versions)

1.57.0 2023-05-23

1 Note — show quotes

Note

NOTE: After setting the template name, you must run the Storage Template Migration job to move files from the older storage path to the new one.

Full release notes for 1.57.0

1.57.1: no action items (1 version)

1.58.0 2023-05-27

1 Breaking, 1 Note — show quotes

Breaking

  • Older Immich database (Before the September 6th, 2022 release) might run into an issue with the checksum column being null in the assets table. Please follow this guide to fix.
  • The server and the mobile app must be on the same version (v1.58.0) for the Partner sharing feature on the mobile app to work correctly.
  • The docker-compose.yml has changed the content. Please make sure to update yours.

[image: image]

Note

Note: When using external software to manage sidecar metadata, please keep in mind that Immich will not detect changes in the main image file. Please make sure to run the SYNC job to get the data updated

Full release notes for 1.58.0

1.59.0 2023-05-30

1 Breaking — show quotes

Breaking

The mobile app and the server has to be on the same version (v1.59.0) for the app to work correctly.

Highlights

In this release, we added scroll to zoom ability to the asset viewer, made minor improvements to the web UI, and fixed some bugs we introduced in the last release.


As always, please consider supporting the project.

🎉 Cheer! 🎉

Support

If you find the project helpful and it helps you in some ways, you can support the project one time or monthly from GitHub Sponsors

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.

What's Changed

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.58.0...v1.59.0

Full release notes for 1.59.0

1.59.1 – 1.62.1: no action items (5 versions)

1.63.0 2023-06-24

1 Breaking — show quotes

Breaking

Some databases might run into migration issues in the release - please follow this guide to fix


Hello, Immich fans! Welcome to the v1.63.0 release of Immich. There are many updates in this version that we hope you'll like. Some of the key highlights include:

  • Initial support for a read-only/existing library.
  • Support for more raw formats.
  • Album titles now appear in the search results.
  • Pinch-to-zoom asset grid on the mobile app.
  • Facial recognition on the mobile app.

Highlights

Initial support for read-only/existing library.

Thanks to @alex-phillips, Immich now has the ability to import an existing gallery without the need to upload the files. This has been one of the most requested features, and I am happy that we can now cover this use case as well. However, this is only the initial implementation and will receive improvements in the future.

The current limitations of this feature are:

  • Assets are not automatically synced and must instead be manually synced with the CLI tool.
  • Only new files that are added to the gallery will be detected.
  • Deleted and moved files will not be detected.

To understand how to use this feature, please see head to the documentation site

Support for more raw formats

With the integration of imagemagick, Immich now has support more raw photo formats and will generate high quality thumbnails to display on the timeline. I hope this helps everyone who owns a DSLR or mirrorless camera.

More love to the mobile app

We have neglected the mobile app for a while, so we’ve decided to give it some left over love from the Web and the Server 😛.

We added the facial recognition feature to the mobile app so you can view faces and photos of a person.

You can pinch to zoom in and out of the timeline to change the number of assets displayed on each row.

pinch2zoom.webm


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.

🎉 Cheers! 🎉

What Changes

Web

Server

Mobile

Chore

Full release notes for 1.63.0

1.63.2 – 1.71.0: no action items (12 versions)

1.72.0 2023-08-06

1 Breaking — show quotes

Breaking

  • The mobile app needs to be on the same version of the server v1.72.0 to operate correctly.
  • Drop support for armV7

Full release notes for 1.72.0

1.72.1 – 1.72.2: no action items (2 versions)

1.73.0 2023-08-15

1 Breaking — show quotes

Breaking

Please make sure the mobile app and the server are on the same version to see the album displayed on the mobile app.

Full release notes for 1.73.0

1.74.0: no action items (1 version)

1.75.0 2023-08-26

1 Breaking — show quotes

Breaking

  • To disable machine learning now, use IMMICH_MACHINE_LEARNING_ENABLED=false

(previously IMMICH_MACHINE_LEARNING_URL=false)

  • Sentence-Transformers is no longer used for CLIP models, users who set MACHINE_LEARNING_CLIP_IMAGE_MODEL or MACHINE_LEARNING_CLIP_TEXT_MODEL must migrate to one of the ViT-B models listed here, with the caveat that OpenCLIP models will require running CLIP on all images since the embeddings are incompatible.

Full release notes for 1.75.0

1.75.1 – 1.79.1: no action items (9 versions)

1.80.0 2023-10-02

1 Breaking — show quotes

Breaking

Warning

Breaking Changes (Action Required)

  • The reverse geocoding settings have been moved to the admin settings pages. If you have set the level of accuracy in the .env file, you will need to make the corresponding changes in the settings menu on the administration page on the web.
  • Migrate thumbnails to a new folder structure by running the new migration job Admin > Settings > Migration. See #4112 for more details)

Full release notes for 1.80.0

1.81.0 – 1.81.1: no action items (2 versions)

1.82.0 2023-10-17

1 Breaking — show quotes

Breaking

Warning

Action Required - BREAKING CHANGE

  • The mobile app and server must be on the same version to work correctly.
  • We removed a section from the default docker-compose.yml that passed the IMMICH_SERVER_URL and IMMICH_WEB_URL environment variables to immich-proxy. If your setup requires those, make sure you keep them passed through.
  • We have improved the time bucket grouping algorithm (see more below). To take advantage of this feature, please run the job to “Extract Metadata” for all assets.

[image: image]

Full release notes for 1.82.0

1.82.1: no action items (1 version)

1.83.0 2023-10-28

1 Note — show quotes

Note

Note that when using the album variable, the storage template won’t be applied immediately unless an asset is directly uploaded to an album. Therefore, the Storage Template Migration job may need to be run manually after sorting new assets into albums.

Full release notes for 1.83.0

1.84.0: no action items (1 version)

1.85.0 2023-11-08

1 Warning — show quotes

Warning

Breaking Changes

  • The server and mobile app must be on the same version for the application to work correctly.
  • The /server-info/stats endpoint has been changed to /server-info/statistics

Full release notes for 1.85.0

1.86.0 2023-11-14

1 Warning — show quotes

Warning

Breaking Changes

  • The server and mobile app must be on the same version for the application to work correctly.
  • The mobile app might log you out. You will need to log in again for this release since we are changing some of the APIs and cannot auto-resolve when the user is logged in.
  • Docker compose auto-names resources based on the project name, with a fallback to the current folder. In #4906 we now set the project name to “immich” in our docker compose file. For existing installs, we recommend ignoring this change as it would lead to orphaned resources.

We are sorry for the inconvenience

Full release notes for 1.86.0

1.87.0: no action items (1 version)

1.88.0 2023-11-20

1 Warning — show quotes

Warning

BREAKING CHANGES immich-proxy and immich-web are no longer used as announced. Please see the content that needs to be edited from the docker-compose.yml file below. immich-server now serves the api on /api and the web-app from /.

The steps to update are as follow:

  1. Bring down the stack with docker compose down --remove-orphans
  2. Update the docker-compose.yml file

2.1. Remove immich-proxy service 2.2. Remove immich-web service 2.3. Expose port 2283:3001 in the immich-server service

  1. Run docker compose pull
  2. Bring up the stack with docker compose up -d

For those using a custom proxy, please update the routing to forward all requests to immich-server without the /api path re-write.

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
+   ports:
+     - 2283:3001
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-microservices:
     [...]
  immich-machine-learning:
     [...]

-  immich-web:
-    container_name: immich_web
-    image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
-    env_file:
-      - .env
-    restart: always

  typesense:
    [...]

  redis:
    [...]

  database:
    [...]

- immich-proxy:
-   container_name: immich_proxy
-   image: ghcr.io/ Warninimmich-app/immich-proxy:${IMMICH_VERSION:-release}
-   ports:
-     - 2283:8080
-   depends_on:
-     - immich-server
-     - immich-web
-   restart: always

Full release notes for 1.88.0

1.88.1 2023-11-21

1 Warning — show quotes

Warning

BREAKING CHANGES immich-proxy and immich-web are no longer used as announced. Please see the content that needs to be edited from the docker-compose.yml file below. immich-server now serves the api on /api and the web-app from /.

The steps to update are as follow:

  1. Bring down the stack with docker compose down --remove-orphans
  2. Update the docker-compose.yml file

2.1. Remove immich-proxy service 2.2. Remove immich-web service 2.3. Expose port 2283:3001 in the immich-server service

  1. Run docker compose pull
  2. Bring up the stack with docker compose up -d

For those using a custom proxy, please update the routing to forward all requests to immich-server without the /api path re-write.

Full release notes for 1.88.1

1.88.2 2023-11-21

1 Warning — show quotes

Warning

BREAKING CHANGES immich-proxy and immich-web are no longer used as announced.

Full release notes for 1.88.2

1.89.0 2023-11-29

1 Warning — show quotes

Warning

If you are running your own Postgres database (not the one in our default docker-compose) and created the immich user yourself, you may need to enable the required extensions as the database superuser. You can do this by running the following two queries under the context of the immich database. This will only need to be run once.

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;

Full release notes for 1.89.0

1.90.0 2023-12-07

1 Breaking, 2 Note — show quotes

Breaking

Announcement (Breaking changes next release v1.91.0)

Continuing the effort of reducing Immich's footprint, we would like to announce another planned change. Starting from the next release (not this release), we will be 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

Metadata edits only apply to non-external/read-only assets.

Full release notes for 1.90.0

1.90.1 2023-12-08

1 Breaking — show quotes

Breaking

Announcement (Breaking changes next release - v1.91.0)

Continuing the effort of reducing Immich's footprint, we would like to announce another planned change. Starting from the next release (not this release), we will be 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

Same text as in 1.90.0, above.

Full release notes for 1.90.1

1.90.2 2023-12-08

Breaking

Same text as in 1.90.1, above.

Note

Same text as in 1.90.0, above.

Full release notes for 1.90.2

1.91.0 2023-12-15

1 Important, 1 Breaking — show quotes

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.

Breaking

Full release notes for 1.91.0

1.91.1 2023-12-16

1 Important — show quotes

Important

There was breaking changes in v1.91.0 please refer to the previous release note for more information

Full release notes for 1.91.1

1.91.2 2023-12-17

Important

Same text as in 1.91.1, above.

Full release notes for 1.91.2

1.91.3 2023-12-17

Important

Same text as in 1.91.1, above.

Full release notes for 1.91.3

1.91.4 2023-12-19

Important

Same text as in 1.91.1, above.

Full release notes for 1.91.4

1.92.0 2024-01-08

1 Breaking — show quotes

Breaking

Full release notes for 1.92.0

1.92.1 – 1.93.3: no action items (5 versions)

1.94.0 2024-01-31

2 Breaking — show quotes

Breaking

  • The mobile app will no be longer compatible with server version < v1.92 starting from this version. Please make sure to have your server and mobile app on the same version to work correctly.
  • docker-compose.yml content change for hardware acceleration to incorporate hardware acceleration for machine learning
  • The following asset endpoints have been deprecated and will be removed in a future release
  • GET /asset/assetById/:id
  • POST /asset/download/info
  • POST /asset/download/archive
  • POST /asset/download/:id
  • POST /asset/restore
  • POST /asset/trash/empty
  • POST /asset/trash/restore
  • WebSocket connections no longer use "polling". If you see a disconnected status in the web, make sure your reverse proxy allows websockets.

Breaking

Full release notes for 1.94.0

1.94.1: no action items (1 version)

1.95.0 2024-02-20

2 Breaking — show quotes

Breaking

1. Upgrade pgvecto.rs to stable version 0.2.0 for enhanced search

Step 1: Change the docker-compose.yml database image from 0.1.11 to 0.2.0

[...]

  database:
    container_name: immich_postgres
-   image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee 
+   image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

[...]

Step 2: Perform docker compose pull

Step 3:

a) If Immich is a Postgres superuser (default)

Bring the stack up with docker compose up

When the server starts up, it will log a message like this:

WARN [DatabaseService] Could not run vector reindexing checks. If the extension was updated, please restart the Postgres instance.

[image: warn]

This is normal. Continue to Step 4.

b) If Immich is not a Postgres superuser

If Immich doesn't have superuser permissions, you'll need to bring up the database and run a few commands manually:

BEGIN;

CREATE SCHEMA IF NOT EXISTS vectors;
ALTER DATABASE immich SET search_path TO "$user", public, vectors;
SET search_path TO "$user", public, vectors;

UPDATE pg_catalog.pg_extension SET extversion = '0.1.11' WHERE extname = 'vectors';
UPDATE pg_catalog.pg_extension SET extrelocatable = true WHERE extname = 'vectors';
ALTER EXTENSION vectors SET SCHEMA vectors;
UPDATE pg_catalog.pg_extension SET extrelocatable = false WHERE extname = 'vectors';
ALTER EXTENSION vectors UPDATE TO '0.2.0';

SELECT pgvectors_upgrade();

COMMIT;

Step 4: Terminate and restart the stack

Bring the stack down (or terminate with ctrl + c) with:

docker compose down

Then bring it back up:

docker compose up

You'll run into a message saying:

[DatabaseRepository] Could not reindex index face_index. Attempting to auto-fix.

[image: image]

This is normal. The server will do some magic and start to work.

Step 5: Enjoy the new ✨search enhancements✨

2. OAuth encryption algorithm setting changes

OAuth setups using HS256 (mainly Authentik) will need to either (1) update the signing algorithm in Immich or (2) specify a signing key in the provider settings (so that it uses RS256 instead).

Specify a signing key in Authentik:

Screencast from 02-02-2024 12:05:04 AM.webm

New Immich OAuth Setting

[image: image]

Background

RS256 is generally better than HS256. RS256 is pretty much the most commonly used algorithm. The client library we use for open-id defaults to RS256. It's very easy to setup Authentik without specifying a signing key, which will default to use HS256. The original implementation added a hack/fallback to HS256 in some conditions to try to handle that situation. The current code removes the fallback, and adds a specific Signing Algortithm setting which can be explicitly set. Alternatively, the issue could be fixed by specifying a signing key in Authentik.

References:

Breaking

Full release notes for 1.95.0

1.95.1 2024-02-21

Breaking

Same text as in 1.95.0, above.

Full release notes for 1.95.1

1.96.0 – 1.101.0: no action items (8 versions)

1.102.0 2024-04-19

2 Breaking — show quotes

Breaking

⚠️ Breaking Changes (OPT-IN ONLY)

Caution

For people always pulling the latest compose file, this is a breaking change! Disregarding the notes will result in (temporary) data loss!

Background

In the past, we've seen many cases where people accidentally deleted their Postgres data by (unintentionally) deleting the docker volume (e.g., docker compose down -v). This is unfortunate as there is no way to recover that data (if you don't have a backup, MAKE BACKUPS!). We have been thinking about mounting the Postgres data to a local folder for a while but always hesitated, as this would break existing instances due to people not reading the change logs carefully. However, there have been too many issues, and we ultimately decided to make that change.

What do I have to do?

Nothing. You should only copy the compose file with every new release if we tell you to do so in the release notes. Generally, we don't recommend making changes to existing instances. If you have never had issues, attempting to migrate the data will put it at (an unnecessary) risk.

I want to migrate my docker volume to a local folder

Unfortunately there isn't a "proper" way to export a docker volume. The recommended method is to mount the volume and the directory (you want to copy your data to) to an arbitrary container, get a shell inside that container and copy the folder manually.

Caution

Take backups before attempting this. Especially make sure you have a current database dump (pg_dump)

Warning

Do not use a directory under /mnt for the postgres location if you are using WSL. Generally (on all operating systems) we recommend against using a network share for your database location. This is bound to break and cause all sorts of weird issues.

If you would like to opt-in to this change, there is an additional environment variable in the .env file as well as a modification in your existing docker-compose.yml file.

docker-compose.yml file

  database:
    container_name: immich_postgres
    image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
-      - pgdata:/var/lib/postgresql/data  
+      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always

volumes:
- pgdata:
  model-cache:

.env file

[...]
 DB_HOSTNAME=immich_postgres
 DB_USERNAME=postgres
 DB_DATABASE_NAME=immich
+DB_DATA_LOCATION=./postgres

Breaking

Full release notes for 1.102.0

1.102.1 – 1.103.1: no action items (5 versions)

1.104.0 2024-05-13

1 Caution, 1 Breaking — show quotes

Caution

EXTERNAL LIBRARY EDITABILITY

For external library users, you can now manage your assets directly from Immich's user interface, i.e. you can edit date/time, location information, and delete from the web and the mobile app.

If you don't want Immich to handle those operations, please make sure to have the read-only, i.e., :ro flag on your mount point in the docker-compose.yml file.

Breaking

Full release notes for 1.104.0

1.105.0 2024-05-14

1 Caution, 1 Breaking — show quotes

Caution

Changes in glob path external library

Library import paths no longer support wildcards (* notation/globs). If your library was previously using this, please update affected paths to point to directories instead. Note: exclusion paths remain unchanged and still support glob syntax.

Breaking

Full release notes for 1.105.0

1.105.1 2024-05-14

1 Caution — show quotes

Caution

Please update immediately, as this bug can put your data at risk if using external libraries.

Full release notes for 1.105.1

1.106.1 2024-06-11

2 Breaking — show quotes

Breaking

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Breaking

Full release notes for 1.106.1

1.106.2 2024-06-11

Breaking

Same text as in 1.106.1, above.

Full release notes for 1.106.2

1.106.3 2024-06-12

1 Breaking — show quotes

Breaking

1. Underlying API changes

Please ensure your mobile app and server are on the same version. Otherwise, you won't be able to access the app.

We advise you to wait for the mobile app to be reviewed and released from the app stores before updating your instance to avoid disrupting your users.

2. Environment variables

  • SERVER_PORT, MICROSERVICES_PORT, and MACHINE_LEARNING_PORT were renamed to IMMICH_PORT
  • HOST and MACHINE_LEARNING_HOST were renamed to IMMICH_HOST

3. Removal of the immich-microservices container

The microservices container/process can now be deployed within the immich-server container itself and is done so by default.

Please refer to our documentation for a detailed explanation of this change and a way to keep microservices as a separate container.

Please edit your docker-compose.yml file with the following changes. If you use hardware acceleration previously in immich-microservices, you can move the extends block's content to the immich-server service to keep the same functionality.

When you bring the container up, please make sure to include the --remove-orphans flag, so that the immich-microservices container is removed properly. So the full command will be docker compose up -d --remove-orphans

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-   command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

-  immich-microservices:
-    container_name: immich_microservices
-    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
-    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
-    #   file: hwaccel.transcoding.yml
-    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
-    command: ['start.sh', 'microservices']
-    volumes:
-      - ${UPLOAD_LOCATION}:/usr/src/app/upload
-      - /etc/localtime:/etc/localtime:ro
-    env_file:
-      - .env
-    depends_on:
-      - redis
-      - database
-    restart: always

Full release notes for 1.106.3

1.106.4 2024-06-13

Breaking

Same text as in 1.106.3, above.

Full release notes for 1.106.4

1.107.0 – 1.107.1: no action items (2 versions)

1.107.2 2024-07-03

Full release notes for 1.107.2

1.108.0 2024-07-10

1 Caution — show quotes

Caution

This release includes a security update for Node.js. While we don't think these CVEs affect Immich, we strongly recommend you update. For more details, see https://nodejs.org/en/blog/vulnerability/july-2024-security-releases.

Full release notes for 1.108.0

1.109.0 2024-07-18

1 Important — show quotes

Important

Read our announcement about supporting Immich by buying a license here

Full release notes for 1.109.0

1.109.1 – 1.109.2: no action items (2 versions)

1.110.0 2024-07-26

1 Warning — show quotes

Warning

If you use CUDA for machine learning, the minimum NVIDIA driver version is now 545 from 535.

Full release notes for 1.110.0

1.111.0 – 1.112.1: no action items (3 versions)

1.113.0 2024-08-30

2 Breaking — show quotes

Breaking

For OAuth users, please replace app.immich:/ with app.immich:///oauth-callback for the Redirect URI in your OAuth provider settings

Breaking

Full release notes for 1.113.0

1.113.1: no action items (1 version)

1.114.0 2024-09-06

1 Note — show quotes

Note

NOTE: these changes apply to the metadata extraction job. To apply them to your photos and videos, re-run metadata extraction.

Full release notes for 1.114.0

1.115.0 – 1.116.2: no action items (4 versions)

1.117.0 2024-10-03

1 Breaking — show quotes

Breaking

The image section of the config file structure for thumbnails and previews has changed. If you use a config file and set the image settings to custom values, these will be ignored until updated to the new structure.

…
"image": {
-  “previewFormat”: “jpeg”,
-  “previewSize”: 1440,
-  “quality”: 80,
-  “thumbnailFormat”: “webp”,
-  “thumbnailSize”: 250,
+  "thumbnail": {
+     "format": "webp",
+     "size": 250,
+     "quality": 80
+   },
+   "preview": {
+     "format": "jpeg",
+     "size": 1440,
+     "quality": 80
+   },
    "colorspace": "p3",
    "extractEmbedded": false
  }
…

Full release notes for 1.117.0

1.118.0 2024-10-15

2 Breaking — show quotes

Breaking

This release includes the following breaking changes:

  1. Port alignment
  2. Remove deprecated API endpoints
  3. Remove deprecated start.sh arguments

1. Port alignment

We aligned the internal port of the immich-server to be similar to the binding port. Please make the following change to your docker-compose.yml file under the immich-server section. Reverse proxies using port 3001 also need to be updated to use port 2283.

services:
  immich-server:
    container_name: immich_server
    ...
    ports:
-    - 2283:3001
+    - 2283:2283
    ...

2. Remove deprecated API endpoints

The following endpoints were previously deprecated and have been removed, if you are a community project maintainer and using one of the endpoints below, please make sure to make changes to your project:

  • /api/server-info/* has been removed. Use /api/server/* instead.
  • /api/people/:id/assets has been removed. Use /api/search/metadata instead.

Note

This includes /api/server-info/ping, /api/server-info/version, /api/server-features, /api/server-info/config, /api/server-info/statistics, and others.

3. Remove deprecated start.sh arguments

The following docker commands have been removed:

  • start.sh immich
  • start.sh microservices

Follow the steps below to align docker-compose.yml with the default setup.

Note

These steps are only required if you still have the immich-microservices section in your docker-compose.yml or didn't follow the previous instructions to remove the command section. If you don't have the mentioned content below, you can ignore this

1. Update docker-compose.yml

Remove the command line from immich-server and the entire immich-microservices service section as shown below.

services:
  immich-server:
    container_name: immich_server
    ...
    :
-   command: [ "start.sh", "immich" ]
    ...
    
-  immich-microservices:
-    container_name: immich_microservices
-    ...
-    :
-    command: [ "start.sh", "microservices" ]
-    ...

2. Remove the running immich-microservices container

Run docker compose down --remove-orphans after updating docker-compose.yml to remove the old immich-microservices container.

Breaking

Full release notes for 1.118.0

1.118.1 2024-10-15

1 Warning — show quotes

Warning

Version v1.118.0 contains breaking changes. Read about them here.

Full release notes for 1.118.1

1.118.2 2024-10-16

Warning

Same text as in 1.118.1, above.

Full release notes for 1.118.2

1.119.0 2024-10-28

1 Caution, 1 Breaking — show quotes

Caution

The env variable for the host binding was erroneously named HOST instead of IMMICH_HOST (which is how it was listed in the docs). This has been corrected in this release. If you were using the HOST env var in your setup before, please update it to IMMICH_HOST.

If you are using the built-in Prometheus endpoint for monitoring, please read on. If not, you can ignore this section.

The following env variables have been removed:

  • IMMICH_METRICS
  • IMMICH_API_METRICS
  • IMMICH_HOST_METRICS
  • IMMICH_IO_METRICS
  • IMMICH_JOB_METRICS

Use IMMICH_TELEMETRY_INCLUDE / IMMICH_TELEMETRY_EXCLUDE instead.

Examples:

-- IMMICH_METRICS=true
++ IMMICH_TELEMETRY_INCLUDE=all
-- IMMICH_METRICS=true
-- IMMICH_HOST_METRICS=false
++ IMMICH_TELEMETRY_INCLUDE=all
++ IMMICH_TELEMETRY_EXCLUDE=host
-- IMMICH_API_METRICS=true
-- IMMICH_HOST_METRICS=true
++ IMMICH_TELEMETRY_INCLUDE=api,host

Breaking

Full release notes for 1.119.0

1.119.1: no action items (1 version)

1.120.0 2024-11-06

1 Note — show quotes

Note

Note for third-party Immich distributions: as this filter only exists in jellyfin-ffmpeg, please ensure you use this build instead of a standard FFmpeg build.

Full release notes for 1.120.0

1.120.1 – 1.121.0: no action items (3 versions)

1.122.0 2024-12-05

2 Note, 1 Breaking — show quotes

Note

Some videos may appear warped when viewing. If this occurs, please sign out and sign back in. This only needs to be done once and does not apply to new app installations on 1.122.0 or later.

Note

This feature requires always granting precise location permission for the Immich app so it can read the Wi-Fi name in both foreground and background.

Breaking

Full release notes for 1.122.0

1.122.1 – 1.124.2: no action items (7 versions)

1.125.1 2025-01-23

2 Important, 1 Breaking — show quotes

Important

If you are running remote machine learning, please make sure the remote service pulls the latest version.

Important

For uploading photos from the gallery, it is still recommeded to use the built-in backup feature since the share-to mechanism that can cause mismatching upload status. Additionally, iOS defaults to sharing an exported JPEG image instead of the original for formats like HEIC. You can change this by tapping “Options” near the top of the iOS sharing menu and selecting “Current” instead of “Automatic”.

Breaking

Full release notes for 1.125.1

1.125.2 – 1.126.1: no action items (7 versions)

1.127.0 2025-02-26

1 Breaking — show quotes

Breaking

Full release notes for 1.127.0

1.128.0 – 1.129.0: no action items (2 versions)

1.130.0 2025-03-25

1 Note — show quotes

Note

Possible breaking change: If you use creative exclusion patterns for your libraries, please check if these are still respected and report any issues to us.

Full release notes for 1.130.0

1.130.1 – 1.131.3: no action items (7 versions)

1.132.0 2025-04-23

1 Note, 1 Breaking — show quotes

Note

We are now using Valkey's image for the Redis service in the default docker-compose.yml template. This is not a required change. If you wish to use it, you can download the docker-compose.yml file at the bottom of the release notes and replace the redis image with the new one.

Breaking

Full release notes for 1.132.0

1.132.1: no action items (1 version)

1.132.3 2025-04-28

1 Important — show quotes

Important

Please update your Authelia config with the following property

token_endpoint_auth_method: "client_secret_post"

Full release notes for 1.132.3

1.133.0 2025-05-21

2 Breaking, 1 Important, 1 Note — show quotes

Breaking

  1. Mobile app version

Please make sure to have the mobile app and the server on the same version for this release. Older versions of the mobile app will not work correctly with version v1.133.0 of the server. At the time of this release, the updated version of the mobile app should be available on the app stores.

  1. Upgrading the server from a very old release

As of 1.133.0, Immich only supports upgrading directly from 1.107.2 or later. If you’re trying to upgrade a version of Immich below this, please upgrade to 1.107.2 first and ensure Immich starts up successfully before continuing to the latest release.

  1. New database vector extension

We are migrating off the deprecated pgvecto.rs database extension to its successor VectorChord, which comes with performance improvements in almost all aspects. This change is a major milestone we want to perform prior to the stable release.

Before making any other changes, please back up your database. While every effort has been made to make this migration as smooth as possible, there’s always a chance that something can go wrong.

After making a backup, please modify your docker-compose.yml file with the following information.

  [...] 

  database:
    container_name: immich_postgres
-   image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
+   image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
+     # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
+     # DB_STORAGE_TYPE: 'HDD'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
-   healthcheck:
-     test: >-
-       pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
-       Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
-       --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
-       echo "checksum failure count is $$Chksum";
-       [ "$$Chksum" = '0' ] || exit 1
-     interval: 5m
-     start_interval: 30s
-     start_period: 5m
-   command: >-
-     postgres
-     -c shared_preload_libraries=vectors.so
-     -c 'search_path="$$user", public, vectors'
-     -c logging_collector=on
-     -c max_wal_size=2GB
-     -c shared_buffers=512MB
-     -c wal_compression=on
    restart: always

    [...]

Important

Note: after switching to VectorChord, you should not downgrade Immich below 1.133.0.

Note

Your Immich instance must be accessed through a public HTTPS endpoint in order for the casting device to successfully load media. Accessing the instance and casting from a private HTTPS endpoint (or an HTTP endpoint) will result in the cast receiver failing to load any media.

Breaking

Full release notes for 1.133.0

1.133.1 – 1.135.3: no action items (6 versions)

1.136.0 2025-07-24

2 Breaking, 1 Note — show quotes

Breaking

IMMICH_MEDIA_LOCATION (#19995)

Note: This is a different variable than UPLOAD_LOCATION, which requires no change.

Note: if you DO NOT have IMMICH_MEDIA_LOCATION in your .env file, or if it is set to a path that starts with a / (absolute path), THIS BREAKING CHANGE DOES NOT APPLY TO YOU. Users of the all-in-one image (e.g., the unraid app) for instance are not affected.

If you have a custom IMMICH_MEDIA_LOCATION environment variable set to a relative path, you will have to do the following process:

  1. Stop Immich (docker compose stop):
  2. Update Immich (docker compose pull)
  3. Update the environment variable to an absolute path, for example:
-IMMICH_MEDIA_LOCATION=./my-library
+IMMICH_MEDIA_LOCATION=/usr/src/app/my-library
  1. Start Immich (docker compose up -d --force-recreate)
  2. After the server successfully starts up, connect to it (docker exec ``*-it*`` immich_server /bin/sh) and run immich-admin change-media-location. When prompted, enter the appropriate values. For example:
docker exec -it immich_server /bin/sh

$ immich-admin change-media-location
...
? Enter the previous value of IMMICH_MEDIA_LOCATION: ./my-library
? Enter the new value of IMMICH_MEDIA_LOCATION: /usr/src/app/my-library

  Previous value: ./my-library
  Current value:  /usr/src/app/my-library

  Changing database paths from "my-library/*" to "/usr/src/app/my-library/*"

? Do you want to proceed? [Y/n] y

Matching database file paths were updated successfully! 🎉

You may now set IMMICH_MEDIA_LOCATION=/usr/src/app/my-library and restart!

Background/Motivation

Relative paths have implied ambiguity, as they depend on the current working directory to resolve correctly, leading to issues like (#4465). This change removes this ambiguity and sets up the project to transition away from files living at /usr/src/app/upload entirely. Currently, the upload folder lives at /usr/src/app/upload/upload, which is very confusing… for everyone. This change opens to door for a future migration to something like IMMICH_DATA=/data, which a more sensible setup.

API Key changes (#20113)

Note: This change may affect the use of third-party applications, such as ImmichGo, ImmichKios, or ImmichFrame.

This release includes a change to how API Keys work, specifically when used with routes that don’t require a specific permission. Previously, a scoped API Key could access these routes, but they will now throw a forbidden error. Routes without a declared scope now implicitly require the “all” permission.

Note

This is only supported when both the server and the mobile app are updated to v1.136.0

Breaking

Full release notes for 1.136.0

1.137.0 2025-07-31

2 Breaking, 1 Caution — show quotes

Breaking

If your current, running version of Immich is v1.132.0 or newer, there is NO ACTION required. If you are updating from version below v1.132.0 continue reading.

Remove TypeORM (#20366)

This update requires applications to have started up at least once on 1.132.0+. See https://immich.app/errors#typeorm-upgrade for more details.

Caution

Related to these changes, a few API permissions have been renamed. See #20250 for more details.

Breaking

Full release notes for 1.137.0

1.137.1 – 1.137.3: no action items (2 versions)

1.138.0 2025-08-14

1 Important, 1 Breaking — show quotes

Important

For users that are using the beta timeline, please update your server to v1.138.0 so that the sync mechanism can work correctly. v1.138.0 of the mobile app doesn’t sync the data correctly if your server is v1.137.2 or below.

Breaking

Full release notes for 1.138.0

1.138.1 – 1.142.1: no action items (9 versions)

1.143.0 2025-09-22

1 Note — show quotes

Note

If you're still experiencing issues with remote assets or albums not showing up on the mobile app, please ensure that your server is updated to the latest version. If you are still having issues, try logging out and back in.

Full release notes for 1.143.0

1.143.1 – 2.2.3: no action items (9 versions)

2.3.0 2025-11-19

1 Important — show quotes

Important

We will start the work on removing the old mobile timeline soon. If you are still using the old timeline, please make sure to switch to the new timeline. If this message does not make sense to you, you can ignore it as you are already on the new timeline

Full release notes for 2.3.0

2.3.1 2025-11-20

1 Important — show quotes

Important

We encourage all users to update to this version to avoid the issue that will happen when the next minor update is available, i.e., v2.4.0

Full release notes for 2.3.1

2.4.0 – 2.4.1: no action items (2 versions)

2.5.0 2026-01-27

2 Note — show quotes

Note

Reclaim storage To use the reclaimed space right away, you must manually empty the system/gallery trash outside Immich.

Note

Limitations:

  • Mobile clients must be updated to v2.5.0 in order view the edited version of an asset. Clients will continue to > see the original asset if on a mobile app version <2.5.0
  • As of this version, the edited download won't include the EXIF metadata of the original asset. This feature will come in future releases.
  • Mobile editing still uses the old edit system (saving a new version of the photo). The mobile editor will be upgraded to use the new non-destructive editing system in a future release.

Full release notes for 2.5.0

2.5.2 2026-01-29

1 Note — show quotes

Note

This version of the mobile app will pull down some data from the server to fix the incorrect data in the mobile app local database, so you will see the sync icon running for a little bit

Full release notes for 2.5.2

2.5.3 – 2.5.6: no action items (3 versions)

2.6.0 2026-03-19

1 Warning — show quotes

Warning

For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release.

ps: The old timeline has an exclamation icon next to the logo.

Full release notes for 2.6.0

2.6.1 – 2.6.3: no action items (3 versions)

2.7.0 2026-04-07

1 Note — show quotes

Note

Known limitations

  • The machine learning service on amd64 currently requires the >= x86-64-v2 microarchitecture. This will be patched in an upcoming patch release for backward compatibility with very old processors (before ~2010), but it will become a minimum requirement in 3.0. arm64 is not affected by this change.

Full release notes for 2.7.0

2.7.2 – 2.7.5: no action items (4 versions)

3.0.0 2026-07-02

2 Breaking, 2 Note — show quotes

Breaking

This release includes several breaking changes; read the full migration guide here. It's worth mentioning that many of the breaking changes are updates to API endpoints and affect only third-party tools that integrate with Immich's API. For the vast majority of users, updating works exactly as it always has.

Note

How to update

Warning

v3.0.0 drops support for pgvecto.rs. If you run Immich before v1.133.0 and haven't done the migration step yet, see the migration guide here. https://docs.immich.app/install/upgrading/#migrating-to-vectorchord

First, update the IMMICH_VERSION in your .env file to v3:

- IMMICH_VERSION=v2
+ IMMICH_VERSION=v3

Then run the usual update commands:

docker compose pull && docker compose up -d

Note

For assets imported prior to v3, you will also need to re-run Metadata Extraction in the job panel for them to be re-processed.

Breaking

Full release notes for 3.0.0

3.0.1 – 3.0.2: no action items (2 versions)

3.0.3 2026-07-15

1 Note — show quotes

Note

In some specific circumstances, newly uploaded Live Photos could have broken thumbnails. If you see any such cases, please run the "missing" job for thumbnails or wait for the respective nightly job to clear it up.

Full release notes for 3.0.3

3.1.0 2026-07-29

1 Breaking — show quotes

Breaking

Full release notes for 3.1.0

3.2.0 – 3.2.4: no action items (4 versions)

Release notes from github.com/immich-app/immich/releases, checked 17 hours ago. Only text the vendor marks as breaking, or puts in a warning/caution/important note, or a plain note, is shown (a note that asks nothing of the admin, such as a call for feedback or testing, is not); read the full notes for anything else.