app_versions.json 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  1. {
  2. "1.1.12": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/arti/1.1.12",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "1.4.6_1.1.12",
  10. "version": "1.1.12",
  11. "app_metadata": {
  12. "app_version": "1.4.6",
  13. "capabilities": [],
  14. "categories": [
  15. "networking"
  16. ],
  17. "changelog_url": "https://gitlab.torproject.org/tpo/core/arti/-/blob/main/CHANGELOG.md",
  18. "date_added": "2025-02-25",
  19. "description": "Arti is an experimental Tor implementation written in Rust, and it is designed to be modular, reusable, and easy to audit.",
  20. "home": "https://tpo.pages.torproject.net/core/arti/",
  21. "host_mounts": [],
  22. "icon": "https://media.sys.truenas.net/apps/arti/icons/icon.png",
  23. "keywords": [
  24. "tor",
  25. "privacy"
  26. ],
  27. "lib_version": "2.1.49",
  28. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  29. "maintainers": [
  30. {
  31. "email": "dev@ixsystems.com",
  32. "name": "truenas",
  33. "url": "https://www.truenas.com/"
  34. }
  35. ],
  36. "name": "arti",
  37. "run_as_context": [
  38. {
  39. "description": "Arti runs as non-root user.",
  40. "gid": 1000,
  41. "group_name": "arti",
  42. "uid": 1000,
  43. "user_name": "arti"
  44. }
  45. ],
  46. "screenshots": [],
  47. "sources": [
  48. "https://tpo.pages.torproject.net/core/arti/",
  49. "https://github.com/MAGICGrants/arti-docker"
  50. ],
  51. "title": "Arti",
  52. "train": "community",
  53. "version": "1.1.12"
  54. },
  55. "schema": {
  56. "groups": [
  57. {
  58. "name": "Arti Configuration",
  59. "description": "Configure Arti"
  60. },
  61. {
  62. "name": "Network Configuration",
  63. "description": "Configure Network for Arti"
  64. },
  65. {
  66. "name": "Storage Configuration",
  67. "description": "Configure Storage for Arti"
  68. },
  69. {
  70. "name": "Labels Configuration",
  71. "description": "Configure Labels for Arti"
  72. },
  73. {
  74. "name": "Resources Configuration",
  75. "description": "Configure Resources for Arti"
  76. }
  77. ],
  78. "questions": [
  79. {
  80. "variable": "TZ",
  81. "group": "Arti Configuration",
  82. "label": "Timezone",
  83. "schema": {
  84. "type": "string",
  85. "default": "Etc/UTC",
  86. "required": true,
  87. "$ref": [
  88. "definitions/timezone"
  89. ]
  90. }
  91. },
  92. {
  93. "variable": "arti",
  94. "label": "",
  95. "group": "Arti Configuration",
  96. "schema": {
  97. "type": "dict",
  98. "attrs": [
  99. {
  100. "variable": "allow_onion_addrs",
  101. "label": "Allow connecting to Onion Services",
  102. "description": "Disabling this feature will not permit Arti to connect to onion services (.onion),\nwhich is a common use of Tor. Arti is still in development,\nand it does not include some privacy features that are available in the original C Tor program.\nArti does not yet support \"vanguards\",\nan important privacy feature employed by Tor to mitigate guard discovery attacks over time.\nIf you operate under a strict threat model,\nplease disable this feature and consider not using Arti until these privacy protections are implemented. </br>\nMore information: https://tpo.pages.torproject.net/core/arti/guides/capability-limitations/\n",
  103. "schema": {
  104. "type": "boolean",
  105. "required": true,
  106. "default": true
  107. }
  108. },
  109. {
  110. "variable": "hidden_services",
  111. "label": "Hidden Services",
  112. "description": "Add the hidden services you want to host here.<br />\nTo get the onion address of your hidden service,\nuse the following command in the Arti container:</br>\n`arti hss --nickname <name> onion-address`\n",
  113. "schema": {
  114. "type": "list",
  115. "default": [],
  116. "items": [
  117. {
  118. "variable": "hidden_service",
  119. "label": "",
  120. "schema": {
  121. "type": "dict",
  122. "attrs": [
  123. {
  124. "variable": "name",
  125. "label": "Name",
  126. "schema": {
  127. "type": "string",
  128. "required": true,
  129. "valid_chars": "^[a-zA-Z0-9]+$",
  130. "valid_chars_error": "Name should not contain special characters."
  131. }
  132. },
  133. {
  134. "variable": "is_app",
  135. "label": "Is TrueNAS App",
  136. "description": "Enable this option if the application runs as a TrueNAS app on this machine.\n",
  137. "schema": {
  138. "type": "boolean",
  139. "default": true
  140. }
  141. },
  142. {
  143. "variable": "ip",
  144. "label": "App IP",
  145. "schema": {
  146. "type": "ipaddr",
  147. "required": true,
  148. "show_if": [
  149. [
  150. "is_app",
  151. "=",
  152. false
  153. ]
  154. ]
  155. }
  156. },
  157. {
  158. "variable": "port",
  159. "label": "App Port",
  160. "schema": {
  161. "type": "int",
  162. "min": 1,
  163. "max": 65535,
  164. "required": true
  165. }
  166. },
  167. {
  168. "variable": "hidden_service_port",
  169. "label": "Hidden Service Port",
  170. "description": "The port to host this service on the Tor network.",
  171. "schema": {
  172. "type": "int",
  173. "min": 1,
  174. "max": 65535,
  175. "required": true
  176. }
  177. }
  178. ]
  179. }
  180. }
  181. ]
  182. }
  183. }
  184. ]
  185. }
  186. },
  187. {
  188. "variable": "network",
  189. "label": "",
  190. "group": "Network Configuration",
  191. "schema": {
  192. "type": "dict",
  193. "attrs": [
  194. {
  195. "variable": "socks_port",
  196. "label": "Arti SOCKS port",
  197. "schema": {
  198. "type": "dict",
  199. "attrs": [
  200. {
  201. "variable": "bind_mode",
  202. "label": "Port Bind Mode",
  203. "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",
  204. "schema": {
  205. "type": "string",
  206. "default": "published",
  207. "enum": [
  208. {
  209. "value": "published",
  210. "description": "Publish port on the host for external access"
  211. },
  212. {
  213. "value": "exposed",
  214. "description": "Expose port for inter-container communication"
  215. },
  216. {
  217. "value": "",
  218. "description": "None"
  219. }
  220. ]
  221. }
  222. },
  223. {
  224. "variable": "port_number",
  225. "label": "Port Number",
  226. "schema": {
  227. "type": "int",
  228. "default": 9150,
  229. "min": 1,
  230. "max": 65535,
  231. "required": true
  232. }
  233. },
  234. {
  235. "variable": "host_ips",
  236. "label": "Host IPs",
  237. "description": "IPs on the host to bind this port",
  238. "schema": {
  239. "type": "list",
  240. "show_if": [
  241. [
  242. "bind_mode",
  243. "=",
  244. "published"
  245. ]
  246. ],
  247. "default": [],
  248. "items": [
  249. {
  250. "variable": "host_ip",
  251. "label": "Host IP",
  252. "schema": {
  253. "type": "string",
  254. "required": true,
  255. "$ref": [
  256. "definitions/node_bind_ip"
  257. ]
  258. }
  259. }
  260. ]
  261. }
  262. }
  263. ]
  264. }
  265. },
  266. {
  267. "variable": "additional_ports",
  268. "label": "Additional Ports",
  269. "schema": {
  270. "type": "list",
  271. "items": [
  272. {
  273. "variable": "port",
  274. "label": "Port",
  275. "schema": {
  276. "type": "dict",
  277. "attrs": [
  278. {
  279. "variable": "bind_mode",
  280. "label": "Port Bind Mode",
  281. "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",
  282. "schema": {
  283. "type": "string",
  284. "default": "published",
  285. "enum": [
  286. {
  287. "value": "published",
  288. "description": "Publish port on the host for external access"
  289. },
  290. {
  291. "value": "exposed",
  292. "description": "Expose port for inter-container communication"
  293. }
  294. ]
  295. }
  296. },
  297. {
  298. "variable": "port_number",
  299. "label": "Port Number",
  300. "schema": {
  301. "type": "int",
  302. "min": 1,
  303. "max": 65535,
  304. "required": true
  305. }
  306. },
  307. {
  308. "variable": "container_port",
  309. "label": "Container Port",
  310. "schema": {
  311. "type": "int",
  312. "min": 1,
  313. "max": 65535,
  314. "required": true
  315. }
  316. },
  317. {
  318. "variable": "protocol",
  319. "label": "Protocol",
  320. "schema": {
  321. "type": "string",
  322. "required": true,
  323. "default": "tcp",
  324. "enum": [
  325. {
  326. "value": "tcp",
  327. "description": "TCP"
  328. },
  329. {
  330. "value": "udp",
  331. "description": "UDP"
  332. }
  333. ]
  334. }
  335. },
  336. {
  337. "variable": "host_ips",
  338. "label": "Host IPs",
  339. "description": "IPs on the host to bind this port",
  340. "schema": {
  341. "type": "list",
  342. "show_if": [
  343. [
  344. "bind_mode",
  345. "=",
  346. "published"
  347. ]
  348. ],
  349. "default": [],
  350. "items": [
  351. {
  352. "variable": "host_ip",
  353. "label": "Host IP",
  354. "schema": {
  355. "type": "string",
  356. "required": true,
  357. "$ref": [
  358. "definitions/node_bind_ip"
  359. ]
  360. }
  361. }
  362. ]
  363. }
  364. }
  365. ]
  366. }
  367. }
  368. ]
  369. }
  370. }
  371. ]
  372. }
  373. },
  374. {
  375. "variable": "storage",
  376. "label": "",
  377. "group": "Storage Configuration",
  378. "schema": {
  379. "type": "dict",
  380. "attrs": [
  381. {
  382. "variable": "arti_config",
  383. "label": "Arti configuration storage location",
  384. "schema": {
  385. "type": "dict",
  386. "attrs": [
  387. {
  388. "variable": "type",
  389. "label": "Type",
  390. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  391. "schema": {
  392. "type": "string",
  393. "required": true,
  394. "default": "ix_volume",
  395. "enum": [
  396. {
  397. "value": "host_path",
  398. "description": "Host Path (Path that already exists on the system)"
  399. },
  400. {
  401. "value": "ix_volume",
  402. "description": "ixVolume (Dataset created automatically by the system)"
  403. }
  404. ]
  405. }
  406. },
  407. {
  408. "variable": "ix_volume_config",
  409. "label": "ixVolume Configuration",
  410. "description": "The configuration for the ixVolume dataset.",
  411. "schema": {
  412. "type": "dict",
  413. "show_if": [
  414. [
  415. "type",
  416. "=",
  417. "ix_volume"
  418. ]
  419. ],
  420. "$ref": [
  421. "normalize/ix_volume"
  422. ],
  423. "attrs": [
  424. {
  425. "variable": "acl_enable",
  426. "label": "Enable ACL",
  427. "description": "Enable ACL for the storage.",
  428. "schema": {
  429. "type": "boolean",
  430. "default": false
  431. }
  432. },
  433. {
  434. "variable": "dataset_name",
  435. "label": "Dataset Name",
  436. "description": "The name of the dataset to use for storage.",
  437. "schema": {
  438. "type": "string",
  439. "required": true,
  440. "hidden": true,
  441. "default": "arti_config"
  442. }
  443. },
  444. {
  445. "variable": "acl_entries",
  446. "label": "ACL Configuration",
  447. "schema": {
  448. "type": "dict",
  449. "show_if": [
  450. [
  451. "acl_enable",
  452. "=",
  453. true
  454. ]
  455. ],
  456. "attrs": []
  457. }
  458. }
  459. ]
  460. }
  461. },
  462. {
  463. "variable": "host_path_config",
  464. "label": "Host Path Configuration",
  465. "schema": {
  466. "type": "dict",
  467. "show_if": [
  468. [
  469. "type",
  470. "=",
  471. "host_path"
  472. ]
  473. ],
  474. "attrs": [
  475. {
  476. "variable": "acl_enable",
  477. "label": "Enable ACL",
  478. "description": "Enable ACL for the storage.",
  479. "schema": {
  480. "type": "boolean",
  481. "default": false
  482. }
  483. },
  484. {
  485. "variable": "acl",
  486. "label": "ACL Configuration",
  487. "schema": {
  488. "type": "dict",
  489. "show_if": [
  490. [
  491. "acl_enable",
  492. "=",
  493. true
  494. ]
  495. ],
  496. "attrs": [],
  497. "$ref": [
  498. "normalize/acl"
  499. ]
  500. }
  501. },
  502. {
  503. "variable": "path",
  504. "label": "Host Path",
  505. "description": "The host path to use for storage.",
  506. "schema": {
  507. "type": "hostpath",
  508. "show_if": [
  509. [
  510. "acl_enable",
  511. "=",
  512. false
  513. ]
  514. ],
  515. "required": true
  516. }
  517. }
  518. ]
  519. }
  520. }
  521. ]
  522. }
  523. },
  524. {
  525. "variable": "arti_state",
  526. "label": "Arti keystore storage location",
  527. "schema": {
  528. "type": "dict",
  529. "attrs": [
  530. {
  531. "variable": "type",
  532. "label": "Type",
  533. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  534. "schema": {
  535. "type": "string",
  536. "required": true,
  537. "default": "ix_volume",
  538. "enum": [
  539. {
  540. "value": "host_path",
  541. "description": "Host Path (Path that already exists on the system)"
  542. },
  543. {
  544. "value": "ix_volume",
  545. "description": "ixVolume (Dataset created automatically by the system)"
  546. }
  547. ]
  548. }
  549. },
  550. {
  551. "variable": "ix_volume_config",
  552. "label": "ixVolume Configuration",
  553. "description": "The configuration for the ixVolume dataset.",
  554. "schema": {
  555. "type": "dict",
  556. "show_if": [
  557. [
  558. "type",
  559. "=",
  560. "ix_volume"
  561. ]
  562. ],
  563. "$ref": [
  564. "normalize/ix_volume"
  565. ],
  566. "attrs": [
  567. {
  568. "variable": "acl_enable",
  569. "label": "Enable ACL",
  570. "description": "Enable ACL for the storage.",
  571. "schema": {
  572. "type": "boolean",
  573. "default": false
  574. }
  575. },
  576. {
  577. "variable": "dataset_name",
  578. "label": "Dataset Name",
  579. "description": "The name of the dataset to use for storage.",
  580. "schema": {
  581. "type": "string",
  582. "required": true,
  583. "hidden": true,
  584. "default": "arti_state"
  585. }
  586. },
  587. {
  588. "variable": "acl_entries",
  589. "label": "ACL Configuration",
  590. "schema": {
  591. "type": "dict",
  592. "show_if": [
  593. [
  594. "acl_enable",
  595. "=",
  596. true
  597. ]
  598. ],
  599. "attrs": []
  600. }
  601. }
  602. ]
  603. }
  604. },
  605. {
  606. "variable": "host_path_config",
  607. "label": "Host Path Configuration",
  608. "schema": {
  609. "type": "dict",
  610. "show_if": [
  611. [
  612. "type",
  613. "=",
  614. "host_path"
  615. ]
  616. ],
  617. "attrs": [
  618. {
  619. "variable": "acl_enable",
  620. "label": "Enable ACL",
  621. "description": "Enable ACL for the storage.",
  622. "schema": {
  623. "type": "boolean",
  624. "default": false
  625. }
  626. },
  627. {
  628. "variable": "acl",
  629. "label": "ACL Configuration",
  630. "schema": {
  631. "type": "dict",
  632. "show_if": [
  633. [
  634. "acl_enable",
  635. "=",
  636. true
  637. ]
  638. ],
  639. "attrs": [],
  640. "$ref": [
  641. "normalize/acl"
  642. ]
  643. }
  644. },
  645. {
  646. "variable": "path",
  647. "label": "Host Path",
  648. "description": "The host path to use for storage.",
  649. "schema": {
  650. "type": "hostpath",
  651. "show_if": [
  652. [
  653. "acl_enable",
  654. "=",
  655. false
  656. ]
  657. ],
  658. "required": true
  659. }
  660. }
  661. ]
  662. }
  663. }
  664. ]
  665. }
  666. },
  667. {
  668. "variable": "additional_storage",
  669. "label": "Additional Storage",
  670. "schema": {
  671. "type": "list",
  672. "default": [],
  673. "items": [
  674. {
  675. "variable": "storageEntry",
  676. "label": "Storage Entry",
  677. "schema": {
  678. "type": "dict",
  679. "attrs": [
  680. {
  681. "variable": "type",
  682. "label": "Type",
  683. "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",
  684. "schema": {
  685. "type": "string",
  686. "required": true,
  687. "default": "ix_volume",
  688. "enum": [
  689. {
  690. "value": "host_path",
  691. "description": "Host Path (Path that already exists on the system)"
  692. },
  693. {
  694. "value": "ix_volume",
  695. "description": "ixVolume (Dataset created automatically by the system)"
  696. },
  697. {
  698. "value": "cifs",
  699. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  700. }
  701. ]
  702. }
  703. },
  704. {
  705. "variable": "read_only",
  706. "label": "Read Only",
  707. "description": "Mount the volume as read only.",
  708. "schema": {
  709. "type": "boolean",
  710. "default": false
  711. }
  712. },
  713. {
  714. "variable": "mount_path",
  715. "label": "Mount Path",
  716. "description": "The path inside the container to mount the storage.",
  717. "schema": {
  718. "type": "path",
  719. "required": true
  720. }
  721. },
  722. {
  723. "variable": "host_path_config",
  724. "label": "Host Path Configuration",
  725. "schema": {
  726. "type": "dict",
  727. "show_if": [
  728. [
  729. "type",
  730. "=",
  731. "host_path"
  732. ]
  733. ],
  734. "attrs": [
  735. {
  736. "variable": "acl_enable",
  737. "label": "Enable ACL",
  738. "description": "Enable ACL for the storage.",
  739. "schema": {
  740. "type": "boolean",
  741. "default": false
  742. }
  743. },
  744. {
  745. "variable": "acl",
  746. "label": "ACL Configuration",
  747. "schema": {
  748. "type": "dict",
  749. "show_if": [
  750. [
  751. "acl_enable",
  752. "=",
  753. true
  754. ]
  755. ],
  756. "attrs": [],
  757. "$ref": [
  758. "normalize/acl"
  759. ]
  760. }
  761. },
  762. {
  763. "variable": "path",
  764. "label": "Host Path",
  765. "description": "The host path to use for storage.",
  766. "schema": {
  767. "type": "hostpath",
  768. "show_if": [
  769. [
  770. "acl_enable",
  771. "=",
  772. false
  773. ]
  774. ],
  775. "required": true
  776. }
  777. }
  778. ]
  779. }
  780. },
  781. {
  782. "variable": "ix_volume_config",
  783. "label": "ixVolume Configuration",
  784. "description": "The configuration for the ixVolume dataset.",
  785. "schema": {
  786. "type": "dict",
  787. "show_if": [
  788. [
  789. "type",
  790. "=",
  791. "ix_volume"
  792. ]
  793. ],
  794. "$ref": [
  795. "normalize/ix_volume"
  796. ],
  797. "attrs": [
  798. {
  799. "variable": "acl_enable",
  800. "label": "Enable ACL",
  801. "description": "Enable ACL for the storage.",
  802. "schema": {
  803. "type": "boolean",
  804. "default": false
  805. }
  806. },
  807. {
  808. "variable": "dataset_name",
  809. "label": "Dataset Name",
  810. "description": "The name of the dataset to use for storage.",
  811. "schema": {
  812. "type": "string",
  813. "required": true,
  814. "default": "storage_entry"
  815. }
  816. },
  817. {
  818. "variable": "acl_entries",
  819. "label": "ACL Configuration",
  820. "schema": {
  821. "type": "dict",
  822. "show_if": [
  823. [
  824. "acl_enable",
  825. "=",
  826. true
  827. ]
  828. ],
  829. "attrs": [],
  830. "$ref": [
  831. "normalize/acl"
  832. ]
  833. }
  834. }
  835. ]
  836. }
  837. },
  838. {
  839. "variable": "cifs_config",
  840. "label": "SMB Configuration",
  841. "description": "The configuration for the SMB dataset.",
  842. "schema": {
  843. "type": "dict",
  844. "show_if": [
  845. [
  846. "type",
  847. "=",
  848. "cifs"
  849. ]
  850. ],
  851. "attrs": [
  852. {
  853. "variable": "server",
  854. "label": "Server",
  855. "description": "The server to mount the SMB share.",
  856. "schema": {
  857. "type": "string",
  858. "required": true
  859. }
  860. },
  861. {
  862. "variable": "path",
  863. "label": "Path",
  864. "description": "The path to mount the SMB share.",
  865. "schema": {
  866. "type": "string",
  867. "required": true
  868. }
  869. },
  870. {
  871. "variable": "username",
  872. "label": "Username",
  873. "description": "The username to use for the SMB share.",
  874. "schema": {
  875. "type": "string",
  876. "required": true
  877. }
  878. },
  879. {
  880. "variable": "password",
  881. "label": "Password",
  882. "description": "The password to use for the SMB share.",
  883. "schema": {
  884. "type": "string",
  885. "required": true,
  886. "private": true
  887. }
  888. },
  889. {
  890. "variable": "domain",
  891. "label": "Domain",
  892. "description": "The domain to use for the SMB share.",
  893. "schema": {
  894. "type": "string"
  895. }
  896. }
  897. ]
  898. }
  899. }
  900. ]
  901. }
  902. }
  903. ]
  904. }
  905. }
  906. ]
  907. }
  908. },
  909. {
  910. "variable": "labels",
  911. "label": "",
  912. "group": "Labels Configuration",
  913. "schema": {
  914. "type": "list",
  915. "default": [],
  916. "items": [
  917. {
  918. "variable": "label",
  919. "label": "Label",
  920. "schema": {
  921. "type": "dict",
  922. "attrs": [
  923. {
  924. "variable": "key",
  925. "label": "Key",
  926. "schema": {
  927. "type": "string",
  928. "required": true
  929. }
  930. },
  931. {
  932. "variable": "value",
  933. "label": "Value",
  934. "schema": {
  935. "type": "string",
  936. "required": true
  937. }
  938. },
  939. {
  940. "variable": "containers",
  941. "label": "Containers",
  942. "description": "Containers where the label should be applied",
  943. "schema": {
  944. "type": "list",
  945. "items": [
  946. {
  947. "variable": "container",
  948. "label": "Container",
  949. "schema": {
  950. "type": "string",
  951. "required": true,
  952. "enum": [
  953. {
  954. "value": "arti",
  955. "description": "arti"
  956. }
  957. ]
  958. }
  959. }
  960. ]
  961. }
  962. }
  963. ]
  964. }
  965. }
  966. ]
  967. }
  968. },
  969. {
  970. "variable": "resources",
  971. "label": "",
  972. "group": "Resources Configuration",
  973. "schema": {
  974. "type": "dict",
  975. "attrs": [
  976. {
  977. "variable": "limits",
  978. "label": "Limits",
  979. "schema": {
  980. "type": "dict",
  981. "attrs": [
  982. {
  983. "variable": "cpus",
  984. "label": "CPUs",
  985. "description": "CPUs limit for Arti.",
  986. "schema": {
  987. "type": "int",
  988. "default": 2,
  989. "required": true
  990. }
  991. },
  992. {
  993. "variable": "memory",
  994. "label": "Memory (in MB)",
  995. "description": "Memory limit for Arti.",
  996. "schema": {
  997. "type": "int",
  998. "default": 4096,
  999. "required": true
  1000. }
  1001. }
  1002. ]
  1003. }
  1004. }
  1005. ]
  1006. }
  1007. }
  1008. ]
  1009. },
  1010. "readme": "<h1>Arti</h1> <p><a href=\"https://tpo.pages.torproject.net/core/arti/\">Arti</a> is an experimental Tor implementation written in Rust, and it is designed to be modular, reusable, and easy to audit.</p>",
  1011. "changelog": null,
  1012. "chart_metadata": {
  1013. "app_version": "1.4.6",
  1014. "capabilities": [],
  1015. "categories": [
  1016. "networking"
  1017. ],
  1018. "changelog_url": "https://gitlab.torproject.org/tpo/core/arti/-/blob/main/CHANGELOG.md",
  1019. "date_added": "2025-02-25",
  1020. "description": "Arti is an experimental Tor implementation written in Rust, and it is designed to be modular, reusable, and easy to audit.",
  1021. "home": "https://tpo.pages.torproject.net/core/arti/",
  1022. "host_mounts": [],
  1023. "icon": "https://media.sys.truenas.net/apps/arti/icons/icon.png",
  1024. "keywords": [
  1025. "tor",
  1026. "privacy"
  1027. ],
  1028. "lib_version": "2.1.49",
  1029. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1030. "maintainers": [
  1031. {
  1032. "email": "dev@ixsystems.com",
  1033. "name": "truenas",
  1034. "url": "https://www.truenas.com/"
  1035. }
  1036. ],
  1037. "name": "arti",
  1038. "run_as_context": [
  1039. {
  1040. "description": "Arti runs as non-root user.",
  1041. "gid": 1000,
  1042. "group_name": "arti",
  1043. "uid": 1000,
  1044. "user_name": "arti"
  1045. }
  1046. ],
  1047. "screenshots": [],
  1048. "sources": [
  1049. "https://tpo.pages.torproject.net/core/arti/",
  1050. "https://github.com/MAGICGrants/arti-docker"
  1051. ],
  1052. "title": "Arti",
  1053. "train": "community",
  1054. "version": "1.1.12"
  1055. }
  1056. }
  1057. }