# ImUpper Photosync → Immich helper stack for Unraid. It watches a Photosync inbox, moves stable files to a drop folder, then uploads them to Immich using `immich-go` with parallel workers. A small monitor script prints queue counts and container status. ## Components - `photosync-mover` (Alpine): inotify + periodic sweeps; moves files from inbox to drop after size is stable. - `photosync-uploader` (immich-go): fast uploads from drop to Immich with configurable concurrency; optional delete-on-success. - `monitor.sh`: quick health snapshot (queue sizes, container state, recent uploader logs). ## Setup 1) Fill `.env` with your values: - Paths: `INBOX` and `DROP` pointing to your host shares (e.g., `/mnt/user/photosync/inbox`, `/mnt/user/photosync/drop`). - Immich: `IMMICH_URL`, `IMMICH_API_KEY`. - Tuning (optional): `STABLE_FOR`, `SCAN_FALLBACK`, `UPLOAD_CONCURRENCY`, `UPLOAD_SCAN_INTERVAL`, `UPLOAD_IDLE_SLEEP`, `DELETE_ON_SUCCESS`, `ALLOW_INSECURE_SSL`. - Permissions: `PUID`/`PGID`, `TZ`. 2) Bring up the stack: ```sh docker compose up -d ``` This starts: - `photosync-mover` (runs `move_stable.sh`) - `photosync-uploader` (runs `uploader.sh`) ## Useful commands - Check status/logs summary: ```sh bash monitor.sh ``` - View live logs: ```sh docker logs -f photosync-uploader docker logs -f photosync-mover ``` - Tear down: ```sh docker compose down ``` ## Behavior and tuning - Mover waits `STABLE_FOR` seconds to ensure file size is unchanged, then moves to drop. Falls back to full scans every `SCAN_FALLBACK` seconds. - Uploader scans drop every `UPLOAD_SCAN_INTERVAL` seconds, uploads with `UPLOAD_CONCURRENCY` workers, and optionally deletes the source after success. - `ALLOW_INSECURE_SSL=true` allows self-signed Immich endpoints (not recommended unless needed). ## Requirements - Docker/Compose v2. - `immich-go` pulled via `ghcr.io/immich-app/immich-go:release` (adjust tag if desired). - inotify is installed inside the mover container automatically.