diff --git a/charts/incubator/icloudpd/Chart.yaml b/charts/incubator/icloudpd/Chart.yaml index d3305fbd2b5..becc1d3e688 100644 --- a/charts/incubator/icloudpd/Chart.yaml +++ b/charts/incubator/icloudpd/Chart.yaml @@ -1,9 +1,3 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Backup - - Cloud - - Downloaders apiVersion: v2 appVersion: "latest" dependencies: @@ -30,4 +24,10 @@ sources: - https://github.com/Womabre/-TrueNAS-docker-templates - https://hub.docker.com/r/boredazfcuk/icloudpd/ type: application -version: 0.0.34 +version: 0.0.35 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Backup + - Cloud + - Downloaders diff --git a/charts/incubator/icloudpd/questions.yaml b/charts/incubator/icloudpd/questions.yaml index 7b599619389..db1452daf22 100644 --- a/charts/incubator/icloudpd/questions.yaml +++ b/charts/incubator/icloudpd/questions.yaml @@ -10,93 +10,213 @@ questions: # Include{recreate} # Include{controllerExpert} # Include{controllerExpertExtraArgs} - - variable: env - group: "Container Configuration" - label: "Image Environment" + - variable: icloudpd + group: Container Configuration + label: iCloud PD Configuration schema: additional_attrs: true type: dict attrs: - variable: apple_id - label: "apple_id" - description: "This is the Apple ID for the account you want to download files from" - schema: - type: string - default: "your@appleid.com" - - variable: synchronisation_interval - label: "synchronisation_interval" - description: "Default is once every 24h." - schema: - type: string - default: "86400" - - variable: notification_type - label: "notification_type" - description: "This specifies the method that is used to send notifications. Currently, there are three options available Prowl, Pushbullet and Telegram. When the two factor authentication cookie is within 7 days (default) of expiry, a notification will be sent upon synchronization. No more than a single notification will be sent within a 24 hour period unless the container is restarted. This does not include the notification that is sent each time the container is started" - schema: - type: string - default: "" - - variable: prowl_api_key - label: "prowl_api_key" - description: "If the notificationtype is set to Prowl this is mandatory. This is the API key for your account as generated by the Prowl website" - schema: - type: string - default: "" - - variable: pushbullet_api_key - label: "pushbullet_api_key" - description: "If the notificationtype is set to Pushbullet this is mandatory. This is the API key for your account as generated by the Pushbullet website" - schema: - type: string - default: "" - - variable: telegram_token - label: "telegram_token" - description: "If the notificationtype is set to Telegram this is mandatory. This is the token that was assigned to your account by The Botfather" - schema: - type: string - default: "" - - variable: telegram_chat_id - label: "telegram_chat_id" - description: "If the notificationtype is set to Telegram then this is the chatid for your Telegram bot" - schema: - type: string - default: "" - - variable: command_line_options - label: "command_line_options" - description: "This is for additional command line options you want to pass to the icloudpd application. httpsgithub.comndbroadbenticloudphotosdownloader#usage" + label: Apple ID + description: This is the Apple ID that will be used when downloading files. schema: type: string + required: true default: "" - variable: authentication_type - label: "authentication_type" - description: "2FA or Web Authentication" + label: Authentication Type + description: This is the type of authentication that is enabled on your iCloud account schema: type: string - default: "2FA" - - variable: directory_permissions - label: "directory_permissions" - description: "Container Variable directorypermissions" + default: 2FA + enum: + - value: 2FA + description: 2FA + - value: Web + description: Web + - variable: icloud_china + label: iCloud China + description: Set this to true to use icloud.com.cm instead of icloud.com as the download source. + schema: + type: boolean + default: true + - variable: synchronisation_interval + label: Synchronization Interval + description: This is the number of seconds between synchronizations. + schema: + type: int + default: 86400 + - variable: synchronisation_delay + label: Synchronization Delay + description: This is the number of minutes to delay the first synchronization. + schema: + type: int + default: 86400 + - variable: notification_days + label: Notification Days + description: When your cookie is nearing expiration, this is the number of days in advance it should notify you. + schema: + type: int + default: 7 + - variable: photo_size + label: Photo Size + description: Image size to download schema: type: string - default: "777" - - variable: file_permissions - label: "file_permissions" - description: "Container Variable filepermissions" + default: original + enum: + - value: original + description: original + - value: medium + description: medium + - value: thumb + description: thumb + - variable: live_photo_size + label: Live Photo Size + description: Live photo file size to download. schema: type: string - default: "666" - - variable: UMASK - label: "UMASK" - description: "Container Variable UMASK" + default: original + enum: + - value: original + description: original + - value: medium + description: medium + - value: thumb + description: thumb + - variable: recent_only + label: Recent Only + description: Set this to an integer number to only download this many recently added photos. Set to 0 to download all + schema: + type: int + default: 0 + - variable: until_found + label: Until Found + description: Set this to an integer number to only download the most recently added photos, until n number of previously downloaded consecutive photos are found. Set to 0 to download all + schema: + type: int + default: 0 + - variable: photo_album + label: Photo Album + description: Set this to the name of an album to only download photos from a single album. Set to empty to download all schema: type: string - default: "000" + default: "" + - variable: set_exif_datetime + label: Set EXIF Date Time + description: Write the DateTimeOriginal EXIF tag from file creation date. + schema: + type: boolean + default: false + - variable: convert_heic_to_jpeg + label: Convert HEIC to JPEG + description: Set this to True to convert downloaded HEIC files to JPEG, while also retaining the original. + schema: + type: boolean + default: false + - variable: jpeg_quality + label: JPEG Quality + description: If HEIC to JPEG conversion is enabled, this variable will let you set the quality of the converted file by specifying a number from 0 (lowest quality) to 100 (highest quality) + schema: + type: int + default: 90 + - variable: skip_check + label: Skip Check + description: Set this to True skip the check for new files. The check can have issues with large libraries. + schema: + type: boolean + default: false + - variable: skip_live_photos + label: Skip Live Photos + description: If this is set, it will skip downloading live photos. + schema: + type: boolean + default: false + - variable: skip_videos + label: Skip Videos + description: If this is set, it will skip downloading videos. + schema: + type: boolean + default: false + - variable: auto_delete + label: Auto Delete + description: Scans the "Recently Deleted" folder and deletes any files found in there. + schema: + type: boolean + default: false + - variable: download_notifications + label: Download Notifications + description: Specifies whether notifications with a short summary should be sent for file downloads. + schema: + type: boolean + default: false + - variable: delete_notifications + label: Delete Notifications + description: Specifies whether notifications with a short summary should be sent for file deletions. + schema: + type: boolean + default: false + - variable: delete_accompanying + label: Delete Accompanying + description: Tells the script to delete files which accompany the HEIC files that are downloaded. + schema: + type: boolean + default: false + - variable: delete_empty_directories + label: Delete Empty Directories + description: Tells the script to delete any empty directories it finds in the download path. + schema: + type: boolean + default: false + - variable: command_line_options + label: Command Line Options + description: This is for additional command line options you want to pass to the iCloud PD application. + schema: + type: string + default: "" + - variable: notification_type + label: Notification Type + description: This specifies the method that is used to send notifications. You need to manually add the environments variables + for your selected notification type, using the "Extra Environment Variables Section" + More info about the variables needed here. https://github.com/boredazfcuk/docker-icloudpd/blob/master/NOTIFICATIONS.md + schema: + type: string + default: No Type + enum: + - value: "" + description: No type + - value: Prowl + description: Prowl + - value: Pushover + description: Pushover + - value: Telegram + description: Telegram + - value: Webhook + description: Webhook + - value: Openhab + description: Openhab + - value: Dingtalk + description: Dingtalk + - value: Discord + description: Discord + - value: IYUU + description: IYUU + - value: WeCom + description: WeCom + - value: Gotify + description: Gotify + - value: Bark + description: Bark +# Include{containerConfig} # Include{serviceExpertRoot} default: false # Include{serviceExpert} # Include{serviceList} # Include{persistenceRoot} - variable: config - label: "config Storage" - description: "Container Path config" + label: Config Storage + description: Stores Applications Configuration schema: additional_attrs: true type: dict @@ -104,8 +224,8 @@ questions: # Include{persistenceBasic} # Include{persistenceAdvanced} - variable: data - label: "data Storage" - description: "Container Path homeuserphotos" + label: Data Storage + description: Stores iCloud Downloaded Data schema: additional_attrs: true type: dict @@ -117,42 +237,42 @@ questions: # Include{security} # Include{securityContextAdvancedRoot} - variable: privileged - label: "Privileged mode" + label: Privileged mode schema: type: boolean default: false - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" + label: ReadOnly Root Filesystem schema: type: boolean default: false - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" + label: Allow Privilege Escalation schema: type: boolean default: false - variable: runAsNonRoot - label: "runAsNonRoot" + label: runAsNonRoot schema: type: boolean default: false # Include{securityContextAdvanced} # Include{podSecurityContextRoot} - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" + label: runAsUser + description: The UserID of the user running the application schema: type: int default: 0 - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" + label: runAsGroup + description: The groupID this App of the user running the application schema: type: int default: 0 - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." + label: fsGroup + description: The group that should own ALL storage. schema: type: int default: 568 diff --git a/charts/incubator/icloudpd/values.yaml b/charts/incubator/icloudpd/values.yaml index 2aba11f47fd..bac77448ef6 100644 --- a/charts/incubator/icloudpd/values.yaml +++ b/charts/incubator/icloudpd/values.yaml @@ -1,30 +1,109 @@ -env: - UMASK: "000" - apple_id: your@appleid.com - authentication_type: 2FA - command_line_options: "" - directory_permissions: "777" - file_permissions: "666" - notification_type: "" - prowl_api_key: "" - pushbullet_api_key: "" - synchronisation_interval: "86400" - telegram_chat_id: "" - telegram_token: "" image: pullPolicy: IfNotPresent repository: tccr.io/truecharts/icloudpd tag: latest@sha256:493d895040c0607ef1f994920ca6b0b25ea61b65beb53604f5417370b7416be8 -persistence: - config: - enabled: true - mountPath: /config - data: - enabled: true - mountPath: /home/user/iCloud + podSecurityContext: runAsGroup: 0 runAsUser: 0 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +icloudpd: + apple_id: your@appleid.com + authentication_type: 2FA + icloud_china: false + synchronisation_interval: 86400 + synchronisation_delay: 0 + notification_days: 7 + photo_size: original + live_photo_size: original + recent_only: 0 + until_found: 0 + photo_album: "" + set_exif_datetime: false + convert_heic_to_jpeg: false + jpeg_quality: 90 + skip_check: false + skip_live_photos: false + skip_videos: false + auto_delete: false + download_notifications: true + delete_notifications: true + delete_accompanying: false + delete_empty_directories: false + command_line_options: "" + notification_title: iCloud PD + # https://github.com/boredazfcuk/docker-icloudpd/blob/master/NOTIFICATIONS.md + notification_type: "" + # prowl_api_key: "" + # pushover_user: "" + # pushover_token: "" + # pushover_sound: "" + # telegram_token: "" + # telegram_chat_id: "" + # webhook_server: "" + # webhook_port: "" + # webhook_path: "" + # webhook_id: "" + # webhook_https: "" + # webhook_body: "" + # dingtalk_token: "" + # discord_id: "" + # discord_token: "" + # iyuu_token: "" + # wecom_id: "" + # wecom_secret: "" + # agentid: "" + # touser: "" + # content_source_url: "" + # name: "" + # media_id_startup: "" + # media_id_download: "" + # media_id_delete: "" + # media_id_expiration: "" + # media_id_warning: "" + # gotify_app_token: "" + # gotify_server_url: "" + # bark_device_key: "" + # bark_server: "" + +env: + user: apps + group: apps + user_id: "{{ .Values.security.PUID }}" + group_id: "{{ .Values.podSecurityContext.fsGroup }}" + download_path: /home/{{ .Values.env.user }}/iCloud + jpeg_path: /home/{{ .Values.env.user }}/iCloud + # User Defined + apple_id: "{{ .Values.icloudpd.apple_id }}" + synchronisation_interval: "{{ .Values.icloudpd.synchronisation_interval }}" + synchronisation_delay: "{{ .Values.icloudpd.synchronisation_delay }}" + notification_days: "{{ .Values.icloudpd.notification_days }}" + authentication_type: "{{ .Values.icloudpd.authentication_type }}" + skip_check: '{{ ternary "True" "False" .Values.icloudpd.skip_check }}' + download_notifications: '{{ ternary "True" "False" .Values.icloudpd.download_notifications }}' + delete_notifications: '{{ ternary "True" "False" .Values.icloudpd.delete_notifications }}' + delete_accompanying: '{{ ternary "True" "False" .Values.icloudpd.delete_accompanying }}' + delete_empty_directories: '{{ ternary "True" "False" .Values.icloudpd.delete_empty_directories }}' + set_exif_datetime: '{{ ternary "True" "False" .Values.icloudpd.set_exif_datetime }}' + auto_delete: '{{ ternary "True" "False" .Values.icloudpd.auto_delete }}' + photo_size: "{{ .Values.icloudpd.photo_size }}" + skip_live_photos: '{{ ternary "True" "False" .Values.icloudpd.skip_live_photos }}' + live_photo_size: "{{ .Values.icloudpd.live_photo_size }}" + skip_videos: '{{ ternary "True" "False" .Values.icloudpd.skip_videos }}' + recent_only: '{{ ternary "" .Values.icloudpd.recent_only (eq 0 (int .Values.icloudpd.recent_only)) }}' + until_found: '{{ ternary "" .Values.icloudpd.until_found (eq 0 (int .Values.icloudpd.until_found)) }}' + photo_album: "{{ .Values.icloudpd.photo_album }}" + convert_heic_to_jpeg: '{{ ternary "True" "False" .Values.icloudpd.convert_heic_to_jpeg }}' + jpeg_quality: "{{ .Values.icloudpd.jpeg_quality }}" + icloud_china: '{{ ternary "True" "False" .Values.icloudpd.icloud_china }}' + command_line_options: "{{ .Values.icloudpd.command_line_options }}" + notification_title: "{{ .Values.icloudpd.notification_title }}" + notification_type: "{{ .Values.icloudpd.notification_type }}" + probes: liveness: enabled: false @@ -32,9 +111,7 @@ probes: enabled: false startup: enabled: false -securityContext: - readOnlyRootFilesystem: false - runAsNonRoot: false + service: main: enabled: false @@ -42,5 +119,13 @@ service: main: enabled: false +persistence: + config: + enabled: true + mountPath: /config + data: + enabled: true + mountPath: /home/apps/iCloud + portal: enabled: false diff --git a/cspell.config.yaml b/cspell.config.yaml index a98a427a230..4f55973d981 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -61,6 +61,7 @@ words: - emby - entrypoints - eptgmk + - EXIF - fireshare - flatnotes - flemarr