From 178fa6002ac5bd955a0151eab4ead0e700adb2e2 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Tue, 11 Apr 2023 15:36:31 +0000 Subject: [PATCH] Update catalog information --- catalog.json | 21 +- community/adguard-home/1.0.0/Chart.lock | 6 + community/adguard-home/1.0.0/Chart.yaml | 25 +++ community/adguard-home/1.0.0/README.md | 12 ++ community/adguard-home/1.0.0/app-readme.md | 12 ++ .../1.0.0/charts/common-1.0.3.tgz | Bin 0 -> 54259 bytes .../adguard-home/1.0.0/ci/basic-values.yaml | 7 + community/adguard-home/1.0.0/ix_values.yaml | 28 +++ community/adguard-home/1.0.0/questions.yaml | 181 ++++++++++++++++++ .../adguard-home/1.0.0/templates/NOTES.txt | 1 + .../adguard-home/1.0.0/templates/_adguard.tpl | 105 ++++++++++ .../adguard-home/1.0.0/templates/_portal.tpl | 12 ++ .../adguard-home/1.0.0/templates/common.yaml | 9 + community/adguard-home/item.yaml | 4 + 14 files changed, 422 insertions(+), 1 deletion(-) create mode 100644 community/adguard-home/1.0.0/Chart.lock create mode 100644 community/adguard-home/1.0.0/Chart.yaml create mode 100644 community/adguard-home/1.0.0/README.md create mode 100644 community/adguard-home/1.0.0/app-readme.md create mode 100644 community/adguard-home/1.0.0/charts/common-1.0.3.tgz create mode 100644 community/adguard-home/1.0.0/ci/basic-values.yaml create mode 100644 community/adguard-home/1.0.0/ix_values.yaml create mode 100644 community/adguard-home/1.0.0/questions.yaml create mode 100644 community/adguard-home/1.0.0/templates/NOTES.txt create mode 100644 community/adguard-home/1.0.0/templates/_adguard.tpl create mode 100644 community/adguard-home/1.0.0/templates/_portal.tpl create mode 100644 community/adguard-home/1.0.0/templates/common.yaml create mode 100644 community/adguard-home/item.yaml diff --git a/catalog.json b/catalog.json index 5d244fa800..605d517f31 100644 --- a/catalog.json +++ b/catalog.json @@ -49,7 +49,7 @@ "latest_version": "1.0.0", "latest_app_version": "8.7.0", "latest_human_version": "8.7.0_1.0.0", - "last_update": null, + "last_update": "2023-04-11 15:33:26", "name": "elastic-search", "recommended": false, "title": "Elastic Search", @@ -402,6 +402,25 @@ "title": "IPFS", "icon_url": "https://avatars.githubusercontent.com/u/10536621" }, + "adguard-home": { + "app_readme": "

AdGuard Home

\n

During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available.\n(Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port)\nBecause of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI).

\n

If you select a different port in the wizard, the Dashboard will not work initially but\nafter a couple of minutes container will automatically restart and the Dashboard will\nbe available on the port you selected on the TrueNAS SCALE UI.

\n
\n\n
", + "categories": [ + "dns", + "adblock" + ], + "description": "Free and open source, powerful network-wide ads & trackers blocking DNS server.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/community/adguard-home", + "latest_version": "1.0.0", + "latest_app_version": "v0.107.26", + "latest_human_version": "v0.107.26_1.0.0", + "last_update": null, + "name": "adguard-home", + "recommended": false, + "title": "AdGuard Home", + "icon_url": "https://github.com/AdguardTeam/AdGuardHome/raw/master/doc/adguard_home_darkmode.svg" + }, "vaultwarden": { "app_readme": "

Vaultwarden

\n

