immich-album-sync

immich-album-sync

Application Docker from NightCrawler's Repository

Vue d'ensemble

One-way album sync between two Immich servers with a responsive web UI. Designed for Unraid users who run a private Immich server (full library) and a public/family-facing Immich server (curated albums only). Configure sync jobs, schedules, and API keys entirely through the browser — no config files or environment variables needed after the initial setup. Features: - Web UI with password protection - Multiple sync jobs with independent schedules - Preserves original files, EXIF, GPS, and Apple Live Photos (.HEIC + .MOV) - Duplicate-safe (uses immich-go for smart detection) - Real-time log streaming in the browser - Mobile-responsive design - Add-only mode by default (safe for family sharing)

Arguments d'exécution

Interface utilisateur Web
http://[IP]:[PORT:8080]/
Réseau
bridge
Coquille
bash
Privilégié
false
Paramètres supplémentaires
--restart unless-stopped

Configuration du modèle

Web UI PortPorttcp

Port for the Immich Album Sync web interface. Open this in your browser after the container starts.

Cible
8080
Défaut
8080
Valeur
8080
App DataPathrw

Persistent storage for the database (config.db), download cache, and sync logs. Map to a location on your array.

Cible
/app/appdata
Défaut
/mnt/user/appdata/immich-album-sync
Valeur
/mnt/user/appdata/immich-album-sync
Secret KeyVariable

REQUIRED: Change to a unique random string used to sign session cookies and encrypt stored API keys. Using the default value is INSECURE. Key length: minimum 16 characters | recommended 32–64 characters | maximum 128 characters (longer values provide no extra security). Generate a strong key at: https://1password.com/password-generator/ — select 32–64 characters, all character types. WARNING: changing this key after initial setup will invalidate all stored API keys and log out all active sessions — you will need to re-enter API keys for every sync job.

Cible
SECRET_KEY
Défaut
change-me-please-use-a-long-random-string-here
Valeur
change-me-please-use-a-long-random-string-here
TimezoneVariable

Container timezone. Used for log timestamps. Examples: America/New_York, America/Chicago, America/Los_Angeles, Europe/London, UTC. Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Cible
TZ
Défaut
America/New_York
Valeur
America/New_York
PUIDVariable

User ID the app process runs as (the container no longer runs as root). The default 99 is Unraid's 'nobody' user, which matches standard appdata ownership — leave it unless your appdata/cache is owned by a different user. If the container logs permission errors writing to appdata, set this to the owner UID of your appdata share.

Défaut
99
Valeur
99
PGIDVariable

Group ID the app process runs as. The default 100 is Unraid's 'users' group, which matches standard appdata ownership. Change only if your appdata/cache is owned by a different group.

Défaut
100
Valeur
100
Cleanup Cache After UploadVariable

Set to 'true' to automatically delete downloaded originals from the cache directory after they have been successfully uploaded. Saves disk space but files will be re-downloaded on the next sync run. Can also be toggled per-job in the Web UI.

Cible
CLEANUP_CACHE
Défaut
false
Valeur
false
Cache Directory PathVariable

Path inside the container where original files are temporarily staged before uploading to the destination server. The default stores the cache inside the App Data directory. To store the cache on a different disk, SSD pool, or network share (recommended for large first-time syncs): 1. In the Docker template, add a second Path mapping: Container path: /app/cache Host path: /mnt/user/YourDisk/immich-sync-cache (or any writable path) 2. Set this field to: /app/cache This lets you route multi-GB or multi-TB downloads to a large array disk or NAS share without filling your primary Unraid cache pool. The container must have write access to whatever path you choose.

Cible
CACHE_PATH
Défaut
/app/appdata/cache
Valeur
/app/appdata/cache
Max Cache Batch Size (MB)Variable

Maximum amount of data (in megabytes) to download before uploading a batch to the destination server. After each batch is uploaded it is cleared from the cache, then the next batch begins. This prevents the local cache from growing too large during first-time syncs of very large albums. Default: 10240 (10 GB). Set to 0 to download all files before uploading (disables size-based batching).

Cible
BATCH_SIZE_MB
Défaut
10240
Valeur
10240
Max Files Per BatchVariable

Maximum number of files to stage per batch before uploading. Works alongside Max Cache Batch Size — whichever limit is reached first triggers an upload cycle. Default: 0 (no file-count limit; only the size limit applies). Example: set to 500 to process albums in groups of 500 files regardless of total size.

Cible
BATCH_FILE_COUNT
Défaut
0
Valeur
0
Log File PathVariable

Internal path for the sync log file. Viewable live in the Web UI under 'Live Logs'. Leave blank to use the default.

Cible
LOG_PATH
Défaut
/app/appdata/logs/sync.log
Valeur
/app/appdata/logs/sync.log
Database PathVariable

Internal path for the SQLite database that stores sync job configurations and run history. Leave blank to use the default.

Cible
DB_PATH
Défaut
/app/appdata/config.db
Valeur
/app/appdata/config.db

Détails

Référentiel
ghcr.io/nightcrawler1016/immich-album-sync:latest
Dernière mise à jour2026-05-31
Première vue2026-05-31

Exécutez immich-album-sync sur Unraid.

immich-album-sync est listé dans Community Apps pour Unraid OS. Explorez Unraid pour créer un serveur domestique flexible, un NAS ou un laboratoire domestique.