diff --git a/catalog.json b/catalog.json index 2d5e8a7cd2..b117a56f1b 100644 --- a/catalog.json +++ b/catalog.json @@ -42,7 +42,7 @@ "latest_version": "1.0.89", "latest_app_version": "2023.5.2", "latest_human_version": "2023.5.2_1.0.89", - "last_update": "2023-05-07 15:37:00", + "last_update": "2023-05-09 11:21:40", "name": "home-assistant", "recommended": false, "title": "Home Assistant", @@ -118,7 +118,7 @@ "latest_version": "1.7.45", "latest_app_version": "1.32.1.6999", "latest_human_version": "1.32.1.6999_1.7.45", - "last_update": "2023-05-09 11:06:50", + "last_update": "2023-05-09 11:21:40", "name": "plex", "recommended": false, "title": "Plex", @@ -201,7 +201,7 @@ "latest_version": "1.0.6", "latest_app_version": "7", "latest_human_version": "7_1.0.6", - "last_update": "2023-05-03 13:56:14", + "last_update": "2023-05-09 11:21:40", "name": "wg-easy", "recommended": false, "title": "WG Easy", @@ -286,7 +286,7 @@ "latest_version": "1.0.26", "latest_app_version": "1.23.4", "latest_human_version": "1.23.4_1.0.26", - "last_update": "2023-05-03 13:56:14", + "last_update": "2023-05-09 11:21:40", "name": "syncthing", "recommended": false, "title": "Syncthing", @@ -313,7 +313,7 @@ "latest_version": "1.0.23", "latest_app_version": "4.7.11.0", "latest_human_version": "4.7.11.0_1.0.23", - "last_update": "2023-05-03 13:56:14", + "last_update": "2023-05-09 11:21:40", "name": "emby", "recommended": false, "title": "Emby Server", @@ -555,6 +555,36 @@ "tags": [], "icon_url": "https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest" }, + "ddns-updater": { + "app_readme": "
DDNS Updater is a lightweight universal DDNS Updater with web UI
\n\n", + "categories": [ + "network" + ], + "description": "Lightweight universal DDNS Updater with web UI", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/qdm12/ddns-updater", + "location": "/__w/charts/charts/community/ddns-updater", + "latest_version": "1.0.0", + "latest_app_version": "latest", + "latest_human_version": "latest_1.0.0", + "last_update": null, + "name": "ddns-updater", + "recommended": false, + "title": "DDNS Updater", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "ddns", + "ddns-updater" + ], + "icon_url": "https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/ddnsgopher.svg" + }, "radarr": { "app_readme": "When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the
\nDDNS Updaterdirectories.\nAfterward, theDDNS Updatercontainer will run as a non-root user (Default:568).\nAll mounted storage(s) will bechowned only if the parent directory does not match the configured user.
Radarr is a movie collection manager for Usenet and BitTorrent users.
\n\n", "categories": [ diff --git a/community/ddns-updater/1.0.0/Chart.lock b/community/ddns-updater/1.0.0/Chart.lock new file mode 100644 index 0000000000..4301461672 --- /dev/null +++ b/community/ddns-updater/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.7 +digest: sha256:919bcf42446fc1748a1b77001ec0161bb7a72a198381794b716a6ebb459ac31b +generated: "2023-05-09T16:20:15.690681282+03:00" diff --git a/community/ddns-updater/1.0.0/Chart.yaml b/community/ddns-updater/1.0.0/Chart.yaml new file mode 100644 index 0000000000..29d16335f6 --- /dev/null +++ b/community/ddns-updater/1.0.0/Chart.yaml @@ -0,0 +1,26 @@ +name: ddns-updater +description: Lightweight universal DDNS Updater with web UI +annotations: + title: DDNS Updater +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 'latest' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.7 +home: https://github.com/qdm12/ddns-updater +icon: https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/ddnsgopher.svg +sources: + - https://github.com/qdm12/ddns-updater + - https://github.com/truenas/charts/tree/master/community/ddns-updater + - https://hub.docker.com/r/qmcgaw/ddns-updater +keywords: + - ddns-updater + - ddns diff --git a/community/ddns-updater/1.0.0/README.md b/community/ddns-updater/1.0.0/README.md new file mode 100644 index 0000000000..b9b51cb2e8 --- /dev/null +++ b/community/ddns-updater/1.0.0/README.md @@ -0,0 +1,8 @@ +# DDNS Updater + +[DDNS Updater](https://github.com/qdm12/ddns-updater) is a lightweight universal DDNS Updater with web UI + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `DDNS Updater` directories. +> Afterward, the `DDNS Updater` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/ddns-updater/1.0.0/app-readme.md b/community/ddns-updater/1.0.0/app-readme.md new file mode 100644 index 0000000000..b9b51cb2e8 --- /dev/null +++ b/community/ddns-updater/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# DDNS Updater + +[DDNS Updater](https://github.com/qdm12/ddns-updater) is a lightweight universal DDNS Updater with web UI + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `DDNS Updater` directories. +> Afterward, the `DDNS Updater` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/ddns-updater/1.0.0/charts/common-1.0.7.tgz b/community/ddns-updater/1.0.0/charts/common-1.0.7.tgz new file mode 100644 index 0000000000..db5781322a Binary files /dev/null and b/community/ddns-updater/1.0.0/charts/common-1.0.7.tgz differ diff --git a/community/ddns-updater/1.0.0/ci/aliyun-values.yaml b/community/ddns-updater/1.0.0/ci/aliyun-values.yaml new file mode 100644 index 0000000000..eebb29ea9f --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/aliyun-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: aliyun + host: "@" + domain: example.com + ipVersion: "" + aliyunAccessKey: key + aliyunSecret: secret diff --git a/community/ddns-updater/1.0.0/ci/allinkl-values.yaml b/community/ddns-updater/1.0.0/ci/allinkl-values.yaml new file mode 100644 index 0000000000..2592c94ed1 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/allinkl-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: allinkl + host: "@" + domain: example.com + ipVersion: "" + allinklUsername: user + allinklPassword: pass diff --git a/community/ddns-updater/1.0.0/ci/cloudflare-values.yaml b/community/ddns-updater/1.0.0/ci/cloudflare-values.yaml new file mode 100644 index 0000000000..ddf897e728 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/cloudflare-values.yaml @@ -0,0 +1,37 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: cloudflare + host: "@" + domain: example.com + ipVersion: "" + cloudflareZoneID: zoneid + cloudflareTtl: 1 + cloudflareProxied: false + cloudflareToken: token + - provider: cloudflare + host: "@" + domain: example.com + ipVersion: "" + cloudflareZoneID: zoneid + cloudflareTtl: 1 + cloudflareProxied: false + cloudflareUserServiceKey: v1.0.0-abcdef + - provider: cloudflare + host: "@" + domain: example.com + ipVersion: "" + cloudflareZoneID: zoneid + cloudflareTtl: 1 + cloudflareEmail: email@example.com + cloudflareApiKey: api_key diff --git a/community/ddns-updater/1.0.0/ci/config-values.yaml b/community/ddns-updater/1.0.0/ci/config-values.yaml new file mode 100644 index 0000000000..b5a268b42e --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/config-values.yaml @@ -0,0 +1,52 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsRunAs: + user: 1000 + group: 1000 + +ddnsConfig: + config: + - provider: allinkl + host: "@" + domain: example.com + ipVersion: "" + allinklUsername: user + allinklPassword: pass + + period: 1m + backupPeriod: 1h + updateCooldownPeriod: 10m + publicIpDnsTimeout: 3s + httpTimeout: 15s + publicIpFetchers: + - provider: all + + shoutrrrAddresses: + - discord://token@id + - gotify://gotify-host/token + publicIpDnsProviders: + - provider: all + publicIpHttpProviders: + - provider: custom + custom: https://ifconfig.io/ip + publicIpv4HttpProviders: + - provider: custom + custom: https://api.ipify.org + publicIpv6HttpProviders: + - provider: custom + custom: https://api6.ipify.org + + additionalEnvs: + - name: LOG_LEVEL + value: debug + - name: LOG_CALLER + value: short diff --git a/community/ddns-updater/1.0.0/ci/dd24-values.yaml b/community/ddns-updater/1.0.0/ci/dd24-values.yaml new file mode 100644 index 0000000000..b066669f1e --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dd24-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dd24 + host: "@" + domain: example.com + ipVersion: "" + dd24Password: password diff --git a/community/ddns-updater/1.0.0/ci/ddnss-values.yaml b/community/ddns-updater/1.0.0/ci/ddnss-values.yaml new file mode 100644 index 0000000000..a460416441 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/ddnss-values.yaml @@ -0,0 +1,28 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: ddnss + host: "@" + domain: example.com + ipVersion: "" + ddnssUsername: username + ddnssPassword: password + ddnssProviderIP: false + ddnssDualStack: true + - provider: ddnss + host: "@" + domain: example.com + ipVersion: "" + ddnssUsername: username + ddnssPassword: password + ddnssProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/digitalocean-values.yaml b/community/ddns-updater/1.0.0/ci/digitalocean-values.yaml new file mode 100644 index 0000000000..7c1bf1a50c --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/digitalocean-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: digitalocean + host: "@" + domain: example.com + ipVersion: "" + digitalOceanToken: token diff --git a/community/ddns-updater/1.0.0/ci/dnsomatic-values.yaml b/community/ddns-updater/1.0.0/ci/dnsomatic-values.yaml new file mode 100644 index 0000000000..af9aa233fe --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dnsomatic-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dnsomatic + host: "@" + domain: example.com + ipVersion: "" + dnsOMaticUsername: username + dnsOMaticPassword: password + dnsOMaticProviderIP: false + - provider: dnsomatic + host: "@" + domain: example.com + ipVersion: "" + dnsOMaticUsername: username + dnsOMaticPassword: password + dnsOMaticProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/dnspod-values.yaml b/community/ddns-updater/1.0.0/ci/dnspod-values.yaml new file mode 100644 index 0000000000..d32b54e926 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dnspod-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dnspod + host: "@" + domain: example.com + ipVersion: "" + dnsPodToken: token diff --git a/community/ddns-updater/1.0.0/ci/dondominio-values.yaml b/community/ddns-updater/1.0.0/ci/dondominio-values.yaml new file mode 100644 index 0000000000..20ee5317ce --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dondominio-values.yaml @@ -0,0 +1,20 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dondominio + host: "@" + domain: example.com + ipVersion: "" + donDominioUsername: user + donDominioPassword: pass + donDominioName: name diff --git a/community/ddns-updater/1.0.0/ci/dreamhost-values.yaml b/community/ddns-updater/1.0.0/ci/dreamhost-values.yaml new file mode 100644 index 0000000000..6bd56d7326 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dreamhost-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dreamhost + host: "@" + domain: example.com + ipVersion: "" + dreamHostKey: abcdefgh12345678 diff --git a/community/ddns-updater/1.0.0/ci/duckdns-values.yaml b/community/ddns-updater/1.0.0/ci/duckdns-values.yaml new file mode 100644 index 0000000000..c908d98559 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/duckdns-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: duckdns + host: subdomain + domain: example.com + duckdnsToken: abcd1234-abcd-1234-abcd-abcd1234abcd + duckdnsProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/dyndns-values.yaml b/community/ddns-updater/1.0.0/ci/dyndns-values.yaml new file mode 100644 index 0000000000..391a25cf59 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dyndns-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dyn + host: "@" + domain: example.com + dynClientKey: key + dynUsername: user + dynProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/dynu-values.yaml b/community/ddns-updater/1.0.0/ci/dynu-values.yaml new file mode 100644 index 0000000000..db8d3f4799 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dynu-values.yaml @@ -0,0 +1,26 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dynu + host: "@" + domain: example.com + dynuUsername: user + dynuPassword: password + dynuProviderIP: false + - provider: dynu + host: "@" + domain: example.com + dynuUsername: user + dynuPassword: password + dynuGroup: group + dynuProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/dynv6-values.yaml b/community/ddns-updater/1.0.0/ci/dynv6-values.yaml new file mode 100644 index 0000000000..6bcf4c867b --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/dynv6-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: dynv6 + host: "@" + domain: example.com + dynv6Token: token + dynv6ProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/freedns-values.yaml b/community/ddns-updater/1.0.0/ci/freedns-values.yaml new file mode 100644 index 0000000000..9afa57254f --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/freedns-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: freedns + host: "@" + domain: example.com + ipVersion: "" + freeDnsToken: token diff --git a/community/ddns-updater/1.0.0/ci/gandi-values.yaml b/community/ddns-updater/1.0.0/ci/gandi-values.yaml new file mode 100644 index 0000000000..f1b77eb165 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/gandi-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: gandi + host: "@" + domain: example.com + ipVersion: "" + gandiKey: key + gandiTtl: 3600 diff --git a/community/ddns-updater/1.0.0/ci/gcp-values.yaml b/community/ddns-updater/1.0.0/ci/gcp-values.yaml new file mode 100644 index 0000000000..054fe6d01d --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/gcp-values.yaml @@ -0,0 +1,20 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: gcp + host: "@" + domain: example.com + ipVersion: "" + gcpProject: project + gcpZone: zone + gcpCredentials: '{"type": "service_account", "project_id": "my-id"}' diff --git a/community/ddns-updater/1.0.0/ci/godaddy-values.yaml b/community/ddns-updater/1.0.0/ci/godaddy-values.yaml new file mode 100644 index 0000000000..abaac08ac3 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/godaddy-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: godaddy + host: "@" + domain: example.com + ipVersion: "" + godaddyKey: abcDE12345_abcde12345abcde12345AB + godaddySecret: secret diff --git a/community/ddns-updater/1.0.0/ci/google-values.yaml b/community/ddns-updater/1.0.0/ci/google-values.yaml new file mode 100644 index 0000000000..6ba64976b0 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/google-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: he + host: "@" + domain: example.com + ipVersion: "" + hePassword: password diff --git a/community/ddns-updater/1.0.0/ci/he-values.yaml b/community/ddns-updater/1.0.0/ci/he-values.yaml new file mode 100644 index 0000000000..e3e2b6d04e --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/he-values.yaml @@ -0,0 +1,24 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: he + host: "@" + domain: example.com + ipVersion: "" + hePassword: password + heProviderIP: true + - provider: he + host: "@" + domain: example.com + ipVersion: "" + hePassword: password diff --git a/community/ddns-updater/1.0.0/ci/infomaniak-values.yaml b/community/ddns-updater/1.0.0/ci/infomaniak-values.yaml new file mode 100644 index 0000000000..58065f32b0 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/infomaniak-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: infomaniak + host: "@" + domain: example.com + ipVersion: "" + infomaniakUsername: username + infomaniakPassword: password + infomaniakProviderIP: true + - provider: infomaniak + host: "@" + domain: example.com + ipVersion: "" + infomaniakUsername: username + infomaniakPassword: password + infomaniakProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/inwx-values.yaml b/community/ddns-updater/1.0.0/ci/inwx-values.yaml new file mode 100644 index 0000000000..5672e7cf04 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/inwx-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: inwx + host: subdomain + domain: example.com + ipVersion: "" + inwxUsername: username + inwxPassword: password diff --git a/community/ddns-updater/1.0.0/ci/linode-values.yaml b/community/ddns-updater/1.0.0/ci/linode-values.yaml new file mode 100644 index 0000000000..a0ad58e05f --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/linode-values.yaml @@ -0,0 +1,18 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: linode + host: "@" + domain: example.com + ipVersion: "" + linodeToken: token diff --git a/community/ddns-updater/1.0.0/ci/luadns-values.yaml b/community/ddns-updater/1.0.0/ci/luadns-values.yaml new file mode 100644 index 0000000000..24ff726ca9 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/luadns-values.yaml @@ -0,0 +1,19 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: luadns + host: "@" + domain: example.com + ipVersion: "" + luadnsToken: token + luadnsEmail: email@example.com diff --git a/community/ddns-updater/1.0.0/ci/namecheap-values.yaml b/community/ddns-updater/1.0.0/ci/namecheap-values.yaml new file mode 100644 index 0000000000..23c14bddc3 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/namecheap-values.yaml @@ -0,0 +1,25 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: namecheap + host: subdomain + domain: example.com + ipVersion: "" + namecheapPassword: abcdef123456abcdef123456abcdef12 + namecheapProviderIP: true + - provider: namecheap + host: subdomain + domain: example.com + ipVersion: "" + namecheapPassword: abcdef123456abcdef123456abcdef12 + namecheapProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/njalla-values.yaml b/community/ddns-updater/1.0.0/ci/njalla-values.yaml new file mode 100644 index 0000000000..f381b21714 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/njalla-values.yaml @@ -0,0 +1,25 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: njalla + host: "@" + domain: example.com + ipVersion: "" + njallaKey: key + njallaProviderIP: true + - provider: njalla + host: "@" + domain: example.com + ipVersion: "" + njallaKey: key + njallaProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/noip-values.yaml b/community/ddns-updater/1.0.0/ci/noip-values.yaml new file mode 100644 index 0000000000..23f1898b2a --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/noip-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: noip + host: "@" + domain: example.com + ipVersion: "" + noipUsername: username + noipPassword: password + noipProviderIP: true + - provider: noip + host: "@" + domain: example.com + ipVersion: "" + noipUsername: username + noipPassword: password + noipProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/opendns-values.yaml b/community/ddns-updater/1.0.0/ci/opendns-values.yaml new file mode 100644 index 0000000000..c6713a9490 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/opendns-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: opendns + host: "@" + domain: example.com + ipVersion: "" + opendnsUsername: username + opendnsPassword: password + opendnsProviderIP: true + - provider: opendns + host: "@" + domain: example.com + ipVersion: "" + opendnsUsername: username + opendnsPassword: password + opendnsProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/ovh-values.yaml b/community/ddns-updater/1.0.0/ci/ovh-values.yaml new file mode 100644 index 0000000000..fd16c93b69 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/ovh-values.yaml @@ -0,0 +1,49 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: ovh + host: "@" + domain: example.com + ipVersion: "" + ovhMode: dynamic + ovhUsername: username + ovhPassword: password + ovhProviderIP: true + - provider: ovh + host: "@" + domain: example.com + ipVersion: "" + ovhMode: dynamic + ovhUsername: username + ovhPassword: password + ovhProviderIP: false + - provider: ovh + host: "@" + domain: example.com + ipVersion: "" + ovhMode: api + ovhApiEndpoint: ovh-eu + ovhAppKey: applicationKey + ovhAppSecret: applicationSecret + ovhConsumerKey: consumerKey + ovhProviderIP: false + - provider: ovh + host: "@" + domain: example.com + ipVersion: "" + ovhMode: api + ovhApiEndpoint: ovh-eu + ovhAppKey: applicationKey + ovhAppSecret: applicationSecret + ovhConsumerKey: consumerKey + ovhProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/porkbun-values.yaml b/community/ddns-updater/1.0.0/ci/porkbun-values.yaml new file mode 100644 index 0000000000..e65923fefc --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/porkbun-values.yaml @@ -0,0 +1,26 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: porkbun + host: "@" + domain: example.com + ipVersion: "" + porkbunApiKey: apikey + porkbunSecretApiKey: secretapikey + - provider: porkbun + host: "@" + domain: example.com + ipVersion: "" + porkbunApiKey: apikey + porkbunSecretApiKey: secretapikey + porkbunTtl: 3600 diff --git a/community/ddns-updater/1.0.0/ci/selfhostedde-values.yaml b/community/ddns-updater/1.0.0/ci/selfhostedde-values.yaml new file mode 100644 index 0000000000..dba69a6cf9 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/selfhostedde-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: selfhost.de + host: "@" + domain: example.com + ipVersion: "" + selfhostdeUsername: username + selfhostdePassword: password + selfhostdeProviderIP: true + - provider: selfhost.de + host: "@" + domain: example.com + ipVersion: "" + selfhostdeUsername: username + selfhostdePassword: password + selfhostdeProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/servercow-values.yaml b/community/ddns-updater/1.0.0/ci/servercow-values.yaml new file mode 100644 index 0000000000..585f5d81c4 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/servercow-values.yaml @@ -0,0 +1,29 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: servercow + host: "@" + domain: example.com + ipVersion: "" + servercowUsername: username + servercowPassword: password + servercowTtl: 120 + servercowProviderIP: false + - provider: servercow + host: "@" + domain: example.com + ipVersion: "" + servercowUsername: username + servercowPassword: password + servercowTtl: 120 + servercowProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/spdyn-values.yaml.yaml b/community/ddns-updater/1.0.0/ci/spdyn-values.yaml.yaml new file mode 100644 index 0000000000..9b9d2a16a9 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/spdyn-values.yaml.yaml @@ -0,0 +1,32 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: spdyn + host: "@" + domain: example.com + ipVersion: "" + spdynToken: token + spdynProviderIP: false + - provider: spdyn + host: "@" + domain: example.com + ipVersion: "" + spdynToken: token + spdynProviderIP: true + - provider: spdyn + host: "@" + domain: example.com + ipVersion: "" + spdynUsername: username + spdynPassword: password + spdynProviderIP: false diff --git a/community/ddns-updater/1.0.0/ci/strato-values.yaml b/community/ddns-updater/1.0.0/ci/strato-values.yaml new file mode 100644 index 0000000000..52f3e1862d --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/strato-values.yaml @@ -0,0 +1,25 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: strato + host: "@" + domain: example.com + ipVersion: "" + stratoPassword: password + stratoProviderIP: false + - provider: strato + host: "@" + domain: example.com + ipVersion: "" + stratoPassword: password + stratoProviderIP: true diff --git a/community/ddns-updater/1.0.0/ci/variomedia-values.yaml b/community/ddns-updater/1.0.0/ci/variomedia-values.yaml new file mode 100644 index 0000000000..6dc75ca002 --- /dev/null +++ b/community/ddns-updater/1.0.0/ci/variomedia-values.yaml @@ -0,0 +1,27 @@ +ddnsStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +# This disables probes. +# As we can't have for each provider +# an api key, we just run through CI +# for the linting. +ci: true + +ddnsConfig: + config: + - provider: variomedia + host: "@" + domain: example.com + ipVersion: "" + variomediaPassword: password + variomediaEmail: email@example.com + variomediaProviderIP: false + - provider: variomedia + host: "@" + domain: example.com + ipVersion: "" + variomediaPassword: password + variomediaEmail: email@example.com + variomediaProviderIP: true diff --git a/community/ddns-updater/1.0.0/ix_values.yaml b/community/ddns-updater/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..c5f89104d0 --- /dev/null +++ b/community/ddns-updater/1.0.0/ix_values.yaml @@ -0,0 +1,54 @@ +image: + repository: qmcgaw/ddns-updater + pullPolicy: IfNotPresent + tag: latest + +ci: false + +resources: + limits: + cpu: 4000m + memory: 8Gi + +ddnsConfig: + period: 5m + backupPeriod: 24h + updateCooldownPeriod: 5m + httpTimeout: 10s + shoutrrrAddresses: [] + publicIpDnsTimeout: 3s + publicIpDnsProviders: + - provider: all + publicIpHttpProviders: + - provider: all + custom: "" + publicIpv4HttpProviders: + - provider: all + custom: "" + publicIpv6HttpProviders: + - provider: all + custom: "" + publicIpFetchers: + - provider: all + config: [] + # - provider: cloudflare + # host: "@" + # domain: example.com + # ipVersion: "" + # cfZoneID: asd + # cfTtl: 1 + # cfProxied: false + # cfToken: asd + + additionalEnvs: [] +ddnsNetwork: + webPort: 30000 + hostNetwork: false +ddnsRunAs: + user: 568 + group: 568 +ddnsStorage: + data: + type: ixVolume + hostPath: '' + datasetName: data diff --git a/community/ddns-updater/1.0.0/metadata.yaml b/community/ddns-updater/1.0.0/metadata.yaml new file mode 100644 index 0000000000..114f29105d --- /dev/null +++ b/community/ddns-updater/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: ddns-updater + groupName: ddns-updater + gid: 568 + uid: 568 + description: DDNS Updater runs as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/ddns-updater/1.0.0/questions.yaml b/community/ddns-updater/1.0.0/questions.yaml new file mode 100644 index 0000000000..fcf7c32961 --- /dev/null +++ b/community/ddns-updater/1.0.0/questions.yaml @@ -0,0 +1,1349 @@ +groups: + - name: DDNS Updater Configuration + description: Configure DDNS Updater + - name: User and Group Configuration + description: Configure User and Group for DDNS Updater + - name: Network Configuration + description: Configure Network for DDNS Updater + - name: Storage Configuration + description: Configure Storage for DDNS Updater + - name: Resources Configuration + description: Configure Resources for DDNS Updater + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: TZ + group: DDNS Updater Configuration + label: Timezone + schema: + type: string + default: Etc/UTC + required: true + $ref: + - definitions/timezone + + - variable: ddnsConfig + label: "" + group: DDNS Updater Configuration + schema: + type: dict + attrs: + - variable: config + label: DNS Provider Configuration + description: | + Configuration for DDNS Updater. + Choose your provider in the following link for more information + https://github.com/qdm12/ddns-updater#configuration + schema: + type: list + min: 1 + required: true + empty: false + default: [] + items: + - variable: configEntry + label: Configuration Entry + schema: + type: dict + attrs: + - variable: provider + label: Provider + schema: + type: string + required: true + enum: + - value: aliyun + description: Aliyun + - value: allinkl + description: All-Inkl + - value: cloudflare + description: Cloudflare + - value: dd24 + description: DD24 + - value: ddnss + description: DDNSS + - value: digitalocean + description: Digital Ocean + - value: dnsomatic + description: DNS O Matic + - value: dnspod + description: DNS Pod + - value: dondominio + description: Don Dominio + - value: dreamhost + description: Dreamhost + - value: duckdns + description: Duck DNS + - value: dyn + description: DynDNS + - value: dynu + description: Dynu + - value: dynv6 + description: DynV6 + - value: freedns + description: FreeDNS + - value: gandi + description: Gandi + - value: gcp + description: GCP + - value: godaddy + description: GoDaddy + - value: google + description: Google + - value: he + description: He.net + - value: infomaniak + description: Infomaniak + - value: inwx + description: INWX + - value: linode + description: Linode + - value: luadns + description: LuaDNS + - value: namecheap + description: Namecheap + - value: njalla + description: Njalla + - value: noip + description: NoIP + - value: opendns + description: OpenDNS + - value: ovh + description: OVH + - value: porkbun + description: Porkbun + - value: selfhost.de + description: Selfhost.de + - value: servercow + description: Servercow + - value: spdyn + description: Spdyn.de + - value: strato + description: Strato + - value: variomedia + description: Variomedia + # Common to all providers + - variable: domain + label: Domain + description: | + Domain + For example: example.com + schema: + type: string + required: true + empty: false + - variable: ipVersion + label: IP Version + description: | + IP Version. + For example: IPv4 + schema: + type: string + show_if: [["provider", "=", "cloudflare"]] + default: "" + enum: + - value: ipv4 + description: IPv4 + - value: ipv6 + description: IPv6 + - value: "" + description: IPv4 and IPv6 + - variable: host + label: Host + description: | + Host. + For example: "@" + schema: + type: string + default: "@" + required: true + empty: false + + # Aliyun + - variable: aliyunAccessKey + label: Aliyun Access Key + description: Aliyun Access Key. + schema: + type: string + show_if: [["provider", "=", "aliyun"]] + required: true + empty: false + - variable: aliyunSecret + label: Aliyun Secret + description: Aliyun Secret. + schema: + type: string + show_if: [["provider", "=", "aliyun"]] + required: true + empty: false + + # All-Inkl + - variable: allinklUsername + label: All-Inkl Username + description: All-Inkl Username. + schema: + type: string + show_if: [["provider", "=", "allinkl"]] + required: true + empty: false + - variable: allinklPassword + label: All-Inkl Password + description: All-Inkl Password. + schema: + type: string + show_if: [["provider", "=", "allinkl"]] + required: true + empty: false + + # Cloudflare + - variable: cloudflareZoneID + label: Cloudflare Zone ID + description: | + Cloudflare Zone ID. + You can find it in the Overview tab of your domain. + schema: + type: string + required: true + show_if: [["provider", "=", "cloudflare"]] + - variable: cloudflareTtl + label: Cloudflare TTL + description: | + Cloudflare TTL. + 1 = Automatic + 600 = 10 minutes + schema: + type: int + min: 1 + required: true + show_if: [["provider", "=", "cloudflare"]] + default: 1 + - variable: cloudflareProxied + label: Cloudflare Proxied + description: | + Cloudflare Proxied. + True = Proxied + False = DNS Only + schema: + type: boolean + show_if: [["provider", "=", "cloudflare"]] + default: false + - variable: cloudflareToken + label: Cloudflare Token + description: Cloudflare Token. + schema: + type: string + show_if: [["provider", "=", "cloudflare"]] + - variable: cloudflareUserServiceKey + label: Cloudflare User Service Key + description: Cloudflare User Service Key. + schema: + type: string + show_if: [["provider", "=", "cloudflare"]] + - variable: cloudflareEmail + label: Cloudflare Email + description: Cloudflare Email. + schema: + type: string + show_if: [["provider", "=", "cloudflare"]] + - variable: cloudflareApiKey + label: Cloudflare API Key + description: Cloudflare API Key. + schema: + type: string + show_if: [["provider", "=", "cloudflare"]] + + # DD24 + - variable: dd24Password + label: DD24 Password + description: DD24 Password. + schema: + type: string + show_if: [["provider", "=", "dd24"]] + required: true + empty: false + + # DDNSS + - variable: ddnssUsername + label: DDNSS Username + description: DDNSS Username. + schema: + type: string + show_if: [["provider", "=", "ddnss"]] + required: true + empty: false + - variable: ddnssPassword + label: DDNSS Password + description: DDNSS Password. + schema: + type: string + show_if: [["provider", "=", "ddnss"]] + required: true + empty: false + - variable: ddnssProviderIP + label: DDNSS Provider IP + description: DDNSS Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "ddnss"]] + default: false + - variable: ddnssDualStack + label: DDNSS Dual Stack + description: DDNSS Dual Stack. + schema: + type: boolean + show_if: [["provider", "=", "ddnss"]] + default: false + + # Digital Ocean + - variable: digitalOceanToken + label: Digital Ocean Token + description: Digital Ocean Token + schema: + type: string + show_if: [["provider", "=", "digitalocean"]] + required: true + empty: false + + # DNS O Matic + - variable: dnsOMaticUsername + label: DNS O Matic Username + description: DNS O Matic Username. + schema: + type: string + show_if: [["provider", "=", "dnsomatic"]] + required: true + empty: false + - variable: dnsOMaticPassword + label: DNS O Matic Password + description: DNS O Matic Password. + schema: + type: string + show_if: [["provider", "=", "dnsomatic"]] + required: true + empty: false + - variable: dnsOMaticProviderIP + label: DNS O Matic Provider IP + description: DNS O Matic Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "dnsomatic"]] + default: false + + # DNS Pod + - variable: dnsPodToken + label: DNS Pod Token + description: DNS Pod Token. + schema: + type: string + show_if: [["provider", "=", "dnspod"]] + required: true + empty: false + + # Don Dominio + - variable: donDominioUsername + label: Don Dominio Username + description: Don Dominio Username. + schema: + type: string + show_if: [["provider", "=", "dondominio"]] + required: true + empty: false + - variable: donDominioPassword + label: Don Dominio Password + description: Don Dominio Password. + schema: + type: string + show_if: [["provider", "=", "dondominio"]] + required: true + empty: false + - variable: donDominioName + label: Don Dominio Name + description: Don Dominio Name. + schema: + type: string + show_if: [["provider", "=", "dondominio"]] + required: true + empty: false + + # Dreamhost + - variable: dreamHostKey + label: Dreamhost Key + description: Dreamhost Key. + schema: + type: string + show_if: [["provider", "=", "dreamhost"]] + required: true + empty: false + + # Duck DNS + - variable: duckdnsToken + label: Duck DNS Token + description: Duck DNS Token. + schema: + type: string + show_if: [["provider", "=", "duckdns"]] + required: true + empty: false + - variable: duckdnsProviderIP + label: Duck DNS Provider IP + description: Duck DNS Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "duckdns"]] + default: false + + # DynDNS + - variable: dynClientKey + label: DynDNS Client Key + description: DynDNS Client Key. + schema: + type: string + show_if: [["provider", "=", "dyn"]] + required: true + empty: false + - variable: dynUsername + label: DynDNS Username + description: DynDNS Username. + schema: + type: string + show_if: [["provider", "=", "dyn"]] + required: true + empty: false + - variable: dynProviderIP + label: DynDNS Provider IP + description: DynDNS Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "dyn"]] + default: false + + # Dynu + - variable: dynuUsername + label: Dynu Username + description: Dynu Username. + schema: + type: string + show_if: [["provider", "=", "dynu"]] + required: true + empty: false + - variable: dynuPassword + label: Dynu Password + description: Dynu Password. + schema: + type: string + show_if: [["provider", "=", "dynu"]] + required: true + empty: false + - variable: dynuGroup + label: Dynu Group + description: Dynu Group. + schema: + type: string + show_if: [["provider", "=", "dynu"]] + - variable: dynuProviderIP + label: Dynu Provider IP + description: Dynu Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "dynu"]] + default: false + + # DynV6 + - variable: dynv6Token + label: DynV6 Token + description: DynV6 Token + schema: + type: string + show_if: [["provider", "=", "dynv6"]] + required: true + empty: false + - variable: dynv6ProviderIP + label: DynV6 Provider IP + description: DynV6 Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "dynv6"]] + default: false + + # FreeDNS + - variable: freeDnsToken + label: FreeDNS Token + description: FreeDNS Token. + schema: + type: string + show_if: [["provider", "=", "freedns"]] + required: true + empty: false + + # Gandi + - variable: gandiKey + label: Gandi Key + description: Gandi Key. + schema: + type: string + show_if: [["provider", "=", "gandi"]] + required: true + empty: false + - variable: gandiTtl + label: Gandi TTL + description: Gandi TTL. + schema: + type: int + show_if: [["provider", "=", "gandi"]] + default: 3600 + required: true + + # GCP + - variable: gcpProject + label: GCP Project + description: GCP Project. + schema: + type: string + show_if: [["provider", "=", "gcp"]] + required: true + empty: false + - variable: gcpZone + label: GCP Zone + description: GCP Zone. + schema: + type: string + show_if: [["provider", "=", "gcp"]] + required: true + empty: false + - variable: gcpCredentials + label: GCP Credentials + description: | + GCP Credentials. + Paste the JSON content in this field + schema: + type: string + show_if: [["provider", "=", "gcp"]] + required: true + empty: false + + # GoDaddy + - variable: godaddyKey + label: GoDaddy Key + description: GoDaddy Key. + schema: + type: string + show_if: [["provider", "=", "godaddy"]] + required: true + empty: false + - variable: godaddySecret + label: GoDaddy Secret + description: GoDaddy Secret. + schema: + type: string + show_if: [["provider", "=", "godaddy"]] + required: true + empty: false + + # Google + - variable: googleUsername + label: Google Username + description: Google Username. + schema: + type: string + show_if: [["provider", "=", "google"]] + required: true + empty: false + - variable: googlePassword + label: Google Password + description: Google Password. + schema: + type: string + show_if: [["provider", "=", "google"]] + required: true + empty: false + + # He.net + - variable: hePassword + label: He.net Password + description: He.net Password. + schema: + type: string + show_if: [["provider", "=", "he"]] + required: true + empty: false + - variable: heProviderIP + label: He.net Provider IP + description: He.net Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "he"]] + default: false + + # Infomaniak + - variable: infomaniakUsername + label: Infomaniak Username + description: Infomaniak Username. + schema: + type: string + show_if: [["provider", "=", "infomaniak"]] + required: true + empty: false + - variable: infomaniakPassword + label: Infomaniak Password + description: Infomaniak Password. + schema: + type: string + show_if: [["provider", "=", "infomaniak"]] + required: true + empty: false + - variable: infomaniakProviderIP + label: Infomaniak Provider IP + description: Infomaniak Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "infomaniak"]] + default: false + + # INWX + - variable: inwxUsername + label: INWX Username + description: INWX Username. + schema: + type: string + show_if: [["provider", "=", "inwx"]] + required: true + empty: false + - variable: inwxPassword + label: INWX Password + description: INWX Password. + schema: + type: string + show_if: [["provider", "=", "inwx"]] + required: true + empty: false + + # Linode + - variable: linodeToken + label: Linode Token + description: Linode Token. + schema: + type: string + show_if: [["provider", "=", "linode"]] + required: true + empty: false + + # LuaDNS + - variable: luadnsToken + label: LuaDNS Token + description: LuaDNS Token. + schema: + type: string + show_if: [["provider", "=", "luadns"]] + required: true + empty: false + - variable: luadnsEmail + label: LuaDNS Email + description: LuaDNS Email. + schema: + type: string + show_if: [["provider", "=", "luadns"]] + required: true + empty: false + + # Namecheap + - variable: namecheapPassword + label: Namecheap Password + description: Namecheap Password. + schema: + type: string + show_if: [["provider", "=", "namecheap"]] + required: true + empty: false + - variable: namecheapProviderIP + label: Namecheap Provider IP + description: Namecheap Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "namecheap"]] + default: false + + # Njalla + - variable: njallaKey + label: Njalla Key + description: Njalla Key. + schema: + type: string + show_if: [["provider", "=", "njalla"]] + required: true + empty: false + - variable: njallaProviderIP + label: Njalla Provider IP + description: Njalla Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "njalla"]] + default: false + + # NoIP + - variable: noipUsername + label: NoIP Username + description: NoIP Username. + schema: + type: string + show_if: [["provider", "=", "noip"]] + required: true + empty: false + - variable: noipPassword + label: NoIP Password + description: NoIP Password. + schema: + type: string + show_if: [["provider", "=", "noip"]] + required: true + empty: false + - variable: noipProviderIP + label: NoIP Provider IP + description: NoIP Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "noip"]] + default: false + + # OpenDNS + - variable: opendnsUsername + label: OpenDNS Username + description: OpenDNS Username. + schema: + type: string + show_if: [["provider", "=", "opendns"]] + required: true + empty: false + - variable: opendnsPassword + label: OpenDNS Password + description: OpenDNS Password. + schema: + type: string + show_if: [["provider", "=", "opendns"]] + required: true + empty: false + - variable: opendnsProviderIP + label: OpenDNS Provider IP + description: OpenDNS Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "opendns"]] + default: false + + # OVH + - variable: ovhMode + label: OVH Mode + description: OVH Mode. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + default: dynamic + required: true + enum: + - value: dynamic + description: Dynamic + - value: api + description: API + - variable: ovhUsername + label: OVH Username + description: OVH Username. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + - variable: ovhPassword + label: OVH Password + description: OVH Password. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + - variable: ovhApiEndpoint + label: OVH API Endpoint + description: OVH API Endpoint. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + default: ovh-eu + - variable: ovhAppKey + label: OVH Application Key + description: OVH Application Key. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + - variable: ovhAppSecret + label: OVH Application Secret + description: OVH Application Secret. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + - variable: ovhConsumerKey + label: OVH Consumer Key + description: OVH Consumer Key. + schema: + type: string + show_if: [["provider", "=", "ovh"]] + + # Porkbun + - variable: porkbunApiKey + label: Porkbun API Key + description: Porkbun API Key. + schema: + type: string + show_if: [["provider", "=", "porkbun"]] + required: true + empty: false + - variable: porkbunSecretApiKey + label: Porkbun Secret API Key + description: Porkbun Secret API Key. + schema: + type: string + show_if: [["provider", "=", "porkbun"]] + required: true + empty: false + - variable: porkbunTtl + label: Porkbun TTL + description: Porkbun TTL. + schema: + type: int + show_if: [["provider", "=", "porkbun"]] + default: 3600 + + # Selfhost.de + - variable: selfhostdeUsername + label: Selfhost.de Username + description: Selfhost.de Username. + schema: + type: string + show_if: [["provider", "=", "selfhost.de"]] + required: true + empty: false + - variable: selfhostdePassword + label: Selfhost.de Password + description: Selfhost.de Password. + schema: + type: string + show_if: [["provider", "=", "selfhost.de"]] + required: true + empty: false + - variable: selfhostdeProviderIP + label: Selfhost.de Provider IP + description: Selfhost.de Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "selfhost.de"]] + default: false + + # Servercow + - variable: servercowUsername + label: Servercow Username + description: Servercow Username. + schema: + type: string + show_if: [["provider", "=", "servercow"]] + required: true + empty: false + - variable: servercowPassword + label: Servercow Password + description: Servercow Password. + schema: + type: string + show_if: [["provider", "=", "servercow"]] + required: true + empty: false + - variable: servercowTtl + label: Servercow TTL + description: Servercow TTL. + schema: + type: int + show_if: [["provider", "=", "servercow"]] + default: 120 + - variable: servercowProviderIP + label: Servercow Provider IP + description: Servercow Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "servercow"]] + default: false + + # Spdyn.de + - variable: spdynToken + label: Spdyn.de Token + description: Spdyn.de Token. + schema: + type: string + show_if: [["provider", "=", "spdyn"]] + required: true + empty: false + - variable: spdynUsername + label: Spdyn.de Username + description: Spdyn.de Username. + schema: + type: string + show_if: [["provider", "=", "spdyn"]] + required: true + empty: false + - variable: spdynPassword + label: Spdyn.de Password + description: Spdyn.de Password. + schema: + type: string + show_if: [["provider", "=", "spdyn"]] + required: true + empty: false + - variable: spdynProviderIP + label: Spdyn.de Provider IP + description: Spdyn.de Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "spdyn"]] + default: false + + # Strato + - variable: stratoPassword + label: Strato Password + description: Strato Password. + schema: + type: string + show_if: [["provider", "=", "strato"]] + required: true + empty: false + - variable: stratoProviderIP + label: Strato Provider IP + description: Strato Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "strato"]] + default: false + + # Variomedia + - variable: variomediaPassword + label: Variomedia Password + description: Variomedia Password. + schema: + type: string + show_if: [["provider", "=", "variomedia"]] + required: true + empty: false + - variable: variomediaEmail + label: Variomedia Email + description: Variomedia Email. + schema: + type: string + show_if: [["provider", "=", "variomedia"]] + required: true + empty: false + - variable: variomediaProviderIP + label: Variomedia Provider IP + description: Variomedia Provider IP. + schema: + type: boolean + show_if: [["provider", "=", "variomedia"]] + default: false + + - variable: period + label: Update Period + description: | + Default period of IP address check, following this format: + 5m = 5 minutes + 1h = 1 hour + 1h30m = 1 hour 30 minutes + schema: + type: string + default: 5m + required: true + - variable: updateCooldownPeriod + label: Update Cooldown Period + description: | + Duration to cooldown between updates for each record. + This is useful to avoid being rate limited or banned, + following this format: + 5m = 5 minutes + 1h = 1 hour + 1h30m = 1 hour 30 minutes + schema: + type: string + default: 5m + required: true + - variable: backupPeriod + label: Backup Period + description: | + Set to a period to enable zip backups of data/config.json and + data/updates.json in a zip file following this format: + 0 = disabled + 10h = 10 hours + 20h30m = 20 hours 30 minutes + schema: + type: string + default: 24h + required: true + - variable: httpTimeout + label: HTTP Timeout + description: | + Default timeout for HTTP requests, following this format: + 10s = 10 seconds + 1m = 1 minute + 1m30s = 1 minute 30 seconds + schema: + type: string + default: 10s + required: true + - variable: publicIpDnsTimeout + label: Public IP DNS Timeout + description: | + Public IP DNS query timeout, following this format: + 3s = 3 seconds + 1m = 1 minute + 1m30s = 1 minute 30 seconds + schema: + type: string + default: 3s + required: true + - variable: shoutrrrAddresses + label: Shoutrrr Addresses + description: | + List of Shoutrrr addresses to send notifications to. + See https://containrrr.dev/shoutrrr/0.7/services/overview/ for more information. + schema: + type: list + default: [] + items: + - variable: address + label: Address + schema: + type: string + required: true + empty: false + - variable: publicIpDnsProviders + label: Public IP DNS Providers + description: Providers to obtain the public IP address (IPv4 and/or IPv6) + schema: + type: list + min: 1 + required: true + empty: false + default: [{"provider": "all", "placeholder": "placeholder"}] + items: + - variable: publicIpDnsProviderEntry + label: Public IP DNS Provider Entry + schema: + type: dict + attrs: + - variable: provider + label: Provider + schema: + type: string + required: true + enum: + - value: all + description: All providers + - value: google + description: Google + - value: cloudflare + description: Cloudflare + # Workaround for a UI bug that is fixed in the next release + # (Single items in a dict inside a list was getting converted to a list of strings) + - variable: placeholder + label: placeholder + schema: + type: string + default: placeholder + required: true + hidden: true + - variable: publicIpHttpProviders + label: Public IP HTTP Providers + description: Providers to obtain the public IP address (IPv4 and/or IPv6) + schema: + type: list + min: 1 + required: true + empty: false + default: [{"provider": "all", "custom": ""}] + items: + - variable: publicIpHttpProviderEntry + label: Public IP HTTP Provider Entry + schema: + type: dict + attrs: + - variable: provider + label: Provider + schema: + type: string + required: true + enum: + - value: all + description: All providers + - value: opendns + description: opendns + - value: ifconfig + description: ifconfig + - value: ipinfo + description: ipinfo + - value: ddnss + description: ddnss + - value: google + description: google + - value: custom + description: Custom Provider + - variable: custom + label: Custom Value + schema: + type: string + show_if: [["provider", "=", "custom"]] + default: "" + required: true + - variable: publicIpv4HttpProviders + label: Public IPv4 HTTP Providers + description: Providers to obtain the public IPv4 address + schema: + type: list + min: 1 + required: true + empty: false + default: [{"provider": "all", "custom": ""}] + items: + - variable: publicIpv4HttpProviderEntry + label: Public IPv4 HTTP Provider Entry + schema: + type: dict + attrs: + - variable: provider + label: Provider + schema: + type: string + required: true + enum: + - value: all + description: All providers + - value: ipify + description: ipify + - value: noip + description: noip + - value: custom + description: Custom Provider + - variable: custom + label: Custom Value + schema: + type: string + show_if: [["provider", "=", "custom"]] + default: "" + required: true + - variable: publicIpv6HttpProviders + label: Public IPv6 HTTP Providers + description: Providers to obtain the public IPv6 address + schema: + type: list + min: 1 + required: true + empty: false + default: [{"provider": "all", "custom": ""}] + items: + - variable: publicIpv6HttpProviderEntry + label: Public IPv6 HTTP Provider Entry + schema: + type: dict + attrs: + - variable: provider + label: Provider + schema: + type: string + required: true + enum: + - value: all + description: All providers + - value: ipify + description: ipify + - value: noip + description: noip + - value: custom + description: Custom Provider + - variable: custom + label: Custom Value + schema: + type: string + show_if: [["provider", "=", "custom"]] + default: "" + required: true + - variable: publicIpFetchers + label: Public IP Fetchers + description: Fetcher types to obtain the public IP address + schema: + type: list + min: 1 + required: true + empty: false + default: [{"provider": "all", "placeholder": "placeholder"}] + items: + - variable: publicIpFetcherEntry + label: Public IP Fetcher Entry + schema: + type: dict + attrs: + - variable: provider + label: Fetcher + schema: + type: string + required: true + enum: + - value: all + description: All providers + - value: http + description: HTTP + - value: dns + description: DNS + # Workaround for a UI bug that is fixed in the next release + # (Single items in a dict inside a list was getting converted to a list of strings) + - variable: placeholder + label: placeholder + schema: + type: string + default: placeholder + required: true + hidden: true + + + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for DDNS Updater. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: ddnsRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that DDNS Updater will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that DDNS Updater will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: ddnsNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the DDNS Updater Web UI. + schema: + type: int + default: 30000 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled. + schema: + type: boolean + default: false + + - variable: ddnsStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: data + label: DDNS Updater Data Storage + description: The path to store DDNS Updater Data. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system. + Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "data" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for DDNS Updater. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for DDNS Updater. + schema: + type: string + default: "8Gi" + required: true diff --git a/community/ddns-updater/1.0.0/templates/NOTES.txt b/community/ddns-updater/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/ddns-updater/1.0.0/templates/_configuration.tpl b/community/ddns-updater/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..893310ddb1 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/_configuration.tpl @@ -0,0 +1,65 @@ +{{- define "ddns.configuration" -}} +{{- include "ddns.validation" $ }} + +configmap: + ddns-config: + enabled: true + data: + PERIOD: {{ .Values.ddnsConfig.period | quote }} + HTTP_TIMEOUT: {{ .Values.ddnsConfig.httpTimeout | quote }} + BACKUP_PERIOD: {{ .Values.ddnsConfig.backupPeriod | quote }} + UPDATE_COOLDOWN_PERIOD: {{ .Values.ddnsConfig.updateCooldownPeriod | quote }} + SHOUTRRR_ADDRESSES: {{ join "," .Values.ddnsConfig.shoutrrrAddresses | quote }} + PUBLICIP_DNS_TIMEOUT: {{ .Values.ddnsConfig.publicIpDnsTimeout | quote }} + PUBLICIP_DNS_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpDnsProviders) }} + PUBLICIP_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpHttpProviders) }} + PUBLICIPV4_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpv4HttpProviders) }} + PUBLICIPV6_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpv6HttpProviders) }} + PUBLICIP_FETCHERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpFetchers) }} + {{ $config := include "ddns.generateConfig" $ | fromYaml }} + CONFIG: {{ $config | toJson | quote }} +{{- end -}} + +{{- define "ddns.getPublicIpProviders" -}} + {{- $providerList := .providerList -}} + {{- $return := list -}} + + {{- range $providerList -}} + {{- if eq .provider "custom" -}} + {{- $return = append $return .custom -}} + {{- else -}} + {{- $return = append $return .provider -}} + {{- end -}} + {{- end -}} + + {{- join "," $return -}} +{{- end -}} + +{{/* Generates configuration in yaml + and then it gets converted to single line + JSON and passed as an env variable +*/}} +{{- define "ddns.generateConfig" -}} +{{- if not .Values.ddnsConfig.config -}} + {{- fail "DDNS Updater - Expected at least 1 item in DNS Provider COnfiguration" -}} +{{- end -}} +{{- $providers := (list "aliyun" "allinkl" "cloudflare" "dd24" "ddnss" "digitalocean" + "dnsomatic" "dnspod" "dondominio" "dreamhost" "duckdns" "dyn" + "dynu" "dynv6" "freedns" "gandi" "gcp" "godaddy" "google" "he" + "infomaniak" "inwx" "linode" "luadns" "namecheap" "njalla" "noip" + "opendns" "ovh" "porkbun" "selfhost.de" "servercow" "spdyn" + "strato" "variomedia") }} +settings: + {{- range $item := .Values.ddnsConfig.config -}} + {{- if not (mustHas $item.provider $providers) -}} + {{- fail (printf "DDNS Updater - DNS Provider [%v] is not supported" $item.provider) -}} + {{- end }} + - provider: {{ $item.provider }} + host: {{ $item.host | required (printf "DDNS Updater - Expected non-empty [Host] for %v provider" $item.provider) | quote }} + domain: {{ $item.domain | required (printf "DDNS Updater - Expected non-empty [Domain] for %v provider" $item.provider) | quote }} + ip_version: {{ $item.ipVersion | default "" | quote }} + {{- include (printf "ddns.config.%v" $item.provider) (dict "item" $item) | trim | nindent 4 -}} + {{- end -}} +{{- end -}} + +{{/* TODO: OVH */}} diff --git a/community/ddns-updater/1.0.0/templates/_ddns.tpl b/community/ddns-updater/1.0.0/templates/_ddns.tpl new file mode 100644 index 0000000000..6d18f322fb --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/_ddns.tpl @@ -0,0 +1,85 @@ +{{- define "ddns.workload" -}} +workload: + ddns: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.ddnsNetwork.hostNetwork }} + containers: + ddns: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.ddnsRunAs.user }} + runAsGroup: {{ .Values.ddnsRunAs.group }} + env: + LISTENING_PORT: {{ .Values.ddnsNetwork.webPort }} + DATADIR: /updater/data + BACKUP_DIRECTORY: /updater/data + envFrom: + - configMapRef: + name: ddns-config + envList: + {{ with .Values.ddnsConfig.additionalEnvs }} + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: {{ not .Values.ci }} + type: exec + command: + - /updater/app + - healthcheck + readiness: + enabled: {{ not .Values.ci }} + type: exec + command: + - /updater/app + - healthcheck + startup: + enabled: {{ not .Values.ci }} + type: exec + command: + - /updater/app + - healthcheck + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.ddnsRunAs.user + "GID" .Values.ddnsRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + ddns: + enabled: true + primary: true + type: NodePort + targetSelector: ddns + ports: + webui: + enabled: true + primary: true + port: {{ .Values.ddnsNetwork.webPort }} + nodePort: {{ .Values.ddnsNetwork.webPort }} + targetSelector: ddns + +{{/* Persistence */}} +persistence: + data: + enabled: true + type: {{ .Values.ddnsStorage.data.type }} + datasetName: {{ .Values.ddnsStorage.data.datasetName | default "" }} + hostPath: {{ .Values.ddnsStorage.data.hostPath | default "" }} + targetSelector: + ddns: + ddns: + mountPath: /updater/data + 01-permissions: + mountPath: /mnt/directories/data +{{- end -}} diff --git a/community/ddns-updater/1.0.0/templates/_portal.tpl b/community/ddns-updater/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..cbccb2518f --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "ddns.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.ddnsNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/ddns-updater/1.0.0/templates/_validation.tpl b/community/ddns-updater/1.0.0/templates/_validation.tpl new file mode 100644 index 0000000000..8a9d0cbf47 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/_validation.tpl @@ -0,0 +1,56 @@ +{{- define "ddns.validation" -}} + {{- include "ddns.validatePublicIpProviders" (dict "text" "Public IP DNS Providers" + "list" .Values.ddnsConfig.publicIpDnsProviders + "valid" (list "all" "cloudflare" "google")) -}} + + {{- include "ddns.validatePublicIpProviders" (dict "text" "Public IP HTTP Providers" + "list" .Values.ddnsConfig.publicIpHttpProviders + "valid" (list "all" "custom" "opendns" "ifconfig" "ipinfo" "ddnss" "google")) -}} + + {{- include "ddns.validatePublicIpProviders" (dict "text" "Public IPv4 HTTP Providers" + "list" .Values.ddnsConfig.publicIpv4HttpProviders + "valid" (list "all" "custom" "ipify" "noip")) -}} + + {{- include "ddns.validatePublicIpProviders" (dict "text" "Public IPv6 HTTP Providers" + "list" .Values.ddnsConfig.publicIpv6HttpProviders + "valid" (list "all" "custom" "ipify" "noip")) -}} + + {{- include "ddns.validatePublicIpProviders" (dict "text" "Public IP Fetchers" + "list" .Values.ddnsConfig.publicIpFetchers + "valid" (list "all" "http" "dns")) -}} +{{- end -}} + +{{- define "ddns.validatePublicIpProviders" -}} + {{- $text := .text -}} + {{- $list := .list -}} + {{- $valid := .valid -}} + {{- $type := .type -}} + + {{- if not $list -}} + {{- fail (printf "DDNS Updater - Expected non-empty [%v]" $text) -}} + {{- end -}} + + {{- $userProviders := list -}} + {{- range $list -}} + {{- if mustHas .provider $userProviders -}} + {{- fail (printf "DDNS Updater - Expected unique values in [%v], but got [%v] more than once" $text .provider) -}} + {{- end -}} + {{- $userProviders = mustAppend $userProviders .provider -}} + + {{- if not (mustHas .provider $valid) -}} + {{- fail (printf "DDNS Updater - [%v] valid values are [%v], but got [%v]" $text (join ", " $valid) .provider) -}} + {{- end -}} + + {{- if eq .provider "all" -}} + {{- if ne (len $list) 1 -}} + {{- fail (printf "DDNS Updater - [%v] cannot contain other values when [all] is selected" $text) -}} + {{- end -}} + {{- end -}} + + {{- if eq .provider "custom" -}} + {{- if not .custom -}} + {{- fail (printf "DDNS Updater - [%v] expected non-empty [Custom Value]" $text) -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/community/ddns-updater/1.0.0/templates/common.yaml b/community/ddns-updater/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..f74e6d2b57 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/common.yaml @@ -0,0 +1,10 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "ddns.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "ddns.configuration" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "ddns.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_aliyun.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_aliyun.tpl new file mode 100644 index 0000000000..b3d82fcf82 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_aliyun.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/aliyun.md */}} +{{- define "ddns.config.aliyun" -}} + {{- $item := .item }} +access_key_id: {{ $item.aliyunAccessKey | required "DDNS Updater - Expected non-empty [Access Key] for Aliyun provider" }} +access_secret: {{ $item.aliyunSecret | required "DDNS Updater - Expected non-empty [Secret] for Aliyun provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: aliyun - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + aliyunAccessKey: key - Required + aliyunSecret: secret - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_allinkl.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_allinkl.tpl new file mode 100644 index 0000000000..ceb779458c --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_allinkl.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/allinkl.md */}} +{{- define "ddns.config.allinkl" -}} + {{- $item := .item }} +username: {{ $item.allinklUsername | required "DDNS Updater - Expected non-empty [Username] for All-Inkl provider" }} +password: {{ $item.allinklPassword | required "DDNS Updater - Expected non-empty [Password] for All-Inkl provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: allinkl - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + allinklUsername: user - Required + allinklPassword: password - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_cloudflare.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_cloudflare.tpl new file mode 100644 index 0000000000..1574a75aa7 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_cloudflare.tpl @@ -0,0 +1,39 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/cloudflare.md */}} +{{- define "ddns.config.cloudflare" -}} + {{- $item := .item }} +zone_identifier: {{ $item.cloudflareZoneID | required "DDNS Updater - Expected non-empty [Zone Identifier] for Cloudflare provider" }} +ttl: {{ $item.cloudflareTtl | required "DDNS Updater - Expected non-empty [TTL] for Cloudflare provider" }} +proxied: {{ $item.cloudflareProxied | default false }} +{{- if $item.cloudflareToken }} +token: {{ $item.cloudflareToken }} +{{- else if $item.cloudflareUserServiceKey }} +user_service_key: {{ $item.cloudflareUserServiceKey }} +{{- else if and $item.cloudflareEmail $item.cloudflareApiKey }} +email: {{ $item.cloudflareEmail }} +api_key: {{ $item.cloudflareApiKey }} +{{- else -}} + {{- fail "DDNS Updater - Cloudflare provider requires either [Token] or [User Service Key] or [Email and API Key]" -}} +{{- end -}} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: cloudflare - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@") + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + cloudflareZoneID: id - Required + cloudflareTtl: 1 - Required - Valid values (>=1) + cloudflareProxied: false - Required - Valid values (true/false) + + # One of the following is required + # Token + cloudflareToken: token - Required + + # User service key + cloudflareUserServiceKey: user_service_key - Required + + # Email and API key + cloudflareEmail: email - Required + cloudflareApiKey: api_key - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dd24.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dd24.tpl new file mode 100644 index 0000000000..f0f542f3bc --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dd24.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dd24.md */}} +{{- define "ddns.config.dd24" -}} + {{- $item := .item }} +password: {{ $item.dd24Password | required "DDNS Updater - Expected non-empty [Password] for dd24 provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dd24 - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dd24Password: pass - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_ddnss.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_ddnss.tpl new file mode 100644 index 0000000000..d1c6877996 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_ddnss.tpl @@ -0,0 +1,22 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/ddnss.md */}} +{{- define "ddns.config.ddnss" -}} + {{- $item := .item }} +username: {{ $item.ddnssUsername | required "DDNS Updater - Expected non-empty [Username] for DDNSS provider" }} +password: {{ $item.ddnssPassword | required "DDNS Updater - Expected non-empty [Password] for DDNSS provider" }} +provider_ip: {{ $item.ddnssProviderIP }} +{{- if not $item.ddnssProviderIP }} +dual_stack: {{ $item.ddnssDualStack | default false }} +{{- end -}} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: ddnss - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + ddnssUsername: user - Required + ddnssPassword: password - Required + ddnssProviderIP: true - Required - Valid values (true/false) + ddnssDualStack: false - Optional - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_digitalocean.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_digitalocean.tpl new file mode 100644 index 0000000000..11c0d3789f --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_digitalocean.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/digitalocean.md */}} +{{- define "ddns.config.digitalocean" -}} + {{- $item := .item }} +token: {{ $item.digitalOceanToken | required "DDNS Updater - Expected non-empty [Token] for Digital Ocean provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: digitalocean - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + digitalOceanToken: token - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsPod.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsPod.tpl new file mode 100644 index 0000000000..315ad259db --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsPod.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dnspod.md */}} +{{- define "ddns.config.dnspod" -}} + {{- $item := .item }} +token: {{ $item.dnsPodToken | required "DDNS Updater - Expected non-empty [Token] for DNS Pod provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dnspod - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dnsPodToken: token - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsomatic.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsomatic.tpl new file mode 100644 index 0000000000..519fa4a855 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dnsomatic.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dnsomatic.md */}} +{{- define "ddns.config.dnsomatic" -}} + {{- $item := .item }} +username: {{ $item.dnsOMaticUsername | required "DDNS Updater - Expected non-empty [Username] for DNS O Matic provider" }} +password: {{ $item.dnsOMaticPassword | required "DDNS Updater - Expected non-empty [Password] for DNS O Matic provider" }} +provider_ip: {{ $item.dnsOMaticProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dnsomatic - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dnsOMaticUsername: user - Required + dnsOMaticPassword: pass - Required + dnsOMaticProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dondominio.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dondominio.tpl new file mode 100644 index 0000000000..6f9a147a0c --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dondominio.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dondominio.md */}} +{{- define "ddns.config.dondominio" -}} + {{- $item := .item }} +username: {{ $item.donDominioUsername | required "DDNS Updater - Expected non-empty [Username] for Don Dominio provider" }} +password: {{ $item.donDominioPassword | required "DDNS Updater - Expected non-empty [Password] for Don Dominio provider" }} +name: {{ $item.donDominioName | required "DDNS Updater - Expected non-empty [Name] for Don Dominio provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dondominio - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + donDominioUsername: user - Required + donDominioPassword: pass - Required + donDominioName: name - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dreamhost.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dreamhost.tpl new file mode 100644 index 0000000000..e16d659f81 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dreamhost.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dreamhost.md */}} +{{- define "ddns.config.dreamhost" -}} + {{- $item := .item }} +key: {{ $item.dreamHostKey | required "DDNS Updater - Expected non-empty [Key] for Dreamhost provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dreamhost - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dreamHostKey: key - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_duckdns.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_duckdns.tpl new file mode 100644 index 0000000000..5b224a1ca7 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_duckdns.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/duckdns.md */}} +{{- define "ddns.config.duckdns" -}} + {{- $item := .item }} +token: {{ $item.duckdnsToken | required "DDNS Updater - Expected non-empty [Token] for DuckDNS provider" }} +provider_ip: {{ $item.duckdnsProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: duckdns - Required + domain: "example.com" - Required + host: "subdomain" - Required - Valid value (subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + duckdnsToken: token - Required + duckdnsProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dyndns.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dyndns.tpl new file mode 100644 index 0000000000..ac51904e5f --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dyndns.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/d-updater/blob/master/docs/dyndns.md */}} +{{- define "ddns.config.dyn" -}} + {{- $item := .item }} +client_key: {{ $item.dynClientKey | required "DDNS Updater - Expected non-empty [Client Key] for DynDNS provider" }} +username: {{ $item.dynUsername | required "DDNS Updater - Expected non-empty [Username] for DynDNS provider" }} +provider_ip: {{ $item.dynProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dyn - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dynClientKey: key - Required + dynUsername: username - Required + dynProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dynu.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dynu.tpl new file mode 100644 index 0000000000..3688e2f41f --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dynu.tpl @@ -0,0 +1,22 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dynu.md */}} +{{- define "ddns.config.dynu" -}} + {{- $item := .item }} +username: {{ $item.dynuUsername | required "DDNS Updater - Expected non-empty [Username] for Dynu provider" }} +password: {{ $item.dynuPassword | required "DDNS Updater - Expected non-empty [Password] for Dynu provider" }} +{{- if $item.dynuGroup }} +group: {{ $item.dynuGroup }} +{{- end }} +provider_ip: {{ $item.dynuProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dynu - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dynuUsername: username - Required + dynuPassword: password - Required + dynuGroup: group - Optional + dynuProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_dynv6.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_dynv6.tpl new file mode 100644 index 0000000000..6a16561239 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_dynv6.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/dynv6.md */}} +{{- define "ddns.config.dynv6" -}} + {{- $item := .item }} +token: {{ $item.dynv6Token | required "DDNS Updater - Expected non-empty [Token] for DynV6 provider" }} +provider_ip: {{ $item.dynv6ProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: dynu - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + dynv6Token: token - Required + dynv6ProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_freedns.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_freedns.tpl new file mode 100644 index 0000000000..b39f8db12e --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_freedns.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/freedns.md */}} +{{- define "ddns.config.freedns" -}} + {{- $item := .item }} +token: {{ $item.freeDnsToken | required "DDNS Updater - Expected non-empty [Token] for FreeDNS provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: freedns - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + freeDnsToken: token - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_gandi.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_gandi.tpl new file mode 100644 index 0000000000..26451ad2b8 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_gandi.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/gandi.md */}} +{{- define "ddns.config.gandi" -}} + {{- $item := .item }} +key: {{ $item.gandiKey | required "DDNS Updater - Expected non-empty [Key] for Gandi provider" }} +ttl: {{ $item.gandiTtl | required "DDNS Updater - Expected non-empty [TTL] for Gandi provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: gandi - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + gandiKey: key - Required + gandiTtl: 3600 - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_gcp.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_gcp.tpl new file mode 100644 index 0000000000..f02b2f201b --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_gcp.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/gcp.md */}} +{{- define "ddns.config.gcp" -}} + {{- $item := .item }} +project: {{ $item.gcpProject | required "DDNS Updater - Expected non-empty [Project] for GCP provider" }} +zone: {{ $item.gcpZone | required "DDNS Updater - Expected non-empty [Zone] for GCP provider" }} +credentials: {{ $item.gcpCredentials | required "DDNS Updater - Expected non-empty [Credentials] for GCP provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: gcp - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + gcpProject: my-project-id - Required + gcpZone: my-zone - Required + gcpCredentials: '{"type": "service_account", ...}' - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_godaddy.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_godaddy.tpl new file mode 100644 index 0000000000..0094176a96 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_godaddy.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/godaddy.md */}} +{{- define "ddns.config.godaddy" -}} + {{- $item := .item }} +key: {{ $item.godaddyKey | required "DDNS Updater - Expected non-empty [Key] for GoDaddy provider" }} +secret: {{ $item.godaddySecret | required "DDNS Updater - Expected non-empty [TTL] for GoDaddy provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: godaddy - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + godaddyKey: key - Required + godaddySecret: secret - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_google.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_google.tpl new file mode 100644 index 0000000000..a6a1fea707 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_google.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/google.md */}} +{{- define "ddns.config.google" -}} + {{- $item := .item }} +username: {{ $item.googleUsername | required "DDNS Updater - Expected non-empty [Username] for Google provider" }} +password: {{ $item.googlePassword | required "DDNS Updater - Expected non-empty [Password] for Google provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: google - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + googleUsername: username - Required + googlePassword: password - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_he.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_he.tpl new file mode 100644 index 0000000000..8b06940e53 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_he.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/he.net.md */}} +{{- define "ddns.config.he" -}} + {{- $item := .item }} +password: {{ $item.hePassword | required "DDNS Updater - Expected non-empty [Password] for He.net provider" }} +provider_ip: {{ $item.heProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: he - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + hePassword: password - Required + heProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_infomaniak.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_infomaniak.tpl new file mode 100644 index 0000000000..384cdafbd4 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_infomaniak.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/infomaniak.md */}} +{{- define "ddns.config.infomaniak" -}} + {{- $item := .item }} +username: {{ $item.infomaniakUsername | required "DDNS Updater - Expected non-empty [Username] for Infomaniak provider" }} +password: {{ $item.infomaniakPassword | required "DDNS Updater - Expected non-empty [Password] for Infomaniak provider" }} +provider_ip: {{ $item.infomaniakProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: infomaniak - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + infomaniakUsername: user - Required + infomaniakPassword: password - Required + infomaniakProviderIP: true - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_inwx.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_inwx.tpl new file mode 100644 index 0000000000..a9b01f3826 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_inwx.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/inwx.md */}} +{{- define "ddns.config.inwx" -}} + {{- $item := .item }} +username: {{ $item.inwxUsername | required "DDNS Updater - Expected non-empty [Username] for INWX provider" }} +password: {{ $item.inwxPassword | required "DDNS Updater - Expected non-empty [Password] for INWX provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: inwx - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + inwxUsername: user - Required + inwxPassword: password - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_linode.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_linode.tpl new file mode 100644 index 0000000000..7ceac4924a --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_linode.tpl @@ -0,0 +1,14 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/linode.md */}} +{{- define "ddns.config.linode" -}} + {{- $item := .item }} +token: {{ $item.linodeToken | required "DDNS Updater - Expected non-empty [Token] for Linode provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: linode - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + linodeToken: token - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_luadns.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_luadns.tpl new file mode 100644 index 0000000000..e6708bc055 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_luadns.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/luadns.md */}} +{{- define "ddns.config.luadns" -}} + {{- $item := .item }} +token: {{ $item.luadnsToken | required "DDNS Updater - Expected non-empty [Token] for LuaDNS provider" }} +email: {{ $item.luadnsEmail | required "DDNS Updater - Expected non-empty [Email] for LuaDNS provider" }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: luadns - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + luadnsToken: token - Required + luadnsEmail: email@example.com - Required +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_namecheap.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_namecheap.tpl new file mode 100644 index 0000000000..7fef823e6c --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_namecheap.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/namecheap.md */}} +{{- define "ddns.config.namecheap" -}} + {{- $item := .item }} +password: {{ $item.namecheapPassword | required "DDNS Updater - Expected non-empty [Password] for Namecheap provider" }} +provider_ip: {{ $item.namecheapProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: namecheap - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + namecheapPassword: password - Required + namecheapProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_njalla.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_njalla.tpl new file mode 100644 index 0000000000..03b07eb950 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_njalla.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/njalla.md */}} +{{- define "ddns.config.njalla" -}} + {{- $item := .item }} +key: {{ $item.njallaKey | required "DDNS Updater - Expected non-empty [Key] for Njalla provider" }} +provider_ip: {{ $item.njallaProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: njalla - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + njallaKey: key - Required + njallaProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_noip.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_noip.tpl new file mode 100644 index 0000000000..b50d6184ef --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_noip.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/noip.md */}} +{{- define "ddns.config.noip" -}} + {{- $item := .item }} +username: {{ $item.noipUsername | required "DDNS Updater - Expected non-empty [Username] for NoIP provider" }} +password: {{ $item.noipPassword | required "DDNS Updater - Expected non-empty [Password] for NoIP provider" }} +provider_ip: {{ $item.noipProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: noip - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + noipUsername: username - Required + noipPassword: password - Required + noipProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_opendns.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_opendns.tpl new file mode 100644 index 0000000000..965c97b501 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_opendns.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/opendns.md */}} +{{- define "ddns.config.opendns" -}} + {{- $item := .item }} +username: {{ $item.opendnsUsername | required "DDNS Updater - Expected non-empty [Username] for OpenDNS provider" }} +password: {{ $item.opendnsPassword | required "DDNS Updater - Expected non-empty [Password] for OpenDNS provider" }} +provider_ip: {{ $item.opendnsProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: opendns - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + opendnsUsername: username - Required + opendnsPassword: password - Required + opendnsProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_ovh.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_ovh.tpl new file mode 100644 index 0000000000..6a4af7f8c3 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_ovh.tpl @@ -0,0 +1,38 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/ovh.md */}} +{{- define "ddns.config.ovh" -}} + {{- $item := .item }} +mode: {{ $item.ovhMode | required "DDNS Updater - Expected non-empty [Mode] for OVH provider" }} +{{- if eq $item.ovhMode "dynamic" }} +username: {{ $item.ovhUsername | required "DDNS Updater - Expected non-empty [Username] for OVH provider on [dynamic] mode" }} +password: {{ $item.ovhPassword | required "DDNS Updater - Expected non-empty [Password] for OVH provider on [dynamic] mode" }} +{{- else if eq $item.ovhMode "api" }} +api_endpoint: {{ $item.ovhApiEndpoint | required "DDNS Updater - Expected non-empty [API Endpoint] for OVH provider on [api] mode" }} +app_key: {{ $item.ovhAppKey | required "DDNS Updater - Expected non-empty [App Key] for OVH provider on [api] mode" }} +app_secret: {{ $item.ovhAppSecret | required "DDNS Updater - Expected non-empty [App Secret] for OVH provider on [api] mode"}} +consumer_key: {{ $item.ovhConsumerKey | required "DDNS Updater - Expected non-empty [Consumer Key] for OVH provider on [api] mode" }} +{{- else -}} + {{- fail (printf "DDNS Updater - Expected [Mode] to be one of [Dynamic, API], but got [%v]" $item.ovhMode) -}} +{{- end }} +provider_ip: {{ $item.ovhProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: ovh - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + ovhMode: dynamic - Required - Valid values (dynami/api) + + # Dynamic Mode + ovhUsername: username - Required + ovhPassword: password - Required + + # API Mode + ovhApiEndpoint: endpoint - Required + ovhAppKey: appKey - Required + ovhAppSecret: appSecret - Required + ovhConsumerKey: consumerKey - Required + + ovhProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_porkbun.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_porkbun.tpl new file mode 100644 index 0000000000..a7d59a2d6f --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_porkbun.tpl @@ -0,0 +1,20 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/porkbun.md */}} +{{- define "ddns.config.porkbun" -}} + {{- $item := .item }} +api_key: {{ $item.porkbunApiKey | required "DDNS Updater - Expected non-empty [API Key] for Porkbun provider" }} +secret_api_key: {{ $item.porkbunSecretApiKey | required "DDNS Updater - Expected non-empty [Secret API Key] for Porkbun provider" }} +{{- if $item.porkbunTtl }} +ttl: {{ $item.porkbunTtl }} +{{- end }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: opendns - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + porkbunApiKey: apikey - Required + porkbunSecretApiKey: secretapikey - Required + porkbunTtl: 300 - Optional +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_selfhostde.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_selfhostde.tpl new file mode 100644 index 0000000000..bbd0083f21 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_selfhostde.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/selfhost.de.md */}} +{{- define "ddns.config.selfhost.de" -}} + {{- $item := .item }} +username: {{ $item.selfhostdeUsername | required "DDNS Updater - Expected non-empty [Username] for Selfhost.de provider" }} +password: {{ $item.selfhostdePassword | required "DDNS Updater - Expected non-empty [Password] for Selfhost.de provider" }} +provider_ip: {{ $item.selfhostdeProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: selfhosted.de - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + selfhostdeUsername: username - Required + selfhostdePassword: password - Required + selfhostdeProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_servercow.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_servercow.tpl new file mode 100644 index 0000000000..4deb8ca8f9 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_servercow.tpl @@ -0,0 +1,20 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/servercow.md */}} +{{- define "ddns.config.servercow" -}} + {{- $item := .item }} +username: {{ $item.servercowUsername | required "DDNS Updater - Expected non-empty [Username] for Servercow provider" }} +password: {{ $item.servercowPassword | required "DDNS Updater - Expected non-empty [Password] for Servercow provider" }} +ttl: {{ $item.servercowTtl | required "DDNS Updater - Expected non-empty [TTL] for Servercow provider" }} +provider_ip: {{ $item.servercowProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: servercow - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + servercowUsername: username - Required + servercowPassword: password - Required + servercowTtl: 120 - Required + servercowProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_spdyn.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_spdyn.tpl new file mode 100644 index 0000000000..106b1a1093 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_spdyn.tpl @@ -0,0 +1,30 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/spdyn.md */}} +{{- define "ddns.config.spdyn" -}} + {{- $item := .item }} +{{- if $item.spdynToken }} +token: {{ $item.spdynToken }} +{{- else if and $item.spdynUsername $item.spdynPassword }} +username: {{ $item.spdynUsername }} +password: {{ $item.spdynPassword }} +{{- else -}} + {{- fail "DDNS Updater - Spdyn.de provider requires either [Token] or [Username and Password]" -}} +{{- end }} +provider_ip: {{ $item.spdynProviderIP | default false }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: spdyn - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@") + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + spdynProviderIP: false - Required - Valid values (true/false) + + # One of the following is required + # Token + spdynToken: token + + # Username and Password + spdynUsername: username + spdynPassword: password +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_strato.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_strato.tpl new file mode 100644 index 0000000000..23d1d15786 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_strato.tpl @@ -0,0 +1,16 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/strato.md */}} +{{- define "ddns.config.strato" -}} + {{- $item := .item }} +password: {{ $item.stratoPassword | required "DDNS Updater - Expected non-empty [Password] for Strato provider" }} +provider_ip: {{ $item.stratoProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: strato - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + stratoPassword: password - Required + stratoProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/templates/dnsProviders/_variomedia.tpl b/community/ddns-updater/1.0.0/templates/dnsProviders/_variomedia.tpl new file mode 100644 index 0000000000..214af9c740 --- /dev/null +++ b/community/ddns-updater/1.0.0/templates/dnsProviders/_variomedia.tpl @@ -0,0 +1,18 @@ +{{/* https://github.com/qdm12/ddns-updater/blob/master/docs/variomedia.md */}} +{{- define "ddns.config.variomedia" -}} + {{- $item := .item }} +password: {{ $item.variomediaPassword | required "DDNS Updater - Expected non-empty [Password] for Variomedia provider" }} +email: {{ $item.variomediaEmail | required "DDNS Updater - Expected non-empty [Email] for Variomedia provider" }} +provider_ip: {{ $item.variomediaProviderIP }} +{{- end -}} +{{/* +ddnsConfig: + config: + - provider: strato - Required + domain: "example.com" - Required + host: "@" - Required - Valid value ("@" or subdomain) + ipVersion: "" - Required - Valid values (ipv4/ipv6/"") + variomediaPassword: password - Required + variomediaEmail: email - Required + variomediaProviderIP: false - Required - Valid values (true/false) +*/}} diff --git a/community/ddns-updater/1.0.0/upgrade_strategy_disable b/community/ddns-updater/1.0.0/upgrade_strategy_disable new file mode 100755 index 0000000000..fe8f0f89bb --- /dev/null +++ b/community/ddns-updater/1.0.0/upgrade_strategy_disable @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'latest') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/community/ddns-updater/item.yaml b/community/ddns-updater/item.yaml new file mode 100644 index 0000000000..ec7fc9b879 --- /dev/null +++ b/community/ddns-updater/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/ddnsgopher.svg +categories: + - network +tags: + - ddns + - ddns-updaterWhen application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the
\nRadarrdirectories.\nAfterward, theRadarrcontainer will run as a non-root user (Default:568).\nAll mounted storage(s) will bechowned only if the parent directory does not match the configured user.