Vaultwarden Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the Vaultwarden data directory. Afterward, the Vaultwarden container\nwill run as a non-root user (default 568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the Vaultwarden and postgres data directories.

\n
\n

While the option to use Rocket for TLS is there, it is not\nrecommended.\nInstead, use a reverse proxy to handle TLS termination.

\n

Using HTTPS is required for the most of the features to work (correctly).

", "categories": [ diff --git a/community/adguard-home/1.0.0/Chart.lock b/community/adguard-home/1.0.0/Chart.lock new file mode 100644 index 0000000000..f6cdf0a11f --- /dev/null +++ b/community/adguard-home/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.3 +digest: sha256:1a090020cfa582aff29906320874ffe9b543fcc6c2423c281f434514f2653e02 +generated: "2023-04-06T19:01:50.673798323+03:00" diff --git a/community/adguard-home/1.0.0/Chart.yaml b/community/adguard-home/1.0.0/Chart.yaml new file mode 100644 index 0000000000..3698135643 --- /dev/null +++ b/community/adguard-home/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: adguard-home +description: Free and open source, powerful network-wide ads & trackers blocking DNS server. +annotations: + title: AdGuard Home +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 'v0.107.26' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common + version: 1.0.3 +home: https://github.com/AdguardTeam/AdGuardHome +icon: https://github.com/AdguardTeam/AdGuardHome/raw/master/doc/adguard_home_darkmode.svg +sources: + - https://github.com/AdguardTeam/AdGuardHome + - https://github.com/truenas/charts/tree/master/library/ix-dev/community/adguard-home + - https://hub.docker.com/r/adguard/adguardhome +keywords: + - dns + - adblock diff --git a/community/adguard-home/1.0.0/README.md b/community/adguard-home/1.0.0/README.md new file mode 100644 index 0000000000..24a6191698 --- /dev/null +++ b/community/adguard-home/1.0.0/README.md @@ -0,0 +1,12 @@ +# AdGuard Home + +During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available. +(Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port) +Because of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI). + +If you select a different port in the wizard, the Dashboard will not work initially but +after a couple of minutes container will automatically restart and the Dashboard will +be available on the port you selected on the TrueNAS SCALE UI. + +> - AdGuard runs as `root` user. +> - AdGuard runs with host networking enabled. diff --git a/community/adguard-home/1.0.0/app-readme.md b/community/adguard-home/1.0.0/app-readme.md new file mode 100644 index 0000000000..24a6191698 --- /dev/null +++ b/community/adguard-home/1.0.0/app-readme.md @@ -0,0 +1,12 @@ +# AdGuard Home + +During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available. +(Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port) +Because of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI). + +If you select a different port in the wizard, the Dashboard will not work initially but +after a couple of minutes container will automatically restart and the Dashboard will +be available on the port you selected on the TrueNAS SCALE UI. + +> - AdGuard runs as `root` user. +> - AdGuard runs with host networking enabled. diff --git a/community/adguard-home/1.0.0/charts/common-1.0.3.tgz b/community/adguard-home/1.0.0/charts/common-1.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9b2580e5d1085f7844307e814892f625a2bd7d5c GIT binary patch literal 54259 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 r + The configuration for DHCP is done in the AdGuard Home WebUI + schema: + type: boolean + default: false + + - variable: adguardStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: work + label: AdGuard Home Data Storage + description: The path to store AdGuard Home work. + 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: work + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: conf + label: AdGuard Home Configuration Storage + description: The path to store AdGuard Home configuration + 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: conf + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + label: "" + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for AdGuard Home. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for AdGuard Home. + schema: + type: string + default: 8Gi + required: true diff --git a/community/adguard-home/1.0.0/templates/NOTES.txt b/community/adguard-home/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/adguard-home/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/adguard-home/1.0.0/templates/_adguard.tpl b/community/adguard-home/1.0.0/templates/_adguard.tpl new file mode 100644 index 0000000000..98b3adbf19 --- /dev/null +++ b/community/adguard-home/1.0.0/templates/_adguard.tpl @@ -0,0 +1,105 @@ +{{- define "adguard.workload" -}} +workload: + adguard: + enabled: true + primary: true + type: Deployment + podSpec: + # Host network is pretty much a requirement for apps like this. + # Because NodePort can't bind ports like 53(DNS) or 67(DHCP) + # and the majority of devices do not have option to change the port. + hostNetwork: true + containers: + adguard: + enabled: true + primary: true + imageSelector: image + # Args are copied from the official docker image + # So we can also specify the port. + # If we dont specify the port here, AdGuardHome + # will start initially at port 3000 and after + # the setup wizard is completed it will switch + # to user specified port. + args: + - --no-check-update + - --host + - "0.0.0.0" + - --config + - /opt/adguardhome/conf/AdGuardHome.yaml + - --work-dir + - /opt/adguardhome/work + - --port + - {{ .Values.adguardNetwork.webPort | quote }} + # Setup wizard shows an option to select the port that AdGuardHome + # Web UI will listen on. If the user selects anything other than the `webPort`, + # container will reload its new configuration and listen to the user specified port. + # But user won't have access to it because the port is not exposed. Few seconds later + # probes will kill the container and restart it with the correct `webPort` port. + securityContext: + # FIXME: It might be able to run rootless, probably blocked by: + # https://github.com/AdguardTeam/AdGuardHome/issues/4681 + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + capabilities: + add: + - NET_BIND_SERVICE + {{ if .Values.adguardNetwork.enableDHCP }} + - NET_RAW + {{ end }} + # FIXME: Switch to exec probe after this issue is solved, also note that healthcheck + # is only available on "edge" tag, as of 27/03/2023 + # https://github.com/AdguardTeam/AdGuardHome/issues/3290#issuecomment-1485451976 + probes: + liveness: + enabled: true + type: http + path: / + port: {{ .Values.adguardNetwork.webPort }} + readiness: + enabled: true + type: http + path: / + port: {{ .Values.adguardNetwork.webPort }} + startup: + enabled: true + type: http + path: / + port: {{ .Values.adguardNetwork.webPort }} + {{/* # FIXME: Disabled until it can run as non-root + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.ipfsRunAs.user + "GID" .Values.ipfsRunAs.group + "type" "install") | nindent 8 }} + */}} + +{{/* Persistence */}} +persistence: + work: + enabled: true + type: {{ .Values.adguardStorage.work.type }} + datasetName: {{ .Values.adguardStorage.work.datasetName | default "" }} + hostPath: {{ .Values.adguardStorage.work.hostPath | default "" }} + targetSelector: + adguard: + adguard: + mountPath: /opt/adguardhome/work + {{/* # FIXME: See above + 01-permissions: + mountPath: /mnt/directories/work + */}} + conf: + enabled: true + type: {{ .Values.adguardStorage.conf.type }} + datasetName: {{ .Values.adguardStorage.conf.datasetName | default "" }} + hostPath: {{ .Values.adguardStorage.conf.hostPath | default "" }} + targetSelector: + adguard: + adguard: + mountPath: /opt/adguardhome/conf + {{/* # FIXME: See above + 01-permissions: + mountPath: /mnt/directories/conf + */}} +{{- end -}} diff --git a/community/adguard-home/1.0.0/templates/_portal.tpl b/community/adguard-home/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..cce8ce8915 --- /dev/null +++ b/community/adguard-home/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "adguard.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: / + port: {{ .Values.adguardNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/adguard-home/1.0.0/templates/common.yaml b/community/adguard-home/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..c0da7005d8 --- /dev/null +++ b/community/adguard-home/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "adguard.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "adguard.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/adguard-home/item.yaml b/community/adguard-home/item.yaml new file mode 100644 index 0000000000..37bf743b48 --- /dev/null +++ b/community/adguard-home/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://github.com/AdguardTeam/AdGuardHome/raw/master/doc/adguard_home_darkmode.svg +categories: + - dns + - adblock