v1.91.0
版本发布时间: 2023-12-15 23:47:56
immich-app/immich最新发布版本:v1.121.0(2024-11-21 00:40:00)
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
docker-compose.yml
updates related to dropping Typesense- Reupload certain iOS Live Photos
- 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.
- Monthly donation via GitHub Sponsors
- One-time donation via GitHub Sponsors
- Librepay
- buymeacoffee
- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX
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 🛠
- feat(web,server)!: runtime log level by @jrasm91 in https://github.com/immich-app/immich/pull/5672
- feat(server): use pgvecto.rs by @jrasm91 in https://github.com/immich-app/immich/pull/3605
Server
- feat(server): use postgres-adapter for websockets by @jrasm91 in https://github.com/immich-app/immich/pull/5569
- feat(server,ml): add new models by @mertalev in https://github.com/immich-app/immich/pull/5710
- feat(server): server-side events by @jrasm91 in https://github.com/immich-app/immich/pull/5669
- fix(server): disable classification by default by @mertalev in https://github.com/immich-app/immich/pull/5708
- fix(server): select asset face columns explicitly by @mertalev in https://github.com/immich-app/immich/pull/5564
- fix(server): connection aborted logging by @jrasm91 in https://github.com/immich-app/immich/pull/5595
- fix(server): don't associate assets with Null Island by @sushain97 in https://github.com/immich-app/immich/pull/5623
- fix(server): in dev mode by @jrasm91 in https://github.com/immich-app/immich/pull/5670
- chore(server): simplify search face query and better clustering by @alextran1502 in https://github.com/immich-app/immich/pull/5573
- chore(server): faster shutdown by @jrasm91 in https://github.com/immich-app/immich/pull/5577
- chore(server): fix ssr in dev by @jrasm91 in https://github.com/immich-app/immich/pull/5637
- refactor(server): auth dto by @jrasm91 in https://github.com/immich-app/immich/pull/5593
- refactor(server): immich file responses by @jrasm91 in https://github.com/immich-app/immich/pull/5641
Mobile
- fix(mobile): handle livePhotos using originFileWithSubType by @shenlong-tanwen in https://github.com/immich-app/immich/pull/5602
- fix(mobile): mobile album sort not persisting by @shenlong-tanwen in https://github.com/immich-app/immich/pull/5584
- fix(mobile): memory lane not displayed in mobile app by @shenlong-tanwen in https://github.com/immich-app/immich/pull/5587
- fix(mobile): live / motion photo download by @shenlong-tanwen in https://github.com/immich-app/immich/pull/5607
- fix(mobile): Revert - upload motion and live part of LivePhotos together by @alextran1502 in https://github.com/immich-app/immich/pull/5601
- fix(mobile): better error message by @alextran1502 in https://github.com/immich-app/immich/pull/5653
- fix(mobile): Fix upload hang on iOS when deleting stale files by @alextran1502 in https://github.com/immich-app/immich/pull/5658
- fix(mobile): simplify state management in backup selection page by @alextran1502 in https://github.com/immich-app/immich/pull/5655
- chore(mobile): move mocktail to dev dep by @shenlong-tanwen in https://github.com/immich-app/immich/pull/5666
- chore(mobile): Put delete button before metadata editing by @lukaszwawrzyk in https://github.com/immich-app/immich/pull/5633
Web
- feat(web): use
<a>
tag for albums in list view by @martabal in https://github.com/immich-app/immich/pull/5645 - feat(web): increase map max zoom by @waclaw66 in https://github.com/immich-app/immich/pull/5693
- feat(web): lazy loading on album/sharing/search by @flyotlin in https://github.com/immich-app/immich/pull/5696
- feat(web): add types to dispatcher by @martabal in https://github.com/immich-app/immich/pull/5700
- feat(web): re-add open graph tags for public share links by @jrasm91 in https://github.com/immich-app/immich/pull/5635
- feat(web): automatically update user info by @martabal in https://github.com/immich-app/immich/pull/5647
- fix(web): user management responsive design by @martabal in https://github.com/immich-app/immich/pull/5698
- fix(web): log out by @martabal in https://github.com/immich-app/immich/pull/5706
- fix(web): remove always on delay badge by @alextran1502 in https://github.com/immich-app/immich/pull/5574
- fix(web): no icon with firefox by @martabal in https://github.com/immich-app/immich/pull/5679
- fix(web): warning when building web by @martabal in https://github.com/immich-app/immich/pull/5680
- fix(web): prevent loop on search by @martabal in https://github.com/immich-app/immich/pull/5664
- chore(web): shared page redirect to host by @JW-CH in https://github.com/immich-app/immich/pull/5678
Machine Learning
- fix(ml): more graceful shutdown by @mertalev in https://github.com/immich-app/immich/pull/5689
Documentation
- docs: clean-up old references by @jrasm91 in https://github.com/immich-app/immich/pull/5697
- docs: update arch diagram by @jrasm91 in https://github.com/immich-app/immich/pull/5662
- docs: Add tip showing common error messages by @jonhnet in https://github.com/immich-app/immich/pull/5592
- docs: add sponsor link by @jrasm91 in https://github.com/immich-app/immich/pull/5597
- docs: remove typesense from faq by @mertalev in https://github.com/immich-app/immich/pull/5600
- docs: update backup-and-restore.md by @pjsxw in https://github.com/immich-app/immich/pull/5616
- docs: FAQ for thumbnail jobs by @bo0tzz in https://github.com/immich-app/immich/pull/5661
- docs: recap 2023 by @alextran1502 in https://github.com/immich-app/immich/pull/5665
- docs: remove citiesFileOverride from config-file.md; fixes #5682 by @SlavikCA in https://github.com/immich-app/immich/pull/5683
Dependency updates
- fix(deps): update server by @renovate in https://github.com/immich-app/immich/pull/5506
- chore(deps): update base-image to v20231214 (major) by @renovate in https://github.com/immich-app/immich/pull/5705
- chore(deps): update mambaorg/micromamba:bookworm-slim docker digest to 5ea70d2 by @renovate in https://github.com/immich-app/immich/pull/5707
- chore(deps): update dependency sql-formatter to v15 by @renovate in https://github.com/immich-app/immich/pull/5709
- fix(deps): bump sharp by @jrasm91 in https://github.com/immich-app/immich/pull/5509
- chore(deps): remove unused cron types by @jrasm91 in https://github.com/immich-app/immich/pull/5563
- chore(deps): pin dependencies by @renovate in https://github.com/immich-app/immich/pull/5567
- chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a by @renovate in https://github.com/immich-app/immich/pull/5570
- chore(deps): update python:3.11-slim-bookworm docker digest to cfd7ed5 by @renovate in https://github.com/immich-app/immich/pull/5572
- chore(deps): update redis:6.2-alpine docker digest to b6124ab by @renovate in https://github.com/immich-app/immich/pull/5599
- chore(deps): pin tensorchord/pgvecto-rs docker tag to 0335a1a by @renovate in https://github.com/immich-app/immich/pull/5632
- chore(deps): bump github/codeql-action from 2 to 3 by @dependabot in https://github.com/immich-app/immich/pull/5694
Other changes
- ci: Automatic categories in generated release notes by @bo0tzz in https://github.com/immich-app/immich/pull/5684
- ci: Catchall category for release notes by @bo0tzz in https://github.com/immich-app/immich/pull/5701
New Contributors
- @jonhnet made their first contribution in https://github.com/immich-app/immich/pull/5592
- @pjsxw made their first contribution in https://github.com/immich-app/immich/pull/5616
- @lukaszwawrzyk made their first contribution in https://github.com/immich-app/immich/pull/5633
- @JW-CH made their first contribution in https://github.com/immich-app/immich/pull/5678
- @SlavikCA made their first contribution in https://github.com/immich-app/immich/pull/5683
Full Changelog: https://github.com/immich-app/immich/compare/v1.90.2...v1.91.0
1、 app-arm64-v8a-release.apk 26.17MB
2、 app-armeabi-v7a-release.apk 24.15MB
3、 app-release.apk 71.53MB
4、 app-x86_64-release.apk 27.59MB
5、 docker-compose.yml 1.9KB
6、 example.env 648B
7、 hwaccel.yml 832B