docker-icloudpd 入门:10分钟把iCloud相册搬回自家服务器

发布时间:2026/8/20 19:10:05
docker-icloudpd 入门:10分钟把iCloud相册搬回自家服务器 docker-icloudpd 入门10分钟把iCloud相册搬回自家服务器【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd上个月帮朋友搬家他指着书柜里三块泛黄的移动硬盘苦笑这已经是 iCloud 挤爆之后抢救出来的第二次了。旁边的 NAS 上Docker 已经跑了两年却愣是没人想起来相册这种最私人、最占空间的资料为什么不能也交给它其实早就有方案了。docker-icloudpd是一个基于 Alpine Linux 的轻量级容器内置了 iCloud Photos Downloader 命令行工具专门负责把 iCloud 照片自动拉回你控制的服务器。它不提供网页界面、不搞花哨功能只干一件事——同步而且干得相当稳。它凭什么比 iCloud 官方方案值钱先建立一个心智模型这个容器做的事本质上和你在浏览器里登录 iCloud.com 手动下载照片一模一样只是把它自动化了。苹果没有开放官方 API所以它是模拟网页登录流程借助系统密钥环保存凭证、用 Cookie 维持会话然后按你设定的间隔反复拉取增量。三个细节让它在同类方案里很能打凭证安全密码写进密钥环登录会话存为 Cookie容器重建后不会丢格式兜底HEIC 自动转 JPG还支持把 Live Photo 的配套视频一并拉下来Windows 和旧设备都能直接看防呆设计它会在下载目录里找.mounted这个标记文件找不到就拒绝写入——防止存储卷没挂好时把系统盘写爆。一句话总结它的价值每月付给苹果的存储费变成一次性的硬盘钱照片从第三方云端回到你自己能断电、能备份、能随时迁移的家里。三条命令完成部署先把项目仓库拉到本地仓库里带了现成的 compose 示例和全部脚本git clone https://link.gitcode.com/i/18be402c334948cca38a15b8dafccb71 cd docker-icloudpd然后创建目录结构并放上防呆标记mkdir -p ~/iCloud touch ~/iCloud/.mounted上面这条touch千万别省容器会严格检查.mounted是否存在没有它同步永远不会启动。接着参考仓库里的docker-compose/docker-compose.example.yml写你自己的docker-compose.yml。核心部分长这样services: icloud_sync: image: boredazfcuk/icloudpd container_name: icloud_photos_sync restart: always environment: - TZAsia/Shanghai # 时区影响照片时间戳计算 - useryourname # 容器内用户名建议和宿主机一致 volumes: - icloud_config:/config # 配置和Cookie存这里必须用命名卷 - /home/yourname/iCloud:/home/yourname/iCloud healthcheck: test: /usr/local/bin/healthcheck.sh start_period: 30s volumes: icloud_config:这段配置只做两件事把配置目录和照片目录分别映射进容器。/config是命脉Cookie 和配置文件都在里面容器重建后全指着它。启动后记得查看容器日志第一次启动会自动生成默认配置文件/config/icloudpd.confdocker compose up -d docker logs -f icloud_photos_sync最难的一步账户认证一次说透容器起来 ≠ 能同步。你还得完成 iCloud 登录这是整个项目里最容易卡住的地方。执行docker exec -it icloud_photos_sync sync-icloud.sh --Initialise脚本会依次要你做三件事输入 Apple ID 和密码密码存入系统密钥环如果账号开了双重认证MFA你的 iPhone 上会弹出允许/拒绝提示输入设备上显示的 6 位验证码脚本用它生成 Cookie 存进/config。这个 Cookie 现在每 30 天左右就会过期苹果从 90 天缩到了 30 天届时容器会把自己标记为unhealthy。续命很简单一条命令docker exec -it icloud_photos_sync reauth.sh输入设备上的新验证码会话就续上了。如果你手机不在身边也没关系——配了 Telegram 通知后给机器人发一条你的用户名 auth它会在聊天里反过来找你要验证码远程完成重新认证。想手动触发一次同步直接发你的用户名就行容器每 60 秒轮询一次。三个新手必翻车的坑坑一忘关 Apple 高级数据保护ADP。这个项目明确不支持 ADP它会让照片在苹果服务器端加密、禁止网页访问容器直接没法读取。去 iCloud 设置里关掉它再同步。坑二同步间隔设太短。download_interval虽然支持 6 小时但苹果对频繁请求会限流报ACCESS_DENIED后只能关容器等半天。老实设 86400一天一次最稳妥手机端本来就是即时上传的。坑三大相册卡死在检查新文件。几万张照片时每次都全量比对很容易超时。在配置文件里把skip_checktrue打开直接进入增量下载流程。再往前走一步全家人的相册都归你管跑通单账号之后这套东西的价值会随账号数量翻倍。参照示例 compose复制一个服务块、改掉user、挂一个新的/config卷就是第二个独立同步实例——父母一台、孩子一台互不干扰。值得重点配置的几项配置项作用建议folder_structure目录结构{:%Y/%m/%d}按年月日归档convert_heic_to_jpegHEIC 转 JPGtrue保留原文件同时生成 JPGphoto_album只同步指定相簿设为all albums全量同步notification_type通知渠道Telegram / DingTalk / WeCom 等十余种single_pass单次执行后退出的模式true后配合宿主机 cron 调度如果你家里跑着 Nextcloud还能把容器变成中转站nextcloud_uploadtrue配上服务器地址和账号每张下载的照片会自动再传到 Nextcloud顺便还能把 JPG 转换产物一起送上去等于多了一层带版本的备份。常见问题速答Q我的账号是国区 iCloud能同步吗能。配置里把icloud_chinatrue和auth_chinatrue都打开容器会改用 icloud.com.cn 登录和下载。Q同步过去的照片还能再回到 iPhone 吗不能这是单向同步。它从 iCloud 拉取到本地不会把本地照片推回 iCloud。反向需求请交给 iCloud 官方的下载并保留原图。Q容器老被标成 unhealthy是坏了吗多半是 Cookie 到期或某次下载失败。healthcheck.sh会检查下载退出码和 Cookie 剩余天数配合 autoheal 这类容器可以自动重启但建议先手动reauth.sh续一次会话再观察。Q会占用多少资源Alpine 基底非常轻日常空闲时内存占用通常在 100MB 以内只在同步时段有 CPU 和网络开销。一台树莓派级别的设备就能常年挂着跑。照片这东西存到第三方便宜一时存到自己手里才踏实。花一个下午把docker-icloudpd跑起来之后每个月省下的那点订阅费够你给硬盘加块保护套了。现在就打开终端从git clone开始吧。资源链接项目仓库docker-icloudpdgit clone用完整配置说明CONFIGURATION.md同步脚本源码sync-icloud.sh健康检查脚本healthcheck.sh重新认证脚本reauth.sh镜像构建文件icloudpd.dockerfileCompose 参考docker-compose.example.yml【免费下载链接】docker-icloudpdAn Alpine Linux container for the iCloud Photos Downloader command line utility项目地址: https://gitcode.com/GitHub_Trending/do/docker-icloudpd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考