diff --git a/update_immich.yml b/update_immich.yml index 59bf532..c5a57f4 100644 --- a/update_immich.yml +++ b/update_immich.yml @@ -20,7 +20,14 @@ # --- Immich specifics --- immich_project: "immich" - immich_compose_file: "/opt/immich/docker-compose.yml" + + # Where compose file lives on the VM + immich_compose_dir: "/opt/immich" + immich_compose_file: "{{ immich_compose_dir }}/docker-compose.yml" + + # Official Immich compose URL (latest release) + immich_compose_url: "https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml" + immich_port: 2283 # Optional external URL for controller-side readiness check @@ -34,8 +41,26 @@ docker_prefix: "unalias docker 2>/dev/null || true; DOCKER_CLI_HINTS=0; command docker" # Commands to run on the target VM (quiet outputs) - # Uses the version in docker-compose.yml (.env -> IMMICH_VERSION or default "release") + # 1) Ensure compose dir exists + # 2) Safely download latest docker-compose.yml from GitHub (with backup) + # 3) Pull images according to compose + # 4) Start / update stack immich_commands: + - "mkdir -p {{ immich_compose_dir }}" + - >- + cd {{ immich_compose_dir }} && + wget -qO docker-compose.yml.new "{{ immich_compose_url }}" || true; + if [ -s docker-compose.yml.new ]; then + echo 'Downloaded new docker-compose.yml from GitHub (Immich latest).'; + if [ -f docker-compose.yml ]; then + cp docker-compose.yml "docker-compose.yml.bak-$(date +%F_%H-%M-%S)"; + echo 'Existing docker-compose.yml backed up.'; + fi; + mv docker-compose.yml.new docker-compose.yml; + else + echo 'WARNING: Failed to download a valid docker-compose.yml, keeping existing one.' >&2; + rm -f docker-compose.yml.new 2>/dev/null || true; + fi - "{{ docker_prefix }} compose -p {{ immich_project }} -f {{ immich_compose_file }} pull >/dev/null" - "{{ docker_prefix }} compose -p {{ immich_project }} -f {{ immich_compose_file }} up -d --remove-orphans >/dev/null"