app_versions.json 72 KB

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