immich

High performance self-hosted photo and video management solution.

AGPL-3.0 License

Downloads
47.7K
Stars
37.8K
Committers
460

Bot releases are visible (Hide)

immich - v1.92.0

Published by github-actions[bot] 10 months ago

v1.92.0

Highlights

Welcome to the first Immich release of 2024, v1.92.0. This release is packed with features, bug fixes, and improvements. Let’s dive into some of the highlights of this release.

  • [BREAKING CHANGE] The welcome message for your instance is now moved to the Server Setting in the Settings section in the Administration page on the web
  • Hardening storage template move operation: verify files are copied correctly when operating across filesystem boundaries
  • External domain setting: allow the usage of a different domain for shared links
  • Native hash calculation on iOS: significantly speeds up the initial hash calculation
  • Introduce Onboarding flow for new instances: Show the admin common settings of the instance for a better user experience.
  • CLI version 2.0.6 was released on npm: https://www.npmjs.com/package/@immich/cli
  • Search is now working across the partner’s assets.

Hardening storage template

We have further hardened the storage template move mechanism to not leave any files in the upload folder behind. Making the job concurrency a fixed number and performing database lock between the move jobs will resolve some outstanding issues and stabilize this core feature.

For new instances, the storage template mechanism is now disabled by default (existing instances won’t be affected). This means files uploaded to the server will be stored in the upload folder and not moved to the library folder. To provide a nice user experience, we added the onboarding feature, as seen below, to inform users that the storage template is disabled by default, and they can enable it before uploading any photos or videos to the instance to avoid confusion.

https://github.com/immich-app/immich/assets/27055614/3705f8cb-723f-4ee7-854e-2628a684f6ca

This is also the continued effort to add support for other storage backends, such as Amazon S3 or Backblaze B2, in the future.

External domain setting

Add the option to set the instance's "external domain" when constructing the shared link URL to copy to the clipboard.

Admin Settings

image

Shared Links

image

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

CLI

Documentation

Dependency updates

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.91.4...v1.92.0

immich - v1.91.4

Published by github-actions[bot] 10 months ago

v1.91.4

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

Hot Fixes

  • Fixed inconsistent explore queries
  • Fixed cannot open map cluster
  • Fixed change people feature face doesn't registered on the web

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.

What's Changed

Server

Mobile

Web

CLI

Documentation

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.91.3...v1.91.4

immich - v1.91.3

Published by github-actions[bot] 10 months ago

v1.91.3

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

Hot Fixes

  • Fixed migration issue when updated to 1.91

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.

What's Changed

Server

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

immich - v1.91.2

Published by github-actions[bot] 10 months ago

v1.91.2

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

Hot Fixes

  • Fixed smart search's job concurrency doesn't persist.
  • Disable version check settings when config file is set

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.

What's Changed

Server

Web

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

immich - v1.91.1

Published by github-actions[bot] 10 months ago

v1.91.1

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

Hot Fixes

  • Fixed cannot save exclusive patterns on the web
  • Fixed cannot search for places

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.

What's Changed

Server

Web

Documentation

New Contributors

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

immich - v1.91.0

Published by github-actions[bot] 10 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

Other changes

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.90.2...v1.91.0

immich - v1.90.2

Published by github-actions[bot] 11 months ago

v1.90.2

[!IMPORTANT]

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;

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

Hot Fixes

There is no mobile release for this version

  • Fixed merge face panel only shows 10 people

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.

What's Changed

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

immich - v1.90.1

Published by github-actions[bot] 11 months ago

v1.90.1

[!IMPORTANT]

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;

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

Hot Fixes

There is no mobile release for this version

  • Fixed bulk editing for asset's metadata on the web
  • Fixed faces not update after reassign face in a video

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.

What's Changed

New Contributors

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

immich - v1.90.0

Published by github-actions[bot] 11 months ago

v1.90.0

[!IMPORTANT]

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;

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

Highlights

Welcome to release v1.90.0 of Immich. In this release, we introduce the first implementation of asset metadata editing, which includes date, time, and location. This release also contains many improvements and bug fixes. I hope you enjoy this release. Please read the following highlights below:

  • Edit metadata.
  • Reassign person faces.
  • Better handling of iCloud assets.

Edit metadata

This release introduces the first implementation of editing assets.

Web

https://github.com/immich-app/immich/assets/27055614/28966ea1-36f6-4dd9-8920-a5355978205d

Mobile App

