services: photosync-mover: image: alpine:3.19 container_name: photosync-mover restart: unless-stopped environment: - TZ=${TZ:-UTC} - INBOX=/inbox - DROP=/drop - STABLE_FOR=${STABLE_FOR:-5} - SCAN_FALLBACK=${SCAN_FALLBACK:-60} - PUID=${PUID:-1000} - PGID=${PGID:-1000} volumes: - ${INBOX}:/inbox:rw - ${DROP}:/drop:rw - ./move_stable.sh:/scripts/move_stable.sh:ro networks: - npm-network entrypoint: - /bin/sh - -c - | set -e apk add --no-cache inotify-tools coreutils su-exec >/dev/null exec su-exec "$${PUID}:$${PGID}" /scripts/move_stable.sh photosync-uploader: image: alpine:3.19 container_name: photosync-uploader restart: unless-stopped depends_on: - photosync-mover environment: - TZ=${TZ:-UTC} - IMMICH_URL=${IMMICH_URL} - IMMICH_API_KEY=${IMMICH_API_KEY} - IMMICH_GO_VERSION=${IMMICH_GO_VERSION:-0.31.0} - SCAN_DIR=/drop - SCAN_INTERVAL=${UPLOAD_SCAN_INTERVAL:-5} - CONCURRENCY=${UPLOAD_CONCURRENCY:-4} - IDLE_SLEEP=${UPLOAD_IDLE_SLEEP:-3} - DELETE_ON_SUCCESS=${DELETE_ON_SUCCESS:-true} - ALLOW_INSECURE_SSL=${ALLOW_INSECURE_SSL:-false} - PUID=${PUID:-1000} - PGID=${PGID:-1000} - XDG_CACHE_HOME=/tmp/immich-cache - HOME=/tmp volumes: - ${DROP}:/drop:rw - ./uploader.sh:/scripts/uploader.sh:ro entrypoint: - /bin/sh - -c - | set -e apk add --no-cache curl ca-certificates su-exec tar >/dev/null arch="$$(uname -m)" case "$$arch" in x86_64) arch="x86_64" ;; aarch64) arch="arm64" ;; arm64) arch="arm64" ;; *) echo "Unsupported architecture: $$arch"; exit 1 ;; esac url="https://github.com/simulot/immich-go/releases/download/v$${IMMICH_GO_VERSION}/immich-go_Linux_$${arch}.tar.gz" echo "[uploader] Downloading immich-go $${IMMICH_GO_VERSION} for $$arch" tmp="$$(mktemp -d)" curl -fsSL "$$url" -o "$$tmp/immich-go.tar.gz" tar -xzf "$$tmp/immich-go.tar.gz" -C "$$tmp" install -m 0755 "$$tmp/immich-go" /usr/local/bin/immich-go rm -rf "$$tmp" exec su-exec "$${PUID}:$${PGID}" /scripts/uploader.sh networks: - npm-network networks: npm-network: external: true