diff --git a/charts/stable/n8n/Chart.yaml b/charts/stable/n8n/Chart.yaml index b40069961430..23e28ab0df23 100644 --- a/charts/stable/n8n/Chart.yaml +++ b/charts/stable/n8n/Chart.yaml @@ -28,7 +28,7 @@ sources: - https://docs.n8n.io/ - https://github.com/n8n-io/n8n - https://hub.docker.com/r/n8nio/n8n -version: 4.0.16 +version: 4.0.17 annotations: truecharts.org/catagories: | - media diff --git a/charts/stable/n8n/questions.yaml b/charts/stable/n8n/questions.yaml index 6b4871285fd7..46730c5c4fd9 100644 --- a/charts/stable/n8n/questions.yaml +++ b/charts/stable/n8n/questions.yaml @@ -76,6 +76,19 @@ questions: # Include{controllerExpert} + - variable: timezoneandlocale + group: "Container Configuration" + label: "Timezone and Localization" + schema: + additional_attrs: true + type: dict + attrs: + - variable: N8N_DEFAULT_LOCALE + label: "Default Locale (Leave empty for default)" + description: "A locale identifier, compatible with the Accept-Language header." + schema: + type: string + default: "" - variable: deployment group: "Container Configuration" label: "Deployment" @@ -85,11 +98,17 @@ questions: attrs: - variable: N8N_HOST label: "Host" - description: "Host name where n8n can be reached." + description: "Host name n8n runs on." schema: type: string required: true default: "" + - variable: N8N_EDITOR_BASE_URL + label: "Base URL" + description: "Public URL where users can access the editor. Also used for emails sent from n8n." + schema: + type: string + default: "" - variable: N8N_CONFIG_FILES label: "Config Files (Leave empty for default)" description: "Use to provide the path to any JSON configuration file(s)" @@ -102,6 +121,20 @@ questions: schema: type: boolean default: false + - variable: N8N_TEMPLATES_ENABLED + label: "Enable Templates" + description: "Enable workflow templates." + schema: + type: boolean + default: false + show_subquestions_if: + subquestions: + - variable: N8N_TEMPLATES_HOST + label: "Templates Host (Leave empty for default)" + description: "Change this if creating your own workflow template library." + schema: + type: string + default: "" - variable: N8N_ENCRYPTION_KEY label: "Encryption Key (Leave empty for default)" description: "Provide a custom key used to encrypt credentials in the n8n database. By default a random key is generated on first launch" @@ -110,7 +143,7 @@ questions: default: "" - variable: N8N_PERSONALIZATION_ENABLED label: "Enable Personalization" - description: "Whether to ask users personalisation questions and then customise n8n accordingly" + description: "Whether to ask users personalization questions and then customize n8n accordingly" schema: type: boolean default: true @@ -126,6 +159,12 @@ questions: schema: type: boolean default: false + - variable: N8N_HIRING_BANNER_ENABLED + label: "Enable Hiring Banner" + description: "Whether to show the n8n hiring banner in the console." + schema: + type: boolean + default: false - variable: workflows group: "Container Configuration" label: "Workflows" @@ -139,6 +178,18 @@ questions: schema: type: string default: "" + - variable: N8N_ONBOARDING_FLOW_DISABLED + label: "Enable Onboarding Flow" + description: "Whether to show onboarding tips when creating a new workflow." + schema: + type: boolean + default: false + - variable: N8N_WORKFLOW_TAGS_DISABLED + label: "Disable Workflow Tags" + description: "Whether to disable workflow tags." + schema: + type: boolean + default: false - variable: executions group: "Container Configuration" label: "Executions" @@ -174,7 +225,7 @@ questions: description: "Queue" - variable: EXECUTIONS_TIMEOUT label: "Execution Timeout (Leave empty for default)" - description: "The max run time (in seconds) before stopping a workflow execution" + description: "The maximum run time (in seconds) before stopping a workflow execution. Set to -1 to disable." schema: type: int - variable: EXECUTIONS_TIMEOUT_MAX @@ -184,7 +235,7 @@ questions: type: int - variable: EXECUTIONS_DATA_SAVE_ON_ERROR label: "Execution Data Save on Error" - description: "Whether execution data is saved on error" + description: "Whether n8n saves execution data on error." schema: type: string default: "" @@ -220,22 +271,24 @@ questions: schema: type: boolean default: false - - variable: EXECUTIONS_DATA_PRUNE - label: "Execution Data Prune" - description: "Whether to delete data of past executions on a rolling basis" - schema: - type: boolean - default: false - variable: EXECUTIONS_DATA_MAX_AGE label: "Execution Data Max Age (Leave empty for default)" description: "The execution age (in hours) before it is deleted" schema: type: int - - variable: EXECUTIONS_DATA_PRUNE_TIMEOUT - label: "Data Prune Timeout (Leave empty for default)" - description: "The timeout (in seconds) after execution data has been pruned" + - variable: EXECUTIONS_DATA_PRUNE + label: "Execution Data Prune" + description: "Whether to delete data of past executions on a rolling basis" schema: - type: int + type: boolean + default: false + show_subquestions_if: + subquestions: + - variable: EXECUTIONS_DATA_PRUNE_TIMEOUT + label: "Data Prune Timeout (Leave empty for default)" + description: "The timeout (in seconds) after execution data has been pruned" + schema: + type: int - variable: n8n_security group: "Container Configuration" label: "Security" @@ -243,81 +296,91 @@ questions: additional_attrs: true type: dict attrs: - - variable: N8N_AUTH_EXCLUDE_ENDPOINTS - label: "Additional Endpoints to Exclude Auth Checks (Leave empty for default)" - description: "Additional endpoints to exclude auth checks. Multiple endpoints can be provided separated by a colon (\":\"). The endpoints should not start with a forward slash (\"/\")" + - variable: N8N_BLOCK_ENV_ACCESS_IN_NODE + label: "Block Environment Access in Node" + description: "Whether to allow users to access environment variables in expressions and the function node" schema: - type: string - default: "" + type: boolean + default: false - variable: N8N_BASIC_AUTH_ACTIVE label: "Enable Basic Auth" description: "Whether basic auth should be activated for editor and REST-API access" schema: type: boolean default: false - - variable: N8N_BASIC_AUTH_USER - label: "Basic Auth User (Leave empty for default)" - description: "The name of the n8n user for basic authentication" - schema: - type: string - default: "" - - variable: N8N_BASIC_AUTH_PASSWORD - label: "Basic Auth Password (Leave empty for default)" - description: "The password of the n8n user for basic authentication" - schema: - type: string - default: "" - - variable: N8N_BASIC_AUTH_HASH - label: "Enable Basic Auth Hash" - description: "Whether the basic authentication password is hashed" - schema: - type: boolean - default: false + show_subquestions_if: true + subquestions: + - variable: N8N_BASIC_AUTH_USER + label: "Basic Auth User (Leave empty for default)" + description: "The name of the n8n user for basic authentication" + schema: + type: string + default: "" + - variable: N8N_BASIC_AUTH_PASSWORD + label: "Basic Auth Password (Leave empty for default)" + description: "The password of the n8n user for basic authentication" + schema: + type: string + default: "" + - variable: N8N_BASIC_AUTH_HASH + label: "Enable Basic Auth Hash" + description: "Whether the basic authentication password is hashed" + schema: + type: boolean + default: false - variable: N8N_JWT_AUTH_ACTIVE label: "Enable JWT Auth" description: "Whether JWT authentication should be activated for editor and REST-API access" schema: type: boolean default: false - - variable: N8N_JWT_AUTH_HEADER - label: "JWT Auth Header (Leave empty for default)" - description: "The request header containing a signed JWT" - schema: - type: string - default: "" - - variable: N8N_JWT_AUTH_HEADER_VALUE_PREFIX - label: "JWT Auth Header Prefix to strip (Leave empty for default)" - description: "Optional. The request header value prefix to strip" - schema: - type: string - default: "" - - variable: N8N_JWKS_URI - label: "JWT Set URI (Leave empty for default)" - description: "The URI to fetch JWK Set for JWT authentication" - schema: - type: string - default: "" - - variable: N8N_JWT_ISSUER - label: "JWT Issuer (Leave empty for default)" - description: "Optional. The expected JWT issuer" - schema: - type: string - default: "" - - variable: N8N_JWT_NAMESPACE - label: "JWT Namespace (Leave empty for default)" - description: "Optional. The expected JWT namespace" - schema: - type: string - default: "" - - variable: N8N_JWT_ALLOWED_TENANT - label: "JWT Allowed Tenant (Leave empty for default)" - description: "Optional. The allowed JWT tenant" - schema: - type: string - default: "" - - variable: N8N_JWT_ALLOWED_TENANT_KEY - label: "JWT Allowed Tenant Key (Leave empty for default)" - description: "Optional. The JWT tenant key name to inspect within the JWT namespace" + show_subquestions_if: true + subquestions: + - variable: N8N_JWT_AUTH_HEADER + label: "JWT Auth Header (Leave empty for default)" + description: "The request header containing a signed JWT" + schema: + type: string + default: "" + - variable: N8N_JWT_AUTH_HEADER_VALUE_PREFIX + label: "JWT Auth Header Prefix to strip (Leave empty for default)" + description: "Optional. The request header value prefix to strip" + schema: + type: string + default: "" + - variable: N8N_JWKS_URI + label: "JWT Set URI (Leave empty for default)" + description: "The URI to fetch JWK Set for JWT authentication" + schema: + type: string + default: "" + - variable: N8N_JWT_ISSUER + label: "JWT Issuer (Leave empty for default)" + description: "Optional. The expected JWT issuer" + schema: + type: string + default: "" + - variable: N8N_JWT_NAMESPACE + label: "JWT Namespace (Leave empty for default)" + description: "Optional. The expected JWT namespace" + schema: + type: string + default: "" + - variable: N8N_JWT_ALLOWED_TENANT + label: "JWT Allowed Tenant (Leave empty for default)" + description: "Optional. The allowed JWT tenant" + schema: + type: string + default: "" + - variable: N8N_JWT_ALLOWED_TENANT_KEY + label: "JWT Allowed Tenant Key (Leave empty for default)" + description: "Optional. The JWT tenant key name to inspect within the JWT namespace" + schema: + type: string + default: "" + - variable: N8N_AUTH_EXCLUDE_ENDPOINTS + label: "Additional Endpoints to Exclude Auth Checks (Leave empty for default)" + description: "Additional endpoints to exclude auth checks. Multiple endpoints can be provided separated by a colon (\":\"). The endpoints should not start with a forward slash (\"/\")" schema: type: string default: "" @@ -345,12 +408,14 @@ questions: schema: type: boolean default: false - - variable: N8N_METRICS_PREFIX - label: "Metrics Prefix (Leave empty for default)" - description: "Optional prefix to be used for metrics names" - schema: - type: string - default: "" + show_subquestions_if: + subquestions: + - variable: N8N_METRICS_PREFIX + label: "Metrics Prefix (Leave empty for default)" + description: "Optional prefix to be used for metrics names" + schema: + type: string + default: "" - variable: N8N_ENDPOINT_REST label: "Rest Endpoint Path (Leave empty for default)" description: "The path used for REST endpoint" @@ -395,7 +460,7 @@ questions: type: dict attrs: - variable: CREDENTIALS_OVERWRITE_DATA - label: "Credentianls Overwrites (Leave empty for default)" + label: "Credentials Overwrites (Leave empty for default)" description: "Overwrites for credentials" schema: type: string @@ -463,6 +528,86 @@ questions: description: "Max size of each log file in MB" schema: type: int + - variable: externalhooks + group: "Container Configuration" + label: "External Hooks" + schema: + additional_attrs: true + type: dict + attrs: + - variable: EXTERNAL_HOOK_FILES + label: "External Hook Files (Leave empty for default)" + description: "Files containing external hooks. Provide multiple files as a colon-separated list ':'." + schema: + type: string + default: "" + - variable: usermanagement + group: "Container Configuration" + label: "User Management and SMTP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: N8N_USER_MANAGEMENT_DISABLED + label: "Disable User Management" + description: "Set to true to disable the user management feature. Note that n8n ignores this environment variable if you have already set up an owner account." + schema: + type: boolean + default: false + - variable: N8N_EMAIL_MODE + label: "Email Mode" + description: "Enable emails." + schema: + type: string + default: "smtp" + - variable: N8N_SMTP_HOST + label: "SMTP Host" + description: "Your SMTP server name" + schema: + type: string + default: "" + - variable: N8N_SMTP_PORT + label: "SMTP Port" + description: "Your SMTP server port" + schema: + type: int + - variable: N8N_SMTP_USER + label: "SMTP User" + description: "Your SMTP username" + schema: + type: string + default: "" + - variable: N8N_SMTP_PASS + label: "SMTP Pass" + description: "Your SMTP password" + schema: + type: string + private: true + default: "" + - variable: N8N_SMTP_SENDER + label: "SMTP Sender" + description: "You can select the sender name from the sender addresses." + schema: + type: string + default: "" + - variable: N8N_SMTP_SSL + label: "SMTP SSL" + description: "Whether to use SSL for SMTP." + schema: + type: boolean + default: true + - variable: N8N_UM_EMAIL_TEMPLATES_INVITE + label: "Invite Email Templates (Leave empty for default)" + description: "Full path to your HTML email template. This overrides the default template for invite emails." + schema: + type: string + default: "" + - variable: N8N_UM_EMAIL_TEMPLATES_PWRESET + label: "Password Reset Email Templates (Leave empty for default)" + description: "Full path to your HTML email template. This overrides the default template for password reset emails." + schema: + type: string + default: "" # Include{containerConfig} diff --git a/charts/stable/n8n/templates/_configmap.tpl b/charts/stable/n8n/templates/_configmap.tpl index 7be9fd85e21d..808636c04c52 100644 --- a/charts/stable/n8n/templates/_configmap.tpl +++ b/charts/stable/n8n/templates/_configmap.tpl @@ -6,11 +6,59 @@ kind: ConfigMap metadata: name: n8n-config data: + {{/* External Hooks */}} + {{- if .Values.externalhooks.EXTERNAL_HOOK_FILES }} + EXTERNAL_HOOK_FILES: {{ .Values.externalhooks.EXTERNAL_HOOK_FILES | quote }} + {{- end }} + {{/* User Management */}} + {{- if .Values.usermanagement.N8N_USER_MANAGEMENT_DISABLED }} + N8N_USER_MANAGEMENT_DISABLED: {{ .Values.usermanagement.N8N_USER_MANAGEMENT_DISABLED | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_EMAIL_MODE }} + N8N_EMAIL_MODE: {{ .Values.usermanagement.N8N_EMAIL_MODE | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_SMTP_HOST }} + N8N_SMTP_HOST: {{ .Values.usermanagement.N8N_SMTP_HOST | quote }} + {{- end }} + {{- if or .Values.usermanagement.N8N_SMTP_PORT ( eq 0 .Values.usermanagement.N8N_SMTP_PORT) }} + N8N_SMTP_PORT: {{ .Values.usermanagement.N8N_SMTP_PORT | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_SMTP_USER }} + N8N_SMTP_USER: {{ .Values.usermanagement.N8N_SMTP_USER | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_SMTP_PASS }} + N8N_SMTP_PASS: {{ .Values.usermanagement.N8N_SMTP_PASS | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_SMTP_SENDER }} + N8N_SMTP_SENDER: {{ .Values.usermanagement.N8N_SMTP_SENDER | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_SMTP_SSL }} + N8N_SMTP_SSL: {{ .Values.usermanagement.N8N_SMTP_SSL | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_UM_EMAIL_TEMPLATES_INVITE }} + N8N_UM_EMAIL_TEMPLATES_INVITE: {{ .Values.usermanagement.N8N_UM_EMAIL_TEMPLATES_INVITE | quote }} + {{- end }} + {{- if .Values.usermanagement.N8N_UM_EMAIL_TEMPLATES_PWRESET }} + N8N_UM_EMAIL_TEMPLATES_PWRESET: {{ .Values.usermanagement.N8N_UM_EMAIL_TEMPLATES_PWRESET | quote }} + {{- end }} + {{/* Timezone and Locale */}} + {{- if .Values.timezoneandlocale.N8N_DEFAULT_LOCALE }} + N8N_DEFAULT_LOCALE: {{ .Values.timezoneandlocale.N8N_DEFAULT_LOCALE | quote }} + {{- end }} {{/* Workflows */}} {{- if .Values.workflows.WORKFLOWS_DEFAULT_NAME }} WORKFLOWS_DEFAULT_NAME: {{ .Values.workflows.WORKFLOWS_DEFAULT_NAME | quote }} {{- end }} + {{- if .Values.workflows.N8N_ONBOARDING_FLOW_DISABLED }} + N8N_ONBOARDING_FLOW_DISABLED: {{ .Values.workflows.N8N_ONBOARDING_FLOW_DISABLED | quote }} + {{- end }} + {{- if .Values.workflows.N8N_WORKFLOW_TAGS_DISABLED }} + N8N_WORKFLOW_TAGS_DISABLED: {{ .Values.workflows.N8N_WORKFLOW_TAGS_DISABLED | quote }} + {{- end }} {{/* Security */}} + {{- if .Values.n8n_security.N8N_BLOCK_ENV_ACCESS_IN_NODE }} + N8N_BLOCK_ENV_ACCESS_IN_NODE: {{ .Values.n8n_security.N8N_BLOCK_ENV_ACCESS_IN_NODE | quote }} + {{- end }} {{- if .Values.n8n_security.N8N_AUTH_EXCLUDE_ENDPOINTS }} N8N_AUTH_EXCLUDE_ENDPOINTS: {{ .Values.n8n_security.N8N_AUTH_EXCLUDE_ENDPOINTS | quote }} {{- end }} @@ -145,6 +193,9 @@ data: {{- if .Values.deployment.N8N_HOST }} N8N_HOST: {{ .Values.deployment.N8N_HOST | quote }} {{- end }} + {{- if .Values.deployment.N8N_EDITOR_BASE_URL }} + N8N_EDITOR_BASE_URL: {{ .Values.deployment.N8N_EDITOR_BASE_URL | quote }} + {{- end }} {{- if .Values.deployment.N8N_CONFIG_FILES }} N8N_CONFIG_FILES: {{ .Values.deployment.N8N_CONFIG_FILES | quote }} {{- end }} @@ -160,7 +211,16 @@ data: {{- if .Values.deployment.N8N_VERSION_NOTIFICATIONS_ENABLED }} N8N_VERSION_NOTIFICATIONS_ENABLED: {{ .Values.deployment.N8N_VERSION_NOTIFICATIONS_ENABLED | quote }} {{- end }} + {{- if .Values.deployment.N8N_TEMPLATES_ENABLED }} + N8N_TEMPLATES_ENABLED: {{ .Values.deployment.N8N_TEMPLATES_ENABLED | quote }} + {{- end }} + {{- if .Values.deployment.N8N_TEMPLATES_HOST }} + N8N_TEMPLATES_HOST: {{ .Values.deployment.N8N_TEMPLATES_HOST | quote }} + {{- end }} {{- if .Values.deployment.N8N_DIAGNOSTICS_ENABLED }} N8N_DIAGNOSTICS_ENABLED: {{ .Values.deployment.N8N_DIAGNOSTICS_ENABLED | quote }} {{- end }} + {{- if .Values.deployment.N8N_HIRING_BANNER_ENABLED }} + N8N_HIRING_BANNER_ENABLED: {{ .Values.deployment.N8N_HIRING_BANNER_ENABLED | quote }} + {{- end }} {{- end -}} diff --git a/charts/stable/n8n/values.yaml b/charts/stable/n8n/values.yaml index 3c97a2113acd..7d15c0178ab6 100644 --- a/charts/stable/n8n/values.yaml +++ b/charts/stable/n8n/values.yaml @@ -44,18 +44,25 @@ probes: startup: path: "/healthz" +timezoneandlocale: {} + # N8N_DEFAULT_LOCALE: "en" credentials: {} # CREDENTIALS_OVERWRITE_DATA: "" # CREDENTIALS_OVERWRITE_ENDPOINT: "" # CREDENTIALS_DEFAULT_NAME: "My credentials" deployment: N8N_HOST: "localhost" + # N8N_EDITOR_BASE_URL: "" # N8N_CONFIG_FILES: "" # N8N_ENCRYPTION_KEY: "" # N8N_DIAGNOSTICS_ENABLED: true # N8N_DISABLE_UI: false + # N8N_TEMPLATES_ENABLED: false + # N8N_TEMPLATES_HOST: "" # N8N_PERSONALIZATION_ENABLED: true # N8N_VERSION_NOTIFICATIONS_ENABLED: true + # N8N_DIAGNOSTICS_ENABLED: false + # N8N_HIRING_BANNER_ENABLED: false endpoints: {} # WEBHOOK_URL: "" # N8N_PAYLOAD_SIZE_MAX: 16 @@ -86,7 +93,7 @@ logs: # N8N_LOG_FILE_SIZE_MAX: 16 N8N_LOG_FILE_LOCATION: "/data/logs" n8n_security: {} - # N8N_AUTH_EXCLUDE_ENDPOINTS: "" + # N8N_BLOCK_ENV_ACCESS_IN_NODE: false # N8N_BASIC_AUTH_ACTIVE: false # N8N_BASIC_AUTH_USER: "" # N8N_BASIC_AUTH_PASSWORD: "" @@ -99,8 +106,24 @@ n8n_security: {} # N8N_JWT_NAMESPACE: "" # N8N_JWT_ALLOWED_TENANT: "" # N8N_JWT_ALLOWED_TENANT_KEY: "" + # N8N_AUTH_EXCLUDE_ENDPOINTS: "" workflows: {} # WORKFLOWS_DEFAULT_NAME: "My workflow" + # N8N_ONBOARDING_FLOW_DISABLED: false + # N8N_WORKFLOW_TAGS_DISABLED: false +externalhooks: {} + # EXTERNAL_HOOK_FILES: "" +usermanagement: {} + # N8N_USER_MANAGEMENT_DISABLED: false + # N8N_EMAIL_MODE: "smtp" + # N8N_SMTP_HOST: "" + # N8N_SMTP_PORT: 0 + # N8N_SMTP_USER: "" + # N8N_SMTP_PASS: "" + # N8N_SMTP_SENDER: "" + # N8N_SMTP_SSL: true + # N8N_UM_EMAIL_TEMPLATES_INVITE: "" + # N8N_UM_EMAIL_TEMPLATES_PWRESET: "" envFrom: - configMapRef: