diff --git a/stable/vikunja/7.0.0/CHANGELOG.md b/stable/vikunja/7.0.0/CHANGELOG.md new file mode 100644 index 0000000000..a4471b59ac --- /dev/null +++ b/stable/vikunja/7.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [vikunja-7.0.0](https://github.com/truecharts/charts/compare/vikunja-6.0.34...vikunja-7.0.0) (2023-02-28) + +### Feat + +- BREAKING CHANGE - allow custom yaml to some extent and use a config file to provide all available features ([#6607](https://github.com/truecharts/charts/issues/6607)) + + + + +## [vikunja-6.0.34](https://github.com/truecharts/charts/compare/vikunja-6.0.33...vikunja-6.0.34) (2023-02-27) + +### Chore + +- update helm general non-major ([#7725](https://github.com/truecharts/charts/issues/7725)) + + + + +## [vikunja-6.0.33](https://github.com/truecharts/charts/compare/vikunja-6.0.32...vikunja-6.0.33) (2023-02-19) + +### Chore + +- update helm general non-major + + + + +## [vikunja-6.0.32](https://github.com/truecharts/charts/compare/vikunja-6.0.31...vikunja-6.0.32) (2023-02-15) + +### Chore + +- update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [vikunja-6.0.31](https://github.com/truecharts/charts/compare/vikunja-6.0.30...vikunja-6.0.31) (2023-02-10) + +### Fix + +- ensure new helm deps repo is used in latest releases as well. + + + + +## [vikunja-6.0.30](https://github.com/truecharts/charts/compare/vikunja-6.0.29...vikunja-6.0.30) (2023-02-06) + +### Chore + +- update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [vikunja-6.0.29](https://github.com/truecharts/charts/compare/vikunja-6.0.28...vikunja-6.0.29) (2023-01-31) + +### Chore + +- update vikunja + + + + +## [vikunja-6.0.28](https://github.com/truecharts/charts/compare/vikunja-6.0.27...vikunja-6.0.28) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [vikunja-6.0.27](https://github.com/truecharts/charts/compare/vikunja-6.0.26...vikunja-6.0.27) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [vikunja-6.0.26](https://github.com/truecharts/charts/compare/vikunja-6.0.25...vikunja-6.0.26) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [vikunja-6.0.25](https://github.com/truecharts/charts/compare/vikunja-6.0.24...vikunja-6.0.25) (2023-01-17) + +### Chore diff --git a/stable/vikunja/7.0.0/Chart.yaml b/stable/vikunja/7.0.0/Chart.yaml new file mode 100644 index 0000000000..096ddada8a --- /dev/null +++ b/stable/vikunja/7.0.0/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "0.20.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://deps.truecharts.org/ + version: 11.0.31 + - condition: redis.enabled + name: redis + repository: https://deps.truecharts.org + version: 5.0.33 +description: The to-do app to organize your life. +home: https://truecharts.org/charts/stable/vikunja +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vikunja.png +keywords: + - vikunja +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: vikunja +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/vikunja + - https://vikunja.io/docs +version: 7.0.0 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/vikunja/7.0.0/README.md b/stable/vikunja/7.0.0/README.md new file mode 100644 index 0000000000..701942c352 --- /dev/null +++ b/stable/vikunja/7.0.0/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/vikunja/7.0.0/app-changelog.md b/stable/vikunja/7.0.0/app-changelog.md new file mode 100644 index 0000000000..ba0b856bdb --- /dev/null +++ b/stable/vikunja/7.0.0/app-changelog.md @@ -0,0 +1,9 @@ + + +## [vikunja-7.0.0](https://github.com/truecharts/charts/compare/vikunja-6.0.34...vikunja-7.0.0) (2023-02-28) + +### Feat + +- BREAKING CHANGE - allow custom yaml to some extent and use a config file to provide all available features ([#6607](https://github.com/truecharts/charts/issues/6607)) + + \ No newline at end of file diff --git a/stable/vikunja/7.0.0/app-readme.md b/stable/vikunja/7.0.0/app-readme.md new file mode 100644 index 0000000000..2e0b39653c --- /dev/null +++ b/stable/vikunja/7.0.0/app-readme.md @@ -0,0 +1,8 @@ +The to-do app to organize your life. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/vikunja](https://truecharts.org/charts/stable/vikunja) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/vikunja/7.0.0/charts/common-11.1.2.tgz b/stable/vikunja/7.0.0/charts/common-11.1.2.tgz new file mode 100644 index 0000000000..da62080e8a Binary files /dev/null and b/stable/vikunja/7.0.0/charts/common-11.1.2.tgz differ diff --git a/stable/vikunja/7.0.0/charts/postgresql-11.0.31.tgz b/stable/vikunja/7.0.0/charts/postgresql-11.0.31.tgz new file mode 100644 index 0000000000..dadee6fe4d Binary files /dev/null and b/stable/vikunja/7.0.0/charts/postgresql-11.0.31.tgz differ diff --git a/stable/vikunja/7.0.0/charts/redis-5.0.33.tgz b/stable/vikunja/7.0.0/charts/redis-5.0.33.tgz new file mode 100644 index 0000000000..1450fe65f8 Binary files /dev/null and b/stable/vikunja/7.0.0/charts/redis-5.0.33.tgz differ diff --git a/stable/vikunja/7.0.0/ix_values.yaml b/stable/vikunja/7.0.0/ix_values.yaml new file mode 100644 index 0000000000..fbe41fabde --- /dev/null +++ b/stable/vikunja/7.0.0/ix_values.yaml @@ -0,0 +1,225 @@ +image: + repository: tccr.io/truecharts/vikunja-api + tag: 0.20.2@sha256:408c9e649901a27bf7f9b6f009de0e90e6c898413b1bc95f49c5ee9051f82dc0 + pullPolicy: IfNotPresent + +frontendImage: + repository: tccr.io/truecharts/vikunja-frontend + tag: 0.20.3@sha256:f8b46f3e31991656d2a774f48118a2affa9a9df8454ab41bac8f318d17cde6c9 + pullPolicy: IfNotPresent + +nginxImage: + repository: tccr.io/truecharts/nginx + tag: 1.23.3@sha256:0d92357c536291f04dad45f9af95dbdad46fb7a6e940f981a3a332f9d5279665 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +configmap: + nginx-config: + enabled: true + data: + nginx-config: | + server { + listen {{ .Values.service.main.ports.main.port }}; + location / { + proxy_pass http://localhost:80; + } + location ~* ^/(api|dav|\.well-known)/ { + proxy_pass http://localhost:3456; + client_max_body_size {{ .Values.vikunja.files.maxsize | upper | trimSuffix "B" }}; + } + } + +vikunja: + service: + jwtttl: 259200 + jwtttllong: 2592000 + motd: Welcome to your new Vikunja instance + frontendurl: http://localhost:10220 + maxitemsperpage: 50 + enablecaldav: true + enablelinksharing: true + enableregistration: true + enabletaskattachments: true + enabletaskcomments: true + enabletotp: true + enableemailreminders: true + enableuserdeletion: true + maxavatarsize: 1024 + cors: + enabled: true + origins: [] + maxage: 0 + ratelimit: + enabled: false + kind: user + period: 60 + limit: 100 + files: + maxsize: 20MB + avatar: + gravatarexpiration: 3600 + legal: + imprinturl: "" + privacyurl: "" + mailer: + enabled: false + host: "" + port: 587 + authtype: plain + username: "" + password: "" + fromemail: "" + skiptlsverify: false + forcessl: true + queuelength: 100 + queuetimeout: 30 + log: + enabled: true + path: /app/vikunja/logs + standard: stdout + level: INFO + database: "off" + databaselevel: WARNING + http: stdout + echo: "off" + events: stdout + eventslevel: info + defaultsettings: + avatar_provider: initials + avatar_file_id: 0 + email_reminders_enabled: false + discoverable_by_name: false + discoverable_by_email: false + overdue_tasks_reminders_enabled: true + overdue_tasks_reminders_time: "9:00" + default_list_id: 0 + week_start: 0 + language: "" + timezone: "" + backgrounds: + enabled: true + providers: + upload: + enabled: true + unsplash: + enabled: false + accesstoken: "" + applicationid: "" + auth: + local: + enabled: true + openid: + enabled: false + redirecturl: "" + providers: + [] + # - name: "" + # authurl: "" + # logouturl: "" + # clientid: "" + # clientsecret: "" + migration: + todoist: + enable: false + clientid: "" + clientsecret: "" + redirecturl: "" + trello: + enable: false + key: "" + redirecturl: "" + microsofttodo: + enable: false + clientid: "" + clientsecret: "" + redirecturl: "" + +service: + main: + ports: + main: + port: 10220 + +additionalContainers: + frontend: + name: frontend + image: "{{ .Values.frontendImage.repository }}:{{ .Values.frontendImage.tag }}" + ports: + - containerPort: 80 + name: http + proxy: + name: proxy + image: "{{ .Values.nginxImage.repository }}:{{ .Values.nginxImage.tag }}" + ports: + - containerPort: 8080 + name: main + volumeMounts: + - name: vikunja-nginx + mountPath: /etc/nginx/conf.d/default.conf + subPath: nginx-config + readOnly: true + +persistence: + files: + enabled: true + mountPath: /app/vikunja/files + vikunja-nginx: + enabled: true + noMount: true + mountPath: /etc/nginx/conf.d/default.conf + subPath: nginx-config + type: configMap + objectName: '{{ template "tc.common.names.fullname" . }}-nginx-config' + vikunja-config: + enabled: true + mountPath: /etc/vikunja + subPath: config.yml + type: secret + objectName: '{{ template "tc.common.names.fullname" . }}-secret' + +metrics: + # -- Enable and configure a Prometheus serviceMonitor for the chart under this key. + # @default -- See values.yaml + enabled: true + serviceMonitor: + interval: 1m + scrapeTimeout: 30s + labels: {} + # -- Enable and configure Prometheus Rules for the chart under this key. + # @default -- See values.yaml + prometheusRule: + enabled: false + labels: {} + # -- Configure additionial rules for the chart under this key. + # @default -- See prometheusrules.yaml + rules: + [] + # - alert: UnifiPollerAbsent + # annotations: + # description: Unifi Poller has disappeared from Prometheus service discovery. + # summary: Unifi Poller is down. + # expr: | + # absent(up{job=~".*unifi-poller.*"} == 1) + # for: 5m + # labels: + # severity: critical + +postgresql: + enabled: true + existingSecret: dbcreds + postgresqlUsername: vikunja + postgresqlDatabase: vikunja + +redis: + enabled: true + existingSecret: rediscreds + +portal: + enabled: true diff --git a/stable/vikunja/7.0.0/questions.yaml b/stable/vikunja/7.0.0/questions.yaml new file mode 100644 index 0000000000..e727fe15cc --- /dev/null +++ b/stable/vikunja/7.0.0/questions.yaml @@ -0,0 +1,2730 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: vikunja + group: App Configuration + label: Vikunja Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: service + label: Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: jwtttl + label: JWT TTL + description: The duration of the issued JWT tokens in seconds. + schema: + type: int + required: true + default: 259200 + - variable: jwtttllong + label: JWT TTL Long + description: The duration of the “remember me” time in seconds. When the login request is made with the long param set, the token returned will be valid for this period. + schema: + type: int + required: true + default: 2592000 + - variable: motd + label: Message of the Day + description: Set the motd message, available from the /info endpoint + schema: + type: string + default: "" + - variable: frontendurl + label: Frontend URL + description: The URL of the frontend, used to send password reset emails. + schema: + type: string + required: true + default: "" + - variable: maxitemsperpage + label: Max Item per Page + description: The max number of items which can be returned per page. + schema: + type: int + required: true + default: 50 + - variable: maxavatarsize + label: Max Avatar Size + description: | + The maximum size clients will be able to request for user avatars. + If clients request a size bigger than this, it will be changed on the fly. + schema: + type: int + required: true + default: 1024 + - variable: enablecaldav + label: Enable CalDAV + description: Enable the CalDAV endpoint, see the docs for more details. + schema: + type: boolean + default: true + - variable: enablelinksharing + label: Enable Link Sharing + description: Enable sharing of lists via a link. + schema: + type: boolean + default: true + - variable: enableregistration + label: Enable Registration + description: Whether to let new users registering themselves or not + schema: + type: boolean + default: true + - variable: enabletaskattachments + label: Enable Task Attachments + description: Whether to enable task attachments or not + schema: + type: boolean + default: true + - variable: enabletaskcomments + label: Enable Task Comments + description: Whether task comments should be enabled or not + schema: + type: boolean + default: true + - variable: enabletotp + label: Enable TOTP + description: Whether TOTP is enabled. In most cases you want to leave that enabled. + schema: + type: boolean + default: true + - variable: enableemailreminders + label: Enable E-Mail Reminders + description: | + If enabled, vikunja will send an email to everyone who is either assigned to a task + or created it when a task reminder is due. + schema: + type: boolean + default: true + - variable: enableuserdeletion + label: Enable User Deletion + description: | + If true, will allow users to request the complete deletion of their account. + When using external authentication methods it may be required to coordinate with + them in order to delete the account. This setting will not affect the cli commands for user deletion. + schema: + type: boolean + default: true + - variable: cors + label: CORS + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable or disable cors headers. + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: origins + label: Origins + description: A list of origins which may access the api. These need to include the protocol (http:// or https://) and port, if any. + schema: + type: list + default: [] + items: + - variable: originEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: maxage + label: Max Age + description: How long (in seconds) the results of a preflight request can be cached. + schema: + type: int + required: true + default: 0 + - variable: ratelimit + label: Rate Limit + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether or not to enable the rate limit. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: kind + label: Kind + description: The kind on which rates are based. Can be either “user” for a rate limit per user or “ip” for an ip-based rate limit. + schema: + type: string + required: true + default: user + enum: + - value: user + description: User + - value: ip + description: IP + - variable: period + label: Period + description: The time period in seconds for the limit. + schema: + type: int + required: true + default: 60 + - variable: limit + label: Limit + description: The max number of requests a user is allowed to do in the configured time period. + schema: + type: int + required: true + default: 100 + - variable: files + label: Files + schema: + additional_attrs: true + type: dict + attrs: + - variable: maxsize + label: Max Size + description: The maximum size of a file, as a human-readable string. + schema: + type: string + required: true + default: 20MB + - variable: avatar + label: Avatar + schema: + additional_attrs: true + type: dict + attrs: + - variable: gravatarexpiration + label: Gravatar Expiration + description: When using gravatar, this is the duration in seconds until a cached gravatar user avatar expires + schema: + type: int + required: true + default: 3600 + - variable: legal + label: Legal + schema: + additional_attrs: true + type: dict + attrs: + - variable: imprinturl + label: Imprint URL + description: Legal urls Will be shown in the frontend if configured here + schema: + type: string + default: "" + - variable: privacyurl + label: Privacy URL + description: Legal urls Will be shown in the frontend if configured here + schema: + type: string + default: "" + - variable: mailer + label: Mailer + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable the mailer or not. If it is disabled, all users are enabled right away and password reset is not possible. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: Host + description: SMTP Host + schema: + type: string + required: true + default: "" + - variable: port + label: Port + description: SMTP Port + schema: + type: int + required: true + default: 587 + - variable: authtype + label: Auth Type + description: SMTP Auth Type. Can be either plain, login or cram-md5. + schema: + type: string + required: true + default: plain + enum: + - value: plain + description: Plain + - value: login + description: Login + - value: cram-md5 + description: Cram-MD5 + - variable: username + label: Username + description: SMTP Username + schema: + type: string + required: true + default: "" + - variable: password + label: Password + description: SMTP Password + schema: + type: string + required: true + default: "" + - variable: fromemail + label: From E-Mail + description: The default from address when sending emails + schema: + type: string + required: true + default: "" + - variable: skiptlsverify + label: Skip TLS Verify + description: Wether to skip verification of the tls certificate on the server + schema: + type: boolean + default: false + - variable: forcessl + label: Force SSL + description: By default, vikunja will try to connect with starttls, use this option to force it to use ssl. + schema: + type: boolean + default: true + - variable: queuelength + label: Queue Length + description: The length of the mail queue. + schema: + type: int + required: true + default: 100 + - variable: queuetimeout + label: Queue Timeout + description: The timeout in seconds after which the current open connection to the mail server will be closed. + schema: + type: int + required: true + default: 100 + - variable: log + label: Log + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to show any logging at all or none + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: path + label: Path + description: A folder where all the log files should go. + schema: + type: string + required: true + default: /app/vikunja/logs + - variable: standard + label: Standard + description: Where the normal log should go. + schema: + type: string + required: true + default: stdout + enum: + - value: stdout + description: stdout + - value: stderr + description: stderr + - value: file + description: File + - value: "off" + description: "Off" + - variable: level + label: Level + description: Change the log level. + schema: + type: string + show_if: [["standard", "!=", "off"]] + required: true + default: INFO + enum: + - value: INFO + description: INFO + - value: NOTICE + description: NOTICE + - value: WARNING + description: WARNING + - value: ERROR + description: ERROR + - value: CRITICAL + description: CRITICAL + - value: DEBUG + description: DEBUG + - variable: database + label: Database + description: Whether or not to log database queries. Useful for debugging. + schema: + type: string + required: true + default: "off" + enum: + - value: stdout + description: stdout + - value: stderr + description: stderr + - value: file + description: File + - value: "off" + description: "Off" + - variable: databaselevel + label: Database Level + description: The log level for database log messages. + schema: + type: string + show_if: [["database", "!=", "off"]] + required: true + default: INFO + enum: + - value: INFO + description: INFO + - value: NOTICE + description: NOTICE + - value: WARNING + description: WARNING + - value: ERROR + description: ERROR + - value: CRITICAL + description: CRITICAL + - value: DEBUG + description: DEBUG + - variable: http + label: HTTP + description: Whether to log http requests or not. + schema: + type: string + required: true + default: stdout + enum: + - value: stdout + description: stdout + - value: stderr + description: stderr + - value: file + description: File + - value: "off" + description: "Off" + - variable: echo + label: Echo + description: Echo has its own logging which usually is unnecessary, which is why it is disabled by default. + schema: + type: string + required: true + default: "off" + enum: + - value: stdout + description: stdout + - value: stderr + description: stderr + - value: file + description: File + - value: "off" + description: "Off" + - variable: events + label: Events + description: Whether or not to log events. + schema: + type: string + required: true + default: stdout + enum: + - value: stdout + description: stdout + - value: stderr + description: stderr + - value: file + description: File + - value: "off" + description: "Off" + - variable: eventslevel + label: Events Level + description: The log level for event log messages. + schema: + type: string + show_if: [["events", "!=", "off"]] + required: true + default: INFO + enum: + - value: INFO + description: INFO + - value: ERROR + description: ERROR + - value: DEBUG + description: DEBUG + - variable: defaultsettings + label: Default Settings + description: | + Provide default settings for new users. When a new user is created, these settings will automatically be set for the user. + If you change them in the config file afterwards they will not be changed back for existing users. + schema: + additional_attrs: true + type: dict + attrs: + - variable: avatar_provider + label: Avatar Provider + description: The avatar source for the user. + schema: + type: string + required: true + default: initials + enum: + - value: initials + description: Initials + - value: gravatar + description: Gravatar + - value: marble + description: Marble + - value: upload + description: Upload + - variable: avatar_file_id + label: Avatar File ID + description: The id of the file used as avatar. + schema: + type: int + show_if: [["avatar_provider", "=", "upload"]] + required: true + default: 0 + - variable: email_reminders_enabled + label: Enable Email Reminders + description: If set to true users will get task reminders via email. + schema: + type: boolean + default: false + - variable: discoverable_by_name + label: Discoverable by Name + description: If set to true will allow other users to find this user when searching for parts of their name. + schema: + type: boolean + default: false + - variable: discoverable_by_email + label: Discoverable by E-Mail + description: If set to true will allow other users to find this user when searching for their exact email. + schema: + type: boolean + default: false + - variable: overdue_tasks_reminders_enabled + label: Enable Overdue Task Reminders + description: If set to true will send an email every day with all overdue tasks at a configured time. + schema: + type: boolean + default: false + - variable: overdue_tasks_reminders_time + label: Overdue Task Reminder Time + description: When to send the overdue task reminder email. + schema: + type: string + required: true + default: "09:00" + - variable: default_list_id + label: Default List ID + description: The id of the default list. Make sure users actually have access to this list when setting this value. + schema: + type: int + required: true + default: 0 + - variable: week_start + label: Week Start + description: Start of the week for the user. 0 is sunday, 1 is monday and so on. + schema: + type: int + required: true + default: 0 + - variable: language + label: Language + description: | + The language of the user interface. Must be an ISO 639-1 language code. + Will default to the browser language the user uses when signing up. + schema: + type: string + default: "" + - variable: timezone + label: Timezone + description: The time zone of each individual user. This will affect when users get reminders and overdue task emails. + schema: + type: string + default: "" + - variable: backgrounds + label: Backgrounds + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable backgrounds for lists at all. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: providers + label: Providers + schema: + additional_attrs: true + type: dict + attrs: + - variable: upload + label: Upload + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable uploaded list backgrounds + schema: + type: boolean + default: true + - variable: unsplash + label: Unsplash + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable setting backgrounds from unsplash as list backgrounds + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: accesstoken + label: Access Token + description: | + You need to create an application for your installation at + https://unsplash.com/oauth/applications/new and set the access token below. + schema: + type: string + required: true + default: "" + - variable: applicationid + label: Application ID + description: The unsplash application id is only used for ping back and required as per their api guidelines. + schema: + type: string + required: true + default: "" + - variable: auth + label: Auth + schema: + additional_attrs: true + type: dict + attrs: + - variable: local + label: Local + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable or disable local authentication + schema: + type: boolean + default: true + - variable: openid + label: OpenID + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable or disable OpenID Connect authentication + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: redirecturl + label: Redirect URL + description: The URL to redirect clients to. Defaults to the configured frontend URL. + schema: + type: string + default: "" + - variable: providers + label: Providers + schema: + additional_attrs: true + type: list + default: [] + items: + - variable: providerEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: The name of the provider as it will appear in the frontend. + schema: + type: string + required: true + default: "" + - variable: authurl + label: Auth URL + description: The auth url to send users to if they want to authenticate using OpenID Connect. + schema: + type: string + required: true + default: "" + - variable: logouturl + label: Logout URL + description: The oidc logout url that users will be redirected to on logout. + schema: + type: string + default: "" + - variable: clientid + label: Client ID + description: The client ID used to authenticate Vikunja at the OpenID Connect provider. + schema: + type: string + required: true + default: "" + - variable: clientsecret + label: Client Secret + description: The client secret used to authenticate Vikunja at the OpenID Connect provider. + schema: + type: string + required: true + default: "" + - variable: migration + label: Migration + schema: + additional_attrs: true + type: dict + attrs: + - variable: todoist + label: Todoist + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable the todoist migrator or not + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: clientid + label: Client ID + description: | + The client id, required for making requests to the todoist api + You need to register your vikunja instance at https://developer.todoist.com/appconsole.html to get this + schema: + type: string + required: true + default: "" + - variable: clientsecret + label: Client Secret + description: The client secret, also required for making requests to the todoist api + schema: + type: string + required: true + default: "" + - variable: redirecturl + label: Redirect URL + description: The url where clients are redirected after they authorized Vikunja to access their todoist items. + schema: + type: string + required: true + default: /migrate/todoist + - variable: trello + label: Trello + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Whether to enable the trello migrator or not + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: key + label: Key + description: | + The client id, required for making requests to the trello api. + You need to register your vikunja instance at https://trello.com/app-key, + (log in before you visit that link) to get this. + schema: + type: string + required: true + default: "" + - variable: redirecturl + label: Redirect URL + description: The url where clients are redirected after they authorized Vikunja to access their trello cards. + schema: + type: string + required: true + default: /migrate/trello + - variable: microsofttodo + label: Microsoft To Do + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Wheter to enable the microsoft todo migrator or not + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: clientid + label: Client ID + description: | + The client id, required for making requests to the microsoft graph api + See https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app#register-an-application + for information about how to register your Vikunja instance. + schema: + type: string + required: true + default: "" + - variable: clientsecret + label: Client Secret + description: The client secret, also required for making requests to the microsoft graph api + schema: + type: string + required: true + default: "" + - variable: redirecturl + label: Redirect URL + description: The url where clients are redirected after they authorized Vikunja to access their microsoft todo tasks. + schema: + type: string + required: true + default: /migrate/microsoft-todo + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10220 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: files + label: App Files Storage + description: Stores the Application Files. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: serviceMonitor + label: Service Monitor Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: interval + label: Scrape Interval + description: Scrape interval time + schema: + type: string + default: 1m + required: true + - variable: scrapeTimeout + label: Scrape Timeout + description: Scrape timeout Time + schema: + type: string + default: 30s + required: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/vikunja/7.0.0/templates/_secrets.tpl b/stable/vikunja/7.0.0/templates/_secrets.tpl new file mode 100644 index 0000000000..935a1c78fa --- /dev/null +++ b/stable/vikunja/7.0.0/templates/_secrets.tpl @@ -0,0 +1,189 @@ +{{/* Define the secrets */}} +{{- define "vikunja.secrets" -}} + +{{- $secretName := printf "%s-secret" (include "tc.common.names.fullname" .) -}} +{{- $secretStorage := printf "%s-storage-secret" (include "tc.common.names.fullname" .) -}} + +{{- $jwtSecret := randAlphaNum 32 -}} +{{- with lookup "v1" "Secret" .Release.Namespace $secretStorage -}} + {{- $jwtSecret = index .data "JWT_SECRET" | b64dec -}} +{{- end }} +--- +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $secretStorage }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +data: + JWT_SECRET: {{ $jwtSecret | b64enc }} +--- +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $secretName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +stringData: + config.yml: | + database: + type: postgres + user: {{ .Values.postgresql.postgresqlUsername }} + password: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" }} + host: {{ printf "%v-%v" .Release.Name "postgres" }} + + cache: + enabled: true + type: redis + + redis: + enabled: true + host: {{ printf "%v-%v:%v" .Release.Name "redis" "6379" }} + password: {{ .Values.redis.redisPassword | trimAll "\""}} + db: 0 + + keyvalue: + type: redis + + service: + interface: ":3456" + JWTSecret: {{ $jwtSecret }} + timezone: {{ .Values.TZ | quote }} + jwtttl: {{ .Values.vikunja.service.jwtttl | int }} + jwtttllong: {{ .Values.vikunja.service.jwtttllong | int }} + frontendurl: {{ .Values.vikunja.service.frontendurl | quote }} + maxitemsperpage: {{ .Values.vikunja.service.maxitemsperpage }} + enablecaldav: {{ .Values.vikunja.service.enablecaldav }} + motd: {{ .Values.vikunja.service.motd | quote }} + enablelinksharing: {{ .Values.vikunja.service.enablelinksharing }} + enableregistration: {{ .Values.vikunja.service.enableregistration }} + enabletaskattachments: {{ .Values.vikunja.service.enabletaskattachments }} + enabletaskcomments: {{ .Values.vikunja.service.enabletaskcomments }} + enabletotp: {{ .Values.vikunja.service.enabletotp }} + enableemailreminders: {{ .Values.vikunja.service.enableemailreminders }} + enableuserdeletion: {{ .Values.vikunja.service.enableuserdeletion }} + maxavatarsize: {{ .Values.vikunja.service.maxavatarsize }} + + metrics: + enabled: {{ .Values.metrics.enabled }} + + cors: + enabled: {{ .Values.vikunja.cors.enabled }} + {{- with .Values.vikunja.cors.origins }} + origins: + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- else }} + origins: [] + {{- end }} + maxage: {{ .Values.vikunja.cors.maxage }} + + mailer: + enabled: {{ .Values.vikunja.mailer.enabled }} + host: {{ .Values.vikunja.mailer.host | quote }} + port: {{ .Values.vikunja.mailer.port }} + authtype: {{ .Values.vikunja.mailer.authtype | quote }} + username: {{ .Values.vikunja.mailer.username | quote }} + password: {{ .Values.vikunja.mailer.password | quote }} + skiptlsverify: {{ .Values.vikunja.mailer.skiptlsverify }} + fromemail: {{ .Values.vikunja.mailer.fromemail | quote }} + queuelength: {{ .Values.vikunja.mailer.queuelength }} + queuetimeout: {{ .Values.vikunja.mailer.queuetimeout }} + forcessl: {{ .Values.vikunja.mailer.forcessl }} + + log: + enabled: {{ .Values.vikunja.log.enabled }} + path: {{ .Values.vikunja.log.path | quote }} + standard: {{ .Values.vikunja.log.standard | quote }} + level: {{ .Values.vikunja.log.level | quote }} + database: {{ .Values.vikunja.log.database | quote }}} + databaselevel: {{ .Values.vikunja.log.databaselevel | quote }} + http: {{ .Values.vikunja.log.http | quote }} + echo: {{ .Values.vikunja.log.echo | quote }}} + events: {{ .Values.vikunja.log.events | quote }} + eventslevel: {{ .Values.vikunja.log.eventslevel | quote }} + + ratelimit: + enabled: {{ .Values.vikunja.ratelimit.enabled }}} + kind: {{ .Values.vikunja.ratelimit.kind | quote }} + period: {{ .Values.vikunja.ratelimit.period }} + limit: {{ .Values.vikunja.ratelimit.limit }} + store: redis + + files: + maxsize: {{ .Values.vikunja.files.maxsize }} + + avatar: + gravatarexpiration: {{ .Values.vikunja.avatar.gravatarexpiration }} + + legal: + imprinturl: {{ .Values.vikunja.legal.imprinturl | quote }} + privacyurl: {{ .Values.vikunja.legal.privacyurl | quote }} + + backgrounds: + enabled: {{ .Values.vikunja.backgrounds.enabled }} + providers: + upload: + enabled: {{ .Values.vikunja.backgrounds.providers.upload.enabled }} + unsplash: + enabled: {{ .Values.vikunja.backgrounds.providers.unsplash.enabled }} + accesstoken: {{ .Values.vikunja.backgrounds.providers.unsplash.accesstoken | quote }} + applicationid: {{ .Values.vikunja.backgrounds.providers.unsplash.applicationid | quote }} + + migration: + todoist: + enable: {{ .Values.vikunja.migration.todoist.enable }} + clientid: {{ .Values.vikunja.migration.todoist.clientid | quote }} + clientsecret: {{ .Values.vikunja.migration.todoist.clientsecret | quote }} + redirecturl: {{ .Values.vikunja.migration.todoist.redirecturl | quote }} + trello: + enable: {{ .Values.vikunja.migration.trello.enable }} + key: {{ .Values.vikunja.migration.trello.key | quote }} + redirecturl: {{ .Values.vikunja.migration.trello.redirecturl | quote }} + microsofttodo: + enable: {{ .Values.vikunja.migration.microsofttodo.enable }} + clientid: {{ .Values.vikunja.migration.microsofttodo.clientid | quote }} + clientsecret: {{ .Values.vikunja.migration.microsofttodo.clientsecret | quote }} + redirecturl: {{ .Values.vikunja.migration.microsofttodo.redirecturl | quote }} + + auth: + local: + enabled: {{ .Values.vikunja.auth.local.enabled }} + openid: + enabled: {{ .Values.vikunja.auth.openid.enabled }} + {{- with .Values.vikunja.auth.openid.redirecturl }} + redirecturl: {{ . | quote }} + {{- end }} + {{- with .Values.vikunja.auth.openid.providers }} + providers: + {{- range . }} + - name: {{ .name | quote }} + authurl: {{ .authurl | quote }} + {{- with .logouturl }} + logouturl: {{ . | quote }} + {{- end }} + clientid: {{ .clientid | quote }} + clientsecret: {{ .clientsecret | quote }} + {{- end }} + {{- end }} + + defaultsettings: + avatar_provider: {{ .Values.vikunja.defaultsettings.avatar_provider | quote }} + avatar_file_id: {{ .Values.vikunja.defaultsettings.avatar_file_id }} + email_reminders_enabled: {{ .Values.vikunja.defaultsettings.email_reminders_enabled }} + discoverable_by_name: {{ .Values.vikunja.defaultsettings.discoverable_by_name }} + discoverable_by_email: {{ .Values.vikunja.defaultsettings.discoverable_by_email }} + overdue_tasks_reminders_enabled: {{ .Values.vikunja.defaultsettings.overdue_tasks_reminders_enabled }} + overdue_tasks_reminders_time: {{ .Values.vikunja.defaultsettings.overdue_tasks_reminders_time | quote }} + default_list_id: {{ .Values.vikunja.defaultsettings.default_list_id }} + week_start: {{ .Values.vikunja.defaultsettings.week_start }} + {{- with .Values.vikunja.defaultsettings.language }} + language: {{ . | quote }} + {{- end }} + {{- with .Values.vikunja.defaultsettings.timezone }} + timezone: {{ . | quote }} + {{- end }} +{{- end -}} diff --git a/stable/vikunja/7.0.0/templates/common.yaml b/stable/vikunja/7.0.0/templates/common.yaml new file mode 100644 index 0000000000..c0f4269ca5 --- /dev/null +++ b/stable/vikunja/7.0.0/templates/common.yaml @@ -0,0 +1,5 @@ +{{- include "tc.common.loader.init" . }} + +{{ include "vikunja.secrets" . }} + +{{ include "tc.common.loader.apply" . }} diff --git a/stable/vikunja/7.0.0/values.yaml b/stable/vikunja/7.0.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2