前置准备工作

  • 关闭 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两个变量后再启动。