前置准备工作
关闭 iCloud 账户的 ADP 功能(高级数据保护)。开启这个功能会限制使用 iCloud 网页,导致无法实现方案中备份效果,如果你非常重视端到端加密等措施,不愿意关闭此功能就此打住不用折腾了。关闭这个功能后可能需要等待一周左右的时间,才会生效,因为苹果服务器需要时间去解密数据。
创建一个名为「.mounted」的隐藏文件,以下简称「挂载文本」。你可以先创建一个名为「.mounted.txt」的文本文件,然后删除掉后缀名,就是一个 0kb 的文件。
安装好 Docker 服务并且确保可以运行。
▍正式安装
创建文件夹
创建用于储存配置文件的文件夹 config,存放位置与名称随意。
创建用于储存照片的文件夹 iCloud,存放位置与名称随意。我是在一个硬盘的根目录下直接创建的。
version: "3"
services:
icloudpd:
privileged: true
container_name: iCloud
hostname: icloudpd_boredazfcuk
networks:
- icloudpd_bridge
restart: always
environment:
- TZ=Asia/Shanghai
- synchronisation_interval=10
- skip_check=True
- icloud_china=True #如果无法解析到iCloud,就将flase改成True,换成国内的iCloud。
- [email protected] #换成你的Apple ID
- auth_china=true
- authentication_type=MFA #已开启双重验证就是MFA,否则换成web。
- download_path=/iCloud
volumes:
- /volume1/docker/icloudpd/config:/config #前面的文件夹路径换成你自己的
- /volume1/photo/icloudPeng:/iCloud #前面的文件夹路径换成你自己的
image: boredazfcuk/icloudpd:latest #后面的:stable为可选项,可不加,为了区分镜像版本而已。
networks:
icloudpd_bridge:
external: false
name: icloudpd_bridge
volumes:
icloudpd_boredazfcuk_config:或者带UI版本:
services:
icloudpd:
image: docker.ifuck.me/icloudpd/icloudpd:latest
container_name: icloudpd
restart: unless-stopped
network_mode: bridge
tty: true
ports:
- "8080:8080"
volumes:
- /照片存放真实目录:/data
environment:
- TZ=Asia/Shanghai
command: icloudpd --directory /data --username [email protected] --mfa-provider webui --domain cn --password-provider webui --watch-with-interval 3600容器启动后,进入容器执行初始化命令
docker exec -it iCloud bash
sync-icloud.sh --Initialize进行两次验证登录并写入本地密码文件
保存密码到 keyring 文件
刚开始需要等待两分钟检查更新,然后会询问是否写入 keyring 文件,此时选择「yes」。随后开始要求输入 Apple ID 的密码,界面是没有显示的,输入完成后回车确认即可。等待一会应该会要求进行验证码验证。这个登录的过程会持续两次。
▍问题排错
ERROR:invalid value for '-d' / '--directory': path '/icloud' is not readable
权限问题,处理方案有两种:
进入容器的执行界面,如何进入可以参考上文。然后运行`chmod 777 /iCloud`;
在之前的 conf 文件中设置好对应的「张三」的 id 和 group_id 后,确保张三对 QNAP 文件夹有权限写入
ERROR:keyring file does not exist. please try again
第一次启动就设置「true」导致的,先暂停容器,设置auth_china=true和icloud_china=true两个变量后再启动。
评论