From 004c25e026c787dc1d54d2fa78d2ecce92a1f05f Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Sun, 30 Jan 2022 20:19:15 +0200 Subject: [PATCH] feat(weblate): Add weblate (#1812) * feat(weblate): Add weblate * update app-request docs * run as user 1000 * Add site_domain * rofs * update questions * Add configmap * update ui * finish uI and configmap * update UI * update image --- charts/incubator/weblate/Chart.yaml | 36 + charts/incubator/weblate/questions.yaml | 1449 +++++++++++++++++ .../weblate/templates/_configmap.tpl | 472 ++++++ .../incubator/weblate/templates/common.yaml | 8 + charts/incubator/weblate/values.yaml | 248 +++ docs/_static/img/appicons/weblate-icon.png | Bin 0 -> 51345 bytes docs/apps/app-requests.md | 2 +- docs/manual/default-ports.md | 1 + 8 files changed, 2215 insertions(+), 1 deletion(-) create mode 100644 charts/incubator/weblate/Chart.yaml create mode 100644 charts/incubator/weblate/questions.yaml create mode 100644 charts/incubator/weblate/templates/_configmap.tpl create mode 100644 charts/incubator/weblate/templates/common.yaml create mode 100644 charts/incubator/weblate/values.yaml create mode 100644 docs/_static/img/appicons/weblate-icon.png diff --git a/charts/incubator/weblate/Chart.yaml b/charts/incubator/weblate/Chart.yaml new file mode 100644 index 00000000000..961d370d05c --- /dev/null +++ b/charts/incubator/weblate/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +appVersion: "4.10.1-1" +dependencies: +- name: common + repository: https://truecharts.org + version: 8.14.2 +- condition: postgresql.enabled + name: postgresql + repository: https://truecharts.org/ + version: 6.0.58 +- condition: redis.enabled + name: redis + repository: https://truecharts.org + version: 1.0.63 +description: Weblate is a copylefted libre software web-based continuous localization system +home: https://github.com/truecharts/apps/tree/master/charts/stable/weblate +icon: https://truecharts.org/_static/img/appicons/weblate-icon.png +keywords: +- translate +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: weblate +sources: +- https://github.com/WeblateOrg/weblate +- https://github.com/WeblateOrg/docker +- https://github.com/WeblateOrg/docker-compose +- https://docs.weblate.org/en/latest/ +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/weblate/questions.yaml b/charts/incubator/weblate/questions.yaml new file mode 100644 index 00000000000..423eeaf2684 --- /dev/null +++ b/charts/incubator/weblate/questions.yaml @@ -0,0 +1,1449 @@ +# Include{groups} +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +# Include{global} + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" +# Include{controllerExpert} + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: +# Include{fixedEnv} + - variable: weblate + group: "Container Configuration" + label: "Weblate Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: "General Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: WEBLATE_SITE_DOMAIN + label: "WEBLATE_SITE_DOMAIN" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + required: true + default: "" + - variable: WEBLATE_SITE_TITLE + label: "WEBLATE_SITE_TITLE (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_ADMIN_NAME + label: "WEBLATE_ADMIN_NAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_ADMIN_EMAIL + label: "WEBLATE_ADMIN_EMAIL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_ADMIN_PASSWORD + label: "WEBLATE_ADMIN_PASSWORD (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_ENABLE_HTTPS + label: "WEBLATE_ENABLE_HTTPS" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_IP_PROXY_HEADER + label: "WEBLATE_IP_PROXY_HEADER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SECURE_PROXY_SSL_HEADER + label: "WEBLATE_SECURE_PROXY_SSL_HEADER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTO_UPDATE + label: "WEBLATE_AUTO_UPDATE (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + enum: + - value: "" + description: "none" + - value: "remote" + description: "remote" + - value: "full" + description: "full" + - variable: WEBLATE_SERVER_EMAIL + label: "WEBLATE_SERVER_EMAIL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SERVER_EMAIL + label: "WEBLATE_SERVER_EMAIL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DEFAULT_FROM_EMAIL + label: "WEBLATE_DEFAULT_FROM_EMAIL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CONTACT_FORM + label: "WEBLATE_CONTACT_FORM (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "reply-to" + description: "reply-to" + - value: "from" + description: "from" + - variable: WEBLATE_ALLOWED_HOSTS + label: "WEBLATE_ALLOWED_HOSTS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_REGISTRATION_OPEN + label: "WEBLATE_REGISTRATION_OPEN" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_REGISTRATION_ALLOW_BACKENDS + label: "WEBLATE_REGISTRATION_ALLOW_BACKENDS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_REQUIRE_LOGIN + label: "WEBLATE_REQUIRE_LOGIN" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS + label: "WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS + label: "WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS + label: "WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_GOOGLE_ANALYTICS_ID + label: "WEBLATE_GOOGLE_ANALYTICS_ID (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_GITHUB_USERNAME + label: "WEBLATE_GITHUB_USERNAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_GITHUB_TOKEN + label: "WEBLATE_GITHUB_TOKEN (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_GITLAB_USERNAME + label: "WEBLATE_GITLAB_USERNAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_GITLAB_TOKEN + label: "WEBLATE_GITLAB_TOKEN (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_PAGURE_USERNAME + label: "WEBLATE_PAGURE_USERNAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_PAGURE_TOKEN + label: "WEBLATE_PAGURE_TOKEN (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SIMPLIFY_LANGUAGES + label: "WEBLATE_SIMPLIFY_LANGUAGES" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_DEFAULT_ACCESS_CONTROL + label: "WEBLATE_DEFAULT_ACCESS_CONTROL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DEFAULT_RESTRICTED_COMPONENT + label: "WEBLATE_DEFAULT_RESTRICTED_COMPONENT" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_DEFAULT_TRANSLATION_PROPAGATION + label: "WEBLATE_DEFAULT_TRANSLATION_PROPAGATION" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_DEFAULT_COMMITER_EMAIL + label: "WEBLATE_DEFAULT_COMMITER_EMAIL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DEFAULT_COMMITER_NAME + label: "WEBLATE_DEFAULT_COMMITER_NAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DEFAULT_SHARED_TM + label: "WEBLATE_DEFAULT_SHARED_TM" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_AKISMET_API_KEY + label: "WEBLATE_AKISMET_API_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_GPG_IDENTITY + label: "WEBLATE_GPG_IDENTITY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_URL_PREFIX + label: "WEBLATE_URL_PREFIX (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SILENCED_SYSTEM_CHECKS + label: "WEBLATE_SILENCED_SYSTEM_CHECKS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CSP_SCRIPT_SRC + label: "WEBLATE_CSP_SCRIPT_SRC (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CSP_IMG_SRC + label: "WEBLATE_CSP_IMG_SRC (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CSP_CONNECT_SRC + label: "WEBLATE_CSP_CONNECT_SRC (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CSP_STYLE_SRC + label: "WEBLATE_CSP_STYLE_SRC (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_CSP_FONT_SRC + label: "WEBLATE_CSP_FONT_SRC (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_LICENSE_FILTER + label: "WEBLATE_LICENSE_FILTER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_LICENSE_REQUIRED + label: "WEBLATE_LICENSE_REQUIRED" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_WEBSITE_REQUIRED + label: "WEBLATE_WEBSITE_REQUIRED" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_HIDE_VERSION + label: "WEBLATE_HIDE_VERSION" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_BASIC_LANGUAGES + label: "WEBLATE_BASIC_LANGUAGES (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DEFAULT_AUTO_WATCH + label: "WEBLATE_DEFAULT_AUTO_WATCH" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_RATELIMIT_ATTEMPTS + label: "WEBLATE_RATELIMIT_ATTEMPTS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_RATELIMIT_LOCKOUT + label: "WEBLATE_RATELIMIT_LOCKOUT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_RATELIMIT_WINDOW + label: "WEBLATE_RATELIMIT_WINDOW (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_ENABLE_AVATARS + label: "WEBLATE_ENABLE_AVATARS" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH + label: "WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: true + - variable: WEBLATE_SSH_EXTRA_ARGS + label: "WEBLATE_SSH_EXTRA_ARGS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_BORG_EXTRA_ARGS + label: "WEBLATE_BORG_EXTRA_ARGS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_DATABASE_BACKUP + label: "WEBLATE_DATABASE_BACKUP (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "plain" + enum: + - value: "plain" + description: "plain" + - value: "compressed" + description: "compressed" + - value: "none" + description: "none" + - variable: WEBLATE_DEBUG + label: "WEBLATE_DEBUG" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_LOGLEVEL + label: "WEBLATE_LOGLEVEL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: machinetranslate + label: "Machine Translation Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Machine Translation Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_MT_APERTIUM_APY + label: "WEBLATE_MT_APERTIUM_APY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_AWS_REGION + label: "WEBLATE_MT_AWS_REGION (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_AWS_ACCESS_KEY_ID + label: "WEBLATE_MT_AWS_ACCESS_KEY_ID (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_AWS_SECRET_ACCESS_KEY + label: "WEBLATE_MT_AWS_SECRET_ACCESS_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_DEEPL_KEY + label: "WEBLATE_MT_DEEPL_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_DEEPL_API_URL + label: "WEBLATE_MT_DEEPL_API_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_LIBRETRANSLATE_KEY + label: "WEBLATE_MT_LIBRETRANSLATE_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_LIBRETRANSLATE_API_URL + label: "WEBLATE_MT_LIBRETRANSLATE_API_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_GOOGLE_KEY + label: "WEBLATE_MT_GOOGLE_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_GOOGLE_CREDENTIALS + label: "WEBLATE_MT_GOOGLE_CREDENTIALS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_GOOGLE_PROJECT + label: "WEBLATE_MT_GOOGLE_PROJECT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_GOOGLE_LOCATION + label: "WEBLATE_MT_GOOGLE_LOCATION (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_MICROSOFT_COGNITIVE_KEY + label: "WEBLATE_MT_MICROSOFT_COGNITIVE_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_MICROSOFT_ENDPOINT_URL + label: "WEBLATE_MT_MICROSOFT_ENDPOINT_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_MICROSOFT_REGION + label: "WEBLATE_MT_MICROSOFT_REGION (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_MICROSOFT_BASE_URL + label: "WEBLATE_MT_MICROSOFT_BASE_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_MODERNMT_KEY + label: "WEBLATE_MT_MODERNMT_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_MYMEMORY_ENABLED + label: "WEBLATE_MT_MYMEMORY_ENABLED" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_MT_GLOSBE_ENABLED + label: "WEBLATE_MT_GLOSBE_ENABLED" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED + label: "WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_MT_SAP_BASE_URL + label: "WEBLATE_MT_SAP_BASE_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_SAP_SANDBOX_APIKEY + label: "WEBLATE_MT_SAP_SANDBOX_APIKEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_SAP_USERNAME + label: "WEBLATE_MT_SAP_USERNAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_MT_SAP_PASSWORD + label: "WEBLATE_MT_SAP_PASSWORD (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_MT_SAP_USE_MT + label: "WEBLATE_MT_SAP_USE_MT" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: auth + label: "Authentication Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabledldap + label: "Show LDAP Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_AUTH_LDAP_SERVER_URI + label: "WEBLATE_AUTH_LDAP_SERVER_URI (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE + label: "WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_USER_ATTR_MAP + label: "WEBLATE_AUTH_LDAP_USER_ATTR_MAP (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_BIND_DN + label: "WEBLATE_AUTH_LDAP_BIND_DN (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_BIND_PASSWORD + label: "WEBLATE_AUTH_LDAP_BIND_PASSWORD (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS + label: "WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_AUTH_LDAP_USER_SEARCH + label: "WEBLATE_AUTH_LDAP_USER_SEARCH (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER + label: "WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_USER_SEARCH_UNION + label: "WEBLATE_AUTH_LDAP_USER_SEARCH_UNION (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER + label: "WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: enabledgithub + label: "Show Github Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_KEY + label: "WEBLATE_SOCIAL_AUTH_GITHUB_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_SECRET + label: "WEBLATE_SOCIAL_AUTH_GITHUB_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY + label: "WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET + label: "WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME + label: "WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY + label: "WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET + label: "WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID + label: "WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledbitbucket + label: "Show Bitbucket Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY + label: "WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET + label: "WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledfacebook + label: "Show Facebook Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY + label: "WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET + label: "WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledgoogle + label: "Show Google Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY + label: "WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET + label: "WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS + label: "WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS + label: "WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: enabledgitlab + label: "Show Gitlab Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_GITLAB_KEY + label: "WEBLATE_SOCIAL_AUTH_GITLAB_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITLAB_SECRET + label: "WEBLATE_SOCIAL_AUTH_GITLAB_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_GITLAB_API_URL + label: "WEBLATE_SOCIAL_AUTH_GITLAB_API_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: enabledazure + label: "Show Azure AD Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY + label: "WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET + label: "WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledazuretenant + label: "Show Azure AD with Tenant Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY + label: "WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET + label: "WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID + label: "WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledkeycloak + label: "Show Keycloak Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL + label: "WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: enabledlinux + label: "Show Linux Vendors Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_FEDORA + label: "WEBLATE_SOCIAL_AUTH_FEDORA" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_SOCIAL_AUTH_OPENSUSE + label: "WEBLATE_SOCIAL_AUTH_OPENSUSE)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_SOCIAL_AUTH_UBUNTU + label: "WEBLATE_SOCIAL_AUTH_UBUNTU" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: enabledslack + label: "Show Slack Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SOCIAL_AUTH_SLACK_KEY + label: "WEBLATE_SOCIAL_AUTH_SLACK_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: SOCIAL_AUTH_SLACK_SECRET + label: "SOCIAL_AUTH_SLACK_SECRET (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: enabledsaml + label: "Show SAML Authentication Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_SAML_IDP_ENTITY_ID + label: "WEBLATE_SAML_IDP_ENTITY_ID (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_SAML_IDP_URL + label: "WEBLATE_SAML_IDP_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_SAML_IDP_X509CERT + label: "WEBLATE_SAML_IDP_X509CERT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: email + label: "Email Server Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Email Server Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_EMAIL_HOST + label: "WEBLATE_EMAIL_HOST (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_EMAIL_PORT + label: "WEBLATE_EMAIL_PORT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_EMAIL_HOST_USER + label: "WEBLATE_EMAIL_HOST_USER (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_EMAIL_HOST_PASSWORD + label: "WEBLATE_EMAIL_HOST_PASSWORD (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: WEBLATE_EMAIL_USE_SSL + label: "WEBLATE_EMAIL_USE_SSL" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_EMAIL_USE_TLS + label: "WEBLATE_EMAIL_USE_TLS" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: boolean + default: false + - variable: WEBLATE_EMAIL_BACKEND + label: "WEBLATE_EMAIL_BACKEND (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: siteintegration + label: "Site Integration Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Site Integration Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_GET_HELP_URL + label: "WEBLATE_GET_HELP_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_STATUS_URL + label: "WEBLATE_STATUS_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_LEGAL_URL + label: "WEBLATE_LEGAL_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_PRIVACY_URL + label: "WEBLATE_PRIVACY_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: errorreporting + label: "Error Reporting Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Error Reporting Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: ROLLBAR_KEY + label: "ROLLBAR_KEY (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + private: true + default: "" + - variable: ROLLBAR_ENVIRONMENT + label: "ROLLBAR_ENVIRONMENT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: SENTRY_DSN + label: "SENTRY_DSN (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: SENTRY_ENVIRONMENT + label: "SENTRY_ENVIRONMENT (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: localization + label: "Localization CDN Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Show Localization CDN Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: WEBLATE_LOCALIZE_CDN_URL + label: "WEBLATE_LOCALIZE_CDN_URL (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + - variable: WEBLATE_LOCALIZE_CDN_PATH + label: "WEBLATE_LOCALIZE_CDN_PATH (Leave empty for default)" + description: "Visit https://docs.weblate.org/en/ on section Environment Variables for more info" + schema: + type: string + default: "" + + +# Include{containerConfig} + + - 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: +# Include{serviceSelector} + - 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: 10158 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + - 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 + +# Include{serviceExpert} + +# Include{serviceList} + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" +# Include{persistenceBasic} + - variable: hostPath + label: "hostPath" + 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" +# Include{persistenceAdvanced} + +# Include{persistenceList} + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} + +# Include{ingressTLS} + +# Include{ingressTraefik} + +# Include{ingressExpert} + +# Include{ingressList} + + - 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: true +# Include{securityContextAdvanced} + + - 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: 1000 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 1000 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 1000 +# Include{podSecurityContextAdvanced} + +# Include{resources} + +# Include{advanced} + +# Include{addons} diff --git a/charts/incubator/weblate/templates/_configmap.tpl b/charts/incubator/weblate/templates/_configmap.tpl new file mode 100644 index 00000000000..6af34fd504f --- /dev/null +++ b/charts/incubator/weblate/templates/_configmap.tpl @@ -0,0 +1,472 @@ +{{/* Define the configmap */}} +{{- define "weblate.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: weblate-env +data: + {{/* General */}} + {{- if .Values.weblate.general.WEBLATE_SITE_DOMAIN }} + WEBLATE_SITE_DOMAIN: {{ .Values.weblate.general.WEBLATE_SITE_DOMAIN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SITE_TITLE }} + WEBLATE_SITE_TITLE: {{ .Values.weblate.general.WEBLATE_SITE_TITLE | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ADMIN_NAME }} + WEBLATE_ADMIN_NAME: {{ .Values.weblate.general.WEBLATE_ADMIN_NAME | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ADMIN_EMAIL }} + WEBLATE_ADMIN_EMAIL: {{ .Values.weblate.general.WEBLATE_ADMIN_EMAIL | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ADMIN_PASSWORD }} + WEBLATE_ADMIN_PASSWORD: {{ .Values.weblate.general.WEBLATE_ADMIN_PASSWORD | quote }} + {{- end }} + {{- if .Values.weblate.WEBLATE_AUTO_UPDATE }} + WEBLATE_AUTO_UPDATE: {{ .Values.weblate.WEBLATE_AUTO_UPDATE | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SERVER_EMAIL }} + WEBLATE_SERVER_EMAIL: {{ .Values.weblate.general.WEBLATE_SERVER_EMAIL | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_FROM_EMAIL }} + WEBLATE_DEFAULT_FROM_EMAIL: {{ .Values.weblate.general.WEBLATE_DEFAULT_FROM_EMAIL | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CONTACT_FORM }} + WEBLATE_CONTACT_FORM: {{ .Values.weblate.general.WEBLATE_CONTACT_FORM | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ALLOWED_HOSTS }} + WEBLATE_ALLOWED_HOSTS: {{ .Values.weblate.general.WEBLATE_ALLOWED_HOSTS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_REGISTRATION_OPEN }} + WEBLATE_REGISTRATION_OPEN: {{ .Values.weblate.general.WEBLATE_REGISTRATION_OPEN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_REGISTRATION_ALLOW_BACKENDS }} + WEBLATE_REGISTRATION_ALLOW_BACKENDS: {{ .Values.weblate.general.WEBLATE_REGISTRATION_ALLOW_BACKENDS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ENABLE_HTTPS }} + WEBLATE_ENABLE_HTTPS: {{ .Values.weblate.general.WEBLATE_ENABLE_HTTPS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_IP_PROXY_HEADER }} + WEBLATE_IP_PROXY_HEADER: {{ .Values.weblate.general.WEBLATE_IP_PROXY_HEADER | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SECURE_PROXY_SSL_HEADER }} + WEBLATE_SECURE_PROXY_SSL_HEADER: {{ .Values.weblate.general.WEBLATE_SECURE_PROXY_SSL_HEADER | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_REQUIRE_LOGIN }} + WEBLATE_REQUIRE_LOGIN: {{ .Values.weblate.general.WEBLATE_REQUIRE_LOGIN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS }} + WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS: {{ .Values.weblate.general.WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS }} + WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS: {{ .Values.weblate.general.WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS }} + WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS: {{ .Values.weblate.general.WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GOOGLE_ANALYTICS_ID }} + WEBLATE_GOOGLE_ANALYTICS_ID: {{ .Values.weblate.general.WEBLATE_GOOGLE_ANALYTICS_ID | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GITHUB_USERNAME }} + WEBLATE_GITHUB_USERNAME: {{ .Values.weblate.general.WEBLATE_GITHUB_USERNAME | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GITHUB_TOKEN }} + WEBLATE_GITHUB_TOKEN: {{ .Values.weblate.general.WEBLATE_GITHUB_TOKEN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GITLAB_USERNAME }} + WEBLATE_GITLAB_USERNAME: {{ .Values.weblate.general.WEBLATE_GITLAB_USERNAME | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GITLAB_TOKEN }} + WEBLATE_GITLAB_TOKEN: {{ .Values.weblate.general.WEBLATE_GITLAB_TOKEN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_PAGURE_USERNAME }} + WEBLATE_PAGURE_USERNAME: {{ .Values.weblate.general.WEBLATE_PAGURE_USERNAME | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_PAGURE_TOKEN }} + WEBLATE_PAGURE_TOKEN: {{ .Values.weblate.general.WEBLATE_PAGURE_TOKEN | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SIMPLIFY_LANGUAGES }} + WEBLATE_SIMPLIFY_LANGUAGES: {{ .Values.weblate.general.WEBLATE_SIMPLIFY_LANGUAGES | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_ACCESS_CONTROL }} + WEBLATE_DEFAULT_ACCESS_CONTROL: {{ .Values.weblate.general.WEBLATE_DEFAULT_ACCESS_CONTROL | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_RESTRICTED_COMPONENT }} + WEBLATE_DEFAULT_RESTRICTED_COMPONENT: {{ .Values.weblate.general.WEBLATE_DEFAULT_RESTRICTED_COMPONENT | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_TRANSLATION_PROPAGATION }} + WEBLATE_DEFAULT_TRANSLATION_PROPAGATION: {{ .Values.weblate.general.WEBLATE_DEFAULT_TRANSLATION_PROPAGATION | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_COMMITER_EMAIL }} + WEBLATE_DEFAULT_COMMITER_EMAIL: {{ .Values.weblate.general.WEBLATE_DEFAULT_COMMITER_EMAIL | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_COMMITER_NAME }} + WEBLATE_DEFAULT_COMMITER_NAME: {{ .Values.weblate.general.WEBLATE_DEFAULT_COMMITER_NAME | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_SHARED_TM }} + WEBLATE_DEFAULT_SHARED_TM: {{ .Values.weblate.general.WEBLATE_DEFAULT_SHARED_TM | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_AKISMET_API_KEY }} + WEBLATE_AKISMET_API_KEY: {{ .Values.weblate.general.WEBLATE_AKISMET_API_KEY | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_GPG_IDENTITY }} + WEBLATE_GPG_IDENTITY: {{ .Values.weblate.general.WEBLATE_GPG_IDENTITY | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_URL_PREFIX }} + WEBLATE_URL_PREFIX: {{ .Values.weblate.general.WEBLATE_URL_PREFIX | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SILENCED_SYSTEM_CHECKS }} + WEBLATE_SILENCED_SYSTEM_CHECKS: {{ .Values.weblate.general.WEBLATE_SILENCED_SYSTEM_CHECKS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CSP_SCRIPT_SRC }} + WEBLATE_CSP_SCRIPT_SRC: {{ .Values.weblate.general.WEBLATE_CSP_SCRIPT_SRC | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CSP_IMG_SRC }} + WEBLATE_CSP_IMG_SRC: {{ .Values.weblate.general.WEBLATE_CSP_IMG_SRC | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CSP_CONNECT_SRC }} + WEBLATE_CSP_CONNECT_SRC: {{ .Values.weblate.general.WEBLATE_CSP_CONNECT_SRC | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CSP_STYLE_SRC }} + WEBLATE_CSP_STYLE_SRC: {{ .Values.weblate.general.WEBLATE_CSP_STYLE_SRC | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_CSP_FONT_SRC }} + WEBLATE_CSP_FONT_SRC: {{ .Values.weblate.general.WEBLATE_CSP_FONT_SRC | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_LICENSE_FILTER }} + WEBLATE_LICENSE_FILTER: {{ .Values.weblate.general.WEBLATE_LICENSE_FILTER | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_LICENSE_REQUIRED }} + WEBLATE_LICENSE_REQUIRED: {{ .Values.weblate.general.WEBLATE_LICENSE_REQUIRED | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_WEBSITE_REQUIRED }} + WEBLATE_WEBSITE_REQUIRED: {{ .Values.weblate.general.WEBLATE_WEBSITE_REQUIRED | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_HIDE_VERSION }} + WEBLATE_HIDE_VERSION: {{ .Values.weblate.general.WEBLATE_HIDE_VERSION | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_BASIC_LANGUAGES }} + WEBLATE_BASIC_LANGUAGES: {{ .Values.weblate.general.WEBLATE_BASIC_LANGUAGES | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEFAULT_AUTO_WATCH }} + WEBLATE_DEFAULT_AUTO_WATCH: {{ .Values.weblate.general.WEBLATE_DEFAULT_AUTO_WATCH | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_RATELIMIT_ATTEMPTS }} + WEBLATE_RATELIMIT_ATTEMPTS: {{ .Values.weblate.general.WEBLATE_RATELIMIT_ATTEMPTS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_RATELIMIT_LOCKOUT }} + WEBLATE_RATELIMIT_LOCKOUT: {{ .Values.weblate.general.WEBLATE_RATELIMIT_LOCKOUT | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_RATELIMIT_WINDOW }} + WEBLATE_RATELIMIT_WINDOW: {{ .Values.weblate.general.WEBLATE_RATELIMIT_WINDOW | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_ENABLE_AVATARS }} + WEBLATE_ENABLE_AVATARS: {{ .Values.weblate.general.WEBLATE_ENABLE_AVATARS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH }} + WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH: {{ .Values.weblate.general.WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_SSH_EXTRA_ARGS }} + WEBLATE_SSH_EXTRA_ARGS: {{ .Values.weblate.general.WEBLATE_SSH_EXTRA_ARGS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_BORG_EXTRA_ARGS }} + WEBLATE_BORG_EXTRA_ARGS: {{ .Values.weblate.general.WEBLATE_BORG_EXTRA_ARGS | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DATABASE_BACKUP }} + WEBLATE_DATABASE_BACKUP: {{ .Values.weblate.general.WEBLATE_DATABASE_BACKUP | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_DEBUG }} + WEBLATE_DEBUG: {{ .Values.weblate.general.WEBLATE_DEBUG | quote }} + {{- end }} + {{- if .Values.weblate.general.WEBLATE_LOGLEVEL }} + WEBLATE_LOGLEVEL: {{ .Values.weblate.general.WEBLATE_LOGLEVEL | quote }} + {{- end }} + {{/* Machine Translation */}} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_APERTIUM_APY }} + WEBLATE_MT_APERTIUM_APY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_APERTIUM_APY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_AWS_REGION }} + WEBLATE_MT_AWS_REGION: {{ .Values.weblate.machinetranslate.WEBLATE_MT_AWS_REGION | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_AWS_ACCESS_KEY_ID }} + WEBLATE_MT_AWS_ACCESS_KEY_ID: {{ .Values.weblate.machinetranslate.WEBLATE_MT_AWS_ACCESS_KEY_ID | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_AWS_SECRET_ACCESS_KEY }} + WEBLATE_MT_AWS_SECRET_ACCESS_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_AWS_SECRET_ACCESS_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_DEEPL_KEY }} + WEBLATE_MT_DEEPL_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_DEEPL_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_DEEPL_API_URL }} + WEBLATE_MT_DEEPL_API_URL: {{ .Values.weblate.machinetranslate.WEBLATE_MT_DEEPL_API_URL | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_LIBRETRANSLATE_KEY }} + WEBLATE_MT_LIBRETRANSLATE_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_LIBRETRANSLATE_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_LIBRETRANSLATE_API_URL }} + WEBLATE_MT_LIBRETRANSLATE_API_URL: {{ .Values.weblate.machinetranslate.WEBLATE_MT_LIBRETRANSLATE_API_URL | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_KEY }} + WEBLATE_MT_GOOGLE_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_CREDENTIALS }} + WEBLATE_MT_GOOGLE_CREDENTIALS: {{ .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_CREDENTIALS | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_PROJECT }} + WEBLATE_MT_GOOGLE_PROJECT: {{ .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_PROJECT | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_LOCATION }} + WEBLATE_MT_GOOGLE_LOCATION: {{ .Values.weblate.machinetranslate.WEBLATE_MT_GOOGLE_LOCATION | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_COGNITIVE_KEY }} + WEBLATE_MT_MICROSOFT_COGNITIVE_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_COGNITIVE_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_ENDPOINT_URL }} + WEBLATE_MT_MICROSOFT_ENDPOINT_URL: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_ENDPOINT_URL | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_REGION }} + WEBLATE_MT_MICROSOFT_REGION: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_REGION | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_BASE_URL }} + WEBLATE_MT_MICROSOFT_BASE_URL: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_BASE_URL | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MODERNMT_KEY }} + WEBLATE_MT_MODERNMT_KEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MODERNMT_KEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MYMEMORY_ENABLED }} + WEBLATE_MT_MYMEMORY_ENABLED: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MYMEMORY_ENABLED | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_GLOSBE_ENABLED }} + WEBLATE_MT_GLOSBE_ENABLED: {{ .Values.weblate.machinetranslate.WEBLATE_MT_GLOSBE_ENABLED | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED }} + WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED: {{ .Values.weblate.machinetranslate.WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_SAP_BASE_URL }} + WEBLATE_MT_SAP_BASE_URL: {{ .Values.weblate.machinetranslate.WEBLATE_MT_SAP_BASE_URL | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_SAP_SANDBOX_APIKEY }} + WEBLATE_MT_SAP_SANDBOX_APIKEY: {{ .Values.weblate.machinetranslate.WEBLATE_MT_SAP_SANDBOX_APIKEY | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_SAP_USERNAME }} + WEBLATE_MT_SAP_USERNAME: {{ .Values.weblate.machinetranslate.WEBLATE_MT_SAP_USERNAME | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_SAP_PASSWORD }} + WEBLATE_MT_SAP_PASSWORD: {{ .Values.weblate.machinetranslate.WEBLATE_MT_SAP_PASSWORD | quote }} + {{- end }} + {{- if .Values.weblate.machinetranslate.WEBLATE_MT_SAP_USE_MT }} + WEBLATE_MT_SAP_USE_MT: {{ .Values.weblate.machinetranslate.WEBLATE_MT_SAP_USE_MT | quote }} + {{- end }} + {{/* Authentication */}} + {{/* LDAP */}} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_SERVER_URI }} + WEBLATE_AUTH_LDAP_SERVER_URI: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_SERVER_URI | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE }} + WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_ATTR_MAP }} + WEBLATE_AUTH_LDAP_USER_ATTR_MAP: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_ATTR_MAP | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_BIND_DN }} + WEBLATE_AUTH_LDAP_BIND_DN: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_BIND_DN | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_BIND_PASSWORD }} + WEBLATE_AUTH_LDAP_BIND_PASSWORD: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_BIND_PASSWORD | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS }} + WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH }} + WEBLATE_AUTH_LDAP_USER_SEARCH: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER }} + WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_UNION }} + WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_UNION | quote }} + {{- end }} + {{- if .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER }} + WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER: {{ .Values.weblate.auth.ldap.WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER | quote }} + {{- end }} + {{/* Github */}} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_KEY }} + WEBLATE_SOCIAL_AUTH_GITHUB_KEY: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_SECRET }} + WEBLATE_SOCIAL_AUTH_GITHUB_SECRET: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY }} + WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET }} + WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME }} + WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY }} + WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET }} + WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID }} + WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID: {{ .Values.weblate.auth.github.WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID | quote }} + {{- end }} + {{/* Bitbucket */}} + {{- if .Values.weblate.auth.bitbucket.WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY }} + WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY: {{ .Values.weblate.auth.bitbucket.WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.bitbucket.WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET }} + WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET: {{ .Values.weblate.auth.bitbucket.WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET | quote }} + {{- end }} + {{/* Facebook */}} + {{- if .Values.weblate.auth.facebook.WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY }} + WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY: {{ .Values.weblate.auth.facebook.WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.facebook.WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET }} + WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET: {{ .Values.weblate.auth.facebook.WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET | quote }} + {{- end }} + {{/* Google */}} + {{- if .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY }} + WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY: {{ .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET }} + WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET: {{ .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS }} + WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS: {{ .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS | quote }} + {{- end }} + {{- if .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS }} + WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS: {{ .Values.weblate.auth.google.WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS | quote }} + {{- end }} + {{/* GitLab */}} + {{- if .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_KEY }} + WEBLATE_SOCIAL_AUTH_GITLAB_KEY: {{ .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_SECRET }} + WEBLATE_SOCIAL_AUTH_GITLAB_SECRET: {{ .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_API_URL }} + WEBLATE_SOCIAL_AUTH_GITLAB_API_URL: {{ .Values.weblate.auth.gitlab.WEBLATE_SOCIAL_AUTH_GITLAB_API_URL | quote }} + {{- end }} + {{/* Azure Active Directory */}} + {{- if .Values.weblate.auth.azure.WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY }} + WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY: {{ .Values.weblate.auth.azure.WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.azure.WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET }} + WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET: {{ .Values.weblate.auth.azure.WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET | quote }} + {{- end }} + {{/* Azure Active Directory with Tenant support */}} + {{- if .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY }} + WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY: {{ .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET }} + WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET: {{ .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID }} + WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID: {{ .Values.weblate.auth.azuretenant.WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID | quote }} + {{- end }} + {{/* Keycloak */}} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET | quote }} + {{- end }} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM | quote }} + {{- end }} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL | quote }} + {{- end }} + {{- if .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL }} + WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL: {{ .Values.weblate.auth.keycloak.WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL | quote }} + {{- end }} + {{/* Linux vendors */}} + {{- if .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_FEDORA }} + WEBLATE_SOCIAL_AUTH_FEDORA: {{ .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_FEDORA | quote }} + {{- end }} + {{- if .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_OPENSUSE }} + WEBLATE_SOCIAL_AUTH_OPENSUSE: {{ .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_OPENSUSE | quote }} + {{- end }} + {{- if .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_UBUNTU }} + WEBLATE_SOCIAL_AUTH_UBUNTU: {{ .Values.weblate.auth.linux.WEBLATE_SOCIAL_AUTH_UBUNTU | quote }} + {{- end }} + {{/* Slack */}} + {{- if .Values.weblate.auth.slack.WEBLATE_SOCIAL_AUTH_SLACK_KEY }} + WEBLATE_SOCIAL_AUTH_SLACK_KEY: {{ .Values.weblate.auth.slack.WEBLATE_SOCIAL_AUTH_SLACK_KEY | quote }} + {{- end }} + {{- if .Values.weblate.auth.slack.SOCIAL_AUTH_SLACK_SECRET }} + SOCIAL_AUTH_SLACK_SECRET: {{ .Values.weblate.auth.slack.SOCIAL_AUTH_SLACK_SECRET }} + {{- end }} + {{/* SAML */}} + {{- if .Values.weblate.auth.saml.WEBLATE_SAML_IDP_ENTITY_ID }} + WEBLATE_SAML_IDP_ENTITY_ID: {{ .Values.weblate.auth.saml.WEBLATE_SAML_IDP_ENTITY_ID | quote }} + {{- end }} + {{- if .Values.weblate.auth.saml.WEBLATE_SAML_IDP_URL }} + WEBLATE_SAML_IDP_URL: {{ .Values.weblate.auth.saml.WEBLATE_SAML_IDP_URL | quote }} + {{- end }} + {{- if .Values.weblate.auth.saml.WEBLATE_SAML_IDP_X509CERT }} + WEBLATE_SAML_IDP_X509CERT: {{ .Values.weblate.auth.saml.WEBLATE_SAML_IDP_X509CERT | quote }} + {{- end }} + {{/* Email Server */}} + {{- if .Values.weblate.email.WEBLATE_EMAIL_HOST }} + WEBLATE_EMAIL_HOST: {{ .Values.weblate.email.WEBLATE_EMAIL_HOST | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_PORT }} + WEBLATE_EMAIL_PORT: {{ .Values.weblate.email.WEBLATE_EMAIL_PORT | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_HOST_USER }} + WEBLATE_EMAIL_HOST_USER: {{ .Values.weblate.email.WEBLATE_EMAIL_HOST_USER | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_HOST_PASSWORD }} + WEBLATE_EMAIL_HOST_PASSWORD: {{ .Values.weblate.email.WEBLATE_EMAIL_HOST_PASSWORD | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_USE_SSL }} + WEBLATE_EMAIL_USE_SSL: {{ .Values.weblate.email.WEBLATE_EMAIL_USE_SSL | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_USE_TLS }} + WEBLATE_EMAIL_USE_TLS: {{ .Values.weblate.email.WEBLATE_EMAIL_USE_TLS | quote }} + {{- end }} + {{- if .Values.weblate.email.WEBLATE_EMAIL_BACKEND }} + WEBLATE_EMAIL_BACKEND: {{ .Values.weblate.email.WEBLATE_EMAIL_BACKEND | quote }} + {{- end }} + {{/* Site Integration */}} + {{- if .Values.weblate.siteintegration.WEBLATE_GET_HELP_URL }} + WEBLATE_GET_HELP_URL: {{ .Values.weblate.siteintegration.WEBLATE_GET_HELP_URL | quote }} + {{- end }} + {{- if .Values.weblate.siteintegration.WEBLATE_STATUS_URL }} + WEBLATE_STATUS_URL: {{ .Values.weblate.siteintegration.WEBLATE_STATUS_URL | quote }} + {{- end }} + {{- if .Values.weblate.siteintegration.WEBLATE_LEGAL_URL }} + WEBLATE_LEGAL_URL: {{ .Values.weblate.siteintegration.WEBLATE_LEGAL_URL | quote }} + {{- end }} + {{- if .Values.weblate.siteintegration.WEBLATE_PRIVACY_URL }} + WEBLATE_PRIVACY_URL: {{ .Values.weblate.siteintegration.WEBLATE_PRIVACY_URL | quote }} + {{- end }} + {{/* Error Reporting */}} + {{- if .Values.weblate.errorreport.ROLLBAR_KEY }} + ROLLBAR_KEY: {{ .Values.weblate.REPALCEME.ROLLBAR_KEY | quote }} + {{- end }} + {{- if .Values.weblate.errorreport.ROLLBAR_ENVIRONMENT }} + ROLLBAR_ENVIRONMENT: {{ .Values.weblate.REPALCEME.ROLLBAR_ENVIRONMENT | quote }} + {{- end }} + {{- if .Values.weblate.errorreport.SENTRY_DSN }} + SENTRY_DSN: {{ .Values.weblate.REPALCEME.SENTRY_DSN | quote }} + {{- end }} + {{- if .Values.weblate.errorreport.SENTRY_ENVIRONMENT }} + SENTRY_ENVIRONMENT: {{ .Values.weblate.REPALCEME.SENTRY_ENVIRONMENT | quote }} + {{- end }} + {{/* Localization CDN */}} + {{- if .Values.weblate.localization.WEBLATE_LOCALIZE_CDN_URL }} + WEBLATE_LOCALIZE_CDN_URL: {{ .Values.weblate.localization.WEBLATE_LOCALIZE_CDN_URL | quote }} + {{- end }} + {{- if .Values.weblate.localization.WEBLATE_LOCALIZE_CDN_PATH }} + WEBLATE_LOCALIZE_CDN_PATH: {{ .Values.weblate.localization.WEBLATE_LOCALIZE_CDN_PATH | quote }} + {{- end }} +{{- end -}} diff --git a/charts/incubator/weblate/templates/common.yaml b/charts/incubator/weblate/templates/common.yaml new file mode 100644 index 00000000000..9da2e155178 --- /dev/null +++ b/charts/incubator/weblate/templates/common.yaml @@ -0,0 +1,8 @@ +{{/* Make sure all variables are set properly */}} +{{ include "common.setup" . }} + +{{/* Render configmap for weblate */}} +{{- include "weblate.configmap" . }} + +{{/* Render the templates */}} +{{ include "common.postSetup" . }} diff --git a/charts/incubator/weblate/values.yaml b/charts/incubator/weblate/values.yaml new file mode 100644 index 00000000000..2edeb93a452 --- /dev/null +++ b/charts/incubator/weblate/values.yaml @@ -0,0 +1,248 @@ +image: + repository: tccr.io/truecharts/weblate + tag: v4.10.1@sha256:bc517880487a9a766a3ce4ddfe429ed37ad4605d0097e28b0dd16eafdacd12b2 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + +podSecurityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + +env: + TZ: UTC + WEBLATE_TIME_ZONE: "{{ .Values.env.TZ }}" + POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}" + POSTGRES_DATABASE: "{{ .Values.postgresql.postgresqlDatabase }}" + POSTGRES_PORT: 5432 + REDIS_PORT: 6379 + REDIS_DB: "0" + +weblate: + general: + WEBLATE_SITE_TITLE: "My Project's Weblate" + WEBLATE_SITE_DOMAIN: "weblate.example.com" + # WEBLATE_ADMIN_NAME: "" + # WEBLATE_ADMIN_EMAIL: "" + # This sets the password on EVERY app startup + # WEBLATE_ADMIN_PASSWORD: "" + # WEBLATE_AUTO_UPDATE: "" + # WEBLATE_SERVER_EMAIL: "" + # WEBLATE_DEFAULT_FROM_EMAIL: "" + # WEBLATE_CONTACT_FORM: "" + # WEBLATE_REGISTRATION_OPEN: "" + # WEBLATE_REGISTRATION_ALLOW_BACKENDS: "" + # WEBLATE_REQUIRE_LOGIN: "" + # WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS: "" + # WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS: "" + # WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS: "" + # WEBLATE_DEFAULT_ACCESS_CONTROL: "" + # WEBLATE_DEFAULT_RESTRICTED_COMPONENT: "" + # WEBLATE_DEFAULT_TRANSLATION_PROPAGATION: "" + # WEBLATE_DEFAULT_COMMITER_EMAIL: "" + # WEBLATE_DEFAULT_COMMITER_NAME: "" + # WEBLATE_DEFAULT_SHARED_TM: "" + # WEBLATE_GPG_IDENTITY: "" + # WEBLATE_DEFAULT_AUTO_WATCH: "" + # WEBLATE_GITHUB_USERNAME: "" + # WEBLATE_GITHUB_TOKEN: "" + # WEBLATE_GITLAB_USERNAME: "" + # WEBLATE_GITLAB_TOKEN: "" + # WEBLATE_CSP_SCRIPT_SRC: "" + # WEBLATE_CSP_IMG_SRC: "" + # WEBLATE_CSP_CONNECT_SRC: "" + # WEBLATE_CSP_STYLE_SRC: "" + # WEBLATE_CSP_FONT_SRC: "" + # WEBLATE_WEBSITE_REQUIRED: "" + # WEBLATE_SIMPLIFY_LANGUAGES: "" + # WEBLATE_DATABASE_BACKUP: "" + # WEBLATE_URL_PREFIX: "" + # WEBLATE_SILENCED_SYSTEM_CHECKS: "" + # WEBLATE_HIDE_VERSION: "" + # WEBLATE_BASIC_LANGUAGES: "" + # WEBLATE_ENABLE_AVATARS: "" + # WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH: "" + # WEBLATE_ALLOWED_HOSTS: "" + # WEBLATE_ENABLE_HTTPS: "" + # WEBLATE_IP_PROXY_HEADER: "" + # WEBLATE_SECURE_PROXY_SSL_HEADER: "" + # WEBLATE_LICENSE_FILTER: "" + # WEBLATE_LICENSE_REQUIRED: "" + # WEBLATE_RATELIMIT_ATTEMPTS: "" + # WEBLATE_RATELIMIT_LOCKOUT: "" + # WEBLATE_RATELIMIT_WINDOW: "" + WEBLATE_DEBUG: "false" + # WEBLATE_LOGLEVEL: "" + # WEBLATE_GOOGLE_ANALYTICS_ID: "" + # WEBLATE_PAGURE_USERNAME: "" + # WEBLATE_PAGURE_TOKEN: "" + # WEBLATE_AKISMET_API_KEY: "" + # WEBLATE_SSH_EXTRA_ARGS: "" + # WEBLATE_BORG_EXTRA_ARGS: "" + machinetranslate: {} + # WEBLATE_MT_APERTIUM_APY: "" + # WEBLATE_MT_AWS_REGION: "" + # WEBLATE_MT_AWS_ACCESS_KEY_ID: "" + # WEBLATE_MT_AWS_SECRET_ACCESS_KEY: "" + # WEBLATE_MT_DEEPL_KEY: "" + # WEBLATE_MT_DEEPL_API_URL: "" + # WEBLATE_MT_LIBRETRANSLATE_KEY: "" + # WEBLATE_MT_LIBRETRANSLATE_API_URL: "" + # WEBLATE_MT_GOOGLE_KEY: "" + # WEBLATE_MT_GOOGLE_CREDENTIALS: "" + # WEBLATE_MT_GOOGLE_PROJECT: "" + # WEBLATE_MT_GOOGLE_LOCATION: "" + # WEBLATE_MT_MICROSOFT_COGNITIVE_KEY: "" + # WEBLATE_MT_MICROSOFT_ENDPOINT_URL: "" + # WEBLATE_MT_MICROSOFT_REGION: "" + # WEBLATE_MT_MICROSOFT_BASE_URL: "" + # WEBLATE_MT_MODERNMT_KEY: "" + # WEBLATE_MT_MYMEMORY_ENABLED: "" + # WEBLATE_MT_GLOSBE_ENABLED: "" + # WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED: "" + # WEBLATE_MT_SAP_BASE_URL: "" + # WEBLATE_MT_SAP_SANDBOX_APIKEY: "" + # WEBLATE_MT_SAP_USERNAME: "" + # WEBLATE_MT_SAP_PASSWORD: "" + # WEBLATE_MT_SAP_USE_MT: "" + auth: + ldap: {} + # WEBLATE_AUTH_LDAP_SERVER_URI: "" + # WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: "" + # WEBLATE_AUTH_LDAP_USER_ATTR_MAP: "" + # WEBLATE_AUTH_LDAP_BIND_DN: "" + # WEBLATE_AUTH_LDAP_BIND_PASSWORD: "" + # WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: "" + # WEBLATE_AUTH_LDAP_USER_SEARCH: "" + # WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: "" + # WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: "" + # WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER: "" + github: {} + # WEBLATE_SOCIAL_AUTH_GITHUB_KEY: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_SECRET: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET: "" + # WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID: "" + bitbucket: {} + # WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY: "" + # WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET: "" + facebook: {} + # WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY: "" + # WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET: "" + google: {} + # WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY: "" + # WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET: "" + # WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS: "" + # WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS: "" + gitlab: {} + # WEBLATE_SOCIAL_AUTH_GITLAB_KEY: "" + # WEBLATE_SOCIAL_AUTH_GITLAB_SECRET: "" + # WEBLATE_SOCIAL_AUTH_GITLAB_API_URL: "" + azure: {} + # WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY: "" + # WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET: "" + azuretenant: {} + # WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY: "" + # WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET: "" + # WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID: "" + keycloak: {} + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY: "" + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET: "" + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY: "" + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM: "" + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL: "" + # WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL: "" + linux: {} + # WEBLATE_SOCIAL_AUTH_FEDORA: "" + # WEBLATE_SOCIAL_AUTH_OPENSUSE: "" + # WEBLATE_SOCIAL_AUTH_UBUNTU: "" + slack: {} + # WEBLATE_SOCIAL_AUTH_SLACK_KEY: "" + # SOCIAL_AUTH_SLACK_SECRET: "" + saml: {} + # WEBLATE_SAML_IDP_ENTITY_ID: "" + # WEBLATE_SAML_IDP_URL: "" + # WEBLATE_SAML_IDP_X509CERT: "" + email: {} + # WEBLATE_EMAIL_PORT: "" + # WEBLATE_EMAIL_HOST: "" + # WEBLATE_EMAIL_HOST_USER: "" + # WEBLATE_EMAIL_HOST_PASSWORD: "" + # WEBLATE_EMAIL_USE_SSL: "" + # WEBLATE_EMAIL_USE_TLS: "" + # WEBLATE_EMAIL_BACKEND: "" + siteintegration: {} + # WEBLATE_GET_HELP_URL: "" + # WEBLATE_STATUS_URL: "" + # WEBLATE_LEGAL_URL: "" + # WEBLATE_PRIVACY_URL: "" + errorreport: {} + # ROLLBAR_KEY: "" + # ROLLBAR_ENVIRONMENT: "" + # SENTRY_DSN: "" + # SENTRY_ENVIRONMENT: "" + localization: {} + # WEBLATE_LOCALIZE_CDN_URL: "" + # WEBLATE_LOCALIZE_CDN_PATH: "" + +envFrom: + - configMapRef: + name: weblate-env + +envValueFrom: + POSTGRES_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + POSTGRES_HOST: + secretKeyRef: + name: dbcreds + key: plainhost + REDIS_HOST: + secretKeyRef: + name: rediscreds + key: plainhost + REDIS_PASSWORD: + secretKeyRef: + name: rediscreds + key: redis-password + +probes: + liveness: + path: "/healthz" + readiness: + path: "/healthz" + startup: + path: "/healthz" + +service: + main: + ports: + main: + port: 10158 + targetPort: 8080 + +persistence: + config: + enabled: true + mountPath: "/app/data" + cache: + enabled: true + type: emptyDir + mountPath: "/app/cache" + +redis: + enabled: true + existingSecret: "rediscreds" + redisUsername: default + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: weblate + postgresqlDatabase: weblate diff --git a/docs/_static/img/appicons/weblate-icon.png b/docs/_static/img/appicons/weblate-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..de2774478943f2ed5cde3433a6a4d0c79cc7faec GIT binary patch literal 51345 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 W`v)T=h~?RHKUL9Gu6hjn`+oti38<0) literal 0 HcmV?d00001 diff --git a/docs/apps/app-requests.md b/docs/apps/app-requests.md index 71e713687b3..f7713fb6c64 100644 --- a/docs/apps/app-requests.md +++ b/docs/apps/app-requests.md @@ -23,7 +23,6 @@ _This list is to track `App Requests` from one place._ - [ ] External-Auth-Server #28 - [ ] Borg Backup #782 - [ ] Krusader #794 -- [ ] WeblateOrg #817 - [ ] ElectrumX #881 - [ ] Restic #897 - [ ] External-DNS #905 @@ -515,3 +514,4 @@ _These Apps have specific requirements or need specific customisation and care_ - [x] papermerge ( example helm-chart available from [ nicholaswilde ](https://github.com/nicholaswilde/helm-charts) ) - [x] Synapse (Matrix Server) #410 - [x] n8n #27 +- [x] WeblateOrg #817 diff --git a/docs/manual/default-ports.md b/docs/manual/default-ports.md index fb94259057f..ccc9c81f94c 100644 --- a/docs/manual/default-ports.md +++ b/docs/manual/default-ports.md @@ -308,6 +308,7 @@ These defaults can of course be changed, but as we guarantee "sane, working defa | airdcpp-webclient | main | main | 10155 | HTTP | | | trilium-notes | main | main | 10156 | HTTP | | | unmanic | main | main | 10157 | TCP | | +| weblate | main | main | 10158 | TCP | | | hyperion-ng | boblightservice | boblightservice | 19333 | TCP | | | hyperion-ng | jsonservice | jsonservice | 19444 | TCP | | | hyperion-ng | protobufservice | protobufservice | 19445 | TCP | |