Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mandarons/icloud-docker
Dockerized iCloud Client - make a local copy of your iCloud documents and photos, and keep it automatically up-to-date.
https://github.com/mandarons/icloud-docker
docker icloud icloud-document-storage icloud-drive icloud-photos icloud-sync sync
Last synced: 2 days ago
JSON representation
Dockerized iCloud Client - make a local copy of your iCloud documents and photos, and keep it automatically up-to-date.
- Host: GitHub
- URL: https://github.com/mandarons/icloud-docker
- Owner: mandarons
- License: bsd-3-clause
- Created: 2021-02-16T22:49:24.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-06T18:53:48.000Z (27 days ago)
- Last Synced: 2025-01-24T11:01:38.696Z (9 days ago)
- Topics: docker, icloud, icloud-document-storage, icloud-drive, icloud-photos, icloud-sync, sync
- Language: Python
- Homepage:
- Size: 33.8 MB
- Stars: 1,286
- Watchers: 18
- Forks: 51
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# iCloud-docker
[![CI - Main](https://github.com/mandarons/icloud-docker/actions/workflows/ci-main-test-coverage-deploy.yml/badge.svg?branch=main)](https://github.com/mandarons/icloud-docker/actions/workflows/ci-main-test-coverage-deploy.yml)
[![Tests](https://mandarons.github.io/icloud-docker/badges/tests.svg)](https://mandarons.github.io/icloud-docker/test-results/)
[![Coverage](https://mandarons.github.io/icloud-docker/badges/coverage.svg)](https://mandarons.github.io/icloud-docker/test-coverage/index.html)
[![Latest](https://img.shields.io/github/v/release/mandarons/icloud-docker?color=blue&display_name=tag&label=latest&logo=docker&logoColor=white)](https://hub.docker.com/r/mandarons/icloud-drive)
[![Docker](https://badgen.net/docker/pulls/mandarons/icloud-drive)](https://hub.docker.com/r/mandarons/icloud-drive)
[![Discord][discord-badge]][discord]
[![GitHub Sponsors][github-sponsors-badge]][github-sponsors]🤟 **Please star this repository if you end up using this project. If it has improved your life in any way, consider donating to my mission using 'Sponsor' or 'Buy Me a Coffee' button. It will help me to continue supporting this product.** :pray:
iCloud-docker (previously known as iCloud-drive-docker) is a simple iCloud client in Docker environment. It uses [iCloudPy](https://github.com/mandarons/icloudpy) python library to interact with iCloud server.
Primary use case of iCloud-docker is to periodically sync wanted or all of your iCloud drive, photos using your iCloud username and password.
**_Please note that this application only downloads the files from server. It does not upload the local files to the server (yet)._**
## Installation
### Installation using 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
```### Installation using docker-compose
```yaml
services:
icloud:
image: mandarons/icloud-drive
environment:
- PUID=
- PGID=
env_file:
- .env.icloud # Must contain ENV_CONFIG_FILE_PATH=/config/config.yaml and optionally, ENV_ICLOUD_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
```### Authentication (required after container creation or authentication expiration)
```
# Login manually if ENV_ICLOUD_PASSWORD is not specified and/or 2FA is required
docker exec -it --user=abc icloud /bin/sh -c "icloud --username= --session-directory=/config/session_data"
```For China server users, Please add `--region=china` as follows:
```
# Login manually if ENV_ICLOUD_PASSWORD is not specified and/or 2FA is required
docker exec -it --user=abc icloud /bin/sh -c "icloud --username= --region=china --session-directory=/config/session_data"
```Follow the steps to authenticate.
## Sample Configuration File
```yaml
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: "[email protected]"
# Retry login interval - default is 10 minutes, specifying -1 will retry login only once and exit
retry_login_interval: 600
# Drive destination
root: "/icloud"
discord:
# webhook_url:
# username: icloud-docker #or any other name you prefer
telegram:
# bot_token:
# chat_id:
smtp:
## If you want to receive email notifications about expired/missing 2FA credentials then uncomment
# email: "[email protected]"
## optional, to email address. Default is sender email.
# to: "[email protected]"
# password:
# host: "smtp.test.com"
# port: 587
# If your email provider doesn't handle TLS
# no_tls: true
region: global # For China server users, set this to - china (default: global)
drive:
destination: "drive"
remove_obsolete: false
sync_interval: 300
filters: # Optional - use it only if you want to download specific folders.
# File filters to be included in syncing iCloud drive content
folders:
- "folder1"
- "folder2"
- "folder3"
file_extensions:
# File extensions to be included
- "pdf"
- "png"
- "jpg"
- "jpeg"
ignore:
# When specifying folder paths, append it with /*
- "node_modules/*"
- "*.md"
photos:
destination: "photos"
remove_obsolete: false
sync_interval: 500
all_albums: false # Optional, default false. If true preserve album structure. If same photo is in multiple albums creates duplicates on filesystem
folder_format: "%Y/%m" # optional, if set put photos in subfolders according to format. Format cheatsheet - https://strftime.org
filters:
# List of libraries to download. If omitted (default), photos from all libraries (own and shared) are downloaded. If included, photos only
# from the listed libraries are downloaded.
# libraries:
# - PrimarySync # Name of the own library# if all_albums is false - albums list is used as filter-in, if all_albums is true - albums list is used as filter-out
# if albums list is empty and all_albums is false download all photos to "all" folder. if empty and all_albums is true download all folders
albums:
- "album 1"
- "album2"
file_sizes: # valid values are original, medium and/or thumb
- "original"
# - "medium"
# - "thumb"
extensions: # Optional, media extensions to be included in syncing iCloud Photos content
# - jpg
# - heic
# - png
```**_Note: On every sync, this client iterates all the files. Depending on number of files in your iCloud (drive + photos), syncing can take longer._**
## Usage Policy
As mentioned in [USAGE.md](https://github.com/mandarons/icloud-docker/blob/main/USAGE.md)
## Star History
[github-sponsors]: https://github.com/sponsors/mandarons
[github-sponsors-badge]: https://img.shields.io/github/sponsors/mandarons
[discord]: https://discord.gg/fyMGBvNW
[discord-badge]: https://img.shields.io/discord/871555550444408883