使用威联通 NAS 的容器安装 icloudpd 同步下载苹果 iCloud 照片服务
环境信息
- 设备型号:QNAP TS-532X
- CPU:Annapurna Labs Alpine AL324 Quad-core ARM Cortex-A57 1.70GHz
- 内存:8 GB
- 系统版本:QTS 5.2.8.3359 Build 20251225
- 服务目标:使用 Docker 容器部署 icloudpd,实现 iCloud 照片自动同步至 NAS 本地存储
- 代理:控制台开启代理
前置准备
开启 NAS SSH 服务
路径:QTS 控制台 → 网络和文件服务 → Telnet/SSH,勾选
允许 SSH 连接,保存设置。
确认 Container Station 已安装并正常运行,确保 Docker 服务处于活跃状态。
准备内网可访问的代理服务(用于解决 Docker 镜像拉取失败问题)。
SSH 登录 NAS
登录后并退出控制台菜单
- 本地终端执行 SSH 连接(以 Mac/Linux 终端为例)
ssh admin@192.168.2.20
输入管理员密码登录,进入 QNAP 控制台菜单界面
输入q,回车退出主菜单
+-------------------------------------------------------------------------+
| Console Management - Main menu |
| |
| 1: Show network settings |
| 2: System event logs |
| 3: Reset to factory default (password required) |
| 4: Activate/ deactivate a license |
| 5: App management |
| 6: Reboot in Rescue mode (w/o configured disk) |
| 7: Reboot in Maintenance Mode |
| Q: Quit (return to normal shell environment) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+-------------------------------------------------------------------------+
>> q
- 确认退出:输入y,回车,进入 NAS 原生 Linux shell 环境
+-------------------------------------------------------------------------+
| Main > Quit |
| |
| Are you sure you want to exit the console menu and return to normal |
| shell environment? (Y/N) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+-------------------------------------------------------------------------+
>> y
MTU 调整修复镜像拉取 EOF 错误
部分网络环境下,默认 MTU 1500 会导致大镜像传输中断、报 EOF 错误,可临时降低 MTU 测试:
# 临时调整网桥与物理网卡MTU(重启/重连网络后失效)
ifconfig br0 mtu 1400
ifconfig eth0 mtu 1400
调整完成后,重新执行镜像拉取命令:
docker pull boredazfcuk/icloudpd:latest
后续部署建议
- 镜像拉取成功后,创建本地配置与照片存储目录,做好目录权限规划。
- 编写 docker-compose.yml 或通过 Container Station 图形化配置容器,挂载目录、设置环境变量(Apple ID、时区、同步策略等)。
- 进入容器执行初始化认证,完成 Apple ID 两步验证,实现自动同步。
- 若 MTU 调整有效,可将命令写入开机自启脚本,避免重启后失效。
先在 NAS 上创建目录
# 创建配置目录
mkdir -p /share/Container/icloudpd/config
# 创建照片下载目录(根据你实际共享文件夹改后面路径)
mkdir -p /share/Photos/iCloud_Sync
# 赋权(避免容器无权限写入)
chmod -R 777 /share/Container/icloudpd
chmod -R 777 /share/Photos/iCloud_Sync
docker-compose.yml 配置
在 /share/Container/icloudpd/ 下新建 docker-compose.yml,内容如下:
version: '3'
services:
icloudpd:
image: boredazfcuk/icloudpd:latest
container_name: icloudpd
restart: unless-stopped
network_mode: bridge
volumes:
- /share/Container/icloudpd/config:/config
- /share/Photos/iCloud_Sync:/home/icloudpd/Media
environment:
- TZ=Asia/Shanghai
- USERNAME=你的苹果ID@gmail.com
- SUBDIR_FORMAT=YYYY-MM
- DOWNLOAD_LIVE_PHOTOS=True
- DOWNLOAD_VIDEOS=True
- AUTO_DELETE=False
- SYNC_INTERVAL=360
- PAGE_SIZE=1000
- RECENTLY_ONLY=False
- PREFER_JPG=True
stop_grace_period: 1m
你只需要改这一处:
USERNAME=你的苹果ID@gmail.com
启动容器 & 初始化认证
进入配置目录
cd /share/Container/icloudpd
后台启动容器
docker-compose up -d
进入容器登录认证
docker exec -it icloudpd /bin/bash
进入容器后执行:
sync_icloud
按提示依次输入:
Apple ID 密码
两步验证 6 位数字
信任此设备 → 输入
1出现
Authentication completed successfully即完成。
退出容器:
exit
常用管理命令
# 启动
docker-compose up -d
# 停止
docker-compose down
# 重启
docker-compose restart
# 实时查看日志(看是否在正常下载)
docker logs -f icloudpd
如果拉镜像仍然 EOF / 失败
执行你之前那套 MTU 命令后再拉:
ifconfig br0 mtu 1400
ifconfig eth0 mtu 1400
docker pull boredazfcuk/icloudpd:latest