Bottom Sheet Edit Date Time Edit Location Manual Location
Bottom sheet Edit date Location Edit Dialog Manual Location
Map Picker Bottom sheet Asset without location
Map picker Exif Info Sheet Asset without location

[!NOTE]
Metadata edits only apply to non-external/read-only assets.

You can now edit a photo or video's date, time, hours, timezone, and GPS information. The edited info is written to a companion sidecar file and saved in the exact library location as the original photo or video.

Please note that downloading an asset does not include the sidecar file or edited information yet.

Thanks, @YFrendo, and @jrasm91 for the valuable implementation of this feature. Thanks @shenlong-tanwen for a quick implementation on the mobile app for feature parity

Reassign person's faces

In this continuous enhancement, @martabal has implemented a mechanism to change facial data in a photo from one person to another. There is a bounding box around the person's face in the photo hovered on the face in the detail panel.

Re-assigning faces

https://github.com/immich-app/immich/assets/74269598/84c63fc7-9b6e-44f2-8798-88dd1dcec898

Hovering thumbnails

https://github.com/immich-app/immich/assets/74269598/c2efd9f8-8efc-43e6-afc8-d24ff4acc76c

Better handling of iCloud assets

This is the first attempt to improve the backup process for iCloud’s users. We also added a toggle to ignore backing up assets from iCloud; you can find the option in a new Backup Options page on the mobile app.


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

Mobile

Web

Server

Documentations

Dependencies

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.89.0...v1.90.0

immich - v1.89.0

Published by github-actions[bot] 11 months ago

v1.89.0

Highlights

