app_versions.json 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. {
  2. "2.0.2": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/charts/collabora/2.0.2",
  7. "last_update": "2024-02-06 10:04:25",
  8. "required_features": [
  9. "normalize/acl",
  10. "definitions/certificate",
  11. "normalize/ixVolume",
  12. "definitions/nodeIP",
  13. "definitions/timezone"
  14. ],
  15. "human_version": "23.05.8.4.1_2.0.2",
  16. "version": "2.0.2",
  17. "chart_metadata": {
  18. "name": "collabora",
  19. "description": "Collabora is a collaborative online office suite based on LibreOffice technology",
  20. "annotations": {
  21. "title": "Collabora"
  22. },
  23. "type": "application",
  24. "version": "2.0.2",
  25. "apiVersion": "v2",
  26. "appVersion": "23.05.8.4.1",
  27. "kubeVersion": ">=1.16.0-0",
  28. "maintainers": [
  29. {
  30. "name": "truenas",
  31. "url": "https://www.truenas.com/",
  32. "email": "dev@ixsystems.com"
  33. }
  34. ],
  35. "dependencies": [
  36. {
  37. "name": "common",
  38. "repository": "file://../../../common",
  39. "version": "1.2.9"
  40. }
  41. ],
  42. "home": "https://www.collaboraoffice.com/",
  43. "icon": "https://media.sys.truenas.net/apps/collabora/icons/icon.png",
  44. "sources": [
  45. "https://www.collaboraoffice.com/",
  46. "https://github.com/CollaboraOnline/online",
  47. "https://hub.docker.com/r/collabora/code"
  48. ],
  49. "keywords": [
  50. "office",
  51. "documents",
  52. "productivity"
  53. ]
  54. },
  55. "app_metadata": {
  56. "runAsContext": [
  57. {
  58. "userName": "cool",
  59. "groupName": "cool",
  60. "uid": 100,
  61. "gid": 101,
  62. "description": "Collabora runs as non-root user."
  63. },
  64. {
  65. "userName": "root",
  66. "groupName": "root",
  67. "gid": 0,
  68. "uid": 0,
  69. "description": "Nginx runs as root user."
  70. }
  71. ],
  72. "capabilities": [
  73. {
  74. "name": "CHOWN",
  75. "description": "Collabora and Nginx are able to chown files."
  76. },
  77. {
  78. "name": "SETPCAP",
  79. "description": "Collabora is able to set process capabilities."
  80. },
  81. {
  82. "name": "FOWNER",
  83. "description": "Collabora is able to bypass permission checks for it's sub-processes."
  84. },
  85. {
  86. "name": "SYS_CHROOT",
  87. "description": "Collabora is able to use chroot."
  88. },
  89. {
  90. "name": "SETGID",
  91. "description": "Nginx is able to set group ID for it's sub-processes."
  92. },
  93. {
  94. "name": "SETUID",
  95. "description": "Nginx is able to set user ID for it's sub-processes."
  96. },
  97. {
  98. "name": "MKNOD",
  99. "description": "Collabora is able to create device nodes."
  100. }
  101. ],
  102. "hostMounts": []
  103. },
  104. "schema": {
  105. "groups": [
  106. {
  107. "name": "Collabora Configuration",
  108. "description": "Configure Collabora"
  109. },
  110. {
  111. "name": "User and Group Configuration",
  112. "description": "Configure User and Group for Collabora"
  113. },
  114. {
  115. "name": "Network Configuration",
  116. "description": "Configure Network for Collabora"
  117. },
  118. {
  119. "name": "Storage Configuration",
  120. "description": "Configure Storage for Collabora"
  121. },
  122. {
  123. "name": "Resources Configuration",
  124. "description": "Configure Resources for Collabora"
  125. }
  126. ],
  127. "portals": {
  128. "web_portal": {
  129. "protocols": [
  130. "$kubernetes-resource_configmap_portal_protocol"
  131. ],
  132. "host": [
  133. "$kubernetes-resource_configmap_portal_host"
  134. ],
  135. "ports": [
  136. "$kubernetes-resource_configmap_portal_port"
  137. ],
  138. "path": "$kubernetes-resource_configmap_portal_path"
  139. }
  140. },
  141. "questions": [
  142. {
  143. "variable": "TZ",
  144. "group": "Collabora Configuration",
  145. "label": "Timezone",
  146. "schema": {
  147. "type": "string",
  148. "default": "America/Los_Angeles",
  149. "required": true,
  150. "$ref": [
  151. "definitions/timezone"
  152. ],
  153. "enum": [
  154. {
  155. "value": "Asia/Damascus",
  156. "description": "'Asia/Damascus' timezone"
  157. },
  158. {
  159. "value": "Asia/Saigon",
  160. "description": "'Asia/Saigon' timezone"
  161. }
  162. ]
  163. }
  164. },
  165. {
  166. "variable": "collaboraConfig",
  167. "label": "",
  168. "group": "Collabora Configuration",
  169. "schema": {
  170. "type": "dict",
  171. "attrs": [
  172. {
  173. "variable": "enableWebUI",
  174. "label": "Enable WebUI",
  175. "description": "Enable WebUI for Collabora\nIf you enable this, you will need to set a username and password</br>\n",
  176. "schema": {
  177. "type": "boolean",
  178. "default": true
  179. }
  180. },
  181. {
  182. "variable": "username",
  183. "label": "Username for WebUI",
  184. "show_if": [
  185. [
  186. "enableWebUI",
  187. "=",
  188. true
  189. ]
  190. ],
  191. "schema": {
  192. "type": "string",
  193. "default": "",
  194. "required": true
  195. }
  196. },
  197. {
  198. "variable": "password",
  199. "label": "Password for WebUI",
  200. "schema": {
  201. "type": "string",
  202. "default": "",
  203. "private": true,
  204. "required": true,
  205. "show_if": [
  206. [
  207. "enableWebUI",
  208. "=",
  209. true
  210. ]
  211. ],
  212. "valid_chars": "[a-zA-Z0-9!@#%^&*?]{8,}",
  213. "valid_chars_error": "Password must be at least 8 characters long and contain at least one of the following:</br>\n- Uppercase letter</br>\n- Lowercase letter</br>\n- Number</br>\n- Special character</br>\n"
  214. }
  215. },
  216. {
  217. "variable": "serverName",
  218. "label": "Server Name",
  219. "description": "The server name for Collabora.",
  220. "schema": {
  221. "type": "string",
  222. "default": "192.168.0.10",
  223. "$ref": [
  224. "definitions/nodeIP"
  225. ]
  226. }
  227. },
  228. {
  229. "variable": "aliasGroup1",
  230. "label": "Alias Group 1",
  231. "description": "List of domains that will be allowed to access the Collabora server\nType one domain per line\n",
  232. "schema": {
  233. "type": "list",
  234. "default": [],
  235. "items": [
  236. {
  237. "variable": "alias",
  238. "label": "Alias",
  239. "schema": {
  240. "type": "string"
  241. }
  242. }
  243. ]
  244. }
  245. },
  246. {
  247. "variable": "dictionaries",
  248. "label": "Dictionaries",
  249. "description": "Dictionaries to be used by Collabora.",
  250. "schema": {
  251. "type": "list",
  252. "default": [
  253. "de_DE",
  254. "en_GB",
  255. "en_US",
  256. "es_ES",
  257. "fr_FR",
  258. "it",
  259. "nl",
  260. "pt_BR",
  261. "pt_PT",
  262. "ru"
  263. ],
  264. "items": [
  265. {
  266. "variable": "dictionary",
  267. "label": "Dictionary",
  268. "schema": {
  269. "type": "string",
  270. "default": "",
  271. "required": true
  272. }
  273. }
  274. ]
  275. }
  276. },
  277. {
  278. "variable": "extraParams",
  279. "label": "Extra Parameters",
  280. "description": "Extra parameters to be passed to Collabora.",
  281. "schema": {
  282. "type": "list",
  283. "default": [
  284. "--o:welcome.enable=false",
  285. "--o:user_interface.mode=notebookbar",
  286. "--o:ssl.termination=true",
  287. "--o:ssl.enable=false",
  288. "--o:net.proto=IPv4",
  289. "--o:logging.level=warning",
  290. "--o:logging.level_startup=warning",
  291. "--o:mount_jail_tree=false"
  292. ],
  293. "items": [
  294. {
  295. "variable": "extraParam",
  296. "label": "Extra Parameter",
  297. "schema": {
  298. "type": "string",
  299. "default": "",
  300. "required": true
  301. }
  302. }
  303. ]
  304. }
  305. },
  306. {
  307. "variable": "additionalEnvs",
  308. "label": "Additional Environment Variables",
  309. "description": "Configure additional environment variables forCollabora.",
  310. "schema": {
  311. "type": "list",
  312. "default": [],
  313. "items": [
  314. {
  315. "variable": "env",
  316. "label": "Environment Variable",
  317. "schema": {
  318. "type": "dict",
  319. "attrs": [
  320. {
  321. "variable": "name",
  322. "label": "Name",
  323. "schema": {
  324. "type": "string",
  325. "required": true
  326. }
  327. },
  328. {
  329. "variable": "value",
  330. "label": "Value",
  331. "schema": {
  332. "type": "string",
  333. "required": true
  334. }
  335. }
  336. ]
  337. }
  338. }
  339. ]
  340. }
  341. }
  342. ]
  343. }
  344. },
  345. {
  346. "variable": "collaboraNetwork",
  347. "label": "",
  348. "group": "Network Configuration",
  349. "schema": {
  350. "type": "dict",
  351. "attrs": [
  352. {
  353. "variable": "webPort",
  354. "label": "Web Port",
  355. "description": "The port for the Collabora Web UI.",
  356. "schema": {
  357. "type": "int",
  358. "default": 9980,
  359. "min": 9000,
  360. "max": 65535,
  361. "required": true
  362. }
  363. },
  364. {
  365. "variable": "certificateID",
  366. "label": "Certificate",
  367. "description": "The certificate for Collabora.",
  368. "schema": {
  369. "type": "int",
  370. "null": true,
  371. "$ref": [
  372. "definitions/certificate"
  373. ],
  374. "enum": [
  375. {
  376. "value": null,
  377. "description": "No Certificate"
  378. }
  379. ],
  380. "default": null
  381. }
  382. }
  383. ]
  384. }
  385. },
  386. {
  387. "variable": "collaboraStorage",
  388. "label": "",
  389. "group": "Storage Configuration",
  390. "schema": {
  391. "type": "dict",
  392. "attrs": [
  393. {
  394. "variable": "additionalStorages",
  395. "label": "Additional Storage",
  396. "description": "Additional storage for Collabora.",
  397. "schema": {
  398. "type": "list",
  399. "default": [],
  400. "items": [
  401. {
  402. "variable": "storageEntry",
  403. "label": "Storage Entry",
  404. "schema": {
  405. "type": "dict",
  406. "attrs": [
  407. {
  408. "variable": "type",
  409. "label": "Type",
  410. "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 a persistent volume claim.\n",
  411. "schema": {
  412. "type": "string",
  413. "required": true,
  414. "default": "ixVolume",
  415. "immutable": true,
  416. "enum": [
  417. {
  418. "value": "hostPath",
  419. "description": "Host Path (Path that already exists on the system)"
  420. },
  421. {
  422. "value": "ixVolume",
  423. "description": "ixVolume (Dataset created automatically by the system)"
  424. },
  425. {
  426. "value": "smb-pv-pvc",
  427. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  428. }
  429. ]
  430. }
  431. },
  432. {
  433. "variable": "readOnly",
  434. "label": "Read Only",
  435. "description": "Mount the volume as read only.",
  436. "schema": {
  437. "type": "boolean",
  438. "default": false
  439. }
  440. },
  441. {
  442. "variable": "mountPath",
  443. "label": "Mount Path",
  444. "description": "The path inside the container to mount the storage.",
  445. "schema": {
  446. "type": "path",
  447. "required": true
  448. }
  449. },
  450. {
  451. "variable": "hostPathConfig",
  452. "label": "Host Path Configuration",
  453. "schema": {
  454. "type": "dict",
  455. "show_if": [
  456. [
  457. "type",
  458. "=",
  459. "hostPath"
  460. ]
  461. ],
  462. "attrs": [
  463. {
  464. "variable": "aclEnable",
  465. "label": "Enable ACL",
  466. "description": "Enable ACL for the dataset.",
  467. "schema": {
  468. "type": "boolean",
  469. "default": false
  470. }
  471. },
  472. {
  473. "variable": "acl",
  474. "label": "ACL Configuration",
  475. "schema": {
  476. "type": "dict",
  477. "show_if": [
  478. [
  479. "aclEnable",
  480. "=",
  481. true
  482. ]
  483. ],
  484. "attrs": [
  485. {
  486. "variable": "path",
  487. "label": "Host Path",
  488. "description": "Host Path to perform ACL",
  489. "schema": {
  490. "type": "hostpath",
  491. "required": true,
  492. "empty": false
  493. }
  494. },
  495. {
  496. "variable": "entries",
  497. "label": "ACL Entries",
  498. "description": "ACL Entries",
  499. "schema": {
  500. "type": "list",
  501. "items": [
  502. {
  503. "variable": "aclEntry",
  504. "label": "ACL Entry",
  505. "schema": {
  506. "type": "dict",
  507. "attrs": [
  508. {
  509. "variable": "id_type",
  510. "label": "ID Type",
  511. "schema": {
  512. "type": "string",
  513. "enum": [
  514. {
  515. "value": "USER",
  516. "description": "Entry is for a USER"
  517. },
  518. {
  519. "value": "GROUP",
  520. "description": "Entry is for a GROUP"
  521. }
  522. ],
  523. "default": "USER"
  524. }
  525. },
  526. {
  527. "variable": "id",
  528. "label": "ID",
  529. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  530. "schema": {
  531. "type": "int",
  532. "required": true,
  533. "min": 0
  534. }
  535. },
  536. {
  537. "variable": "access",
  538. "label": "Access",
  539. "schema": {
  540. "type": "string",
  541. "enum": [
  542. {
  543. "value": "READ",
  544. "description": "Read Access"
  545. },
  546. {
  547. "value": "MODIFY",
  548. "description": "Modify Access"
  549. },
  550. {
  551. "value": "FULL_CONTROL",
  552. "description": "FULL_CONTROL Access"
  553. }
  554. ]
  555. }
  556. }
  557. ]
  558. }
  559. }
  560. ]
  561. }
  562. },
  563. {
  564. "variable": "options",
  565. "label": "ACL Options",
  566. "schema": {
  567. "type": "dict",
  568. "attrs": [
  569. {
  570. "variable": "force",
  571. "label": "Force Flag",
  572. "description": "Enabling `Force` applies ACL even if the path has existing data",
  573. "schema": {
  574. "type": "boolean",
  575. "default": false
  576. }
  577. }
  578. ]
  579. }
  580. }
  581. ],
  582. "$ref": [
  583. "normalize/acl"
  584. ]
  585. }
  586. },
  587. {
  588. "variable": "hostPath",
  589. "label": "Host Path",
  590. "description": "The host path to use for storage.",
  591. "schema": {
  592. "type": "hostpath",
  593. "show_if": [
  594. [
  595. "aclEnable",
  596. "=",
  597. false
  598. ]
  599. ],
  600. "required": true
  601. }
  602. }
  603. ]
  604. }
  605. },
  606. {
  607. "variable": "ixVolumeConfig",
  608. "label": "ixVolume Configuration",
  609. "description": "The configuration for the ixVolume dataset.",
  610. "schema": {
  611. "type": "dict",
  612. "show_if": [
  613. [
  614. "type",
  615. "=",
  616. "ixVolume"
  617. ]
  618. ],
  619. "$ref": [
  620. "normalize/ixVolume"
  621. ],
  622. "attrs": [
  623. {
  624. "variable": "aclEnable",
  625. "label": "Enable ACL",
  626. "description": "Enable ACL for the dataset.",
  627. "schema": {
  628. "type": "boolean",
  629. "default": false
  630. }
  631. },
  632. {
  633. "variable": "datasetName",
  634. "label": "Dataset Name",
  635. "description": "The name of the dataset to use for storage.",
  636. "schema": {
  637. "type": "string",
  638. "required": true,
  639. "immutable": true,
  640. "default": "storage_entry"
  641. }
  642. },
  643. {
  644. "variable": "aclEntries",
  645. "label": "ACL Configuration",
  646. "schema": {
  647. "type": "dict",
  648. "show_if": [
  649. [
  650. "aclEnable",
  651. "=",
  652. true
  653. ]
  654. ],
  655. "attrs": [
  656. {
  657. "variable": "path",
  658. "label": "Path",
  659. "description": "Path to perform ACL",
  660. "schema": {
  661. "type": "string",
  662. "hidden": true
  663. }
  664. },
  665. {
  666. "variable": "entries",
  667. "label": "ACL Entries",
  668. "description": "ACL Entries",
  669. "schema": {
  670. "type": "list",
  671. "items": [
  672. {
  673. "variable": "aclEntry",
  674. "label": "ACL Entry",
  675. "schema": {
  676. "type": "dict",
  677. "attrs": [
  678. {
  679. "variable": "id_type",
  680. "label": "ID Type",
  681. "schema": {
  682. "type": "string",
  683. "enum": [
  684. {
  685. "value": "USER",
  686. "description": "Entry is for a USER"
  687. },
  688. {
  689. "value": "GROUP",
  690. "description": "Entry is for a GROUP"
  691. }
  692. ],
  693. "default": "USER"
  694. }
  695. },
  696. {
  697. "variable": "id",
  698. "label": "ID",
  699. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  700. "schema": {
  701. "type": "int",
  702. "required": true,
  703. "min": 0
  704. }
  705. },
  706. {
  707. "variable": "access",
  708. "label": "Access",
  709. "schema": {
  710. "type": "string",
  711. "enum": [
  712. {
  713. "value": "READ",
  714. "description": "Read Access"
  715. },
  716. {
  717. "value": "MODIFY",
  718. "description": "Modify Access"
  719. },
  720. {
  721. "value": "FULL_CONTROL",
  722. "description": "FULL_CONTROL Access"
  723. }
  724. ]
  725. }
  726. }
  727. ]
  728. }
  729. }
  730. ]
  731. }
  732. }
  733. ]
  734. }
  735. }
  736. ]
  737. }
  738. },
  739. {
  740. "variable": "smbConfig",
  741. "label": "SMB Share Configuration",
  742. "description": "The configuration for the SMB Share.",
  743. "schema": {
  744. "type": "dict",
  745. "show_if": [
  746. [
  747. "type",
  748. "=",
  749. "smb-pv-pvc"
  750. ]
  751. ],
  752. "attrs": [
  753. {
  754. "variable": "server",
  755. "label": "Server",
  756. "description": "The server for the SMB share.",
  757. "schema": {
  758. "type": "string",
  759. "required": true
  760. }
  761. },
  762. {
  763. "variable": "share",
  764. "label": "Share",
  765. "description": "The share name for the SMB share.",
  766. "schema": {
  767. "type": "string",
  768. "required": true
  769. }
  770. },
  771. {
  772. "variable": "domain",
  773. "label": "Domain (Optional)",
  774. "description": "The domain for the SMB share.",
  775. "schema": {
  776. "type": "string"
  777. }
  778. },
  779. {
  780. "variable": "username",
  781. "label": "Username",
  782. "description": "The username for the SMB share.",
  783. "schema": {
  784. "type": "string",
  785. "required": true
  786. }
  787. },
  788. {
  789. "variable": "password",
  790. "label": "Password",
  791. "description": "The password for the SMB share.",
  792. "schema": {
  793. "type": "string",
  794. "required": true,
  795. "private": true
  796. }
  797. },
  798. {
  799. "variable": "size",
  800. "label": "Size (in Gi)",
  801. "description": "The size of the volume quota.",
  802. "schema": {
  803. "type": "int",
  804. "required": true,
  805. "min": 1,
  806. "default": 1
  807. }
  808. }
  809. ]
  810. }
  811. }
  812. ]
  813. }
  814. }
  815. ]
  816. }
  817. }
  818. ]
  819. }
  820. },
  821. {
  822. "variable": "resources",
  823. "group": "Resources Configuration",
  824. "label": "",
  825. "schema": {
  826. "type": "dict",
  827. "attrs": [
  828. {
  829. "variable": "limits",
  830. "label": "Limits",
  831. "schema": {
  832. "type": "dict",
  833. "attrs": [
  834. {
  835. "variable": "cpu",
  836. "label": "CPU",
  837. "description": "CPU limit for WG-Easy.",
  838. "schema": {
  839. "type": "string",
  840. "max_length": 6,
  841. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  842. "valid_chars_error": "Valid CPU limit formats are</br>\n- Plain Integer - eg. 1</br>\n- Float - eg. 0.5</br>\n- Milicpu - eg. 500m\n",
  843. "default": "4000m",
  844. "required": true
  845. }
  846. },
  847. {
  848. "variable": "memory",
  849. "label": "Memory",
  850. "description": "Memory limit for WG-Easy.",
  851. "schema": {
  852. "type": "string",
  853. "max_length": 12,
  854. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  855. "valid_chars_error": "Valid Memory limit formats are</br>\n- Suffixed with E/P/T/G/M/K - eg. 1G</br>\n- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>\n- Plain Integer in bytes - eg. 1024</br>\n- Exponent - eg. 134e6\n",
  856. "default": "8Gi",
  857. "required": true
  858. }
  859. }
  860. ]
  861. }
  862. }
  863. ]
  864. }
  865. }
  866. ]
  867. },
  868. "app_readme": "<h1>Collabora</h1>\n<p><a href=\"https://www.collaboraoffice.com/\">Collabora</a> is a collaborative online office suite based on LibreOffice technology</p>",
  869. "detailed_readme": "<h1>Collabora</h1>\n<p><a href=\"https://www.collaboraoffice.com/\">Collabora</a> is a collaborative online office suite based on LibreOffice technology</p>",
  870. "changelog": null
  871. }
  872. }