
一劳永逸的 iCloud 照片备份方案docker-icloudpd 私有云同步实战教程【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd“手机丢了照片没了”这件事我身边至少有三个朋友亲历过。今天要介绍的 docker-icloudpd是一个基于 Alpine Linux 的轻量级容器内置 iCloud Photos Downloader 工具能把你的 iCloud 照片自动、定时地同步回自己的服务器彻底摆脱“5GB 不够用、扩容年年涨价”的烦恼。下面我从一次真实的翻车经历讲起手把手带你把它跑起来。一次“手机进水”引出的自建同步计划去年春天同事老周的手机掉进泳池。捞起来之后手机还能开机可当他打开相册才发现过去三年的家庭旅行照片只存在于 iCloud 云端而他的免费 5GB 空间早已在买 iCloud 扩容之前就存满了备份……结果就是照片存在云端但想要一次性导出、整理、永久持有操作极其繁琐。他的诉求其实很朴素照片要真正属于自己能放进家里的 NAS 或服务器随时翻看、随时整理不想每年续费云空间一次性投入硬件长期零月租手机再出意外也能安心因为每天都有自动备份在跑不想被 HEIC 格式卡脖子老设备、旧系统也要能打开照片。这些问题靠“手动导出”只能解决一次靠“付费扩容”只是换个地方交钱。真正一劳永逸的路是把 iCloud 里的照片自动拉回本地——这就是 docker-icloudpd 存在的意义。为什么这个容器值得花十分钟配置简单说docker-icloudpd 把你的服务器变成一个“iCloud 照片的私人收件箱”容器按你设定的间隔去 iCloud 检查新照片下载到本地目录还能顺手做 HEIC 转 JPG、发通知、甚至上传到 Nextcloud。它的核心价值可以列成四条数据主权照片落在你自己的磁盘上删除、迁移、分享全由你说了算零订阅成本镜像免费开源只需自备一台常开的机器格式自由内置 HEIC→JPEG 转换兼容所有设备自动续命凭据存放在系统密钥环中配合 Telegram 可以远程完成二次认证出门在外也能维护。更贴心的是项目自带healthcheck.sh健康检查脚本cookie 快要过期或下载失败时容器会被标记为unhealthy方便你接入自动重启与告警属于“装上就能一直跑”的类型。第一步十分钟完成环境准备动手之前确认你的机器满足三个前提Docker Engine 20.10 或更高版本至少 1GB 可用磁盘空间照片多了再扩容稳定的外网连接需要访问 icloud.com。然后创建照片落盘目录并手动放一个标记文件# 为你的服务器用户创建照片目录 mkdir -p /home/你的用户名/iCloud # 关键没有这个文件容器拒绝下载 touch /home/你的用户名/iCloud/.mounted提示.mounted是容器的“防呆开关”。只有确认存储卷正确挂载它才会执行同步否则宁可空转也不写入——这样即便磁盘意外卸载也不会把系统盘塞满。第二步用 Compose 一键拉起容器推荐直接复用项目自带的编排模板仓库里的docker-compose/docker-compose.example.yml已经写好了网络、卷和健康检查你只需改成自己的账号services: icloud_sync: image: boredazfcuk/icloudpd container_name: icloud_photos_sync restart: always environment: - TZAsia/Shanghai # 时区必须设置否则时间戳会错乱 - user你的用户名 # 容器内用户建议和宿主机一致 volumes: - icloud_config:/config # 存 cookie 和密钥环别丢 - /home/你的用户名/iCloud:/home/你的用户名/iCloud # 照片落盘目录 healthcheck: test: /usr/local/bin/healthcheck.sh start_period: 30s volumes: icloud_config:然后启动并查看日志docker compose up -d # 后台启动 docker logs -f icloud_photos_sync # 跟踪初始化日志首次启动后容器会自动在/config/icloudpd.conf生成一份带默认值的配置文件后续所有参数都以它为准。第三步初始化认证让容器“认领”你的账号容器启动后需要执行一次初始化把 Apple ID 密码写进系统密钥环并生成多因素认证MFAcookie。命令很简单# 交互式进入容器执行初始化 docker exec -it icloud_photos_sync sync-icloud.sh --Initialise按提示依次输入 Apple ID、密码然后在你的 iPhone 上点“允许”把收到的 6 位验证码填回去。看到类似Multifactor authentication cookie generated的日志就说明认证成功容器开始自动下载照片了。认证 cookie 默认 30 天左右会过期届时用仓库里的reauth.sh脚本重新认证即可同样只需一条命令docker exec -it icloud_photos_sync reauth.sh提示如果直接启动容器却没初始化日志会提示Keyring file ... does not exist这不是故障只是提醒你先跑一遍上面的初始化命令。配置详解一张表看懂核心参数所有配置都在/config/icloudpd.conf里容器每次同步前都会重新读取。核心参数如下配置项说明推荐值apple_idiCloud 登录账号必填你的 Apple ID 邮箱download_interval两次同步的间隔秒数8640024 小时download_delay首次下载延迟的分钟数用于错开多容器0folder_structure本地目录结构支持 strftime 格式化{:%Y/%m/%d}convert_heic_to_jpeg是否把 HEIC 转成 JPG保留原图truejpeg_qualityJPG 输出质量0~10090skip_check照片库很大时跳过“检查新文件”避免卡顿false量大改 truephoto_size下载原图/中图/缩略图可逗号组合originalicloud_china国区账号改为从 icloud.com.cn 拉取false国区改 truenotification_type通知渠道见下文telegramkeep_icloud_recent_days只保留云端最近 N 天照片慎用会删云照片不设置一个比较典型的进阶组合示例直接追加到 conf 文件末尾# 家庭照片按年/月/日归档并转出兼容性更好的 JPG folder_structure{:%Y/%m/%d} convert_heic_to_jpegtrue jpeg_quality90 delete_empty_directoriestrue notification_typetelegram telegram_token你的BotToken telegram_chat_id你的ChatID进阶玩法远程发消息就能触发同步这是我认为最惊艳的特性把user配置里写的用户名当作消息直接发给你的 Telegram 机器人容器读到消息就会立刻触发一次同步如果你发的是“用户名 auth”它还会反过来向你索要 MFA 验证码帮你完成远程重新认证。出门在外、手机拍了一大堆照片只需在 Telegram 里敲几个字家里服务器就开始干活了。如果家里有多台苹果设备或想为每位家人建独立账号直接在 Compose 里复制一份服务块、换掉user和对应的卷即可互不干扰。项目自带的 compose 示例就是这么组织多用户的参考docker-compose/docker-compose.example.yml即可。两个马上能用的落地场景场景一家庭照片集中备份。给每个家庭成员各跑一个容器各自独立的/config卷与下载目录照片按{:%Y/%m/%d}自动归档到 NAS。手机拍完晚上服务器自动拉回全家照片统一管理再也不用互相 AirDrop 半天。场景二小团队或工作室的素材留底。配合nextcloud_uploadtrue把下载结果继续同步到团队的 Nextcloud形成“iCloud → 本地 → 团队盘”的双保险链路下载失败的容器会被健康检查标记配合 autoheal 类工具自动重启几乎不需要人工干预。常见坑与破解办法坑一同步被限流。日志出现ACCESS_DENIED或throttle字样多半是同步间隔设得太短。Apple 对高频访问有节流策略把download_interval调到 4320012 小时以上并停掉容器 6~12 小时再启动即可恢复。坑二cookie 反复失效。开了 Apple“高级数据保护ADP”会导致容器无法读取云端照片。这个功能必须在 Apple ID 设置里关闭否则无论怎么重新认证都白搭。坑三大图库同步卡死。几千张以上的照片默认的“检查新文件”逻辑可能拖很久。把skip_checktrue打开容器会直接按时间顺序拉取速度明显提升。坑四改了配置不生效。项目逐步弃用 Docker 环境变量现在所有参数以/config/icloudpd.conf文件为准。如果删了环境变量发现行为没变去 conf 文件里把对应的行改掉或清空。收尾三条实践建议与下一步定期备份/config卷cookie 和密钥环都在里面丢了要重新认证升级镜像前务必先备份开启健康检查监控配合healthcheck.sh的状态输出第一时间发现 cookie 临期或同步失败给下载目录留足空间日志和转换后的 JPG 都会占空间建议对照片目录单独做容量告警。这个项目仍在持续演进社区已经规划了更友好的管理方式与更多通知渠道的接入。你只需要跑完上面三步就能让家里的服务器每晚默默替你守护照片——下次再有人问“照片备份怎么办”你可以直接告诉他交给自己保管才是最安心的方案。【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考