app_versions.json 63 KB

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