groups: - name: "Container Images" description: "Image to be used for container" - name: "Container Entrypoint" description: "Configuration of the executable that will be run when the container is started" - name: "Container Environment Variables" description: "Set the environment that will be visible to the container" - name: "Networking" description: "Configure networking for container" - name: "Storage" description: "Persist and share data that is separate from the lifecycle of the container" - name: "traefik Configuration" description: "Configure traefik deployment" - name: "Workload Details" description: "Configure how workload should be deployed" - name: "Scaling/Upgrade Policy" description: "Configure how pods are replaced when configuration is upgraded" - name: "Restart Policy" description: "Configure when pod should be restarted in case of failure" - name: "Resource Reservation" description: "Specify resources to be allocated to workload" - name: "Ingress" description: "Configure ingress" - name: "Certmanager Settings" description: "Configure Certmanager" - name: "WARNING" description: "WARNING" portals: web_portal: protocols: - "https" host: - "$variable-appIngress.webui.host" ports: - "443" questions: # Image related - variable: image description: "Docker Image Details" label: "Docker Image" group: "Container Images" schema: type: dict required: true attrs: - variable: repository description: "Docker image repository" label: "Image repository" schema: type: string required: true default: "traefik" - variable: tag description: "Tag to use for specified image" label: "Image Tag" schema: type: string default: "2.4.2" - variable: pullPolicy description: "Docker Image Pull Policy" label: "Image Pull Policy" schema: type: string default: "IfNotPresent" enum: - value: "IfNotPresent" description: "Only pull image if not present on host" - value: "Always" description: "Always pull image even if present on host" - value: "Never" description: "Never pull image even if it's not present on host" - variable: appVolumeMounts label: "app storage" group: "Storage" schema: type: dict attrs: # Config ------------------------ - variable: data label: "Data Dataset" schema: type: dict $ref: - "normalize/ixVolume" attrs: - variable: datasetName label: "Dataset Name" schema: type: string default: "data" required: true editable: false - variable: mountPath label: "Mount Path" description: "Path to mount inside the pod" schema: type: path required: true default: "/data" editable: false - variable: hostPathEnabled label: "host Path Enabled" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path" schema: type: hostpath required: true - variable: appIngress label: "" group: "Ingress" schema: type: dict attrs: - variable: webui label: "Web Ingress Configuration" group: "Ingress" schema: type: dict attrs: - variable: enabled label: "Enable Web Ingress" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: entrypoint label: "Select Entrypoint" schema: type: string default: "websecure" required: true enum: - value: "websecure" description: "Websecure: HTTPS/TLS port 443" - variable: host label: "Host" required: true schema: type: string - variable: certType label: "Select Certificate Type" schema: type: string default: "letsencrypt-prod" enum: - value: "" description: "No Encryption/TLS/Certificates" - value: "letsencrypt-prod" description: "Letsencrypt Production Certificates" - value: "letsencrypt-staging" description: "Letsencrypt Test Certificates" - value: "wildcard" description: "Global Wildcard Certificate" - value: "selfsigned" description: "Self-Signed Certificate" - value: "existingcert" description: "Existing Certificate" - variable: existingcert label: "Existing Certificate Name" schema: type: string show_if: [["certType", "=", "existingcert"]] default: "" - variable: authForwardURL label: "Forward Authentication URL" schema: type: string default: "" - variable: certmanager description: "Configure CertManager Settings" label: "CertManager Settings" group: "Certmanager Settings" schema: type: dict required: true attrs: - variable: email description: "Email Adress to use with Letsencrypt" label: "Email-Adress" schema: type: string default: "" required: true - variable: wildcardDomain description: "Enter Domain name here, if you want to setup a global wildcard-domain" label: "Wildcard Domain" schema: type: string default: "" - variable: provider description: "Select the CertManager provider to use" label: "CertManager Provider" schema: type: string default: "cloudflare" enum: - value: "cloudflare" description: "Cloudflare" - value: "cloudDNS" description: "Google cloudDNS" - value: "route53" description: "Route53" - value: "digitalocean" description: "Digitalocean" - value: "rfc2136" description: "rfc2136" - value: "azureDNS" description: "AzureDNS" - value: "akamai" description: "Akamai" - value: "acmeDNS" description: "acmeDNS" - variable: cloudflare description: "Configure Cloudflare Settings" label: "Cloudflare Settings" schema: show_if: [["provider", "=", "cloudflare"]] type: dict required: true attrs: - variable: apikey description: "Enter your Cloudflare API-Key" label: "API-Key" schema: type: string default: "" required: true - variable: cloudDNS description: "Configure Google cloudDNS Settings" label: "Google cloudDNS Settings" schema: type: dict show_if: [["provider", "=", "cloudDNS"]] required: true attrs: - variable: project description: "Enter your Google cloudDNS Project Name" label: "Project" schema: type: string default: "" required: true - variable: keyjson description: "Enter your Google cloudDNS JSON Key" label: "Key-JSON" schema: type: string default: "" required: true - variable: route53 description: "Configure Route53 Settings" label: "Route53 Settings" schema: type: dict show_if: [["provider", "=", "route53"]] required: true attrs: - variable: region description: "Enter your Route53 Region" label: "Region" schema: type: string default: "" required: true - variable: accessKeyID description: "Enter your Route53 accessKeyID" label: "accessKeyID" schema: type: string default: "" required: true - variable: secretaccesskey description: "Enter your Route53 secretaccesskey" label: "Secretaccesskey" schema: type: string default: "" required: true - variable: digitalocean description: "Configure Digitalocean Settings" label: "Digitalocean Settings" schema: type: dict show_if: [["provider", "=", "digitalocean"]] required: true attrs: - variable: accesstoken description: "Enter your Digitalocean Access Token" label: "Access Token" schema: type: string default: "" required: true - variable: rfc2136 description: "Configure rfc2136 Settings" label: "rfc2136 Settings" schema: type: dict show_if: [["provider", "=", "rfc2136"]] required: true attrs: - variable: nameserver description: "Enter your rfc2136 Nameserver" label: "Nameserver" schema: type: string default: "" required: true - variable: tsigKeyName description: "Enter your rfc2136 tsigKeyName" label: "tsigKeyName" schema: type: string default: "" required: true - variable: tsigsecretkey description: "Enter your rfc2136 tsigsecretkey" label: "tsigsecretkey" schema: type: string default: "" required: true - variable: tsigAlgorithm description: "Enter your rfc2136 tsigAlgorithm" label: "tsigAlgorithm" schema: type: string default: "" required: true - variable: azureDNS description: "Configure AzureDNS Settings" label: "AzureDNS Settings" schema: type: dict show_if: [["provider", "=", "azureDNS"]] required: true attrs: - variable: environment description: "Enter your AzureDNS environment" label: "environment" schema: type: string default: "" required: true - variable: subscriptionID description: "Enter your AzureDNS subscriptionID" label: "subscriptionID" schema: type: string default: "" required: true - variable: resourceGroupName description: "Enter your AzureDNS resourceGroupName" label: "resourceGroupName" schema: type: string default: "" required: true - variable: hostedZoneName description: "Enter your AzureDNS hostedZoneName" label: "hostedZoneName" schema: type: string default: "" required: true - variable: akamai description: "Configure Akamai Settings" label: "Akamai Settings" schema: type: dict show_if: [["provider", "=", "akamai"]] required: true attrs: - variable: serviceConsumerDomain description: "Enter your Akamai serviceConsumerDomain" label: "serviceConsumerDomain" schema: type: string default: "" required: true - variable: clientToken description: "Enter your Akamai clientToken" label: "clientToken" schema: type: string default: "" required: true - variable: clientSecret description: "Enter your Akamai clientSecret" label: "clientSecret" schema: type: string default: "" required: true - variable: accessToken description: "Enter your Akamai accessToken" label: "accessToken" schema: type: string default: "" required: true - variable: acmeDNS description: "Configure acmeDNS Settings" label: "acmeDNS Settings" schema: type: dict show_if: [["provider", "=", "acmeDNS"]] required: true attrs: - variable: host description: "Enter your acmeDNS host" label: "host" schema: type: string default: "" required: true - variable: apikey description: "Enter your acmeDNS acmednsjson" label: "acmednsjson" schema: type: string default: "" required: true - variable: warning label: "This App binds to the same ports as TrueNAS SCALE UI: 80 and 443" description: "Please be sure to set the UI to a different port or adapter" group: "WARNING" schema: type: dict attrs: - variable: confirm-warning description: "Check this to confirm you have made precautions against conflicts on port 80 and 443" label: "I understand above warning and its consequences" schema: type: boolean default: false required: true