github Salvoxia/immich-folder-album-creator 0.23.0
v0.23.0

4 hours ago

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_FILE
  • READ_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/Berlin

For 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:latest

Other Notable Changes to Docker Image

  • Changed entrypoint behavior: Run the script as a one-off job when CRON_EXPRESSION is not set, otherwise invoke supercronic
    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 crond to (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:00 to Z for UTC
    • Log timestamp precision reverts to milliseconds when using DEBUG log level

Full Changelog: 0.22.0...0.23.0

Don't miss a new immich-folder-album-creator release

NewReleases is sending notifications on new releases.