OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / truenas-app / questions.yaml

402 lines · yaml ref:
groups:
  - name: Blindspark Configuration
    description: Configure the HiveRelay appliance
  - name: Network Configuration
    description: Configure networking for Blindspark
  - name: Storage Configuration
    description: Configure persistent HiveRelay storage
  - name: Labels Configuration
    description: Configure container labels
  - name: Resources Configuration
    description: Configure resource limits

questions:
  - variable: TZ
    group: Blindspark Configuration
    label: Timezone
    schema:
      type: string
      default: Etc/UTC
      required: true
      $ref:
        - definitions/timezone

  - variable: blindspark
    label: ""
    group: Blindspark Configuration
    schema:
      type: dict
      attrs:
        - variable: api_key
          label: Management API Key
          description: |
            Secret used to authenticate HiveRelay management requests.</br>
            Use a unique random value of at least 32 characters and store it in a password manager.
          schema:
            type: string
            default: ""
            min_length: 32
            required: true
            private: true
        - variable: accept_mode
          label: Incoming Seed Request Mode
          description: Controls how new requests to store data are handled.
          schema:
            type: string
            default: review
            required: true
            enum:
              - value: review
                description: Queue requests for operator review (Recommended)
              - value: open
                description: Accept valid requests automatically
              - value: allowlist
                description: Accept requests only from configured publishers
              - value: closed
                description: Reject new incoming seed requests
        - variable: max_storage_gb
          label: First-Boot Storage Cap (GB)
          description: |
            Maximum storage made available to HiveRelay on first boot.</br>
            A value saved later from the HiveRelay management interface takes precedence on subsequent restarts.
          schema:
            type: int
            default: 10
            min: 1
            max: 102400
            required: true
        - variable: log_level
          label: Log Level
          schema:
            type: string
            default: info
            required: true
            enum:
              - value: error
                description: Errors only
              - value: warn
                description: Warnings and errors
              - value: info
                description: Normal operational messages
              - value: debug
                description: Verbose diagnostics
        - variable: simple_dashboard
          label: Use the Simple Blindspark Dashboard
          description: Show the appliance-focused status dashboard instead of the full operator interface.
          schema:
            type: boolean
            default: true
        - variable: expose_token
          label: Expose Management Token in Dashboard
          description: |
            Embeds the management token in dashboard pages so browser controls can authenticate.</br>
            Leave disabled unless the published port is restricted to a trusted network or protected by an authenticating reverse proxy.
          schema:
            type: boolean
            default: false
        - variable: holesail
          label: Enable Holesail Transport
          description: Enable the optional Holesail transport for additional NAT traversal support.
          schema:
            type: boolean
            default: false
        - 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: Dashboard and API Port
          schema:
            type: dict
            attrs:
              - variable: bind_mode
                label: Port Bind Mode
                description: |
                  The port bind mode.</br>
                  - Publish: Publish the port on the TrueNAS host.</br>
                  - Expose: Expose the port only to joined container networks.</br>
                  - None: Do not publish or explicitly expose the port.</br>
                  The image still declares its internal API port.
                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: 30452
                  show_if: [["bind_mode", "=", "published"]]
                  min: 1
                  max: 65535
                  required: true
              - variable: host_ips
                label: Host IPs
                description: IP addresses on the TrueNAS host where the port is published.
                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: networks
          label: Networks
          description: Existing Docker networks for the Blindspark container to join.
          schema:
            type: list
            show_if: [["host_network", "=", false]]
            default: []
            items:
              - variable: network
                label: Network
                schema:
                  type: dict
                  attrs:
                    - variable: name
                      label: Name
                      schema:
                        type: string
                        default: ""
                        required: true
                    - variable: containers
                      label: Containers
                      schema:
                        type: list
                        items:
                          - variable: container
                            label: Container
                            schema:
                              type: dict
                              attrs:
                                - variable: name
                                  label: Container Name
                                  schema:
                                    type: string
                                    required: true
                                    enum:
                                      - value: blindspark
                                        description: blindspark
                                - variable: config
                                  label: Container Network Configuration
                                  schema:
                                    type: dict
                                    attrs:
                                      - variable: aliases
                                        label: Aliases
                                        schema:
                                          type: list
                                          default: []
                                          items:
                                            - variable: alias
                                              label: Alias
                                              schema:
                                                type: string
                                      - variable: interface_name
                                        label: Interface Name
                                        schema:
                                          type: string
                                      - variable: mac_address
                                        label: MAC Address
                                        schema:
                                          type: string
                                      - variable: ipv4_address
                                        label: IPv4 Address
                                        schema:
                                          type: string
                                      - variable: ipv6_address
                                        label: IPv6 Address
                                        schema:
                                          type: string
                                      - variable: gw_priority
                                        label: Gateway Priority
                                        schema:
                                          type: int
                                          "null": true
                                      - variable: priority
                                        label: Priority
                                        schema:
                                          type: int
                                          "null": true
        - variable: host_network
          label: Host Network
          description: Bind directly to the TrueNAS host network. Bridge networking is recommended.
          schema:
            type: boolean
            default: false

  - variable: storage
    label: ""
    group: Storage Configuration
    schema:
      type: dict
      attrs:
        - variable: data
          label: HiveRelay Data Storage
          description: Stores the relay identity, configuration, Hypercores, and seeded content.
          schema:
            type: dict
            attrs:
              - variable: type
                label: Type
                description: |
                  ixVolume: A dataset created automatically by TrueNAS.</br>
                  Host Path: A path that already exists on the TrueNAS 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
                schema:
                  type: dict
                  show_if: [["type", "=", "ix_volume"]]
                  $ref:
                    - normalize/ix_volume
                  attrs:
                    - variable: acl_enable
                      label: Enable ACL
                      schema:
                        type: boolean
                        default: false
                    - variable: dataset_name
                      label: Dataset Name
                      schema:
                        type: string
                        required: true
                        hidden: true
                        default: 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
                      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
                      schema:
                        type: hostpath
                        show_if: [["acl_enable", "=", false]]
                        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 is applied.
                schema:
                  type: list
                  items:
                    - variable: container
                      label: Container
                      schema:
                        type: string
                        required: true
                        enum:
                          - value: blindspark
                            description: blindspark

  - variable: resources
    label: ""
    group: Resources Configuration
    schema:
      type: dict
      attrs:
        - variable: limits
          label: Limits
          schema:
            type: dict
            attrs:
              - variable: cpus
                label: CPUs
                description: Maximum CPUs available to Blindspark.
                schema:
                  type: int
                  default: 2
                  required: true
              - variable: memory
                label: Memory (MB)
                description: Maximum memory available to Blindspark.
                schema:
                  type: int
                  default: 2048
                  required: true