diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 69ae5fb64c9..3aadb4afabc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -21,6 +21,7 @@ home-assistant/ @tprelog # Apps maintained by stavros-k handbrake/* @stavros-k collabora-online/ @stavros-k +youtubedl-material/ @stavros-k # Apps maintained by djs52 emby/ @djs52 diff --git a/docs/_static/img/youtubedl-material-icon.png b/docs/_static/img/youtubedl-material-icon.png new file mode 100644 index 00000000000..f26d9fb2655 Binary files /dev/null and b/docs/_static/img/youtubedl-material-icon.png differ diff --git a/docs/apps/stable/youtubedl-material/CONFIG.md b/docs/apps/stable/youtubedl-material/CONFIG.md new file mode 100644 index 00000000000..6d760c18421 --- /dev/null +++ b/docs/apps/stable/youtubedl-material/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/docs/apps/stable/youtubedl-material/index.md b/docs/apps/stable/youtubedl-material/index.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/apps/stable/youtubedl-material/notes.md b/docs/apps/stable/youtubedl-material/notes.md new file mode 100644 index 00000000000..a1fbd1aa750 --- /dev/null +++ b/docs/apps/stable/youtubedl-material/notes.md @@ -0,0 +1,15 @@ +# Installation Notes + +## By default Youtube-dl uses the following directories, which are NOT persistence. +## Everything in `/data`, `/app` and `/config` gets WIPED on boot. + + +* Videos with 'Audio only' checked, by default downloads to `/data/audio/` +* Video files, by default downlods to `/data/video` +* Subscriptions ("watched" channels or playlists) by default downloads to `/data/subscriptions/` +* If Multi-user is enabled all downloads goes, by default to `/data/users/` ignoring the previous mentioned directories + +To easily access the above directories, add them as custom storage. eg `/audio`, `/video`, `subscriptions`, `/users` +If you plan to use multi-user, you only need 1 directory, `/users`. +DO NOT add custom storage in `/data`, `/app` and `/config` it will be wiped on the next boot. +Then you have to manually map them on the WebUI also. (Top right corner > 3-Dots > Settings > Main and Downloader tabs) \ No newline at end of file diff --git a/stable/youtubedl-material/1.0.0/.helmignore b/stable/youtubedl-material/1.0.0/.helmignore new file mode 100644 index 00000000000..e559de0a012 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/stable/youtubedl-material/1.0.0/CONFIG.md b/stable/youtubedl-material/1.0.0/CONFIG.md new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/CONFIG.md @@ -0,0 +1 @@ + diff --git a/stable/youtubedl-material/1.0.0/Chart.yaml b/stable/youtubedl-material/1.0.0/Chart.yaml new file mode 100644 index 00000000000..6c4324bc461 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: youtubedl-material +version: 1.0.0 +# upstream_version: +appVersion: "auto" +description: YoutubeDL-Material is a Material Design frontend for youtube-dl. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/stable/youtubedl-material +icon: https://truecharts.org/_static/img/youtubedl-material-icon.jpg +keywords: + - media + - youtubedl + - download +sources: + - https://github.com/truecharts/apps/tree/master/stable/youtubedl-material + - https://github.com/Tzahi12345/YoutubeDL-Material + - https://hub.docker.com/r/tzahi12345/youtubedl-material +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.2 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: stavros-k + email: stavros-k@users.noreply.github.com + url: truecharts.org +# annotations: diff --git a/stable/youtubedl-material/1.0.0/README.md b/stable/youtubedl-material/1.0.0/README.md new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/README.md @@ -0,0 +1 @@ + diff --git a/stable/youtubedl-material/1.0.0/app-readme.md b/stable/youtubedl-material/1.0.0/app-readme.md new file mode 100644 index 00000000000..2dec720c6b2 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/app-readme.md @@ -0,0 +1,2 @@ +YoutubeDL-Material is a Material Design frontend for youtube-dl. It's coded using Angular 11 for the frontend, and Node.js on the backend. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org diff --git a/stable/youtubedl-material/1.0.0/charts/common-3.5.2.tgz b/stable/youtubedl-material/1.0.0/charts/common-3.5.2.tgz new file mode 100644 index 00000000000..d1e87964d25 Binary files /dev/null and b/stable/youtubedl-material/1.0.0/charts/common-3.5.2.tgz differ diff --git a/stable/youtubedl-material/1.0.0/ix_values.yaml b/stable/youtubedl-material/1.0.0/ix_values.yaml new file mode 100644 index 00000000000..d54e9917367 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/youtubedl + pullPolicy: IfNotPresent + tag: v4.2 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/stable/youtubedl-material/1.0.0/questions.yaml b/stable/youtubedl-material/1.0.0/questions.yaml new file mode 100644 index 00000000000..793a7d393c8 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 17442 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 17442 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36052 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data/appdata" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "selfsigned" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/stable/youtubedl-material/1.0.0/templates/common.yaml b/stable/youtubedl-material/1.0.0/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/stable/youtubedl-material/1.0.0/test_values.yaml b/stable/youtubedl-material/1.0.0/test_values.yaml new file mode 100644 index 00000000000..ed5ffbbad4c --- /dev/null +++ b/stable/youtubedl-material/1.0.0/test_values.yaml @@ -0,0 +1,39 @@ +# # Default values for YoutubeDL-Material. + +image: + repository: ghcr.io/truecharts/youtubedl + pullPolicy: IfNotPresent + tag: v4.2 +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + +services: + main: + enabled: true + port: + port: 17442 + +env: {} + # TZ: UTC + +persistence: + config: + enabled: true + mountPath: "/data/appdata" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + +## TrueCharts Values + +ingress: + main: + enabled: false diff --git a/stable/youtubedl-material/1.0.0/values.yaml b/stable/youtubedl-material/1.0.0/values.yaml new file mode 100644 index 00000000000..58eb9c684b0 --- /dev/null +++ b/stable/youtubedl-material/1.0.0/values.yaml @@ -0,0 +1 @@ +# This file is empty on purpose, as it should not be used with TrueNAS SCALE diff --git a/stable/youtubedl-material/item.yaml b/stable/youtubedl-material/item.yaml new file mode 100644 index 00000000000..6758a82acab --- /dev/null +++ b/stable/youtubedl-material/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://truecharts.org/_static/img/youtubedl-material-icon.jpg