app_versions.json 105 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321
  1. {
  2. "1.1.2": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/joplin/1.1.2",
  7. "last_update": "2023-12-01 12:58:12",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "normalize/acl"
  11. ],
  12. "human_version": "2.13.5_1.1.2",
  13. "version": "1.1.2",
  14. "chart_metadata": {
  15. "name": "joplin",
  16. "description": "Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device",
  17. "annotations": {
  18. "title": "Joplin"
  19. },
  20. "type": "application",
  21. "version": "1.1.2",
  22. "apiVersion": "v2",
  23. "appVersion": "2.13.5",
  24. "kubeVersion": ">=1.16.0-0",
  25. "maintainers": [
  26. {
  27. "name": "truenas",
  28. "url": "https://www.truenas.com/",
  29. "email": "dev@ixsystems.com"
  30. }
  31. ],
  32. "dependencies": [
  33. {
  34. "name": "common",
  35. "repository": "file://../../../common",
  36. "version": "1.2.3"
  37. }
  38. ],
  39. "home": "https://joplinapp.org/",
  40. "icon": "https://media.sys.truenas.net/apps/joplin/icons/icon.png",
  41. "sources": [
  42. "https://github.com/laurent22/joplin",
  43. "https://github.com/truenas/charts/tree/master/library/ix-dev/community/joplin",
  44. "https://hub.docker.com/r/joplin/server/"
  45. ],
  46. "keywords": [
  47. "notes"
  48. ]
  49. },
  50. "app_metadata": {
  51. "runAsContext": [
  52. {
  53. "userName": "joplin",
  54. "groupName": "joplin",
  55. "gid": 1001,
  56. "uid": 1001,
  57. "description": "Joplin can run as a non-root user."
  58. }
  59. ],
  60. "capabilities": [],
  61. "hostMounts": []
  62. },
  63. "schema": {
  64. "groups": [
  65. {
  66. "name": "Joplin Configuration",
  67. "description": "Configure Joplin"
  68. },
  69. {
  70. "name": "Network Configuration",
  71. "description": "Configure Network for Joplin"
  72. },
  73. {
  74. "name": "Storage Configuration",
  75. "description": "Configure Storage for Joplin"
  76. },
  77. {
  78. "name": "Resources Configuration",
  79. "description": "Configure Resources for Joplin"
  80. }
  81. ],
  82. "portals": {
  83. "web_portal": {
  84. "protocols": [
  85. "$kubernetes-resource_configmap_portal_protocol"
  86. ],
  87. "host": [
  88. "$kubernetes-resource_configmap_portal_host"
  89. ],
  90. "ports": [
  91. "$kubernetes-resource_configmap_portal_port"
  92. ],
  93. "path": "$kubernetes-resource_configmap_portal_path"
  94. }
  95. },
  96. "questions": [
  97. {
  98. "variable": "joplinConfig",
  99. "label": "",
  100. "group": "Joplin Configuration",
  101. "schema": {
  102. "type": "dict",
  103. "attrs": [
  104. {
  105. "variable": "baseUrl",
  106. "label": "Base URL",
  107. "description": "The base URL for Joplin.</br>\nExamples:</br>\nhttps://joplin.example.com\nhttp://192.168.1.100:30062\n",
  108. "schema": {
  109. "type": "uri",
  110. "default": "",
  111. "required": true
  112. }
  113. },
  114. {
  115. "variable": "additionalEnvs",
  116. "label": "Additional Environment Variables",
  117. "description": "Configure additional environment variables for Joplin.",
  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. "required": true
  142. }
  143. }
  144. ]
  145. }
  146. }
  147. ]
  148. }
  149. }
  150. ]
  151. }
  152. },
  153. {
  154. "variable": "joplinNetwork",
  155. "label": "",
  156. "group": "Network Configuration",
  157. "schema": {
  158. "type": "dict",
  159. "attrs": [
  160. {
  161. "variable": "webPort",
  162. "label": "Web Port",
  163. "description": "The port for the Joplin Web UI.",
  164. "schema": {
  165. "type": "int",
  166. "default": 30062,
  167. "min": 9000,
  168. "max": 65535,
  169. "required": true
  170. }
  171. },
  172. {
  173. "variable": "hostNetwork",
  174. "label": "Host Network",
  175. "description": "Bind to the host network. It's recommended to keep this disabled.</br>\n",
  176. "schema": {
  177. "type": "boolean",
  178. "default": false
  179. }
  180. }
  181. ]
  182. }
  183. },
  184. {
  185. "variable": "joplinStorage",
  186. "label": "",
  187. "group": "Storage Configuration",
  188. "schema": {
  189. "type": "dict",
  190. "attrs": [
  191. {
  192. "variable": "pgData",
  193. "label": "Joplin Postgres Data Storage",
  194. "description": "The path to store Joplin Postgres Data.",
  195. "schema": {
  196. "type": "dict",
  197. "attrs": [
  198. {
  199. "variable": "type",
  200. "label": "Type",
  201. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  202. "schema": {
  203. "type": "string",
  204. "required": true,
  205. "immutable": true,
  206. "default": "ixVolume",
  207. "enum": [
  208. {
  209. "value": "hostPath",
  210. "description": "Host Path (Path that already exists on the system)"
  211. },
  212. {
  213. "value": "ixVolume",
  214. "description": "ixVolume (Dataset created automatically by the system)"
  215. }
  216. ]
  217. }
  218. },
  219. {
  220. "variable": "ixVolumeConfig",
  221. "label": "ixVolume Configuration",
  222. "description": "The configuration for the ixVolume dataset.",
  223. "schema": {
  224. "type": "dict",
  225. "hidden": true,
  226. "show_if": [
  227. [
  228. "type",
  229. "=",
  230. "ixVolume"
  231. ]
  232. ],
  233. "$ref": [
  234. "normalize/ixVolume"
  235. ],
  236. "attrs": [
  237. {
  238. "variable": "aclEnable",
  239. "label": "Enable ACL",
  240. "description": "Enable ACL for the dataset.",
  241. "schema": {
  242. "type": "boolean",
  243. "hidden": true,
  244. "default": false
  245. }
  246. },
  247. {
  248. "variable": "datasetName",
  249. "label": "Dataset Name",
  250. "description": "The name of the dataset to use for storage.",
  251. "schema": {
  252. "type": "string",
  253. "required": true,
  254. "immutable": true,
  255. "hidden": true,
  256. "default": "pgData"
  257. }
  258. },
  259. {
  260. "variable": "aclEntries",
  261. "label": "ACL Configuration",
  262. "schema": {
  263. "type": "dict",
  264. "show_if": [
  265. [
  266. "aclEnable",
  267. "=",
  268. true
  269. ]
  270. ],
  271. "attrs": [
  272. {
  273. "variable": "path",
  274. "label": "Path",
  275. "description": "Path to perform ACL",
  276. "schema": {
  277. "type": "string",
  278. "hidden": true
  279. }
  280. },
  281. {
  282. "variable": "entries",
  283. "label": "ACL Entries",
  284. "description": "ACL Entries",
  285. "schema": {
  286. "type": "list",
  287. "items": [
  288. {
  289. "variable": "aclEntry",
  290. "label": "ACL Entry",
  291. "schema": {
  292. "type": "dict",
  293. "attrs": [
  294. {
  295. "variable": "id_type",
  296. "label": "ID Type",
  297. "schema": {
  298. "type": "string",
  299. "enum": [
  300. {
  301. "value": "USER",
  302. "description": "Entry is for a USER"
  303. },
  304. {
  305. "value": "GROUP",
  306. "description": "Entry is for a GROUP"
  307. }
  308. ],
  309. "default": "USER"
  310. }
  311. },
  312. {
  313. "variable": "id",
  314. "label": "ID",
  315. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  316. "schema": {
  317. "type": "int",
  318. "required": true,
  319. "min": 0
  320. }
  321. },
  322. {
  323. "variable": "access",
  324. "label": "Access",
  325. "schema": {
  326. "type": "string",
  327. "enum": [
  328. {
  329. "value": "READ",
  330. "description": "Read Access"
  331. },
  332. {
  333. "value": "MODIFY",
  334. "description": "Modify Access"
  335. },
  336. {
  337. "value": "FULL_CONTROL",
  338. "description": "FULL_CONTROL Access"
  339. }
  340. ]
  341. }
  342. }
  343. ]
  344. }
  345. }
  346. ]
  347. }
  348. }
  349. ]
  350. }
  351. }
  352. ]
  353. }
  354. },
  355. {
  356. "variable": "hostPathConfig",
  357. "label": "Host Path Configuration",
  358. "schema": {
  359. "type": "dict",
  360. "show_if": [
  361. [
  362. "type",
  363. "=",
  364. "hostPath"
  365. ]
  366. ],
  367. "attrs": [
  368. {
  369. "variable": "aclEnable",
  370. "label": "Enable ACL",
  371. "description": "Enable ACL for the dataset.",
  372. "schema": {
  373. "type": "boolean",
  374. "hidden": true,
  375. "default": false
  376. }
  377. },
  378. {
  379. "variable": "acl",
  380. "label": "ACL Configuration",
  381. "schema": {
  382. "type": "dict",
  383. "show_if": [
  384. [
  385. "aclEnable",
  386. "=",
  387. true
  388. ]
  389. ],
  390. "attrs": [
  391. {
  392. "variable": "path",
  393. "label": "Host Path",
  394. "description": "Host Path to perform ACL",
  395. "schema": {
  396. "type": "hostpath",
  397. "required": true,
  398. "empty": false
  399. }
  400. },
  401. {
  402. "variable": "entries",
  403. "label": "ACL Entries",
  404. "description": "ACL Entries",
  405. "schema": {
  406. "type": "list",
  407. "items": [
  408. {
  409. "variable": "aclEntry",
  410. "label": "ACL Entry",
  411. "schema": {
  412. "type": "dict",
  413. "attrs": [
  414. {
  415. "variable": "id_type",
  416. "label": "ID Type",
  417. "schema": {
  418. "type": "string",
  419. "enum": [
  420. {
  421. "value": "USER",
  422. "description": "Entry is for a USER"
  423. },
  424. {
  425. "value": "GROUP",
  426. "description": "Entry is for a GROUP"
  427. }
  428. ],
  429. "default": "USER"
  430. }
  431. },
  432. {
  433. "variable": "id",
  434. "label": "ID",
  435. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  436. "schema": {
  437. "type": "int",
  438. "required": true,
  439. "min": 0
  440. }
  441. },
  442. {
  443. "variable": "access",
  444. "label": "Access",
  445. "schema": {
  446. "type": "string",
  447. "enum": [
  448. {
  449. "value": "READ",
  450. "description": "Read Access"
  451. },
  452. {
  453. "value": "MODIFY",
  454. "description": "Modify Access"
  455. },
  456. {
  457. "value": "FULL_CONTROL",
  458. "description": "FULL_CONTROL Access"
  459. }
  460. ]
  461. }
  462. }
  463. ]
  464. }
  465. }
  466. ]
  467. }
  468. },
  469. {
  470. "variable": "options",
  471. "label": "ACL Options",
  472. "schema": {
  473. "type": "dict",
  474. "attrs": [
  475. {
  476. "variable": "force",
  477. "label": "Force Flag",
  478. "description": "Enabling `Force` applies ACL even if the path has existing data",
  479. "schema": {
  480. "type": "boolean",
  481. "default": false
  482. }
  483. }
  484. ]
  485. }
  486. }
  487. ],
  488. "$ref": [
  489. "normalize/acl"
  490. ]
  491. }
  492. },
  493. {
  494. "variable": "hostPath",
  495. "label": "Host Path",
  496. "description": "The host path to use for storage.",
  497. "schema": {
  498. "type": "hostpath",
  499. "show_if": [
  500. [
  501. "aclEnable",
  502. "=",
  503. false
  504. ]
  505. ],
  506. "immutable": true,
  507. "required": true
  508. }
  509. }
  510. ]
  511. }
  512. }
  513. ]
  514. }
  515. },
  516. {
  517. "variable": "pgBackup",
  518. "label": "Joplin Postgres Backup Storage",
  519. "description": "The path to store Joplin Postgres Backup.",
  520. "schema": {
  521. "type": "dict",
  522. "attrs": [
  523. {
  524. "variable": "type",
  525. "label": "Type",
  526. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  527. "schema": {
  528. "type": "string",
  529. "required": true,
  530. "immutable": true,
  531. "default": "ixVolume",
  532. "enum": [
  533. {
  534. "value": "hostPath",
  535. "description": "Host Path (Path that already exists on the system)"
  536. },
  537. {
  538. "value": "ixVolume",
  539. "description": "ixVolume (Dataset created automatically by the system)"
  540. }
  541. ]
  542. }
  543. },
  544. {
  545. "variable": "ixVolumeConfig",
  546. "label": "ixVolume Configuration",
  547. "description": "The configuration for the ixVolume dataset.",
  548. "schema": {
  549. "type": "dict",
  550. "hidden": true,
  551. "show_if": [
  552. [
  553. "type",
  554. "=",
  555. "ixVolume"
  556. ]
  557. ],
  558. "$ref": [
  559. "normalize/ixVolume"
  560. ],
  561. "attrs": [
  562. {
  563. "variable": "aclEnable",
  564. "label": "Enable ACL",
  565. "description": "Enable ACL for the dataset.",
  566. "schema": {
  567. "type": "boolean",
  568. "hidden": true,
  569. "default": false
  570. }
  571. },
  572. {
  573. "variable": "datasetName",
  574. "label": "Dataset Name",
  575. "description": "The name of the dataset to use for storage.",
  576. "schema": {
  577. "type": "string",
  578. "required": true,
  579. "immutable": true,
  580. "hidden": true,
  581. "default": "pgBackup"
  582. }
  583. },
  584. {
  585. "variable": "aclEntries",
  586. "label": "ACL Configuration",
  587. "schema": {
  588. "type": "dict",
  589. "show_if": [
  590. [
  591. "aclEnable",
  592. "=",
  593. true
  594. ]
  595. ],
  596. "attrs": [
  597. {
  598. "variable": "path",
  599. "label": "Path",
  600. "description": "Path to perform ACL",
  601. "schema": {
  602. "type": "string",
  603. "hidden": true
  604. }
  605. },
  606. {
  607. "variable": "entries",
  608. "label": "ACL Entries",
  609. "description": "ACL Entries",
  610. "schema": {
  611. "type": "list",
  612. "items": [
  613. {
  614. "variable": "aclEntry",
  615. "label": "ACL Entry",
  616. "schema": {
  617. "type": "dict",
  618. "attrs": [
  619. {
  620. "variable": "id_type",
  621. "label": "ID Type",
  622. "schema": {
  623. "type": "string",
  624. "enum": [
  625. {
  626. "value": "USER",
  627. "description": "Entry is for a USER"
  628. },
  629. {
  630. "value": "GROUP",
  631. "description": "Entry is for a GROUP"
  632. }
  633. ],
  634. "default": "USER"
  635. }
  636. },
  637. {
  638. "variable": "id",
  639. "label": "ID",
  640. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  641. "schema": {
  642. "type": "int",
  643. "required": true,
  644. "min": 0
  645. }
  646. },
  647. {
  648. "variable": "access",
  649. "label": "Access",
  650. "schema": {
  651. "type": "string",
  652. "enum": [
  653. {
  654. "value": "READ",
  655. "description": "Read Access"
  656. },
  657. {
  658. "value": "MODIFY",
  659. "description": "Modify Access"
  660. },
  661. {
  662. "value": "FULL_CONTROL",
  663. "description": "FULL_CONTROL Access"
  664. }
  665. ]
  666. }
  667. }
  668. ]
  669. }
  670. }
  671. ]
  672. }
  673. }
  674. ]
  675. }
  676. }
  677. ]
  678. }
  679. },
  680. {
  681. "variable": "hostPathConfig",
  682. "label": "Host Path Configuration",
  683. "schema": {
  684. "type": "dict",
  685. "show_if": [
  686. [
  687. "type",
  688. "=",
  689. "hostPath"
  690. ]
  691. ],
  692. "attrs": [
  693. {
  694. "variable": "aclEnable",
  695. "label": "Enable ACL",
  696. "description": "Enable ACL for the dataset.",
  697. "schema": {
  698. "type": "boolean",
  699. "hidden": true,
  700. "default": false
  701. }
  702. },
  703. {
  704. "variable": "acl",
  705. "label": "ACL Configuration",
  706. "schema": {
  707. "type": "dict",
  708. "show_if": [
  709. [
  710. "aclEnable",
  711. "=",
  712. true
  713. ]
  714. ],
  715. "attrs": [
  716. {
  717. "variable": "path",
  718. "label": "Host Path",
  719. "description": "Host Path to perform ACL",
  720. "schema": {
  721. "type": "hostpath",
  722. "required": true,
  723. "empty": false
  724. }
  725. },
  726. {
  727. "variable": "entries",
  728. "label": "ACL Entries",
  729. "description": "ACL Entries",
  730. "schema": {
  731. "type": "list",
  732. "items": [
  733. {
  734. "variable": "aclEntry",
  735. "label": "ACL Entry",
  736. "schema": {
  737. "type": "dict",
  738. "attrs": [
  739. {
  740. "variable": "id_type",
  741. "label": "ID Type",
  742. "schema": {
  743. "type": "string",
  744. "enum": [
  745. {
  746. "value": "USER",
  747. "description": "Entry is for a USER"
  748. },
  749. {
  750. "value": "GROUP",
  751. "description": "Entry is for a GROUP"
  752. }
  753. ],
  754. "default": "USER"
  755. }
  756. },
  757. {
  758. "variable": "id",
  759. "label": "ID",
  760. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  761. "schema": {
  762. "type": "int",
  763. "required": true,
  764. "min": 0
  765. }
  766. },
  767. {
  768. "variable": "access",
  769. "label": "Access",
  770. "schema": {
  771. "type": "string",
  772. "enum": [
  773. {
  774. "value": "READ",
  775. "description": "Read Access"
  776. },
  777. {
  778. "value": "MODIFY",
  779. "description": "Modify Access"
  780. },
  781. {
  782. "value": "FULL_CONTROL",
  783. "description": "FULL_CONTROL Access"
  784. }
  785. ]
  786. }
  787. }
  788. ]
  789. }
  790. }
  791. ]
  792. }
  793. },
  794. {
  795. "variable": "options",
  796. "label": "ACL Options",
  797. "schema": {
  798. "type": "dict",
  799. "attrs": [
  800. {
  801. "variable": "force",
  802. "label": "Force Flag",
  803. "description": "Enabling `Force` applies ACL even if the path has existing data",
  804. "schema": {
  805. "type": "boolean",
  806. "default": false
  807. }
  808. }
  809. ]
  810. }
  811. }
  812. ],
  813. "$ref": [
  814. "normalize/acl"
  815. ]
  816. }
  817. },
  818. {
  819. "variable": "hostPath",
  820. "label": "Host Path",
  821. "description": "The host path to use for storage.",
  822. "schema": {
  823. "type": "hostpath",
  824. "show_if": [
  825. [
  826. "aclEnable",
  827. "=",
  828. false
  829. ]
  830. ],
  831. "immutable": true,
  832. "required": true
  833. }
  834. }
  835. ]
  836. }
  837. }
  838. ]
  839. }
  840. },
  841. {
  842. "variable": "additionalStorages",
  843. "label": "Additional Storage",
  844. "description": "Additional storage for Joplin.",
  845. "schema": {
  846. "type": "list",
  847. "default": [],
  848. "items": [
  849. {
  850. "variable": "storageEntry",
  851. "label": "Storage Entry",
  852. "schema": {
  853. "type": "dict",
  854. "attrs": [
  855. {
  856. "variable": "type",
  857. "label": "Type",
  858. "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",
  859. "schema": {
  860. "type": "string",
  861. "required": true,
  862. "default": "ixVolume",
  863. "immutable": true,
  864. "enum": [
  865. {
  866. "value": "hostPath",
  867. "description": "Host Path (Path that already exists on the system)"
  868. },
  869. {
  870. "value": "ixVolume",
  871. "description": "ixVolume (Dataset created automatically by the system)"
  872. },
  873. {
  874. "value": "smb-pv-pvc",
  875. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  876. }
  877. ]
  878. }
  879. },
  880. {
  881. "variable": "readOnly",
  882. "label": "Read Only",
  883. "description": "Mount the volume as read only.",
  884. "schema": {
  885. "type": "boolean",
  886. "default": false
  887. }
  888. },
  889. {
  890. "variable": "mountPath",
  891. "label": "Mount Path",
  892. "description": "The path inside the container to mount the storage.",
  893. "schema": {
  894. "type": "path",
  895. "required": true
  896. }
  897. },
  898. {
  899. "variable": "hostPathConfig",
  900. "label": "Host Path Configuration",
  901. "schema": {
  902. "type": "dict",
  903. "show_if": [
  904. [
  905. "type",
  906. "=",
  907. "hostPath"
  908. ]
  909. ],
  910. "attrs": [
  911. {
  912. "variable": "aclEnable",
  913. "label": "Enable ACL",
  914. "description": "Enable ACL for the dataset.",
  915. "schema": {
  916. "type": "boolean",
  917. "default": false
  918. }
  919. },
  920. {
  921. "variable": "acl",
  922. "label": "ACL Configuration",
  923. "schema": {
  924. "type": "dict",
  925. "show_if": [
  926. [
  927. "aclEnable",
  928. "=",
  929. true
  930. ]
  931. ],
  932. "attrs": [
  933. {
  934. "variable": "path",
  935. "label": "Host Path",
  936. "description": "Host Path to perform ACL",
  937. "schema": {
  938. "type": "hostpath",
  939. "required": true,
  940. "empty": false
  941. }
  942. },
  943. {
  944. "variable": "entries",
  945. "label": "ACL Entries",
  946. "description": "ACL Entries",
  947. "schema": {
  948. "type": "list",
  949. "items": [
  950. {
  951. "variable": "aclEntry",
  952. "label": "ACL Entry",
  953. "schema": {
  954. "type": "dict",
  955. "attrs": [
  956. {
  957. "variable": "id_type",
  958. "label": "ID Type",
  959. "schema": {
  960. "type": "string",
  961. "enum": [
  962. {
  963. "value": "USER",
  964. "description": "Entry is for a USER"
  965. },
  966. {
  967. "value": "GROUP",
  968. "description": "Entry is for a GROUP"
  969. }
  970. ],
  971. "default": "USER"
  972. }
  973. },
  974. {
  975. "variable": "id",
  976. "label": "ID",
  977. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  978. "schema": {
  979. "type": "int",
  980. "required": true,
  981. "min": 0
  982. }
  983. },
  984. {
  985. "variable": "access",
  986. "label": "Access",
  987. "schema": {
  988. "type": "string",
  989. "enum": [
  990. {
  991. "value": "READ",
  992. "description": "Read Access"
  993. },
  994. {
  995. "value": "MODIFY",
  996. "description": "Modify Access"
  997. },
  998. {
  999. "value": "FULL_CONTROL",
  1000. "description": "FULL_CONTROL Access"
  1001. }
  1002. ]
  1003. }
  1004. }
  1005. ]
  1006. }
  1007. }
  1008. ]
  1009. }
  1010. },
  1011. {
  1012. "variable": "options",
  1013. "label": "ACL Options",
  1014. "schema": {
  1015. "type": "dict",
  1016. "attrs": [
  1017. {
  1018. "variable": "force",
  1019. "label": "Force Flag",
  1020. "description": "Enabling `Force` applies ACL even if the path has existing data",
  1021. "schema": {
  1022. "type": "boolean",
  1023. "default": false
  1024. }
  1025. }
  1026. ]
  1027. }
  1028. }
  1029. ],
  1030. "$ref": [
  1031. "normalize/acl"
  1032. ]
  1033. }
  1034. },
  1035. {
  1036. "variable": "hostPath",
  1037. "label": "Host Path",
  1038. "description": "The host path to use for storage.",
  1039. "schema": {
  1040. "type": "hostpath",
  1041. "show_if": [
  1042. [
  1043. "aclEnable",
  1044. "=",
  1045. false
  1046. ]
  1047. ],
  1048. "immutable": true,
  1049. "required": true
  1050. }
  1051. }
  1052. ]
  1053. }
  1054. },
  1055. {
  1056. "variable": "ixVolumeConfig",
  1057. "label": "ixVolume Configuration",
  1058. "description": "The configuration for the ixVolume dataset.",
  1059. "schema": {
  1060. "type": "dict",
  1061. "show_if": [
  1062. [
  1063. "type",
  1064. "=",
  1065. "ixVolume"
  1066. ]
  1067. ],
  1068. "$ref": [
  1069. "normalize/ixVolume"
  1070. ],
  1071. "attrs": [
  1072. {
  1073. "variable": "aclEnable",
  1074. "label": "Enable ACL",
  1075. "description": "Enable ACL for the dataset.",
  1076. "schema": {
  1077. "type": "boolean",
  1078. "default": false
  1079. }
  1080. },
  1081. {
  1082. "variable": "datasetName",
  1083. "label": "Dataset Name",
  1084. "description": "The name of the dataset to use for storage.",
  1085. "schema": {
  1086. "type": "string",
  1087. "required": true,
  1088. "immutable": true,
  1089. "default": "storage_entry"
  1090. }
  1091. },
  1092. {
  1093. "variable": "aclEntries",
  1094. "label": "ACL Configuration",
  1095. "schema": {
  1096. "type": "dict",
  1097. "show_if": [
  1098. [
  1099. "aclEnable",
  1100. "=",
  1101. true
  1102. ]
  1103. ],
  1104. "attrs": [
  1105. {
  1106. "variable": "path",
  1107. "label": "Path",
  1108. "description": "Path to perform ACL",
  1109. "schema": {
  1110. "type": "string",
  1111. "hidden": true
  1112. }
  1113. },
  1114. {
  1115. "variable": "entries",
  1116. "label": "ACL Entries",
  1117. "description": "ACL Entries",
  1118. "schema": {
  1119. "type": "list",
  1120. "items": [
  1121. {
  1122. "variable": "aclEntry",
  1123. "label": "ACL Entry",
  1124. "schema": {
  1125. "type": "dict",
  1126. "attrs": [
  1127. {
  1128. "variable": "id_type",
  1129. "label": "ID Type",
  1130. "schema": {
  1131. "type": "string",
  1132. "enum": [
  1133. {
  1134. "value": "USER",
  1135. "description": "Entry is for a USER"
  1136. },
  1137. {
  1138. "value": "GROUP",
  1139. "description": "Entry is for a GROUP"
  1140. }
  1141. ],
  1142. "default": "USER"
  1143. }
  1144. },
  1145. {
  1146. "variable": "id",
  1147. "label": "ID",
  1148. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1149. "schema": {
  1150. "type": "int",
  1151. "required": true,
  1152. "min": 0
  1153. }
  1154. },
  1155. {
  1156. "variable": "access",
  1157. "label": "Access",
  1158. "schema": {
  1159. "type": "string",
  1160. "enum": [
  1161. {
  1162. "value": "READ",
  1163. "description": "Read Access"
  1164. },
  1165. {
  1166. "value": "MODIFY",
  1167. "description": "Modify Access"
  1168. },
  1169. {
  1170. "value": "FULL_CONTROL",
  1171. "description": "FULL_CONTROL Access"
  1172. }
  1173. ]
  1174. }
  1175. }
  1176. ]
  1177. }
  1178. }
  1179. ]
  1180. }
  1181. }
  1182. ]
  1183. }
  1184. }
  1185. ]
  1186. }
  1187. },
  1188. {
  1189. "variable": "smbConfig",
  1190. "label": "SMB Share Configuration",
  1191. "description": "The configuration for the SMB Share.",
  1192. "schema": {
  1193. "type": "dict",
  1194. "show_if": [
  1195. [
  1196. "type",
  1197. "=",
  1198. "smb-pv-pvc"
  1199. ]
  1200. ],
  1201. "attrs": [
  1202. {
  1203. "variable": "server",
  1204. "label": "Server",
  1205. "description": "The server for the SMB share.",
  1206. "schema": {
  1207. "type": "string",
  1208. "required": true
  1209. }
  1210. },
  1211. {
  1212. "variable": "share",
  1213. "label": "Share",
  1214. "description": "The share name for the SMB share.",
  1215. "schema": {
  1216. "type": "string",
  1217. "required": true
  1218. }
  1219. },
  1220. {
  1221. "variable": "domain",
  1222. "label": "Domain (Optional)",
  1223. "description": "The domain for the SMB share.",
  1224. "schema": {
  1225. "type": "string"
  1226. }
  1227. },
  1228. {
  1229. "variable": "username",
  1230. "label": "Username",
  1231. "description": "The username for the SMB share.",
  1232. "schema": {
  1233. "type": "string",
  1234. "required": true
  1235. }
  1236. },
  1237. {
  1238. "variable": "password",
  1239. "label": "Password",
  1240. "description": "The password for the SMB share.",
  1241. "schema": {
  1242. "type": "string",
  1243. "required": true,
  1244. "private": true
  1245. }
  1246. },
  1247. {
  1248. "variable": "size",
  1249. "label": "Size (in Gi)",
  1250. "description": "The size of the volume quota.",
  1251. "schema": {
  1252. "type": "int",
  1253. "required": true,
  1254. "min": 1,
  1255. "default": 1
  1256. }
  1257. }
  1258. ]
  1259. }
  1260. }
  1261. ]
  1262. }
  1263. }
  1264. ]
  1265. }
  1266. }
  1267. ]
  1268. }
  1269. },
  1270. {
  1271. "variable": "resources",
  1272. "group": "Resources Configuration",
  1273. "label": "",
  1274. "schema": {
  1275. "type": "dict",
  1276. "attrs": [
  1277. {
  1278. "variable": "limits",
  1279. "label": "Limits",
  1280. "schema": {
  1281. "type": "dict",
  1282. "attrs": [
  1283. {
  1284. "variable": "cpu",
  1285. "label": "CPU",
  1286. "description": "CPU limit for Joplin.",
  1287. "schema": {
  1288. "type": "string",
  1289. "max_length": 6,
  1290. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1291. "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",
  1292. "default": "4000m",
  1293. "required": true
  1294. }
  1295. },
  1296. {
  1297. "variable": "memory",
  1298. "label": "Memory",
  1299. "description": "Memory limit for Joplin.",
  1300. "schema": {
  1301. "type": "string",
  1302. "max_length": 12,
  1303. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1304. "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",
  1305. "default": "8Gi",
  1306. "required": true
  1307. }
  1308. }
  1309. ]
  1310. }
  1311. }
  1312. ]
  1313. }
  1314. }
  1315. ]
  1316. },
  1317. "app_readme": "<h1>Joplin</h1>\n<p><a href=\"https://joplinapp.org\">Joplin</a> is an open source note-taking app. Capture your thoughts and securely access them from any device</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>postgres</code> directories.\nAfterward, the <code>postgres</code> container will run as a <strong>non</strong>-root user (<code>999</code>).\nOn each upgrade, a container will be launched with <strong>root</strong> privileges in order to apply the correct\npermissions to the <code>postgres</code> <strong>backups</strong> directory. Container that performs the backup will run as a <strong>non</strong>-root user (<code>999</code>) afterwards.\nKeep in mind the permissions on the backup directory will be changed to <code>999:999</code> on <strong>every</strong> update.\nBut will only be changed once for the <code>postgres</code> data directories.</p>\n</blockquote>",
  1318. "detailed_readme": "<h1>Joplin</h1>\n<p><a href=\"https://joplinapp.org\">Joplin</a> is an open source note-taking app. Capture your thoughts and securely access them from any device</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>postgres</code> directories.\nAfterward, the <code>postgres</code> container will run as a <strong>non</strong>-root user (<code>999</code>).\nOn each upgrade, a container will be launched with <strong>root</strong> privileges in order to apply the correct\npermissions to the <code>postgres</code> <strong>backups</strong> directory. Container that performs the backup will run as a <strong>non</strong>-root user (<code>999</code>) afterwards.\nKeep in mind the permissions on the backup directory will be changed to <code>999:999</code> on <strong>every</strong> update.\nBut will only be changed once for the <code>postgres</code> data directories.</p>\n</blockquote>",
  1319. "changelog": null
  1320. }
  1321. }