iCloud照片自动备份成私有云相册:docker-icloudpd 自建同步服务实战记录 📅 发布时间:2026/8/20 17:46:06 👁 浏览次数: iCloud照片自动备份成私有云相册docker-icloudpd 自建同步服务实战记录【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd一个手机屏幕碎了的深夜我才意识到自己有多依赖 iCloud。相册里攒了六年的家庭照片、孩子成长的点滴、旅行的每一站全都挂在苹果那 5GB 免费额度之外——想备份就得按月付费扩容不付费又总担心哪天设备出问题就什么都留不住。后来我找到了一个叫 docker-icloudpd 的开源容器它基于 Alpine Linux集成了 iCloud Photos Downloader 工具可以自动把 iCloud 里的照片和视频定时同步到自己的服务器上还支持 HEIC 转 JPG、多账号、健康检查与多种消息通知。折腾完这套私有云相册之后我再也没为照片存哪里焦虑过。这篇文章就把我的完整踩坑过程整理出来从部署、认证到日常维护一次讲清。先算一笔账付费扩容 vs 自建私有云相册在动手之前我认真算过这笔账对比项iCloud 付费扩容自建私有云相册docker-icloudpd长期成本每月续费越存越贵一次性投入硬盘扩容便宜数据归属第三方云服务商完全在自己服务器上访问速度取决于网络局域网内秒开格式兼容HEIC 需手动转换自动转 JPG多设备汇总单账号多设备全家账号统一归档说实话我不是否定 iCloud 本身——苹果的同步体验仍然一流。但如果你有多台苹果设备、一个以上的 Apple ID又希望照片真正属于自己那把它拉到自己的服务器上才是长期最优解。docker-icloudpd 是什么一个轻量容器替你把iCloud照片搬回家简单说docker-icloudpd 就是一个把 iCloud Photos Downloader 打包进 Alpine Linux 的 Docker 镜像。它会用系统密钥环keyring安全保存你的 Apple ID 凭证按设定间隔如每天一次自动拉取 iCloud 中的新照片与视频支持 HEIC→JPG 转换解决苹果专有格式兼容问题内置健康检查脚本出问题能自动标记并通知你支持 Telegram / 企业微信 / 钉钉 / Discord 等十余种通知渠道它有一个重要的前提Apple 的高级数据保护ADP必须关闭因为该功能会加密服务器端照片、禁止网页端访问导致下载器无法工作。部署篇十分钟拉起你的第一个同步容器准备目录与挂载标记容器有一个非常贴心的防呆设计它会检查下载目录里是否存在.mounted标记文件如果没有就拒绝写入。这样即使挂载的硬盘意外掉了也不会把系统盘塞满。# 为你的用户名创建 iCloud 下载目录并放入挂载标记 mkdir -p /home/你的用户名/iCloud touch /home/你的用户名/iCloud/.mounted这个文件必须手动创建同步才会启动。用 Docker Compose 定义服务我参考了项目里自带的示例docker-compose.example.yml写了一个精简版version: 3.8 services: icloud_sync: image: boredazfcuk/icloudpd container_name: icloud_photos_sync restart: unless-stopped environment: - TZAsia/Shanghai # 时区影响时间戳计算 - user你的用户名 # 容器内创建的本地用户与宿主机对应 volumes: - icloud_config:/config # 认证 cookie 与配置存放处 - /home/你的用户名/iCloud:/home/你的用户名/iCloud # 照片落盘位置 healthcheck: test: [CMD, /usr/local/bin/healthcheck.sh] interval: 30s timeout: 10s retries: 3 volumes: icloud_config:提示/config必须用命名卷或持久目录挂载否则容器重建后 cookie 丢失又得重新认证。启动并确认状态docker-compose up -d docker logs -f icloud_photos_sync首次启动时容器会生成默认配置文件/config/icloudpd.conf并等待你填入 Apple ID。之后所有配置都在这个文件里改比环境变量更直观。认证篇和 MFA 打交道的关键一步初始化把 Apple ID 和密码交给系统密钥环容器启动后需要执行一次初始化把密码写进密钥环、生成 MFA cookiedocker exec -it icloud_photos_sync sync-icloud.sh --Initialise按提示输入 Apple ID 与密码然后会在手机上收到一个 6 位验证码填入即可。认证完成后cookie 会存放在/config下有效期约为 30 天。没有初始化就启动容器日志里会提示 keyring 文件不存在并给出重试提示不用担心。过期了怎么办reauth.sh 与 Telegram 远程重认证cookie 临近过期时容器会通过你配置的通知渠道提前提醒默认提前 7 天。重新认证有两种方式本机一键重认证docker exec -it icloud_photos_sync reauth.sh人在外面也能搞定的远程认证如果你用了 Telegram 通知并开启轮询telegram_pollingtrue给机器人发一条用户名 auth消息它就会回复你要验证码把验证码发回去即完成重新认证。甚至你只要给机器人发你的用户名它就会立即触发一次手动同步——出门聚会拍完照随手一条消息就能把照片拉回家里。格式篇HEIC 照片在 Windows/安卓上也能看这是我最在意的功能。苹果默认把照片存成 HEIC 格式Windows 老版本和很多设备都打不开。docker-icloudpd 内置了 HEIC→JPG 转换改两行配置即可# /config/icloudpd.conf convert_heic_to_jpegtrue jpeg_quality90 # 0-100数值越高画质越好默认 90 jpeg_path/home/你的用户名/iCloud/Converted # 可选JPEG 单独存放目录转换时会保留原始 HEIC 文件JPEG 默认与 HEIC 放在一起。如果此前已经下载了大量 HEIC也可以用命令补转docker exec -it icloud_photos_sync sync-icloud.sh --Convert-All-HEICs顺带一提--Force-Convert-All-HEICs会覆盖已有 JPEG执行前有 2 分钟缓冲时间可用于修复旧版本转换导致的旋转方向问题。管理篇全家人多账号照片统一归档家里每个人一个 Apple ID没关系Compose 文件里复制一份服务配置即可彼此完全独立services: icloudpd_user1: image: boredazfcuk/icloudpd environment: - TZAsia/Shanghai - useruser1 volumes: - icloudpd_user1_config:/config - ./iCloud/user1/:/home/user1/iCloud/ icloudpd_user2: image: boredazfcuk/icloudpd environment: - TZAsia/Shanghai - useruser2 volumes: - icloudpd_user2_config:/config - ./iCloud/user2/:/home/user2/iCloud/想让照片自动按日期归类只需设置目录结构模板folder_structure{:%Y/%m/%d} # 按 年/月/日 建目录默认值需要单独备份某个相册时用photo_album旅行,家庭指定相册名只想保留最近 N 张用recent_only2000。这些参数都能在 CONFIGURATION.md 里查到完整说明。运维篇健康检查与通知让它自己报平安自建服务的最大顾虑是没人盯着。docker-icloudpd 内置了健康检查healthcheck.sh如果同步失败、cookie 过期或下载出错容器会被标记为unhealthy配合 watchtower 或 autoheal 类工具可以自动重启或者直接推送通知给你。通知渠道非常丰富在配置文件里声明即可notification_typetelegram # 也可选 wecom / dingtalk / discord 等 telegram_token你的BotToken telegram_chat_id你的ChatID我推荐至少配置一个渠道这样 cookie 临期、下载失败、启动成功都会有消息不用天天看日志。常见问题速查表现象处理方式提示 cookie 不存在执行sync-icloud.sh --Initialise重新生成提示需要重新认证执行reauth.sh或通过 Telegram 远程认证照片库很大、同步很慢配置skip_checktrue跳过重复检查大量照片重复下载检查set_exif_datetime开启会导致二次下载国内访问不稳定设置icloud_chinatrue与auth_chinatrue走 icloud.com.cn报 ACCESS_DENIED 被限流把download_interval调到 43200 秒以上并暂停 6-12 小时值得知道的几个小坑同步间隔别太激进苹果会限流。项目建议至少 12 小时一次默认 24 小时86400 秒最稳妥。改目录结构会重新下载folder_structure变更不会整理旧文件而是会整库重新拉一遍改动前想清楚。删文件功能要慎用auto_delete、delete_after_download、keep_icloud_recent_days这些选项真的会删东西首次使用建议先观察几轮。系统时间要准确cookie 校验和健康检查都依赖时间服务器时间漂移会导致认证莫名失败。结语与行动号召从那个手机屏幕碎掉的深夜到现在这套私有云相册已经稳定运行了很久全家三个 Apple ID 的照片每天自动汇入家中 NASHEIC 自动转成 JPG手机拍完的照片当晚就在服务器上多了一份备份。这种感觉比任何付费套餐都踏实。如果你也受够了 iCloud 空间的日益告急不妨现在就动手git clone https://gitcode.com/GitHub_Trending/do/docker-icloudpd查看完整源码与示例对照本文的 Compose 配置先跑通一个账号初始化认证后静待第一次同步完成建议继续阅读 CONFIGURATION.md 了解全部配置项同步逻辑可研读 sync-icloud.sh健康检查细节在 healthcheck.sh。把你的照片从云端搬回家从此备份自由。【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考