app_versions.json 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. {
  2. "1.0.14": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/dev/truenas-webui/1.0.14",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "latest_1.0.14",
  10. "version": "1.0.14",
  11. "app_metadata": {
  12. "app_version": "latest",
  13. "capabilities": [
  14. {
  15. "description": "TrueNAS WebUI is able to change file ownership arbitrarily",
  16. "name": "CHOWN"
  17. },
  18. {
  19. "description": "TrueNAS WebUI is able to bypass file permission checks",
  20. "name": "DAC_OVERRIDE"
  21. },
  22. {
  23. "description": "TrueNAS WebUI is able to bypass permission checks for file operations",
  24. "name": "FOWNER"
  25. },
  26. {
  27. "description": "TrueNAS WebUI is able to bind to privileged ports (< 1024)",
  28. "name": "NET_BIND_SERVICE"
  29. },
  30. {
  31. "description": "TrueNAS WebUI is able to change group ID of processes",
  32. "name": "SETGID"
  33. },
  34. {
  35. "description": "TrueNAS WebUI is able to change user ID of processes",
  36. "name": "SETUID"
  37. }
  38. ],
  39. "categories": [
  40. "development"
  41. ],
  42. "date_added": "2025-01-22",
  43. "description": "TrueNAS WebUI DEVELOPMENT ONLY",
  44. "home": "https://www.truenas.com/",
  45. "host_mounts": [],
  46. "icon": "https://media.sys.truenas.net/apps/ix-app/icons/icon.webp",
  47. "keywords": [],
  48. "lib_version": "2.1.49",
  49. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  50. "maintainers": [
  51. {
  52. "email": "dev@ixsystems.com",
  53. "name": "truenas",
  54. "url": "https://www.truenas.com/"
  55. }
  56. ],
  57. "name": "truenas-webui",
  58. "run_as_context": [
  59. {
  60. "description": "Truenas WebUI runs as root user.",
  61. "gid": 0,
  62. "group_name": "root",
  63. "uid": 0,
  64. "user_name": "root"
  65. }
  66. ],
  67. "screenshots": [],
  68. "sources": [
  69. "https://github.com/truenas/webui"
  70. ],
  71. "title": "TrueNAS WebUI",
  72. "train": "dev",
  73. "version": "1.0.14"
  74. },
  75. "schema": {
  76. "groups": [
  77. {
  78. "name": "Truenas WebUI Configuration",
  79. "description": "Configure Truenas WebUI"
  80. },
  81. {
  82. "name": "Network Configuration",
  83. "description": "Configure Network for Truenas WebUI"
  84. },
  85. {
  86. "name": "Storage Configuration",
  87. "description": "Configure Storage for Truenas WebUI"
  88. },
  89. {
  90. "name": "Labels Configuration",
  91. "description": "Configure Labels for Truenas WebUI"
  92. },
  93. {
  94. "name": "Resources Configuration",
  95. "description": "Configure Resources for Truenas WebUI"
  96. }
  97. ],
  98. "questions": [
  99. {
  100. "variable": "TZ",
  101. "group": "Truenas WebUI Configuration",
  102. "label": "Timezone",
  103. "schema": {
  104. "type": "string",
  105. "default": "Etc/UTC",
  106. "required": true,
  107. "$ref": [
  108. "definitions/timezone"
  109. ]
  110. }
  111. },
  112. {
  113. "variable": "webui",
  114. "label": "",
  115. "group": "Truenas WebUI Configuration",
  116. "schema": {
  117. "type": "dict",
  118. "attrs": [
  119. {
  120. "variable": "tag",
  121. "label": "Docker Image Tag",
  122. "description": "The tag of the Docker image to use for Truenas WebUI.</br>\nNormally you can use the PR number.\n",
  123. "schema": {
  124. "type": "string",
  125. "default": "",
  126. "required": true
  127. }
  128. },
  129. {
  130. "variable": "truenas_ip",
  131. "label": "Remote TrueNAS IP",
  132. "description": "The IP address of the REMOTE TrueNAS system.</br>\nYou do NOT need to set this if you are connecting to the local TrueNAS system.\n",
  133. "schema": {
  134. "type": "string",
  135. "default": ""
  136. }
  137. },
  138. {
  139. "variable": "additional_envs",
  140. "label": "Additional Environment Variables",
  141. "schema": {
  142. "type": "list",
  143. "default": [],
  144. "items": [
  145. {
  146. "variable": "env",
  147. "label": "Environment Variable",
  148. "schema": {
  149. "type": "dict",
  150. "attrs": [
  151. {
  152. "variable": "name",
  153. "label": "Name",
  154. "schema": {
  155. "type": "string",
  156. "required": true
  157. }
  158. },
  159. {
  160. "variable": "value",
  161. "label": "Value",
  162. "schema": {
  163. "type": "string"
  164. }
  165. }
  166. ]
  167. }
  168. }
  169. ]
  170. }
  171. }
  172. ]
  173. }
  174. },
  175. {
  176. "variable": "network",
  177. "label": "",
  178. "group": "Network Configuration",
  179. "schema": {
  180. "type": "dict",
  181. "attrs": [
  182. {
  183. "variable": "http_port",
  184. "label": "WebUI HTTP Port",
  185. "schema": {
  186. "type": "dict",
  187. "attrs": [
  188. {
  189. "variable": "bind_mode",
  190. "label": "Port Bind Mode",
  191. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  192. "schema": {
  193. "type": "string",
  194. "default": "published",
  195. "enum": [
  196. {
  197. "value": "published",
  198. "description": "Publish port on the host for external access"
  199. },
  200. {
  201. "value": "",
  202. "description": "None"
  203. }
  204. ]
  205. }
  206. },
  207. {
  208. "variable": "port_number",
  209. "label": "Port Number",
  210. "schema": {
  211. "type": "int",
  212. "default": 9998,
  213. "min": 1,
  214. "max": 65535,
  215. "required": true
  216. }
  217. },
  218. {
  219. "variable": "host_ips",
  220. "label": "Host IPs",
  221. "description": "IPs on the host to bind this port",
  222. "schema": {
  223. "type": "list",
  224. "show_if": [
  225. [
  226. "bind_mode",
  227. "=",
  228. "published"
  229. ]
  230. ],
  231. "default": [],
  232. "items": [
  233. {
  234. "variable": "host_ip",
  235. "label": "Host IP",
  236. "schema": {
  237. "type": "string",
  238. "required": true,
  239. "$ref": [
  240. "definitions/node_bind_ip"
  241. ]
  242. }
  243. }
  244. ]
  245. }
  246. }
  247. ]
  248. }
  249. },
  250. {
  251. "variable": "https_port",
  252. "label": "WebUI HTTPS Port",
  253. "schema": {
  254. "type": "dict",
  255. "attrs": [
  256. {
  257. "variable": "bind_mode",
  258. "label": "Port Bind Mode",
  259. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  260. "schema": {
  261. "type": "string",
  262. "default": "",
  263. "enum": [
  264. {
  265. "value": "published",
  266. "description": "Publish port on the host for external access"
  267. },
  268. {
  269. "value": "",
  270. "description": "None"
  271. }
  272. ]
  273. }
  274. },
  275. {
  276. "variable": "port_number",
  277. "label": "Port Number",
  278. "schema": {
  279. "type": "int",
  280. "default": 9999,
  281. "min": 1,
  282. "max": 65535,
  283. "required": true
  284. }
  285. },
  286. {
  287. "variable": "host_ips",
  288. "label": "Host IPs",
  289. "description": "IPs on the host to bind this port",
  290. "schema": {
  291. "type": "list",
  292. "show_if": [
  293. [
  294. "bind_mode",
  295. "=",
  296. "published"
  297. ]
  298. ],
  299. "default": [],
  300. "items": [
  301. {
  302. "variable": "host_ip",
  303. "label": "Host IP",
  304. "schema": {
  305. "type": "string",
  306. "required": true,
  307. "$ref": [
  308. "definitions/node_bind_ip"
  309. ]
  310. }
  311. }
  312. ]
  313. }
  314. }
  315. ]
  316. }
  317. }
  318. ]
  319. }
  320. },
  321. {
  322. "variable": "storage",
  323. "label": "",
  324. "group": "Storage Configuration",
  325. "schema": {
  326. "type": "dict",
  327. "attrs": [
  328. {
  329. "variable": "additional_storage",
  330. "label": "Additional Storage",
  331. "schema": {
  332. "type": "list",
  333. "default": [],
  334. "items": [
  335. {
  336. "variable": "storageEntry",
  337. "label": "Storage Entry",
  338. "schema": {
  339. "type": "dict",
  340. "attrs": [
  341. {
  342. "variable": "type",
  343. "label": "Type",
  344. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
  345. "schema": {
  346. "type": "string",
  347. "required": true,
  348. "default": "ix_volume",
  349. "enum": [
  350. {
  351. "value": "host_path",
  352. "description": "Host Path (Path that already exists on the system)"
  353. },
  354. {
  355. "value": "ix_volume",
  356. "description": "ixVolume (Dataset created automatically by the system)"
  357. },
  358. {
  359. "value": "cifs",
  360. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  361. }
  362. ]
  363. }
  364. },
  365. {
  366. "variable": "read_only",
  367. "label": "Read Only",
  368. "description": "Mount the volume as read only.",
  369. "schema": {
  370. "type": "boolean",
  371. "default": false
  372. }
  373. },
  374. {
  375. "variable": "mount_path",
  376. "label": "Mount Path",
  377. "description": "The path inside the container to mount the storage.",
  378. "schema": {
  379. "type": "path",
  380. "required": true
  381. }
  382. },
  383. {
  384. "variable": "host_path_config",
  385. "label": "Host Path Configuration",
  386. "schema": {
  387. "type": "dict",
  388. "show_if": [
  389. [
  390. "type",
  391. "=",
  392. "host_path"
  393. ]
  394. ],
  395. "attrs": [
  396. {
  397. "variable": "acl_enable",
  398. "label": "Enable ACL",
  399. "description": "Enable ACL for the storage.",
  400. "schema": {
  401. "type": "boolean",
  402. "default": false
  403. }
  404. },
  405. {
  406. "variable": "acl",
  407. "label": "ACL Configuration",
  408. "schema": {
  409. "type": "dict",
  410. "show_if": [
  411. [
  412. "acl_enable",
  413. "=",
  414. true
  415. ]
  416. ],
  417. "attrs": [],
  418. "$ref": [
  419. "normalize/acl"
  420. ]
  421. }
  422. },
  423. {
  424. "variable": "path",
  425. "label": "Host Path",
  426. "description": "The host path to use for storage.",
  427. "schema": {
  428. "type": "hostpath",
  429. "show_if": [
  430. [
  431. "acl_enable",
  432. "=",
  433. false
  434. ]
  435. ],
  436. "required": true
  437. }
  438. }
  439. ]
  440. }
  441. },
  442. {
  443. "variable": "ix_volume_config",
  444. "label": "ixVolume Configuration",
  445. "description": "The configuration for the ixVolume dataset.",
  446. "schema": {
  447. "type": "dict",
  448. "show_if": [
  449. [
  450. "type",
  451. "=",
  452. "ix_volume"
  453. ]
  454. ],
  455. "$ref": [
  456. "normalize/ix_volume"
  457. ],
  458. "attrs": [
  459. {
  460. "variable": "acl_enable",
  461. "label": "Enable ACL",
  462. "description": "Enable ACL for the storage.",
  463. "schema": {
  464. "type": "boolean",
  465. "default": false
  466. }
  467. },
  468. {
  469. "variable": "dataset_name",
  470. "label": "Dataset Name",
  471. "description": "The name of the dataset to use for storage.",
  472. "schema": {
  473. "type": "string",
  474. "required": true,
  475. "default": "storage_entry"
  476. }
  477. },
  478. {
  479. "variable": "acl_entries",
  480. "label": "ACL Configuration",
  481. "schema": {
  482. "type": "dict",
  483. "show_if": [
  484. [
  485. "acl_enable",
  486. "=",
  487. true
  488. ]
  489. ],
  490. "attrs": [],
  491. "$ref": [
  492. "normalize/acl"
  493. ]
  494. }
  495. }
  496. ]
  497. }
  498. },
  499. {
  500. "variable": "cifs_config",
  501. "label": "SMB Configuration",
  502. "description": "The configuration for the SMB dataset.",
  503. "schema": {
  504. "type": "dict",
  505. "show_if": [
  506. [
  507. "type",
  508. "=",
  509. "cifs"
  510. ]
  511. ],
  512. "attrs": [
  513. {
  514. "variable": "server",
  515. "label": "Server",
  516. "description": "The server to mount the SMB share.",
  517. "schema": {
  518. "type": "string",
  519. "required": true
  520. }
  521. },
  522. {
  523. "variable": "path",
  524. "label": "Path",
  525. "description": "The path to mount the SMB share.",
  526. "schema": {
  527. "type": "string",
  528. "required": true
  529. }
  530. },
  531. {
  532. "variable": "username",
  533. "label": "Username",
  534. "description": "The username to use for the SMB share.",
  535. "schema": {
  536. "type": "string",
  537. "required": true
  538. }
  539. },
  540. {
  541. "variable": "password",
  542. "label": "Password",
  543. "description": "The password to use for the SMB share.",
  544. "schema": {
  545. "type": "string",
  546. "required": true,
  547. "private": true
  548. }
  549. },
  550. {
  551. "variable": "domain",
  552. "label": "Domain",
  553. "description": "The domain to use for the SMB share.",
  554. "schema": {
  555. "type": "string"
  556. }
  557. }
  558. ]
  559. }
  560. }
  561. ]
  562. }
  563. }
  564. ]
  565. }
  566. }
  567. ]
  568. }
  569. },
  570. {
  571. "variable": "labels",
  572. "label": "",
  573. "group": "Labels Configuration",
  574. "schema": {
  575. "type": "list",
  576. "default": [],
  577. "items": [
  578. {
  579. "variable": "label",
  580. "label": "Label",
  581. "schema": {
  582. "type": "dict",
  583. "attrs": [
  584. {
  585. "variable": "key",
  586. "label": "Key",
  587. "schema": {
  588. "type": "string",
  589. "required": true
  590. }
  591. },
  592. {
  593. "variable": "value",
  594. "label": "Value",
  595. "schema": {
  596. "type": "string",
  597. "required": true
  598. }
  599. },
  600. {
  601. "variable": "containers",
  602. "label": "Containers",
  603. "description": "Containers where the label should be applied",
  604. "schema": {
  605. "type": "list",
  606. "items": [
  607. {
  608. "variable": "container",
  609. "label": "Container",
  610. "schema": {
  611. "type": "string",
  612. "required": true,
  613. "enum": [
  614. {
  615. "value": "truenas-webui",
  616. "description": "truenas-webui"
  617. }
  618. ]
  619. }
  620. }
  621. ]
  622. }
  623. }
  624. ]
  625. }
  626. }
  627. ]
  628. }
  629. },
  630. {
  631. "variable": "resources",
  632. "label": "",
  633. "group": "Resources Configuration",
  634. "schema": {
  635. "type": "dict",
  636. "attrs": [
  637. {
  638. "variable": "limits",
  639. "label": "Limits",
  640. "schema": {
  641. "type": "dict",
  642. "attrs": [
  643. {
  644. "variable": "cpus",
  645. "label": "CPUs",
  646. "description": "CPUs limit for Truenas WebUI.",
  647. "schema": {
  648. "type": "int",
  649. "default": 2,
  650. "required": true
  651. }
  652. },
  653. {
  654. "variable": "memory",
  655. "label": "Memory (in MB)",
  656. "description": "Memory limit for Truenas WebUI.",
  657. "schema": {
  658. "type": "int",
  659. "default": 4096,
  660. "required": true
  661. }
  662. }
  663. ]
  664. }
  665. }
  666. ]
  667. }
  668. }
  669. ]
  670. },
  671. "readme": "<h1>Truenas WebUI</h1>",
  672. "changelog": null,
  673. "chart_metadata": {
  674. "app_version": "latest",
  675. "capabilities": [
  676. {
  677. "description": "TrueNAS WebUI is able to change file ownership arbitrarily",
  678. "name": "CHOWN"
  679. },
  680. {
  681. "description": "TrueNAS WebUI is able to bypass file permission checks",
  682. "name": "DAC_OVERRIDE"
  683. },
  684. {
  685. "description": "TrueNAS WebUI is able to bypass permission checks for file operations",
  686. "name": "FOWNER"
  687. },
  688. {
  689. "description": "TrueNAS WebUI is able to bind to privileged ports (< 1024)",
  690. "name": "NET_BIND_SERVICE"
  691. },
  692. {
  693. "description": "TrueNAS WebUI is able to change group ID of processes",
  694. "name": "SETGID"
  695. },
  696. {
  697. "description": "TrueNAS WebUI is able to change user ID of processes",
  698. "name": "SETUID"
  699. }
  700. ],
  701. "categories": [
  702. "development"
  703. ],
  704. "date_added": "2025-01-22",
  705. "description": "TrueNAS WebUI DEVELOPMENT ONLY",
  706. "home": "https://www.truenas.com/",
  707. "host_mounts": [],
  708. "icon": "https://media.sys.truenas.net/apps/ix-app/icons/icon.webp",
  709. "keywords": [],
  710. "lib_version": "2.1.49",
  711. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  712. "maintainers": [
  713. {
  714. "email": "dev@ixsystems.com",
  715. "name": "truenas",
  716. "url": "https://www.truenas.com/"
  717. }
  718. ],
  719. "name": "truenas-webui",
  720. "run_as_context": [
  721. {
  722. "description": "Truenas WebUI runs as root user.",
  723. "gid": 0,
  724. "group_name": "root",
  725. "uid": 0,
  726. "user_name": "root"
  727. }
  728. ],
  729. "screenshots": [],
  730. "sources": [
  731. "https://github.com/truenas/webui"
  732. ],
  733. "title": "TrueNAS WebUI",
  734. "train": "dev",
  735. "version": "1.0.14"
  736. }
  737. }
  738. }