Welcome to release v1.89.0 of Immich. This release focuses on bug fixes and quality improvements for the server, web, and mobile client. Some of the highlights include:

  • Better reverse geocoding resource management (#5301)
  • Search name when merging face
  • Album sorting options (take 2)
  • Set original datetime via sidecar in preparation for metadata writing (#5199, #5066)

Reverse Geocoding Rewrite

When we first implemented reverse-geocoding, we picked a semi-popular library to handle it for us. However, we have run into quite a few issues. Like this, this, this, this, and plenty more. For better or for worse, it was easier to rewrite the implementation from the ground up, as part of the Immich core codebase. The new implementation matches the accuracy of the previous implementation but with multiple improvements. We plan to increase accuracy further in the future. Some of the changes include:

  • Default reverse geocoding files ship with the immich-server image (bye-bye .reverse-geocoding-dump/ folder and internet connectivity requirement!)
  • Reverse geocoding is read and loaded into Postgres once per release and then cached afterward.
  • Microservices memory usage down from ~500MB to ~100MB

Before

Before

After

After

[!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;

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

Web

Server

Mobile

Machine Learning

CLI

Documentation

Dependencies Updates

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.88.2...v1.89.0

immich - v1.88.2

Published by github-actions[bot] 11 months ago

1.88.2

This a reminder that there is a breaking change for v1.88.x

[!warning]
BREAKING CHANGES
immich-proxy and immich-web are no longer used as announced.

[!note]
There is no mobile release for this version v1.88.2

Hotfixes

  • Fixed issue with query unoptimized for the album and sharing page on the web. This fix is a revert of the fix for the web's album sorting. We will need to return to that issue and find an optimal way to perform the sort mechanism

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.

What's Changed

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

immich - v1.88.1

Published by github-actions[bot] 11 months ago

v1.88.1

A reminder that there is a breaking change for v1.88.x

[!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
  3. Run docker compose pull
  4. 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.

[!note]
There is no mobile release for this version v1.88.1

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

Hotfixes

  • Fixed an issue with the video not being correctly placed on the timeline
  • Fixed an issue with search on the web doesn't take into account the search phrase
  • Fixed an issue of the year label overlapped on the timeline bar

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.

What's Changed

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

immich - v1.88.0

Published by github-actions[bot] 11 months ago

v1.88.0

[!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
  3. Run docker compose pull
  4. 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

Highlights

Welcome to release v1.88.0 of Immich. In this release we have simplified how Immich is deployed, beautified our app interface with a new font, namely Overpass, and finally released version 2 of our command line interface (CLI), which has been in the works for the past six months.


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

Server

CLI

Web

Mobile

Machine Learning

Documentation and others

Dependencies

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.87.0...v1.88.0

immich - v1.87.0

Published by github-actions[bot] 11 months ago

v1.87.0

Welcome to release v1.87.0 of Immich. This release is the final version where we bid farewell to the immich-web and immich-proxy containers. Starting in the next release, the two containers will be consolidated into the immich-server container for easier deployment and maintenance. For more information on preparing for the next release, please read the following announcement

Recently, I've had a chance to get on the Self-hosted.show podcast to talk about Immich, the team behind it, the project's future and vision, as well as the sustainability of the project. You can have a listen here.

Please find the highlights of this release below:

  • You can now use the mobile app without giving it full permission to access media storage, allowing you to access only remote assets that are backed up on the server.
  • Machine learning models are now unloaded when unused, reducing the application's memory footprint.
  • The /asset/import endpoint has been removed in favor of Libraries.
  • Lower thumbnail resolution options

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

Server

Mobile

Web

Machine Learning

Others

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.86.0...v1.87.0

immich - v1.86.0

Published by github-actions[bot] 11 months ago

v1.86.0

[!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

Highlights

Welcome to release v1.86.0 of Immich. This release brings you some of the highly requested features and a lot of bug fixes and improvements. Let’s dive right into the highlighted features below:

  • Partner sharing on the main timeline (Web & Mobile)
  • New map tile server
  • Support for additional facial recognition models
  • User’s avatar color
  • Notable fix: “Missing” for the recognize faces job now will only process an asset a single time, even when no faces are detected (#4854)
  • Notable fix: user first/last name has been merged into a single “name” field (#4915)

Partner sharing on the main timeline

In this release we have added an option to enable parter-shared photos to be displayed in the main timeline. This feature can be enabled on a per-partner basis and can be viewed and updated on both the web and mobile app.

For the web interface: Account’s Setting > Sharing > Show in timeline

image

For the mobile app: from the partner’s view, on the top right corner of the app bar

Related to this new feature, the people-sharing card has been redesigned to make it easier to understand what is being shared, and with whom.

Now that assets from multiple users can appear in the timeline, there are some caveats, namely:

  • You can view partners’ media and add them to an album. No other actions are allowed on those assets.
  • Facial data is not shared (yet)
  • The search result doesn’t include partners’ assets (yet)
  • You cannot favorite partners’ assets (yet)
  • You are at the mercy of the partners' actions (as it should be) on the asset they own. If the partner decides to delete or archive an asset belonging to them, it will not be displayed on your timeline.
  • Partner sharing may result in displaying duplicate assets on the main timeline. We would like to address this soon.

New map tile server

Since Immich has been growing quickly, we got a reminder from the community that we were using OpenStreetMap’s tile server. We have switched to a different default tile server to avoid violating the Tile Usage Policy. This created an opportunity to build our custom layer to make the map’s look-and-feel slicker.

Light Map
Dark Map

Support for additional facial recognition models

We’ve added additional support for antelopev2 and buffalo_m as the supported facial recognition models:

antelopev2 has the same detection model as buffalo_l, but a roughly 50% larger recognition model.
buffalo_m has the same recognition model as buffalo_l, but a smaller detection model.

User’s avatar color

We added an option to change the color of your avatar if you don’t want to upload a profile picture. This mechanism will help to distinguish the user in the Activity panel on the album page.

https://github.com/immich-app/immich/assets/74269598/2a133113-190c-49b6-8dea-2ddf113507c8


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

Mobile

Server

Web

Machine Learning

Documentation and CI

Dependencies Updates

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.85.0...v1.86.0

immich - v1.85.0

Published by github-actions[bot] 12 months ago

v1.85.0

[!warning]
Breaking Changes
The server and mobile app must be on the same version for the application to work correctly.

Highlights

Welcome to release v1.85.0 of Immich. This release includes many bug fixes across the app, server, and web and introduces new features, which you can find in the highlights below.

  • Global activity in a shared album and activity on the mobile app and album’s option
  • Shuffle slideshow: New option to randomize the order
  • Notable fix: Bulk data fetching for initial sync on the mobile app to fix the issue with a very large gallery, causing the app to crash due to an out-of-memory error.

Global activity

The activity feature that was added in the last release has now been integrated into the shared album view, where you can now see the likes and comments for all photos and videos in the shared album. You can also like and comment directly on the album itself. In the new album options modal, you can also toggle this feature on and off.

In this release, the activity functions have also been added to the mobile app.

Thanks @martabal and @shenlong-tanwen for your tireless work on this feature

https://github.com/immich-app/immich/assets/27055614/fafec2b1-ba56-487f-a965-f8c5bbca5efc

Shuffle slideshow

With the return of our web expert, @brighteyed, the slideshow now plays and advances with a shuffle option by default. You can toggle the option to advance the slide show incrementally according to the creation date.

image


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.

Changlogs

Server

Web

Mobile

Others

New Contributors

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

immich - v1.84.0

Published by github-actions[bot] 12 months ago

1.84.0

Welcome to release v1.84.0. This release brings many quality-of-life improvements, a new mobile app bar, and bug fixes for machine learning. I hope you enjoy this release.

Highlights

  • New mobile app bar and user profile screen
  • Shared link with password option
  • Shared album activity (web)
  • Custom scan interval for external library
  • Notable fix: Cannot download machine learning models from the S3 bucket

New mobile app bar and user profile screen

Thanks to @shenlong-tanwen, we now have the new aesthetically pleasing app bar and user profile panel. The trash button can now be found on the library page.

Mobile App Bar

Shared link with password option

We added an optional password option for the shared link. Thanks, @jarvis2f, for your work!

Shared link password

Shared album activity

With the fantastic and tight collaboration between @martabal and @jrasm91, after two days of work, you can now comment on a photo or video in the shared album, and the shared users can all read the feed. This feature is web-only at the current stage.

Activity

Custom scan interval for external library

You can now define a custom interval for the trigger or external library rescan. Thank you, @danieldietzler, for the enhancement to the feature.

image


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

Web

Mobile

Server

Machine Learning

Others

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.83.0...v1.84.0

immich -

Published by github-actions[bot] 12 months ago

v1.83.0 - 🌟 20_000 🌟 Release

Warning

Action Required

Re-run metadata extraction for videos impacted by the duration parsing bug (#4480)

Welcome to release v1.83.0 of Immich. Thank you, everybody, for your continued support of Immich, from testing, bug reports, and code contributions to the financial donations. You have my eternal appreciation. I am happy to bring you this 20_000 stars release. The contributors and I love gazing at the stars when we push out code in the middle of the night, so be sure to keep it coming 😀. I hope you enjoy this release, which brings a lot of bug fixes and new features, which are highlighted below:

  • Asset stacking
  • Shared links on mobile
  • New storage template variables
  • Custom theme
  • Notable mention: PR #4474 has been merged, which is a prerequisite for additional facial recognition features, including unmerging and manually reassigning faces.

Asset Stacking

This release introduces asset stacking. Specifically, we have added the option to manually stack assets, with automatic stacking planned for a future release. When assets are stacked, the children are hidden from the main timeline, and only a single (primary/parent) asset is shown. This is perfect for grouping JPEG and RAW, burst shots, and edited file versions. The stacked content can only be seen from the main timeline on the web and mobile app. In other views, such as album, archive, and favorite, the contents are still shown as not stacked.

Many thanks to @shenlong-tanwen for spearheading this effort and the mobile implementation.

On the web

https://github.com/immich-app/immich/assets/27055614/ca2e8538-7b87-41d5-a2f6-f0a8e976d6a3

On the mobile app

https://github.com/immich-app/immich/assets/27055614/2b194070-7736-4db7-846c-1d540b622aac

Shared Links on Mobile

You can now create a shared link on the mobile app. It is not yet possible to view the shared link content on the mobile app, and we are hoping to add this ability in the near future.

https://github.com/immich-app/immich/assets/27055614/b4b1b3b4-2964-4dd8-86c3-73b7caf6c983

New Storage Template Variables

Two new storage template variables have been added in this release:
{{assetId}} - The UUID for the asset
{{album}} - The name of the first album the asset belongs to

[!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.

image

Custom Theme

We have added a new Administration > Setting called “Theme Settings”, where you can write custom CSS that will get loaded in the web application for all users. This enables administrators to change fonts, colors, and other styles. Thanks @Wingysam for your contribution.

image

As always, please consider supporting the project.

🎉 Cheer! 🎉

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

Server

Web

Mobile

Others

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.82.1...1.83.0

immich - v1.82.1

Published by github-actions[bot] about 1 year ago

v1.82.1

[!NOTE]
There is no mobile release for this version

Highlights

This version includes some minor bug fixes and improvements.

  • Fixed Scrollbar offset from the web
  • Optimized add/remove actions for albums
  • Fixed WebSocket initial connection on the web

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.

What's Changed

New Contributors

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

immich - v1.82.0

Published by github-actions[bot] about 1 year ago

v1.82.0

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

Security

We identified two security flaws that have been fixed and, therefore, urge all Immich users to upgrade as soon as possible.

  • The first flaw link is of medium severity and could sometimes lead to information disclosure. This was reported to us by Andrea Alemani. Accessing the metadata of assets outside of the shared album was possible when using the shared album feature. This does not leak the entire photo/video content. Still, it includes the thumbhash (a very low-resolution placeholder) and information such as capture time, original filename, and file checksum.
  • The other link is also an information disclosure classified as low severity. The signup process used a previously public endpoint (/api/user/count) to determine if the server had an initial administrator account. The endpoint revealed the number of user accounts on the Immich server, which is undesirable. We have added authentication to this endpoint and migrated the server initialization status to an alternative endpoint. This flaw was found by internal security testing (DAST) by the Immich team.

In addition, we have discovered that thumbnails (which can be downloaded from right-click -> save images as…) contain the full EXIF (metadata) information. Normally, you might expect this metadata to be scrubbed (as do Facebook, Google Photos, Twitter, etc.), but it isn’t. We are not able to fix it ourselves without significant performance degradation but have to wait for an upstream package. We advise users not to use the public-sharing feature if they have concerns about sharing metadata.

Highlights

Welcome to release v1.82.0 of Immich. This release is packed with many improvements, so buckle your seat belt and zoom on to the highlights below:

  • Trash Feature
  • Web Client WebSocket Feature
  • Library Scanning Performance
  • Time Bucket Grouping Accuracy
  • Storage Template Improvements
  • Notable fix: no longer read iOS-modified photos as “FullSizeRender” - Thanks, @xick, for fixing the issue upstream. You can fix the older assets by removing them from your immich server and reuploading the files, and they will have the original name.

Trash Feature

This release introduces the new trash feature, which is similar to the trash section on your native photo viewer. When a photo is deleted from Immich, it will go into the trash and stay there for 30 days before being permanently removed from Immich, which includes the database and the file system for non-external library assets. You can access the page from the sidebar on the web and the app drawer menu in the mobile app. Like with most features in Immich, you can adjust the trash duration or even opt out of the feature entirely from the Administration Settings. This has been a highly requested feature, and we hope you enjoy it. Let us know if you run into any issues using it.

Web Client WebSocket

Several actions in the web client previously required the user to manually refresh the page to see changes. In this release, we added a WebSocket connection to the web application, eliminating some of these manual refreshes and improving the user experience. Events that are now pushed from the server include:

  • When a new feature photo is selected for a person
  • When an asset is trashed, deleted, or restored
  • When the server connects/disconnects
  • When features are enabled/disabled (search, trash, map, machine learning, auth options, etc.)
  • When server configuration is updated (trash days, map URL, OAuth button text)

With web sockets in place now both in the web and mobile apps, we hope to find additional ways to improve the user experience and push updates as they happen to appropriate clients.

Library Scanning Improvements

Library scanning performance has been significantly improved in this release. Specifically, the implementation for the initial scan has been greatly improved. Previously, this job had quadratic time complexity but has since been improved to linear time. On a library with 250k assets, the time to queue a library refresh has gone down from 10+ minutes (@etnoy said: I couldn’t be bothered to wait longer for a list comparison) to around 30 seconds.

Additionally, marking assets as offline has been improved as well. This process is used to execute a single query per asset, which adds up when large numbers of assets go offline. We have optimized this to use a single (bulk) update statement. For reference, marking 16k assets as offline went down from several minutes to a few seconds.

Lastly, we have added an index for asset lookups by path, which should decrease the amount of pressure on put on the database during library refreshes.

The default library job concurrency has been increased from 1 to 5.

These improvements will make it much easier to use Immich with large collections. Please let us know if you are still seeing performance bottlenecks in the library jobs. We plan to continue to iterate and improve this area in the future, and your feedback is very helpful in identifying issues.

Asset Time Buckets Grouping (web)

Assets are grouped by buckets on the web, and this was a problematic and complicated task when considering photos taken in different time zones. Even more so when considering a database, server, and client, which may all be running in different timezones, now, with a new database column localDateTime, we can query, sort, and group assets by the local date and time they were taken and show them consistently in the right bucket (in the correct order), regardless of the server or viewing timezone.

Storage Template Improvements

The storage template feature was added in the early days of Immich and has helped many people automatically organize the underlying files into a clean, predictable structure. However, the additional file move operations that were introduced with the feature have also been the cause of some nasty bugs, like #2877. In this release, we have hardened the move operations, which have significantly improved the resiliency of storage template move operations. Additionally, we have added a new page at Administration > Repair, which gives a report of orphaned and untracked files, with some initial tools to help correct previously orphaned files.

image


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

Server

Machine Learning

Web

Mobile

Others

New Contributors

Full Changelog: https://github.com/immich-app/immich/compare/v1.81.1...v1.82.0