questions.yaml 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. groups:
  2. - name: Bitcoin Knots Configuration
  3. description: Configure Bitcoin Knots
  4. - name: User and Group Configuration
  5. description: Configure User and Group for Bitcoin Knots
  6. - name: Network Configuration
  7. description: Configure Network for Bitcoin Knots
  8. - name: Storage Configuration
  9. description: Configure Storage for Bitcoin Knots
  10. - name: Labels Configuration
  11. description: Configure Labels for Bitcoin Knots
  12. - name: Resources Configuration
  13. description: Configure Resources for Bitcoin Knots
  14. questions:
  15. - variable: TZ
  16. label: Timezone
  17. group: Bitcoin Knots Configuration
  18. schema:
  19. type: string
  20. default: Etc/UTC
  21. required: true
  22. $ref:
  23. - definitions/timezone
  24. - variable: bitcoin
  25. label: ""
  26. group: Bitcoin Knots Configuration
  27. schema:
  28. type: dict
  29. attrs:
  30. - variable: rpc_user
  31. label: RPC User
  32. description: The username for RPC auth.
  33. schema:
  34. type: string
  35. required: true
  36. default: truenas
  37. - variable: rpc_password
  38. label: RPC Password
  39. description: The password for RPC auth.
  40. schema:
  41. type: string
  42. required: true
  43. private: true
  44. - variable: rpc_work_queue_size
  45. label: RPC Work Queue Size
  46. description: |
  47. Set the maximum number of queued Remote Procedure Call (RPC) requests your node can
  48. handle (e.g., from connected wallets or other apps), helping you strike a balance
  49. between performance and resource usage. Higher values can improve processing speed at
  50. the cost of increased system resources.
  51. schema:
  52. type: int
  53. required: true
  54. default: 128
  55. min: 0
  56. - variable: clearnet_outgoing_enabled
  57. label: Clearnet Outgoing Connections
  58. description: Connect to peers available on the clearnet (publicly accessible internet).
  59. schema:
  60. type: boolean
  61. default: true
  62. - variable: clearnet_incoming_enabled
  63. label: Clearnet Incoming Connections
  64. description: |
  65. Broadcast your node to the Bitcoin network to help other clearnet nodes access the
  66. blockchain. You may need to set up port forwarding on your router.
  67. schema:
  68. type: boolean
  69. default: false
  70. - variable: tor_outgoing_enabled
  71. label: Tor Outgoing Connections
  72. description: Connect to peers available on the Tor network.
  73. schema:
  74. type: boolean
  75. default: false
  76. - variable: clearnet_outgoing_via_tor_enabled
  77. label: Route Clearnet Outgoing Connections Via Tor
  78. description: |
  79. Connect to peers available on the clearnet via Tor to preserve your anonymity at the
  80. cost of slightly less security.
  81. schema:
  82. type: boolean
  83. default: false
  84. - variable: tor_incoming_enabled
  85. label: Tor Incoming Connections
  86. description: |
  87. Broadcast your node to the Bitcoin network to help other Tor nodes access the
  88. blockchain.
  89. schema:
  90. type: boolean
  91. default: false
  92. - variable: tor_incoming_address
  93. label: Incoming Onion Address
  94. description: Enter the local IP of this machine if you are running the Arti TrueNAS App.
  95. schema:
  96. type: string
  97. required: true
  98. valid_chars: "^[a-zA-Z0-9]+\\.onion$"
  99. valid_chars_error: Invalid onion address.
  100. show_if: [["tor_incoming_enabled", "=", true]]
  101. - variable: tor_ip
  102. label: Tor IP
  103. description: |
  104. Enter the local IP of this machine if you are running the Arti TrueNAS App.</br>
  105. Required if any of the following is enabled:
  106. - Tor Outgoing Connections
  107. - Tor Incoming Connections
  108. - Clearnet Outgoing Connections via Tor
  109. schema:
  110. type: ipaddr
  111. - variable: tor_port
  112. label: Tor port
  113. description: |
  114. Required if any of the following is enabled:
  115. - Tor Outgoing Connections
  116. - Tor Incoming Connections
  117. - Clearnet Outgoing Connections via Tor
  118. schema:
  119. type: int
  120. min: 1
  121. max: 65535
  122. - variable: i2p_outgoing_enabled
  123. label: I2P Outgoing Connections
  124. description: Connect to peers available on the I2P network.
  125. schema:
  126. type: boolean
  127. default: false
  128. - variable: i2p_incoming_enabled
  129. label: I2P Incoming Connections
  130. description: |
  131. Broadcast your node to the Bitcoin network to help other I2P nodes access the
  132. blockchain. Your I2P router has to have SAM bridge enabled.
  133. schema:
  134. type: boolean
  135. default: false
  136. - variable: i2p_ip
  137. label: I2P IP
  138. description: |
  139. Enter the local IP of this machine if you are running the Arti TrueNAS App.</br>
  140. Required if any of the following is enabled:
  141. - I2P Outgoing Connections
  142. - I2P Incoming Connections
  143. schema:
  144. type: ipaddr
  145. - variable: i2p_port
  146. label: I2P SAM port
  147. description: |
  148. Required if any of the following is enabled:
  149. - I2P Outgoing Connections
  150. - I2P Incoming Connections
  151. schema:
  152. type: int
  153. min: 1
  154. max: 65535
  155. - variable: public_rest_api_enabled
  156. label: Public REST API
  157. description: |
  158. Enabling the public REST API can help you connect certain wallets and apps to your node.
  159. However, because the REST API access is unauthenticated, it can lead to unauthorized
  160. access, privacy degradation, and denial-of-service (DoS) attacks.
  161. schema:
  162. type: boolean
  163. default: false
  164. - variable: peer_block_filters_enabled
  165. label: Peer Block Filters
  166. description: |
  167. Share compact block filter data with connected light clients (like wallets) connected
  168. to your node, allowing them to get only the transaction information they are interested
  169. in from your node without having to download the entire blockchain.</br>
  170. Note: If you disable Peer Block Filters, you will need to also manually toggle off
  171. Block Filter Index if you want to stop storing block filter data.
  172. schema:
  173. type: boolean
  174. default: true
  175. - variable: block_filter_index_enabled
  176. label: Block Filter Index
  177. description: |
  178. Store an index of compact block filters which allows faster wallet re-scanning. In
  179. order to serve compact block filters to peers, you must also enable Peer Block Filters
  180. above.</br>
  181. Note: To use 'Block Filter Index' with a pruned node, you must enable it when you start
  182. the 'Prune Old Blocks' process under the Optimization category. If your node is already
  183. pruned and 'Block Filter Index' is off, enabling it will prevent your node from
  184. starting. To fix this while keeping 'Block Filter Index' on, you will need to either
  185. reindex your node or turn off 'Prune Old Blocks'.
  186. schema:
  187. type: boolean
  188. default: true
  189. - variable: peer_bloom_filters_enabled
  190. label: Peer Bloom Filters
  191. description: |
  192. Enable support for BIP37, a feature used by older light clients (like wallets) to get
  193. only the transaction information they are interested in from your node without having
  194. to download the entire blockchain.</br>
  195. Note: Bloom filters can have privacy and denial-of-service (DoS) risks, especially if
  196. your node is publicly reachable; its use is discouraged in favour of the more modern
  197. compact block filters.
  198. schema:
  199. type: boolean
  200. default: true
  201. - variable: peer_ban_time
  202. label: Peer Ban Time (seconds)
  203. description: |
  204. Set the duration (in seconds) that a peer will be banned from connecting to your node
  205. if they violate protocol rules or exhibit suspicious behavior. By adjusting ban time,
  206. you can maintain your node's security and network integrity, while preventing repeat
  207. offenders from causing disruptions. A longer ban time increases the ban period,
  208. discouraging misbehavior, while a shorter ban time allows for quicker re-connections but
  209. may require more frequent manual monitoring of peer activity.
  210. schema:
  211. type: int
  212. required: true
  213. default: 86400
  214. min: 0
  215. - variable: max_peer_connections
  216. label: Max Peer Connections
  217. description: |
  218. Set the maximum number of peers your node can connect to simultaneously. By managing
  219. this, you can optimize your node's network usage and system resources based on your
  220. device's capacity. A higher value enables your node to maintain more connections,
  221. potentially improving network stability and data sharing. A lower value conserves
  222. system resources and bandwidth, which may be beneficial for devices with limited
  223. capabilities.
  224. schema:
  225. type: int
  226. required: true
  227. default: 125
  228. min: 0
  229. - variable: max_receive_buffer
  230. label: Max Receive Buffer (KB)
  231. description: |
  232. Set the maximum amount of memory (in kilobytes) allocated for storing incoming data from
  233. other nodes in the network. A larger buffer size allows your node to handle more
  234. incoming data simultaneously, while a smaller size reduces memory consumption but may
  235. limit the amount of data your node can process at once.
  236. schema:
  237. type: int
  238. required: true
  239. default: 5000
  240. min: 0
  241. - variable: max_send_buffer
  242. label: Max Send Buffer (KB)
  243. description: |
  244. Set the maximum memory (in kilobytes) dedicated to storing outgoing data sent to other
  245. nodes in the network. A larger buffer size enables your node to send more data
  246. simultaneously, while a smaller size conserves memory but may restrict the volume of
  247. data your node can transmit at once.
  248. schema:
  249. type: int
  250. required: true
  251. default: 1000
  252. min: 0
  253. - variable: peer_timeout
  254. label: Peer Timeout (seconds)
  255. description: |
  256. Set the maximum time (in seconds) that your node will wait for a response from a
  257. connected peer before considering it unresponsive and disconnecting. Adjusting
  258. peer timeout helps you maintain stable connections with responsive peers while ensuring
  259. your node doesn't waste resources on unresponsive ones. A shorter timeout value allows
  260. for quicker disconnection from unresponsive peers, while a longer timeout provides more
  261. time for slow-responding peers to maintain a connection.
  262. schema:
  263. type: int
  264. required: true
  265. default: 60
  266. min: 0
  267. - variable: connection_timeout
  268. label: Connection Timeout (milliseconds)
  269. description: |
  270. Set the maximum time (in milliseconds) that your node will wait for a response from a
  271. newly connecting peer during the initial handshake process before considering it
  272. unresponsive and disconnecting. Fine-tuning it helps you ensure your node establishes
  273. stable connections with responsive peers while avoiding unresponsive ones. A shorter
  274. timeout value leads to faster disconnection from unresponsive peers, while a longer
  275. timeout allows more time for slow-responding peers to complete the handshake.
  276. schema:
  277. type: int
  278. required: true
  279. default: 5000
  280. min: 0
  281. - variable: max_upload_target
  282. label: Max Upload Target (MB/24h)
  283. description: |
  284. Limit the maximum amount of data (in MB) your node will upload to other peers in the
  285. network within a 24-hour period. Setting this to 0 (default) means that there is no
  286. limit. By adjusting it, you can optimize your node's bandwidth usage and maintain a
  287. balance between sharing data with the network and conserving your internet resources.
  288. A higher upload target allows your node to contribute more data to the network, while a
  289. lower target helps you save bandwidth for other uses.
  290. schema:
  291. type: int
  292. required: true
  293. default: 0
  294. min: 0
  295. - variable: cache_size
  296. label: Cache Size (MB)
  297. description: |
  298. Choose the size of the UTXO set to store in RAM. A larger cache can speed up the initial
  299. synchronization of your Bitcoin Knots, but after the initial sync is complete, a larger
  300. cache value does not significantly improve performance and may use more RAM than needed.
  301. schema:
  302. type: int
  303. required: true
  304. default: 300
  305. min: 1
  306. - variable: prune_size
  307. label: Prune Old Blocks (GB)
  308. description: |
  309. Save storage space by pruning (deleting) old blocks and keeping only a limited copy of
  310. the blockchain. It may take some time for your node to be online after you turn on
  311. pruning. If you turn off pruning after turning it on, you'll need to download the entire
  312. blockchain.<br />
  313. Note: A value of 0 disables pruning.
  314. schema:
  315. type: int
  316. required: true
  317. default: 0
  318. min: 0
  319. - variable: op_return_txs_relay_enabled
  320. label: Relay Transactions Containing Arbitrary Data
  321. description: Relay transactions with OP_RETURN outputs.
  322. schema:
  323. type: boolean
  324. default: true
  325. - variable: max_op_return_size
  326. label: Max Allowed Size of Arbitrary Data in Transactions (bytes)
  327. description: Set the maximum size of the data in OP_RETURN outputs that your node will relay.
  328. schema:
  329. type: int
  330. required: true
  331. default: 42
  332. min: 0
  333. show_if: [["op_return_txs_relay_enabled", "=", true]]
  334. - variable: bare_multisig_txs_relay_enabled
  335. label: Relay Bare Multisig Transactions
  336. description: Relay non-P2SH multisig transactions.
  337. schema:
  338. type: boolean
  339. default: false
  340. - variable: max_mempool_size
  341. label: Maximum Mempool Size (MB)
  342. description: |
  343. Set the maximum size that your node will allocate (in RAM) for storing unconfirmed
  344. transactions before they are included in a block. By adjusting maxmempool, you can
  345. optimize your node's performance and balance memory usage based on your device's
  346. capabilities. A larger maxmempool allows your node to store more unconfirmed
  347. transactions, providing more accurate statistics on explorer apps like Mempool.
  348. schema:
  349. type: int
  350. required: true
  351. default: 1024
  352. min: 1
  353. - variable: mempool_expiry
  354. label: Mempool Expiration (hours)
  355. description: |
  356. Set the time threshold for unconfirmed transactions to remain in your node's mempool
  357. before being removed. By adjusting it, you can manage your node's memory usage and
  358. ensure outdated, unconfirmed transactions are discarded. A shorter expiry time helps
  359. keep your mempool up-to-date and reduces memory usage, while a longer expiry time allows
  360. transactions to remain in the pool for an extended period in case of network congestion
  361. or delayed confirmations.
  362. schema:
  363. type: int
  364. required: true
  365. default: 336
  366. min: 0
  367. - variable: mempool_persist_enabled
  368. label: Persist Mempool
  369. description: |
  370. Saves unconfirmed transactions in your node's mempool when it's shutting down and
  371. reloads them upon startup. Enabling this setting helps maintain a consistent mempool and
  372. prevents the loss of unconfirmed transactions during a restart. Disabling this setting
  373. will clear the mempool upon restart, which may reduce startup time but requires your
  374. node to rebuild its mempool from scratch.
  375. schema:
  376. type: boolean
  377. default: true
  378. - variable: max_orphan_txs
  379. label: Max Orphan Transactions
  380. description: |
  381. Set the maximum number of orphan transactions (transactions missing one or more of their
  382. inputs) that your node will keep in memory. By fine-tuning it, you can optimize your
  383. node's memory usage and manage its performance based on your device's capabilities. A
  384. larger limit allows your node to store more orphan transactions, potentially increasing
  385. the chances of finding missing inputs. A smaller limit conserves memory but will result
  386. in your node evicting some orphan transactions from memory when the limit is reached.
  387. schema:
  388. type: int
  389. required: true
  390. default: 100
  391. min: 0
  392. - variable: additional_flags
  393. label: Additional flags
  394. description: |
  395. Additional bitcoind commands can be provided here.
  396. If you are unsure, leave this blank.
  397. schema:
  398. type: list
  399. items:
  400. - variable: flag
  401. label: Flag
  402. schema:
  403. type: string
  404. required: true
  405. - variable: run_as
  406. label: ""
  407. group: User and Group Configuration
  408. schema:
  409. type: dict
  410. attrs:
  411. - variable: user
  412. label: User ID
  413. description: The user id that Bitcoin Knots files will be owned by.
  414. schema:
  415. type: int
  416. min: 568
  417. default: 568
  418. required: true
  419. - variable: group
  420. label: Group ID
  421. description: The group id that Bitcoin Knots files will be owned by.
  422. schema:
  423. type: int
  424. min: 568
  425. default: 568
  426. required: true
  427. - variable: network
  428. label: ""
  429. group: Network Configuration
  430. schema:
  431. type: dict
  432. attrs:
  433. - variable: rpc_port
  434. label: RPC Port
  435. description: This is the RPC port which is useful for other apps like Electrs to communicate with.
  436. schema:
  437. type: dict
  438. attrs:
  439. - variable: bind_mode
  440. label: Port Bind Mode
  441. description: |
  442. The port bind mode.</br>
  443. - Publish: The port will be published on the host for external access.</br>
  444. - Expose: The port will be exposed for inter-container communication.</br>
  445. - None: The port will not be exposed or published.</br>
  446. Note: If the Dockerfile defines an EXPOSE directive,
  447. the port will still be exposed for inter-container communication regardless of this setting.
  448. schema:
  449. type: string
  450. default: "published"
  451. enum:
  452. - value: "published"
  453. description: Publish port on the host for external access
  454. - value: "exposed"
  455. description: Expose port for inter-container communication
  456. - value: ""
  457. description: None
  458. - variable: port_number
  459. label: Port Number
  460. schema:
  461. type: int
  462. default: 30240
  463. min: 1
  464. max: 65535
  465. required: true
  466. - variable: host_ips
  467. label: Host IPs
  468. description: IPs on the host to bind this port
  469. schema:
  470. type: list
  471. show_if: [["bind_mode", "=", "published"]]
  472. default: []
  473. items:
  474. - variable: host_ip
  475. label: Host IP
  476. schema:
  477. type: string
  478. required: true
  479. $ref:
  480. - definitions/node_bind_ip
  481. - variable: p2p_clearnet_port
  482. label: P2P Clearnet Port
  483. description: |
  484. The port used for your node to communicate blockchain data with other clearnet nodes.
  485. This should be published for external access in most scenarios.
  486. schema:
  487. type: dict
  488. attrs:
  489. - variable: bind_mode
  490. label: Port Bind Mode
  491. description: |
  492. The port bind mode.</br>
  493. - Publish: The port will be published on the host for external access.</br>
  494. - Expose: The port will be exposed for inter-container communication.</br>
  495. - None: The port will not be exposed or published.</br>
  496. Note: If the Dockerfile defines an EXPOSE directive,
  497. the port will still be exposed for inter-container communication regardless of this setting.
  498. schema:
  499. type: string
  500. default: "published"
  501. enum:
  502. - value: "published"
  503. description: Publish port on the host for external access
  504. - value: "exposed"
  505. description: Expose port for inter-container communication
  506. - value: ""
  507. description: None
  508. - variable: port_number
  509. label: Port Number
  510. schema:
  511. type: int
  512. default: 30241
  513. min: 1
  514. max: 65535
  515. required: true
  516. - variable: host_ips
  517. label: Host IPs
  518. description: IPs on the host to bind this port
  519. schema:
  520. type: list
  521. show_if: [["bind_mode", "=", "published"]]
  522. default: []
  523. items:
  524. - variable: host_ip
  525. label: Host IP
  526. schema:
  527. type: string
  528. required: true
  529. $ref:
  530. - definitions/node_bind_ip
  531. - variable: p2p_tor_port
  532. label: P2P Tor Port
  533. description: |
  534. The port used for your node to communicate blockchain data with other Tor nodes.
  535. This should be published for external access in most scenarios.
  536. schema:
  537. type: dict
  538. attrs:
  539. - variable: bind_mode
  540. label: Port Bind Mode
  541. description: |
  542. The port bind mode.</br>
  543. - Publish: The port will be published on the host for external access.</br>
  544. - Expose: The port will be exposed for inter-container communication.</br>
  545. - None: The port will not be exposed or published.</br>
  546. Note: If the Dockerfile defines an EXPOSE directive,
  547. the port will still be exposed for inter-container communication regardless of this setting.
  548. schema:
  549. type: string
  550. default: ""
  551. enum:
  552. - value: "published"
  553. description: Publish port on the host for external access
  554. - value: "exposed"
  555. description: Expose port for inter-container communication
  556. - value: ""
  557. description: None
  558. - variable: port_number
  559. label: Port Number
  560. schema:
  561. type: int
  562. default: 30242
  563. min: 1
  564. max: 65535
  565. required: true
  566. - variable: host_ips
  567. label: Host IPs
  568. description: IPs on the host to bind this port
  569. schema:
  570. type: list
  571. show_if: [["bind_mode", "=", "published"]]
  572. default: []
  573. items:
  574. - variable: host_ip
  575. label: Host IP
  576. schema:
  577. type: string
  578. required: true
  579. $ref:
  580. - definitions/node_bind_ip
  581. - variable: storage
  582. label: ""
  583. group: Storage Configuration
  584. schema:
  585. type: dict
  586. attrs:
  587. - variable: bitcoin
  588. label: Bitcoin Storage Location
  589. description: |
  590. Use SSDs for reasonable performance.
  591. You will have a very bad time trying to sync a Bitcoin Knots on HDDs.</br>
  592. We recommend at least 800GB of free space if pruning is disabled.
  593. schema:
  594. type: dict
  595. attrs:
  596. - variable: type
  597. label: Type
  598. description: |
  599. ixVolume: Is dataset created automatically by the system.</br>
  600. Host Path: Is a path that already exists on the system.
  601. schema:
  602. type: string
  603. required: true
  604. default: "ix_volume"
  605. enum:
  606. - value: "host_path"
  607. description: Host Path (Path that already exists on the system)
  608. - value: "ix_volume"
  609. description: ixVolume (Dataset created automatically by the system)
  610. - variable: ix_volume_config
  611. label: ixVolume Configuration
  612. description: The configuration for the ixVolume dataset.
  613. schema:
  614. type: dict
  615. show_if: [["type", "=", "ix_volume"]]
  616. $ref:
  617. - "normalize/ix_volume"
  618. attrs:
  619. - variable: acl_enable
  620. label: Enable ACL
  621. description: Enable ACL for the storage.
  622. schema:
  623. type: boolean
  624. default: false
  625. - variable: dataset_name
  626. label: Dataset Name
  627. description: The name of the dataset to use for storage.
  628. schema:
  629. type: string
  630. required: true
  631. hidden: true
  632. default: "bitcoin"
  633. - variable: acl_entries
  634. label: ACL Configuration
  635. schema:
  636. type: dict
  637. show_if: [["acl_enable", "=", true]]
  638. attrs: []
  639. - variable: host_path_config
  640. label: Host Path Configuration
  641. schema:
  642. type: dict
  643. show_if: [["type", "=", "host_path"]]
  644. attrs:
  645. - variable: acl_enable
  646. label: Enable ACL
  647. description: Enable ACL for the storage.
  648. schema:
  649. type: boolean
  650. default: false
  651. - variable: acl
  652. label: ACL Configuration
  653. schema:
  654. type: dict
  655. show_if: [["acl_enable", "=", true]]
  656. attrs: []
  657. $ref:
  658. - "normalize/acl"
  659. - variable: path
  660. label: Host Path
  661. description: The host path to use for storage.
  662. schema:
  663. type: hostpath
  664. show_if: [["acl_enable", "=", false]]
  665. required: true
  666. - variable: additional_storage
  667. label: Additional Storage
  668. schema:
  669. type: list
  670. default: []
  671. items:
  672. - variable: storageEntry
  673. label: Storage Entry
  674. schema:
  675. type: dict
  676. attrs:
  677. - variable: type
  678. label: Type
  679. description: |
  680. ixVolume: Is dataset created automatically by the system.</br>
  681. Host Path: Is a path that already exists on the system.</br>
  682. SMB Share: Is a SMB share that is mounted to as a volume.
  683. schema:
  684. type: string
  685. required: true
  686. default: "ix_volume"
  687. enum:
  688. - value: "host_path"
  689. description: Host Path (Path that already exists on the system)
  690. - value: "ix_volume"
  691. description: ixVolume (Dataset created automatically by the system)
  692. - value: "cifs"
  693. description: SMB/CIFS Share (Mounts a volume to a SMB share)
  694. - variable: read_only
  695. label: Read Only
  696. description: Mount the volume as read only.
  697. schema:
  698. type: boolean
  699. default: false
  700. - variable: mount_path
  701. label: Mount Path
  702. description: The path inside the container to mount the storage.
  703. schema:
  704. type: path
  705. required: true
  706. - variable: host_path_config
  707. label: Host Path Configuration
  708. schema:
  709. type: dict
  710. show_if: [["type", "=", "host_path"]]
  711. attrs:
  712. - variable: acl_enable
  713. label: Enable ACL
  714. description: Enable ACL for the storage.
  715. schema:
  716. type: boolean
  717. default: false
  718. - variable: acl
  719. label: ACL Configuration
  720. schema:
  721. type: dict
  722. show_if: [["acl_enable", "=", true]]
  723. attrs: []
  724. $ref:
  725. - "normalize/acl"
  726. - variable: path
  727. label: Host Path
  728. description: The host path to use for storage.
  729. schema:
  730. type: hostpath
  731. show_if: [["acl_enable", "=", false]]
  732. required: true
  733. - variable: ix_volume_config
  734. label: ixVolume Configuration
  735. description: The configuration for the ixVolume dataset.
  736. schema:
  737. type: dict
  738. show_if: [["type", "=", "ix_volume"]]
  739. $ref:
  740. - "normalize/ix_volume"
  741. attrs:
  742. - variable: acl_enable
  743. label: Enable ACL
  744. description: Enable ACL for the storage.
  745. schema:
  746. type: boolean
  747. default: false
  748. - variable: dataset_name
  749. label: Dataset Name
  750. description: The name of the dataset to use for storage.
  751. schema:
  752. type: string
  753. required: true
  754. default: "storage_entry"
  755. - variable: acl_entries
  756. label: ACL Configuration
  757. schema:
  758. type: dict
  759. show_if: [["acl_enable", "=", true]]
  760. attrs: []
  761. $ref:
  762. - "normalize/acl"
  763. - variable: cifs_config
  764. label: SMB Configuration
  765. description: The configuration for the SMB dataset.
  766. schema:
  767. type: dict
  768. show_if: [["type", "=", "cifs"]]
  769. attrs:
  770. - variable: server
  771. label: Server
  772. description: The server to mount the SMB share.
  773. schema:
  774. type: string
  775. required: true
  776. - variable: path
  777. label: Path
  778. description: The path to mount the SMB share.
  779. schema:
  780. type: string
  781. required: true
  782. - variable: username
  783. label: Username
  784. description: The username to use for the SMB share.
  785. schema:
  786. type: string
  787. required: true
  788. - variable: password
  789. label: Password
  790. description: The password to use for the SMB share.
  791. schema:
  792. type: string
  793. required: true
  794. private: true
  795. - variable: domain
  796. label: Domain
  797. description: The domain to use for the SMB share.
  798. schema:
  799. type: string
  800. - variable: labels
  801. label: ""
  802. group: Labels Configuration
  803. schema:
  804. type: list
  805. default: []
  806. items:
  807. - variable: label
  808. label: Label
  809. schema:
  810. type: dict
  811. attrs:
  812. - variable: key
  813. label: Key
  814. schema:
  815. type: string
  816. required: true
  817. - variable: value
  818. label: Value
  819. schema:
  820. type: string
  821. required: true
  822. - variable: containers
  823. label: Containers
  824. description: Containers where the label should be applied
  825. schema:
  826. type: list
  827. items:
  828. - variable: container
  829. label: Container
  830. schema:
  831. type: string
  832. required: true
  833. enum:
  834. - value: bitcoind
  835. description: bitcoind
  836. - variable: resources
  837. label: ""
  838. group: Resources Configuration
  839. schema:
  840. type: dict
  841. attrs:
  842. - variable: limits
  843. label: Limits
  844. schema:
  845. type: dict
  846. attrs:
  847. - variable: cpus
  848. label: CPUs
  849. description: CPUs limit for Bitcoin Knots.
  850. schema:
  851. type: int
  852. default: 2
  853. required: true
  854. - variable: memory
  855. label: Memory (in MB)
  856. description: Memory limit for Bitcoin Knots.
  857. schema:
  858. type: int
  859. default: 4096
  860. required: true