iCloud-docker
🤟 如果您使用了这个项目,请给这个存储库加星。如果它在某种程度上改善了您的生活,请考虑使用"赞助"或"Buy Me a Coffee"按钮捐赠给我的使命。这将帮助我继续支持这个产品。 :pray:
iCloud-docker (以前称为iCloud-drive-docker)是一个在Docker环境中的简单iCloud客户端。它使用iCloudPy Python库与iCloud服务器进行交互。
iCloud-docker的主要用例是使用您的iCloud用户名和密码定期同步所需或全部的iCloud驱动器和照片。
请注意,此应用程序只能下载服务器上的文件,目前还不能上传本地文件到服务器。
安装
使用Docker Hub安装
docker run --name icloud -v ${PWD}/icloud:/icloud -v ${PWD}/config:/config -e ENV_CONFIG_FILE_PATH=/config/config.yaml mandarons/icloud-drive
使用docker-compose安装
services:
icloud:
image: mandarons/icloud-drive
environment:
- PUID=<insert the output of `id -u $user`>
- PGID=<insert the output of `id -g $user`>
env_file:
- .env.icloud # Must contain ENV_CONFIG_FILE_PATH=/config/config.yaml and optionally, ENV_ICLOUD_PASSWORD=<password>
container_name: icloud
restart: unless-stopped
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ${PWD}/icloud:/icloud
- ${PWD}/config:/config # Must contain config.yaml
认证(容器创建或身份验证过期后需要)
# 如果未指定ENV_ICLOUD_PASSWORD和/或需要2FA,则手动登录
docker exec -it --user=abc icloud /bin/sh -c "icloud --username=<icloud-username> --session-directory=/config/session_data"
对于中国服务器用户,请添加--region=china
如下:
# 如果未指定ENV_ICLOUD_PASSWORD和/或需要2FA,则手登录
docker exec -it --user=abc icloud /bin/sh -c "icloud --username=<icloud-username> --region=china --session-directory=/config/session_data"
按照步骤进行身份验证。
示例配置文件
app:
logger:
# level - debug, info (default), warning or error
level: "info"
# log filename icloud.log (default)
filename: "/config/icloud.log"
credentials:
# iCloud drive username
username: "please@replace.me"
# 重试登录间隔 - 默认为10分钟,指定-1将只重试一次并退出
retry_login_interval: 600
# 驱动器目标
root: "/icloud"
discord:
# webhook_url: <your server webhook URL here>
# username: icloud-docker #or any other name you prefer
telegram:
# bot_token: <your Telegram bot token>
# chat_id: <your Telegram user or chat ID>
smtp:
## 如果您想收到关于过期/缺失2FA凭证的电子邮件通知,请取消注释
# email: "user@test.com"
## 可选的,收件地址。默认为发件人电子邮件。
# to: "receiver@test.com"
# password:
# host: "smtp.test.com"
# port: 587
# 如果您的电子邮件提供商不处理TLS
# no_tls: true
region: global # 对于中国服务器用户,将其设置为 - china (默认: global)
drive:
destination: "drive"
remove_obsolete: false
sync_interval: 300
filters: # 可选 - 仅在您想下载特定文件夹时使用。
# 要包含在同步iCloud驱动器内容中的文件过滤器
folders:
- "folder1"
- "folder2"
- "folder3"
file_extensions:
# 要包含的文件扩展名
- "pdf"
- "png"
- "jpg"
- "jpeg"
ignore:
# 指定文件夹路径时,在末尾添加/*
- "node_modules/*"
- "*.md"
photos:
destination: "photos"
remove_obsolete: false
sync_interval: 500
all_albums: false # 可选,默认为false。如果为true,保留相册结构。如果同一照片在多个相册中,则在文件系统上创建副本
folder_format: "%Y/%m" # 可选,如果设置,根据格式将照片放在子文件夹中。格式备忘单 - https://strftime.org
filters:
# 要下载的资料库列表。如果省略(默认),则下载所有资料库(自有和共享)的照片。如果包含,则仅下载列出的资料库的照片。
# libraries:
# - PrimarySync # 自有资料库的名称
# 如果all_albums为false - albums列表用作过滤器,如果all_albums为true - albums列表用作过滤器
# 如果 albums 列表为空且 all_albums 为 false,则将所有照片下载到"all"文件夹。如果为空且 all_albums 为 true,则下载所有文件夹
albums:
- "album 1"
- "album2"
file_sizes: # 有效值为original、medium和/或thumb
- "original"
# - "medium"
# - "thumb"
extensions# 可选,要包含在同步iCloud照片内容中的媒体扩展名
# - jpg
# - heic
# - png
注意:每次同步时,此客户端都会遍历所有文件。根据您的iCloud(驱动器+照片)中的文件数量,同步可能需要更长时间。
使用政策
如USAGE.md中所述