app_versions.json 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144
  1. {
  2. "1.2.8": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/stable/ix-app/1.2.8",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "1.2.5_1.2.8",
  10. "version": "1.2.8",
  11. "app_metadata": {
  12. "annotations": {
  13. "min_scale_version": "24.10.2.2"
  14. },
  15. "app_version": "1.2.5",
  16. "capabilities": [],
  17. "categories": [
  18. "custom"
  19. ],
  20. "date_added": "2024-09-10",
  21. "description": "An application for deploying simple containers.",
  22. "home": "https://www.truenas.com/",
  23. "host_mounts": [],
  24. "icon": "https://media.sys.truenas.net/apps/ix-app/icons/icon.webp",
  25. "keywords": [],
  26. "lib_version": "2.1.49",
  27. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  28. "maintainers": [
  29. {
  30. "email": "dev@ixsystems.com",
  31. "name": "truenas",
  32. "url": "https://www.truenas.com/"
  33. }
  34. ],
  35. "name": "ix-app",
  36. "run_as_context": [],
  37. "screenshots": [],
  38. "sources": [],
  39. "title": "iX App",
  40. "train": "stable",
  41. "version": "1.2.8"
  42. },
  43. "schema": {
  44. "groups": [
  45. {
  46. "name": "General",
  47. "description": "General Configuration"
  48. },
  49. {
  50. "name": "Image Configuration",
  51. "description": "Configure the image"
  52. },
  53. {
  54. "name": "Container Configuration",
  55. "description": "Configure the container"
  56. },
  57. {
  58. "name": "Security Context Configuration",
  59. "description": "Configure Security Context for the container"
  60. },
  61. {
  62. "name": "Network Configuration",
  63. "description": "Configure Network for the container"
  64. },
  65. {
  66. "name": "Portal Configuration",
  67. "description": "Configure Portals"
  68. },
  69. {
  70. "name": "Storage Configuration",
  71. "description": "Configure Storage for the container"
  72. },
  73. {
  74. "name": "Labels Configuration",
  75. "description": "Configure Labels for the container"
  76. },
  77. {
  78. "name": "Resources Configuration",
  79. "description": "Configure Resources for the container"
  80. }
  81. ],
  82. "questions": [
  83. {
  84. "variable": "notes",
  85. "label": "Notes",
  86. "group": "General",
  87. "description": "Notes about the application, this will be shown in the Notes card. </br>\nYou can use markdown here. This have no effect on the application.\n",
  88. "schema": {
  89. "type": "text"
  90. }
  91. },
  92. {
  93. "variable": "image",
  94. "label": "Image",
  95. "group": "Image Configuration",
  96. "description": "The image to use for the container.",
  97. "schema": {
  98. "type": "dict",
  99. "attrs": [
  100. {
  101. "variable": "repository",
  102. "label": "Repository",
  103. "description": "The repository of the image.",
  104. "schema": {
  105. "type": "string",
  106. "required": true
  107. }
  108. },
  109. {
  110. "variable": "tag",
  111. "label": "Tag",
  112. "description": "The tag of the image.",
  113. "schema": {
  114. "type": "string",
  115. "default": "latest"
  116. }
  117. },
  118. {
  119. "variable": "pull_policy",
  120. "label": "Pull Policy",
  121. "description": "The pull policy for the image.",
  122. "schema": {
  123. "type": "string",
  124. "default": "missing",
  125. "required": true,
  126. "enum": [
  127. {
  128. "value": "missing",
  129. "description": "Pull the image if it is not already present on the host."
  130. },
  131. {
  132. "value": "always",
  133. "description": "Always pull an image even if it is present on the host."
  134. },
  135. {
  136. "value": "never",
  137. "description": "Never pull an image even if it is not present on the host."
  138. }
  139. ]
  140. }
  141. }
  142. ]
  143. }
  144. },
  145. {
  146. "variable": "hostname",
  147. "label": "Hostname",
  148. "group": "Container Configuration",
  149. "description": "The hostname to use for the container.",
  150. "schema": {
  151. "type": "string",
  152. "default": ""
  153. }
  154. },
  155. {
  156. "variable": "entrypoint",
  157. "label": "Entrypoint",
  158. "group": "Container Configuration",
  159. "description": "Entrypoint to use for the container. </br>\nOverrides the default ENTRYPOINT of the image.\n",
  160. "schema": {
  161. "type": "list",
  162. "default": [],
  163. "items": [
  164. {
  165. "variable": "entrypoint_item",
  166. "label": "",
  167. "schema": {
  168. "type": "string",
  169. "required": true
  170. }
  171. }
  172. ]
  173. }
  174. },
  175. {
  176. "variable": "command",
  177. "label": "Command",
  178. "group": "Container Configuration",
  179. "description": "Command to use for the container. </br>\nOverrides the default CMD of the image.\n",
  180. "schema": {
  181. "type": "list",
  182. "default": [],
  183. "items": [
  184. {
  185. "variable": "command_item",
  186. "label": "",
  187. "schema": {
  188. "type": "string",
  189. "required": true
  190. }
  191. }
  192. ]
  193. }
  194. },
  195. {
  196. "variable": "TZ",
  197. "label": "Timezone",
  198. "group": "Container Configuration",
  199. "description": "Timezone setting for the container.",
  200. "schema": {
  201. "type": "string",
  202. "default": "Etc/UTC",
  203. "required": true,
  204. "$ref": [
  205. "definitions/timezone"
  206. ]
  207. }
  208. },
  209. {
  210. "variable": "envs",
  211. "label": "Environment Variables",
  212. "group": "Container Configuration",
  213. "description": "Configure environment variables.",
  214. "schema": {
  215. "type": "list",
  216. "default": [],
  217. "items": [
  218. {
  219. "variable": "env",
  220. "label": "Environment Variable",
  221. "schema": {
  222. "type": "dict",
  223. "attrs": [
  224. {
  225. "variable": "name",
  226. "label": "Name",
  227. "schema": {
  228. "type": "string",
  229. "required": true
  230. }
  231. },
  232. {
  233. "variable": "value",
  234. "label": "Value",
  235. "schema": {
  236. "type": "string",
  237. "required": true
  238. }
  239. }
  240. ]
  241. }
  242. }
  243. ]
  244. }
  245. },
  246. {
  247. "variable": "restart_policy",
  248. "label": "Restart Policy",
  249. "group": "Container Configuration",
  250. "description": "The restart policy to use for the container.",
  251. "schema": {
  252. "type": "string",
  253. "default": "no",
  254. "required": true,
  255. "enum": [
  256. {
  257. "value": "no",
  258. "description": "No - Does not restart the container under any circumstances."
  259. },
  260. {
  261. "value": "unless-stopped",
  262. "description": "Unless Stopped - Restarts the container irrespective of the exit code but stops restarting when the service is stopped or removed."
  263. },
  264. {
  265. "value": "on-failure",
  266. "description": "On Failure - Restarts the container if the exit code indicates an error."
  267. },
  268. {
  269. "value": "always",
  270. "description": "Always - Restarts the container until its removal."
  271. }
  272. ]
  273. }
  274. },
  275. {
  276. "variable": "max_retry_count",
  277. "label": "Maximum Retry Count",
  278. "group": "Container Configuration",
  279. "description": "Maximum number of retries allowed for a container to exit with a code indicating an error. </br>\nSetting this to zero, will keep restarting the container if it exits with a code indicating an error.\n",
  280. "schema": {
  281. "type": "int",
  282. "required": true,
  283. "default": 0,
  284. "show_if": [
  285. [
  286. "restart_policy",
  287. "=",
  288. "on-failure"
  289. ]
  290. ]
  291. }
  292. },
  293. {
  294. "variable": "disable_builtin_healthcheck",
  295. "label": "Disable Builtin Healthcheck",
  296. "group": "Container Configuration",
  297. "description": "Disable the built-in HEALTHCHECK defined in the image.\n",
  298. "schema": {
  299. "type": "boolean",
  300. "default": false
  301. }
  302. },
  303. {
  304. "variable": "tty",
  305. "label": "TTY",
  306. "group": "Container Configuration",
  307. "description": "Allocate a pseudo-TTY.</br>\nNote, that due to a bug in the underlying library</br>\nusing this option will cause the logs to not display properly</br>\non the TrueNAS WebUI.</br>\nYou can still view logs using 'docker logs ...'.</br>\nBug: https://github.com/docker/docker-py/issues/1394\n",
  308. "schema": {
  309. "type": "boolean",
  310. "default": false
  311. }
  312. },
  313. {
  314. "variable": "stdin",
  315. "label": "Stdin",
  316. "group": "Container Configuration",
  317. "description": "Keep stdin open on the container.",
  318. "schema": {
  319. "type": "boolean",
  320. "default": false
  321. }
  322. },
  323. {
  324. "variable": "devices",
  325. "label": "Devices",
  326. "group": "Container Configuration",
  327. "description": "Devices to use for the container. </br>\nEg: Host Device: /dev/ttyUSB0, Container Device: /dev/ttyACM0\n",
  328. "schema": {
  329. "type": "list",
  330. "default": [],
  331. "items": [
  332. {
  333. "variable": "device",
  334. "label": "Device",
  335. "schema": {
  336. "type": "dict",
  337. "attrs": [
  338. {
  339. "variable": "host_device",
  340. "label": "Host Device",
  341. "schema": {
  342. "type": "string",
  343. "required": true
  344. }
  345. },
  346. {
  347. "variable": "container_device",
  348. "label": "Container Device",
  349. "schema": {
  350. "type": "string",
  351. "required": true
  352. }
  353. }
  354. ]
  355. }
  356. }
  357. ]
  358. }
  359. },
  360. {
  361. "variable": "privileged",
  362. "label": "Privileged",
  363. "group": "Security Context Configuration",
  364. "description": "Run the container in privileged mode.",
  365. "schema": {
  366. "type": "boolean",
  367. "default": false
  368. }
  369. },
  370. {
  371. "variable": "capabilities",
  372. "label": "Capabilities",
  373. "group": "Security Context Configuration",
  374. "description": "Add Linux capabilities to the container.",
  375. "schema": {
  376. "type": "dict",
  377. "attrs": [
  378. {
  379. "variable": "add",
  380. "label": "Add",
  381. "schema": {
  382. "type": "list",
  383. "items": [
  384. {
  385. "variable": "capability",
  386. "label": "Capability",
  387. "schema": {
  388. "type": "string",
  389. "required": true
  390. }
  391. }
  392. ]
  393. }
  394. }
  395. ]
  396. }
  397. },
  398. {
  399. "variable": "run_as_custom_user",
  400. "label": "Custom User",
  401. "group": "Security Context Configuration",
  402. "description": "Run the container as a custom user.",
  403. "schema": {
  404. "type": "boolean",
  405. "default": false
  406. }
  407. },
  408. {
  409. "variable": "run_as",
  410. "label": "",
  411. "group": "Security Context Configuration",
  412. "schema": {
  413. "type": "dict",
  414. "show_if": [
  415. [
  416. "run_as_custom_user",
  417. "=",
  418. true
  419. ]
  420. ],
  421. "attrs": [
  422. {
  423. "variable": "user",
  424. "label": "User ID",
  425. "description": "The user id that container will run as.",
  426. "schema": {
  427. "type": "int",
  428. "default": 568,
  429. "required": true
  430. }
  431. },
  432. {
  433. "variable": "group",
  434. "label": "Group ID",
  435. "description": "The group id that container will run as.",
  436. "schema": {
  437. "type": "int",
  438. "default": 568,
  439. "required": true
  440. }
  441. }
  442. ]
  443. }
  444. },
  445. {
  446. "variable": "host_network",
  447. "label": "Host Network",
  448. "group": "Network Configuration",
  449. "description": "Bind to the host network.",
  450. "schema": {
  451. "type": "boolean",
  452. "default": false
  453. }
  454. },
  455. {
  456. "variable": "ports",
  457. "label": "Ports",
  458. "group": "Network Configuration",
  459. "description": "Configure ports for the container.",
  460. "schema": {
  461. "type": "list",
  462. "show_if": [
  463. [
  464. "host_network",
  465. "=",
  466. false
  467. ]
  468. ],
  469. "default": [],
  470. "items": [
  471. {
  472. "variable": "port",
  473. "label": "Port",
  474. "schema": {
  475. "type": "dict",
  476. "attrs": [
  477. {
  478. "variable": "bind_mode",
  479. "label": "Port Bind Mode",
  480. "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",
  481. "schema": {
  482. "type": "string",
  483. "default": "published",
  484. "enum": [
  485. {
  486. "value": "published",
  487. "description": "Publish port on the host for external access"
  488. },
  489. {
  490. "value": "exposed",
  491. "description": "Expose port for inter-container communication"
  492. }
  493. ]
  494. }
  495. },
  496. {
  497. "variable": "port_number",
  498. "label": "Host Port",
  499. "schema": {
  500. "type": "int",
  501. "min": 1,
  502. "max": 65535,
  503. "required": true
  504. }
  505. },
  506. {
  507. "variable": "container_port",
  508. "label": "Container Port",
  509. "schema": {
  510. "type": "int",
  511. "min": 1,
  512. "max": 65535,
  513. "required": true
  514. }
  515. },
  516. {
  517. "variable": "protocol",
  518. "label": "Protocol",
  519. "schema": {
  520. "type": "string",
  521. "required": true,
  522. "default": "tcp",
  523. "enum": [
  524. {
  525. "value": "tcp",
  526. "description": "TCP"
  527. },
  528. {
  529. "value": "udp",
  530. "description": "UDP"
  531. }
  532. ]
  533. }
  534. },
  535. {
  536. "variable": "host_ips",
  537. "label": "Host IPs",
  538. "description": "IPs on the host to bind this port",
  539. "schema": {
  540. "type": "list",
  541. "show_if": [
  542. [
  543. "bind_mode",
  544. "=",
  545. "published"
  546. ]
  547. ],
  548. "default": [],
  549. "items": [
  550. {
  551. "variable": "host_ip",
  552. "label": "Host IP",
  553. "schema": {
  554. "type": "string",
  555. "required": true,
  556. "$ref": [
  557. "definitions/node_bind_ip"
  558. ]
  559. }
  560. }
  561. ]
  562. }
  563. }
  564. ]
  565. }
  566. }
  567. ]
  568. }
  569. },
  570. {
  571. "variable": "dns_config",
  572. "label": "Custom DNS Setup",
  573. "group": "Network Configuration",
  574. "description": "Configure custom DNS settings for the container.\n",
  575. "schema": {
  576. "type": "dict",
  577. "attrs": [
  578. {
  579. "variable": "nameservers",
  580. "label": "Nameservers",
  581. "description": "The DNS nameservers to use.",
  582. "schema": {
  583. "type": "list",
  584. "items": [
  585. {
  586. "variable": "nameserver",
  587. "label": "Nameserver",
  588. "schema": {
  589. "type": "string",
  590. "required": true
  591. }
  592. }
  593. ]
  594. }
  595. },
  596. {
  597. "variable": "searches",
  598. "label": "Search Domains",
  599. "description": "The DNS search domains to use.",
  600. "schema": {
  601. "type": "list",
  602. "items": [
  603. {
  604. "variable": "search",
  605. "label": "Search Domain",
  606. "schema": {
  607. "type": "string",
  608. "required": true
  609. }
  610. }
  611. ]
  612. }
  613. },
  614. {
  615. "variable": "options",
  616. "label": "DNS Options",
  617. "description": "The DNS options to use.",
  618. "schema": {
  619. "type": "list",
  620. "items": [
  621. {
  622. "variable": "option",
  623. "label": "Option",
  624. "schema": {
  625. "type": "string",
  626. "required": true
  627. }
  628. }
  629. ]
  630. }
  631. }
  632. ]
  633. }
  634. },
  635. {
  636. "variable": "portals",
  637. "label": "",
  638. "group": "Portal Configuration",
  639. "schema": {
  640. "type": "list",
  641. "items": [
  642. {
  643. "variable": "portal",
  644. "label": "Portal",
  645. "schema": {
  646. "type": "dict",
  647. "attrs": [
  648. {
  649. "variable": "name",
  650. "label": "Name",
  651. "description": "The name of the portal",
  652. "schema": {
  653. "type": "string",
  654. "default": "Web UI",
  655. "required": true
  656. }
  657. },
  658. {
  659. "variable": "scheme",
  660. "label": "Protocol",
  661. "description": "The protocol for the portal",
  662. "schema": {
  663. "type": "string",
  664. "default": "http",
  665. "required": true,
  666. "enum": [
  667. {
  668. "value": "http",
  669. "description": "HTTP"
  670. },
  671. {
  672. "value": "https",
  673. "description": "HTTPS"
  674. }
  675. ]
  676. }
  677. },
  678. {
  679. "variable": "use_node_ip",
  680. "label": "Use Node IP",
  681. "description": "Use the node IP for the portal",
  682. "schema": {
  683. "type": "boolean",
  684. "default": true,
  685. "required": true
  686. }
  687. },
  688. {
  689. "variable": "host",
  690. "label": "Host",
  691. "description": "The host for the portal",
  692. "schema": {
  693. "type": "string",
  694. "default": "",
  695. "show_if": [
  696. [
  697. "use_node_ip",
  698. "=",
  699. false
  700. ]
  701. ],
  702. "required": true
  703. }
  704. },
  705. {
  706. "variable": "port",
  707. "label": "Port",
  708. "description": "The port for the portal",
  709. "schema": {
  710. "type": "int",
  711. "default": 15000,
  712. "required": true
  713. }
  714. },
  715. {
  716. "variable": "path",
  717. "label": "Path",
  718. "description": "The path for the portal",
  719. "schema": {
  720. "type": "string",
  721. "default": "/",
  722. "required": true
  723. }
  724. }
  725. ]
  726. }
  727. }
  728. ]
  729. }
  730. },
  731. {
  732. "variable": "storage",
  733. "label": "Storage",
  734. "group": "Storage Configuration",
  735. "description": "Storage for the container.",
  736. "schema": {
  737. "type": "list",
  738. "default": [],
  739. "items": [
  740. {
  741. "variable": "storageEntry",
  742. "label": "Storage Entry",
  743. "schema": {
  744. "type": "dict",
  745. "attrs": [
  746. {
  747. "variable": "type",
  748. "label": "Type",
  749. "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.</br>\ntmpfs: Is a temporary directory that will be created on the RAM.</br>\n",
  750. "schema": {
  751. "type": "string",
  752. "required": true,
  753. "default": "ix_volume",
  754. "enum": [
  755. {
  756. "value": "host_path",
  757. "description": "Host Path (Path that already exists on the system)"
  758. },
  759. {
  760. "value": "ix_volume",
  761. "description": "ixVolume (Dataset created automatically by the system)"
  762. },
  763. {
  764. "value": "cifs",
  765. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  766. },
  767. {
  768. "value": "tmpfs",
  769. "description": "Tmpfs (Temporary directory created on the RAM)"
  770. }
  771. ]
  772. }
  773. },
  774. {
  775. "variable": "read_only",
  776. "label": "Read Only",
  777. "description": "Mount the volume as read only.",
  778. "schema": {
  779. "type": "boolean",
  780. "default": false
  781. }
  782. },
  783. {
  784. "variable": "mount_path",
  785. "label": "Mount Path",
  786. "description": "The path inside the container to mount the storage.",
  787. "schema": {
  788. "type": "path",
  789. "required": true
  790. }
  791. },
  792. {
  793. "variable": "host_path_config",
  794. "label": "Host Path Configuration",
  795. "schema": {
  796. "type": "dict",
  797. "show_if": [
  798. [
  799. "type",
  800. "=",
  801. "host_path"
  802. ]
  803. ],
  804. "attrs": [
  805. {
  806. "variable": "acl_enable",
  807. "label": "Enable ACL",
  808. "description": "Enable ACL for the storage.",
  809. "schema": {
  810. "type": "boolean",
  811. "default": false
  812. }
  813. },
  814. {
  815. "variable": "acl",
  816. "label": "ACL Configuration",
  817. "schema": {
  818. "type": "dict",
  819. "show_if": [
  820. [
  821. "acl_enable",
  822. "=",
  823. true
  824. ]
  825. ],
  826. "attrs": [],
  827. "$ref": [
  828. "normalize/acl"
  829. ]
  830. }
  831. },
  832. {
  833. "variable": "path",
  834. "label": "Host Path",
  835. "description": "The host path to use for storage.",
  836. "schema": {
  837. "type": "hostpath",
  838. "show_if": [
  839. [
  840. "acl_enable",
  841. "=",
  842. false
  843. ]
  844. ],
  845. "required": true
  846. }
  847. }
  848. ]
  849. }
  850. },
  851. {
  852. "variable": "ix_volume_config",
  853. "label": "ixVolume Configuration",
  854. "description": "The configuration for the ixVolume dataset.",
  855. "schema": {
  856. "type": "dict",
  857. "show_if": [
  858. [
  859. "type",
  860. "=",
  861. "ix_volume"
  862. ]
  863. ],
  864. "$ref": [
  865. "normalize/ix_volume"
  866. ],
  867. "attrs": [
  868. {
  869. "variable": "acl_enable",
  870. "label": "Enable ACL",
  871. "description": "Enable ACL for the storage.",
  872. "schema": {
  873. "type": "boolean",
  874. "default": false
  875. }
  876. },
  877. {
  878. "variable": "dataset_name",
  879. "label": "Dataset Name",
  880. "description": "The name of the dataset to use for storage.",
  881. "schema": {
  882. "type": "string",
  883. "required": true,
  884. "default": "storage_entry"
  885. }
  886. },
  887. {
  888. "variable": "acl_entries",
  889. "label": "ACL Configuration",
  890. "schema": {
  891. "type": "dict",
  892. "show_if": [
  893. [
  894. "acl_enable",
  895. "=",
  896. true
  897. ]
  898. ],
  899. "attrs": [],
  900. "$ref": [
  901. "normalize/acl"
  902. ]
  903. }
  904. }
  905. ]
  906. }
  907. },
  908. {
  909. "variable": "cifs_config",
  910. "label": "SMB Configuration",
  911. "description": "The configuration for the SMB dataset.",
  912. "schema": {
  913. "type": "dict",
  914. "show_if": [
  915. [
  916. "type",
  917. "=",
  918. "cifs"
  919. ]
  920. ],
  921. "attrs": [
  922. {
  923. "variable": "server",
  924. "label": "Server",
  925. "description": "The server to mount the SMB share.",
  926. "schema": {
  927. "type": "string",
  928. "required": true
  929. }
  930. },
  931. {
  932. "variable": "path",
  933. "label": "Path",
  934. "description": "The path to mount the SMB share.",
  935. "schema": {
  936. "type": "string",
  937. "required": true
  938. }
  939. },
  940. {
  941. "variable": "username",
  942. "label": "Username",
  943. "description": "The username to use for the SMB share.",
  944. "schema": {
  945. "type": "string",
  946. "required": true
  947. }
  948. },
  949. {
  950. "variable": "password",
  951. "label": "Password",
  952. "description": "The password to use for the SMB share.",
  953. "schema": {
  954. "type": "string",
  955. "required": true,
  956. "private": true
  957. }
  958. },
  959. {
  960. "variable": "domain",
  961. "label": "Domain",
  962. "description": "The domain to use for the SMB share.",
  963. "schema": {
  964. "type": "string"
  965. }
  966. }
  967. ]
  968. }
  969. },
  970. {
  971. "variable": "tmpfs_config",
  972. "label": "Tmpfs Configuration",
  973. "description": "The configuration for the tmpfs dataset.",
  974. "schema": {
  975. "type": "dict",
  976. "show_if": [
  977. [
  978. "type",
  979. "=",
  980. "tmpfs"
  981. ]
  982. ],
  983. "attrs": [
  984. {
  985. "variable": "size",
  986. "label": "Tmpfs Size Limit (in Mi)",
  987. "description": "The maximum size (in Mi) of the temporary directory.</br>\nFor example: 500\n",
  988. "schema": {
  989. "type": "int",
  990. "default": 500,
  991. "required": true
  992. }
  993. }
  994. ]
  995. }
  996. }
  997. ]
  998. }
  999. }
  1000. ]
  1001. }
  1002. },
  1003. {
  1004. "variable": "labels",
  1005. "label": "",
  1006. "group": "Labels Configuration",
  1007. "schema": {
  1008. "type": "list",
  1009. "default": [],
  1010. "items": [
  1011. {
  1012. "variable": "label",
  1013. "label": "Label",
  1014. "schema": {
  1015. "type": "dict",
  1016. "attrs": [
  1017. {
  1018. "variable": "key",
  1019. "label": "Key",
  1020. "schema": {
  1021. "type": "string",
  1022. "required": true
  1023. }
  1024. },
  1025. {
  1026. "variable": "value",
  1027. "label": "Value",
  1028. "schema": {
  1029. "type": "string",
  1030. "required": true
  1031. }
  1032. }
  1033. ]
  1034. }
  1035. }
  1036. ]
  1037. }
  1038. },
  1039. {
  1040. "variable": "resources",
  1041. "label": "",
  1042. "group": "Resources Configuration",
  1043. "schema": {
  1044. "type": "dict",
  1045. "attrs": [
  1046. {
  1047. "variable": "enable_resource_limits",
  1048. "label": "Enable Resource Limits",
  1049. "group": "Resources Configuration",
  1050. "description": "Enable resource limits for the container.",
  1051. "schema": {
  1052. "type": "boolean",
  1053. "default": false
  1054. }
  1055. },
  1056. {
  1057. "variable": "limits",
  1058. "label": "Limits",
  1059. "schema": {
  1060. "type": "dict",
  1061. "show_if": [
  1062. [
  1063. "enable_resource_limits",
  1064. "=",
  1065. true
  1066. ]
  1067. ],
  1068. "attrs": [
  1069. {
  1070. "variable": "cpus",
  1071. "label": "CPUs",
  1072. "description": "CPUs limit for the container.",
  1073. "schema": {
  1074. "type": "int",
  1075. "default": 2,
  1076. "required": true
  1077. }
  1078. },
  1079. {
  1080. "variable": "memory",
  1081. "label": "Memory (in MB)",
  1082. "description": "Memory limit for the container.",
  1083. "schema": {
  1084. "type": "int",
  1085. "default": 4096,
  1086. "required": true
  1087. }
  1088. }
  1089. ]
  1090. }
  1091. },
  1092. {
  1093. "variable": "gpus",
  1094. "group": "Resources Configuration",
  1095. "label": "GPU Configuration",
  1096. "schema": {
  1097. "type": "dict",
  1098. "$ref": [
  1099. "definitions/gpu_configuration"
  1100. ],
  1101. "attrs": []
  1102. }
  1103. }
  1104. ]
  1105. }
  1106. }
  1107. ]
  1108. },
  1109. "readme": "<h1>iX App</h1> <p>iX App is designed to let user deploy a docker image in TrueNAS SCALE with a simple wizard.</p>",
  1110. "changelog": null,
  1111. "chart_metadata": {
  1112. "annotations": {
  1113. "min_scale_version": "24.10.2.2"
  1114. },
  1115. "app_version": "1.2.5",
  1116. "capabilities": [],
  1117. "categories": [
  1118. "custom"
  1119. ],
  1120. "date_added": "2024-09-10",
  1121. "description": "An application for deploying simple containers.",
  1122. "home": "https://www.truenas.com/",
  1123. "host_mounts": [],
  1124. "icon": "https://media.sys.truenas.net/apps/ix-app/icons/icon.webp",
  1125. "keywords": [],
  1126. "lib_version": "2.1.49",
  1127. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1128. "maintainers": [
  1129. {
  1130. "email": "dev@ixsystems.com",
  1131. "name": "truenas",
  1132. "url": "https://www.truenas.com/"
  1133. }
  1134. ],
  1135. "name": "ix-app",
  1136. "run_as_context": [],
  1137. "screenshots": [],
  1138. "sources": [],
  1139. "title": "iX App",
  1140. "train": "stable",
  1141. "version": "1.2.8"
  1142. }
  1143. }
  1144. }