This release does not bring new features to the script itself, but migrates the Docker container image to rootless.
Caution
This includes potential breaking changes when you are using either API_KEY_FILE and/or READ_ALBUM_PROPERTIES. Read the migration guide if this applies to your use case!
Docker Migration Guide
This applies to you if you use either
API_KEY_FILEREAD_ALBUM_PROPERTIES
By default, the container now runs with uid/gid 1000:1000. If that user/group is not allowed to read your API key file or your .albumprops files, change the uid/gid to the one of a user/group that has read access to both.
The following examples show how to change docker-compose or docker CLI commands to change the user the container is running with:
For docker-compose:
services:
immich-server:
container_name: immich_server
volumes:
- /path/to/my/photos:/external_libs/photos
...
immich-folder-album-creator:
container_name: immich_folder_album_creator
image: salvoxia/immich-folder-album-creator:latest
restart: unless-stopped
# Use a UID/GID that has read access to the mounted API key file
# and external libraries
+ user: 1001:1001
volumes:
- /path/to/secret/file:/immich_api_key.secret:ro
# mount needed for .albumprops to work
- /path/to/my/photos:/external_libs/photos
environment:
API_URL: http://immich_server:2283/api
API_KEY_FILE: /immich_api_key.secret
ROOT_PATH: /external_libs/photos
CRON_EXPRESSION: "0 * * * *"
TZ: Europe/BerlinFor plain Docker CLI:
docker run \
-v "./api_key.secret:/api_key.secret:ro"
+ -u 1001:1001 \
-e UNATTENDED="1" \
-e API_KEY_FILE="/api_key.secret" \
-e API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-e ROOT_PATH="/external_libs/photos" \
salvoxia/immich-folder-album-creator:latestOther Notable Changes to Docker Image
- Changed entrypoint behavior: Run the script as a one-off job when
CRON_EXPRESSIONis not set, otherwise invokesupercronic
This means you now longer need to specify the command you want to run inside the container then simply trying to run a one-off job. Usage examples for Docker have been updated to reflect that. - Switched from Alpine's internal
crondto (supercronic)[github.com/aptible/supercronic] as cron manager (makes life easier when running rootless)
Other Notable Changes (affects Docker and plain Python):
- Changes to the scripts log format to be in line with supercronic's log out for harmonized container logging:
- Changed log timestamp precision to seconds (before: milliseconds)
- Changed log timestamp timezone from
+00:00toZfor UTC - Log timestamp precision reverts to milliseconds when using DEBUG log level
Full Changelog: 0.22.0...0.23.0