Cloudberry syncs your photo libraries from iCloud and Google Photos to local storage and gives you a web UI to browse, search, organise, and download your photos. Single Docker container, no CLI config needed. Website: https://tindralabs.com/cloudberry Docker Hub: https://hub.docker.com/r/tindralabs/cloudberry Live Demo: https://demo.tindralabs.com GitHub: https://github.com/tindralabs/cloudberry What it does If you have photos in iCloud or Google Photos and want them on your own hardware, Cloudberry handles the full pipeline — authentication (including 2FA), downloading originals, generating thumbnails, and serving everything through a web interface. Syncs photos, videos, and Live Photos in original quality (HEIC, RAW, MOV, etc.) iCloud Photos and Google Photos support (more sources planned) Web UI with timeline view, albums, favourites, search, map view, and bulk ZIP downloads Multi-account support — sync multiple accounts across providers to one server (family setups) Scheduled sync with change detection (new photos, deletions, metadata changes) Collections — curate and download selections for printing or backup Converts to max-quality JPG on download if needed 32 languages with auto-detection Runs on Intel, AMD64 and ARM64 Install on Unraid Available from Community Apps — search for "Cloudberry". Or manually via Docker Hub: Image: tindralabs/cloudberry:latest Port: 6585 → 8080 Config path: /mnt/user/appdata/cloudberry → /config Photos path: Your preferred storage location → /photos MASTER_KEY: Required — encrypts your account credentials at rest. Generate with openssl rand -hex 32 After install, open the web UI, add your iCloud or Google Photos account, and sync starts automatically. Pricing Cloudberry has a free tier and a paid tier. I want to be upfront about this. Free Premium Accounts 1 Unlimited Photos 1,000 Unlimited Sync Manual only Scheduled automatic Change detection — Included Web UI, search, albums, map, downloads Included Included Price $0 forever $4.99/month The free tier is fully functional — no nag screens, no time limits. 1,000 photos is enough to evaluate whether it works for your setup. Premium unlocks unlimited photos and automatic scheduling. Why not completely free? Neither iCloud nor Google Photos have fully open APIs. Keeping sync working requires ongoing engineering as Apple and Google change their authentication and session management. The subscription funds that continuous compatibility work. Tech details Single container running Node.js (Hono/tRPC), Caddy (reverse proxy), Valkey (job queue), and SQLite. Uses s6-overlay for process management. No external dependencies — everything runs inside the container. Photos are stored as original files on disk (not in a database). Your files are just files — if you ever stop using Cloudberry, your photos are right there in the folder structure. Known limitations iCloud requires an active account with 2FA enabled Google Photos support is newer — please report any issues Initial sync of large libraries (50K+ photos) takes time — subsequent syncs are incremental Shared Albums are not yet supported (iCloud uses a different API for these) I'm actively developing this and responding to bug reports. If something's broken, let me know here and I'll get it sorted.