Files
truenas-apps/ix-dev/community/briefkasten/questions.yaml
Stavros Kois 8ecab3e904 default to postgres 18 (#3743)
* default to postgres 18

* bump

* add deprecation.yaml on apps with pg15
2025-12-02 11:44:34 +02:00

642 lines
24 KiB
YAML

groups:
- name: Briefkasten Configuration
description: Configure Briefkasten
- name: User and Group Configuration
description: Configure User and Group for Briefkasten
- name: Network Configuration
description: Configure Network for Briefkasten
- name: Storage Configuration
description: Configure Storage for Briefkasten
- name: Labels Configuration
description: Configure Labels for Briefkasten
- name: Resources Configuration
description: Configure Resources for Briefkasten
questions:
- variable: TZ
group: Briefkasten Configuration
label: Timezone
schema:
type: string
default: Etc/UTC
required: true
$ref:
- definitions/timezone
- variable: briefkasten
label: ""
group: Briefkasten Configuration
schema:
type: dict
attrs:
- variable: postgres_image_selector
label: Postgres Image (CAUTION)
description: |
If you are changing this after the postgres directory has been initialized,</br>
STOP! and make sure you have a backup of your data.</br>
Changing this will trigger an one way database upgrade.</br>
You can only select newer versions of postgres.</br>
Selecting an older version will refuse to start.</br>
If something goes wrong, you will have to restore from backup.
schema:
type: string
default: postgres_18_image
required: true
enum:
- value: postgres_15_image
description: Postgres 15 (Deprecated)
- value: postgres_17_image
description: Postgres 17
- value: postgres_18_image
description: Postgres 18
- variable: nextauth_secret
label: NextAuth Secret
description: The secret used to encrypt the JWT token.
schema:
type: string
default: ""
required: true
private: true
- variable: postgres_password
label: Postgres Password
description: The password for Postgres.
schema:
type: string
default: ""
required: true
private: true
- variable: nextauth_url
label: NextAuth URL
description: |
The URL that Briefkasten will be accessible from.</br>
Example: </br>
http://server.ip:30080</br>
https://Briefkasten.example.com
schema:
type: uri
default: ""
required: true
- variable: smtp
label: SMTP Auth Provider
description: Configure SMTP for Briefkasten.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable SMTP for auth.
schema:
type: boolean
default: false
- variable: server
label: SMTP Server
description: The SMTP server to use.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: from
label: SMTP From
description: The SMTP from address to use.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: github
label: GitHub Auth Provider
description: Configure GitHub for Briefkasten.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable GitHub for auth.
schema:
type: boolean
default: false
- variable: id
label: GitHub Client ID
description: The GitHub Client ID.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: secret
label: GitHub Client Secret
description: The GitHub Client Secret.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
private: true
required: true
- variable: google
label: Google Auth Provider
description: Configure Google for Briefkasten.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable Google for auth.
schema:
type: boolean
default: false
- variable: id
label: Google Client ID
description: The Google Client ID.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: secret
label: Google Client Secret
description: The Google Client Secret.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
private: true
required: true
- variable: keycloak
label: Keycloak Auth Provider
description: Configure Keycloak for Briefkasten.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable Keycloak for auth.
schema:
type: boolean
default: false
- variable: name
label: Keycloak Name
description: The Keycloak Name.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: id
label: Keycloak Client ID
description: The Keycloak Client ID.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: secret
label: Keycloak Client Secret
description: The Keycloak Client Secret.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
private: true
required: true
- variable: issuer
label: Keycloak Issuer
description: The Keycloak Issuer.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: authentik
label: Authentik Auth Provider
description: Configure Authentik for Briefkasten.
schema:
type: dict
attrs:
- variable: enabled
label: Enabled
description: Enable Authentik for auth.
schema:
type: boolean
default: false
- variable: name
label: Authentik Name
description: The Authentik Name.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: id
label: Authentik Client ID
description: The Authentik Client ID.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: secret
label: Authentik Client Secret
description: The Authentik Client Secret.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
private: true
required: true
- variable: issuer
label: Authentik Issuer
description: The Authentik Issuer.
schema:
type: string
show_if: [["enabled", "=", true]]
default: ""
required: true
- variable: additional_envs
label: Additional Environment Variables
schema:
type: list
default: []
items:
- variable: env
label: Environment Variable
schema:
type: dict
attrs:
- variable: name
label: Name
schema:
type: string
required: true
- variable: value
label: Value
schema:
type: string
- variable: network
label: ""
group: Network Configuration
schema:
type: dict
attrs:
- variable: web_port
label: WebUI Port
schema:
type: dict
attrs:
- variable: bind_mode
label: Port Bind Mode
description: |
The port bind mode.</br>
- Publish: The port will be published on the host for external access.</br>
- Expose: The port will be exposed for inter-container communication.</br>
- None: The port will not be exposed or published.</br>
Note: If the Dockerfile defines an EXPOSE directive,
the port will still be exposed for inter-container communication regardless of this setting.
schema:
type: string
default: "published"
enum:
- value: "published"
description: Publish port on the host for external access
- value: "exposed"
description: Expose port for inter-container communication
- value: ""
description: None
- variable: port_number
label: Port Number
schema:
type: int
default: 30080
min: 1
max: 65535
required: true
- variable: host_ips
label: Host IPs
description: IPs on the host to bind this port
schema:
type: list
show_if: [["bind_mode", "=", "published"]]
default: []
items:
- variable: host_ip
label: Host IP
schema:
type: string
required: true
$ref:
- definitions/node_bind_ip
- variable: storage
label: ""
group: Storage Configuration
schema:
type: dict
attrs:
- variable: postgres_data
label: Postgres Data Storage
description: The path to store Postgres Data.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
default: "ix_volume"
enum:
- value: "host_path"
description: Host Path (Path that already exists on the system)
- value: "ix_volume"
description: ixVolume (Dataset created automatically by the system)
- variable: ix_volume_config
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ix_volume"]]
$ref:
- "normalize/ix_volume"
attrs:
- variable: acl_enable
label: Enable ACL
description: Enable ACL for the storage.
schema:
type: boolean
default: false
- variable: dataset_name
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
hidden: true
default: "pg_data"
- variable: acl_entries
label: ACL Configuration
schema:
type: dict
show_if: [["acl_enable", "=", true]]
attrs: []
- variable: host_path_config
label: Host Path Configuration
schema:
type: dict
show_if: [["type", "=", "host_path"]]
attrs:
- variable: acl_enable
label: Enable ACL
description: Enable ACL for the storage.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["acl_enable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: path
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["acl_enable", "=", false]]
required: true
- variable: auto_permissions
label: Automatic Permissions
description: |
Automatically set permissions for the host path.
Enabling this, will check the top level directory,</br>
If it finds incorrect permissions, it will `chown` the
host path to the user and group required for the
postgres container.
schema:
type: boolean
default: false
show_if: [["acl_enable", "=", false]]
- variable: additional_storage
label: Additional Storage
schema:
type: list
default: []
items:
- variable: storageEntry
label: Storage Entry
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.</br>
SMB Share: Is a SMB share that is mounted to as a volume.</br>
NFS Share: Is a NFS share that is mounted to as a volume.
schema:
type: string
required: true
default: "ix_volume"
enum:
- value: "host_path"
description: Host Path (Path that already exists on the system)
- value: "ix_volume"
description: ixVolume (Dataset created automatically by the system)
- value: "cifs"
description: SMB/CIFS Share (Mounts a volume to a SMB share)
- value: "nfs"
description: NFS Share (Mounts a volume to a NFS share)
- variable: read_only
label: Read Only
description: Mount the volume as read only.
schema:
type: boolean
default: false
- variable: mount_path
label: Mount Path
description: The path inside the container to mount the storage.
schema:
type: path
required: true
- variable: host_path_config
label: Host Path Configuration
schema:
type: dict
show_if: [["type", "=", "host_path"]]
attrs:
- variable: acl_enable
label: Enable ACL
description: Enable ACL for the storage.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["acl_enable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: path
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["acl_enable", "=", false]]
required: true
- variable: ix_volume_config
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ix_volume"]]
$ref:
- "normalize/ix_volume"
attrs:
- variable: acl_enable
label: Enable ACL
description: Enable ACL for the storage.
schema:
type: boolean
default: false
- variable: dataset_name
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
default: "storage_entry"
- variable: acl_entries
label: ACL Configuration
schema:
type: dict
show_if: [["acl_enable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: cifs_config
label: SMB Configuration
description: The configuration for the SMB dataset.
schema:
type: dict
show_if: [["type", "=", "cifs"]]
attrs:
- variable: server
label: Server
description: The server to mount the SMB share.
schema:
type: string
required: true
- variable: path
label: Path
description: The path to mount the SMB share.
schema:
type: string
required: true
- variable: username
label: Username
description: The username to use for the SMB share.
schema:
type: string
required: true
- variable: password
label: Password
description: The password to use for the SMB share.
schema:
type: string
required: true
private: true
- variable: domain
label: Domain
description: The domain to use for the SMB share.
schema:
type: string
- variable: nfs_config
label: NFS Configuration
description: The configuration for the NFS dataset.
schema:
type: dict
show_if: [["type", "=", "nfs"]]
attrs:
- variable: server
label: Server
description: The server to mount the NFS share.
schema:
type: string
required: true
- variable: path
label: Path
description: The path to mount the NFS share.
schema:
type: string
required: true
- variable: labels
label: ""
group: Labels Configuration
schema:
type: list
default: []
items:
- variable: label
label: Label
schema:
type: dict
attrs:
- variable: key
label: Key
schema:
type: string
required: true
- variable: value
label: Value
schema:
type: string
required: true
- variable: containers
label: Containers
description: Containers where the label should be applied
schema:
type: list
items:
- variable: container
label: Container
schema:
type: string
required: true
enum:
- value: briefkasten
description: briefkasten
- value: postgres
description: postgres
- variable: resources
label: ""
group: Resources Configuration
schema:
type: dict
attrs:
- variable: limits
label: Limits
schema:
type: dict
attrs:
- variable: cpus
label: CPUs
description: CPUs limit for Briefkasten.
schema:
type: int
default: 2
required: true
- variable: memory
label: Memory (in MB)
description: Memory limit for Briefkasten.
schema:
type: int
default: 4096
required: true