app_versions.json 82 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095
  1. {
  2. "1.3.16": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/unifi-controller/1.3.16",
  7. "last_update": "2025-03-05 14:27:33",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "definitions/certificate",
  11. "definitions/timezone",
  12. "normalize/acl"
  13. ],
  14. "human_version": "9.0.114_1.3.16",
  15. "version": "1.3.16",
  16. "chart_metadata": {
  17. "name": "unifi-controller",
  18. "description": "Unifi Controller is a network management controller for Unifi Equipment.",
  19. "annotations": {
  20. "title": "Unifi Controller"
  21. },
  22. "type": "application",
  23. "version": "1.3.16",
  24. "apiVersion": "v2",
  25. "appVersion": "9.0.114",
  26. "kubeVersion": ">=1.16.0-0",
  27. "maintainers": [
  28. {
  29. "name": "truenas",
  30. "url": "https://www.truenas.com/",
  31. "email": "dev@ixsystems.com"
  32. }
  33. ],
  34. "dependencies": [
  35. {
  36. "name": "common",
  37. "repository": "file://../../../common",
  38. "version": "1.2.9"
  39. }
  40. ],
  41. "home": "https://github.com/goofball222/unifi",
  42. "icon": "https://media.sys.truenas.net/apps/unifi-controller/icons/icon.png",
  43. "sources": [
  44. "https://github.com/goofball222/unifi",
  45. "https://github.com/truenas/charts/tree/master/library/ix-dev/community/unifi-controller",
  46. "https://hub.docker.com/r/goofball222/unifi"
  47. ],
  48. "keywords": [
  49. "network",
  50. "controller",
  51. "unifi"
  52. ]
  53. },
  54. "app_metadata": {
  55. "runAsContext": [
  56. {
  57. "userName": "unifi",
  58. "groupName": "unifi",
  59. "gid": 999,
  60. "uid": 999,
  61. "description": "Unifi runs as a non-root user."
  62. }
  63. ],
  64. "capabilities": [],
  65. "hostMounts": []
  66. },
  67. "schema": {
  68. "groups": [
  69. {
  70. "name": "Unifi Controller Configuration",
  71. "description": "Configure Unifi Controller"
  72. },
  73. {
  74. "name": "Network Configuration",
  75. "description": "Configure Network for Unifi Controller"
  76. },
  77. {
  78. "name": "Storage Configuration",
  79. "description": "Configure Storage for Unifi Controller"
  80. },
  81. {
  82. "name": "Resources Configuration",
  83. "description": "Configure Resources for Unifi Controller"
  84. }
  85. ],
  86. "portals": {
  87. "web_portal": {
  88. "protocols": [
  89. "$kubernetes-resource_configmap_portal_protocol"
  90. ],
  91. "host": [
  92. "$kubernetes-resource_configmap_portal_host"
  93. ],
  94. "ports": [
  95. "$kubernetes-resource_configmap_portal_port"
  96. ],
  97. "path": "$kubernetes-resource_configmap_portal_path"
  98. }
  99. },
  100. "questions": [
  101. {
  102. "variable": "TZ",
  103. "group": "Unifi Controller Configuration",
  104. "label": "Timezone",
  105. "schema": {
  106. "type": "string",
  107. "default": "America/Los_Angeles",
  108. "required": true,
  109. "$ref": [
  110. "definitions/timezone"
  111. ],
  112. "enum": [
  113. {
  114. "value": "Asia/Damascus",
  115. "description": "'Asia/Damascus' timezone"
  116. },
  117. {
  118. "value": "Asia/Saigon",
  119. "description": "'Asia/Saigon' timezone"
  120. }
  121. ]
  122. }
  123. },
  124. {
  125. "variable": "unifiConfig",
  126. "label": "",
  127. "group": "Unifi Controller Configuration",
  128. "schema": {
  129. "type": "dict",
  130. "attrs": [
  131. {
  132. "variable": "additionalEnvs",
  133. "label": "Additional Environment Variables",
  134. "description": "Configure additional environment variables for Unifi Controller.",
  135. "schema": {
  136. "type": "list",
  137. "default": [],
  138. "items": [
  139. {
  140. "variable": "env",
  141. "label": "Environment Variable",
  142. "schema": {
  143. "type": "dict",
  144. "attrs": [
  145. {
  146. "variable": "name",
  147. "label": "Name",
  148. "schema": {
  149. "type": "string",
  150. "required": true
  151. }
  152. },
  153. {
  154. "variable": "value",
  155. "label": "Value",
  156. "schema": {
  157. "type": "string",
  158. "required": true
  159. }
  160. }
  161. ]
  162. }
  163. }
  164. ]
  165. }
  166. }
  167. ]
  168. }
  169. },
  170. {
  171. "variable": "unifiNetwork",
  172. "label": "",
  173. "group": "Network Configuration",
  174. "schema": {
  175. "type": "dict",
  176. "attrs": [
  177. {
  178. "variable": "webHttpsPort",
  179. "label": "Web HTTPS Port",
  180. "description": "The HTTPS port for the Unifi Controller Web UI.",
  181. "schema": {
  182. "type": "int",
  183. "default": 30072,
  184. "min": 9000,
  185. "max": 65535,
  186. "required": true
  187. }
  188. },
  189. {
  190. "variable": "enableWebHttp",
  191. "label": "Enable Web HTTP / Inform Port",
  192. "description": "Enable HTTP for the Unifi Controller Inform Port.",
  193. "schema": {
  194. "type": "boolean",
  195. "default": false
  196. }
  197. },
  198. {
  199. "variable": "webHttpPort",
  200. "label": "Web HTTP Port",
  201. "description": "The HTTP port for the Unifi Controller Web UI.",
  202. "schema": {
  203. "type": "int",
  204. "default": 30073,
  205. "show_if": [
  206. [
  207. "enableWebHttp",
  208. "=",
  209. true
  210. ]
  211. ],
  212. "min": 9000,
  213. "max": 65535,
  214. "required": true
  215. }
  216. },
  217. {
  218. "variable": "portalHttpsPort",
  219. "label": "Portal HTTPS Port",
  220. "description": "The HTTPS port for the Unifi Controller Portal.",
  221. "schema": {
  222. "type": "int",
  223. "default": 30074,
  224. "min": 9000,
  225. "max": 65535,
  226. "required": true
  227. }
  228. },
  229. {
  230. "variable": "enablePortalHttp",
  231. "label": "Enable Portal HTTP",
  232. "description": "Enable HTTP for the Unifi Controller Portal.",
  233. "schema": {
  234. "type": "boolean",
  235. "default": false
  236. }
  237. },
  238. {
  239. "variable": "portalHttpPort",
  240. "label": "Portal HTTP Port",
  241. "description": "The HTTP port for the Unifi Controller Portal.",
  242. "schema": {
  243. "type": "int",
  244. "default": 30075,
  245. "show_if": [
  246. [
  247. "enablePortalHttp",
  248. "=",
  249. true
  250. ]
  251. ],
  252. "min": 9000,
  253. "max": 65535,
  254. "required": true
  255. }
  256. },
  257. {
  258. "variable": "certificateID",
  259. "label": "Certificate",
  260. "description": "The certificate to use for Unifi Controller",
  261. "schema": {
  262. "type": "int",
  263. "null": true,
  264. "$ref": [
  265. "definitions/certificate"
  266. ],
  267. "enum": [
  268. {
  269. "value": null,
  270. "description": "No Certificate"
  271. }
  272. ],
  273. "default": null
  274. }
  275. },
  276. {
  277. "variable": "hostNetwork",
  278. "label": "Host Network",
  279. "description": "Bind to the host network. </br>\nThis might be required for specific features like STUN.\n",
  280. "schema": {
  281. "type": "boolean",
  282. "default": false
  283. }
  284. }
  285. ]
  286. }
  287. },
  288. {
  289. "variable": "unifiStorage",
  290. "label": "",
  291. "group": "Storage Configuration",
  292. "schema": {
  293. "type": "dict",
  294. "attrs": [
  295. {
  296. "variable": "data",
  297. "label": "Unifi Controller Data Storage",
  298. "description": "The path to store Unifi Controller Data.",
  299. "schema": {
  300. "type": "dict",
  301. "attrs": [
  302. {
  303. "variable": "type",
  304. "label": "Type",
  305. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  306. "schema": {
  307. "type": "string",
  308. "required": true,
  309. "immutable": true,
  310. "default": "ixVolume",
  311. "enum": [
  312. {
  313. "value": "hostPath",
  314. "description": "Host Path (Path that already exists on the system)"
  315. },
  316. {
  317. "value": "ixVolume",
  318. "description": "ixVolume (Dataset created automatically by the system)"
  319. }
  320. ]
  321. }
  322. },
  323. {
  324. "variable": "ixVolumeConfig",
  325. "label": "ixVolume Configuration",
  326. "description": "The configuration for the ixVolume dataset.",
  327. "schema": {
  328. "type": "dict",
  329. "show_if": [
  330. [
  331. "type",
  332. "=",
  333. "ixVolume"
  334. ]
  335. ],
  336. "$ref": [
  337. "normalize/ixVolume"
  338. ],
  339. "attrs": [
  340. {
  341. "variable": "aclEnable",
  342. "label": "Enable ACL",
  343. "description": "Enable ACL for the dataset.",
  344. "schema": {
  345. "type": "boolean",
  346. "default": false
  347. }
  348. },
  349. {
  350. "variable": "datasetName",
  351. "label": "Dataset Name",
  352. "description": "The name of the dataset to use for storage.",
  353. "schema": {
  354. "type": "string",
  355. "required": true,
  356. "immutable": true,
  357. "hidden": true,
  358. "default": "data"
  359. }
  360. },
  361. {
  362. "variable": "aclEntries",
  363. "label": "ACL Configuration",
  364. "schema": {
  365. "type": "dict",
  366. "show_if": [
  367. [
  368. "aclEnable",
  369. "=",
  370. true
  371. ]
  372. ],
  373. "attrs": [
  374. {
  375. "variable": "path",
  376. "label": "Path",
  377. "description": "Path to perform ACL",
  378. "schema": {
  379. "type": "string",
  380. "hidden": true
  381. }
  382. },
  383. {
  384. "variable": "entries",
  385. "label": "ACL Entries",
  386. "description": "ACL Entries",
  387. "schema": {
  388. "type": "list",
  389. "items": [
  390. {
  391. "variable": "aclEntry",
  392. "label": "ACL Entry",
  393. "schema": {
  394. "type": "dict",
  395. "attrs": [
  396. {
  397. "variable": "id_type",
  398. "label": "ID Type",
  399. "schema": {
  400. "type": "string",
  401. "enum": [
  402. {
  403. "value": "USER",
  404. "description": "Entry is for a USER"
  405. },
  406. {
  407. "value": "GROUP",
  408. "description": "Entry is for a GROUP"
  409. }
  410. ],
  411. "default": "USER"
  412. }
  413. },
  414. {
  415. "variable": "id",
  416. "label": "ID",
  417. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  418. "schema": {
  419. "type": "int",
  420. "required": true,
  421. "min": 0
  422. }
  423. },
  424. {
  425. "variable": "access",
  426. "label": "Access",
  427. "schema": {
  428. "type": "string",
  429. "enum": [
  430. {
  431. "value": "READ",
  432. "description": "Read Access"
  433. },
  434. {
  435. "value": "MODIFY",
  436. "description": "Modify Access"
  437. },
  438. {
  439. "value": "FULL_CONTROL",
  440. "description": "FULL_CONTROL Access"
  441. }
  442. ]
  443. }
  444. }
  445. ]
  446. }
  447. }
  448. ]
  449. }
  450. }
  451. ]
  452. }
  453. }
  454. ]
  455. }
  456. },
  457. {
  458. "variable": "hostPathConfig",
  459. "label": "Host Path Configuration",
  460. "schema": {
  461. "type": "dict",
  462. "show_if": [
  463. [
  464. "type",
  465. "=",
  466. "hostPath"
  467. ]
  468. ],
  469. "attrs": [
  470. {
  471. "variable": "aclEnable",
  472. "label": "Enable ACL",
  473. "description": "Enable ACL for the dataset.",
  474. "schema": {
  475. "type": "boolean",
  476. "default": false
  477. }
  478. },
  479. {
  480. "variable": "acl",
  481. "label": "ACL Configuration",
  482. "schema": {
  483. "type": "dict",
  484. "show_if": [
  485. [
  486. "aclEnable",
  487. "=",
  488. true
  489. ]
  490. ],
  491. "attrs": [
  492. {
  493. "variable": "path",
  494. "label": "Host Path",
  495. "description": "Host Path to perform ACL",
  496. "schema": {
  497. "type": "hostpath",
  498. "required": true,
  499. "empty": false
  500. }
  501. },
  502. {
  503. "variable": "entries",
  504. "label": "ACL Entries",
  505. "description": "ACL Entries",
  506. "schema": {
  507. "type": "list",
  508. "items": [
  509. {
  510. "variable": "aclEntry",
  511. "label": "ACL Entry",
  512. "schema": {
  513. "type": "dict",
  514. "attrs": [
  515. {
  516. "variable": "id_type",
  517. "label": "ID Type",
  518. "schema": {
  519. "type": "string",
  520. "enum": [
  521. {
  522. "value": "USER",
  523. "description": "Entry is for a USER"
  524. },
  525. {
  526. "value": "GROUP",
  527. "description": "Entry is for a GROUP"
  528. }
  529. ],
  530. "default": "USER"
  531. }
  532. },
  533. {
  534. "variable": "id",
  535. "label": "ID",
  536. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  537. "schema": {
  538. "type": "int",
  539. "required": true,
  540. "min": 0
  541. }
  542. },
  543. {
  544. "variable": "access",
  545. "label": "Access",
  546. "schema": {
  547. "type": "string",
  548. "enum": [
  549. {
  550. "value": "READ",
  551. "description": "Read Access"
  552. },
  553. {
  554. "value": "MODIFY",
  555. "description": "Modify Access"
  556. },
  557. {
  558. "value": "FULL_CONTROL",
  559. "description": "FULL_CONTROL Access"
  560. }
  561. ]
  562. }
  563. }
  564. ]
  565. }
  566. }
  567. ]
  568. }
  569. },
  570. {
  571. "variable": "options",
  572. "label": "ACL Options",
  573. "schema": {
  574. "type": "dict",
  575. "attrs": [
  576. {
  577. "variable": "force",
  578. "label": "Force Flag",
  579. "description": "Enabling `Force` applies ACL even if the path has existing data",
  580. "schema": {
  581. "type": "boolean",
  582. "default": false
  583. }
  584. }
  585. ]
  586. }
  587. }
  588. ],
  589. "$ref": [
  590. "normalize/acl"
  591. ]
  592. }
  593. },
  594. {
  595. "variable": "hostPath",
  596. "label": "Host Path",
  597. "description": "The host path to use for storage.",
  598. "schema": {
  599. "type": "hostpath",
  600. "show_if": [
  601. [
  602. "aclEnable",
  603. "=",
  604. false
  605. ]
  606. ],
  607. "required": true
  608. }
  609. }
  610. ]
  611. }
  612. }
  613. ]
  614. }
  615. },
  616. {
  617. "variable": "additionalStorages",
  618. "label": "Additional Storage",
  619. "description": "Additional storage for Unifi Controller.",
  620. "schema": {
  621. "type": "list",
  622. "default": [],
  623. "items": [
  624. {
  625. "variable": "storageEntry",
  626. "label": "Storage Entry",
  627. "schema": {
  628. "type": "dict",
  629. "attrs": [
  630. {
  631. "variable": "type",
  632. "label": "Type",
  633. "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",
  634. "schema": {
  635. "type": "string",
  636. "required": true,
  637. "default": "ixVolume",
  638. "immutable": true,
  639. "enum": [
  640. {
  641. "value": "hostPath",
  642. "description": "Host Path (Path that already exists on the system)"
  643. },
  644. {
  645. "value": "ixVolume",
  646. "description": "ixVolume (Dataset created automatically by the system)"
  647. },
  648. {
  649. "value": "smb-pv-pvc",
  650. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  651. }
  652. ]
  653. }
  654. },
  655. {
  656. "variable": "readOnly",
  657. "label": "Read Only",
  658. "description": "Mount the volume as read only.",
  659. "schema": {
  660. "type": "boolean",
  661. "default": false
  662. }
  663. },
  664. {
  665. "variable": "mountPath",
  666. "label": "Mount Path",
  667. "description": "The path inside the container to mount the storage.",
  668. "schema": {
  669. "type": "path",
  670. "required": true
  671. }
  672. },
  673. {
  674. "variable": "hostPathConfig",
  675. "label": "Host Path Configuration",
  676. "schema": {
  677. "type": "dict",
  678. "show_if": [
  679. [
  680. "type",
  681. "=",
  682. "hostPath"
  683. ]
  684. ],
  685. "attrs": [
  686. {
  687. "variable": "aclEnable",
  688. "label": "Enable ACL",
  689. "description": "Enable ACL for the dataset.",
  690. "schema": {
  691. "type": "boolean",
  692. "default": false
  693. }
  694. },
  695. {
  696. "variable": "acl",
  697. "label": "ACL Configuration",
  698. "schema": {
  699. "type": "dict",
  700. "show_if": [
  701. [
  702. "aclEnable",
  703. "=",
  704. true
  705. ]
  706. ],
  707. "attrs": [
  708. {
  709. "variable": "path",
  710. "label": "Host Path",
  711. "description": "Host Path to perform ACL",
  712. "schema": {
  713. "type": "hostpath",
  714. "required": true,
  715. "empty": false
  716. }
  717. },
  718. {
  719. "variable": "entries",
  720. "label": "ACL Entries",
  721. "description": "ACL Entries",
  722. "schema": {
  723. "type": "list",
  724. "items": [
  725. {
  726. "variable": "aclEntry",
  727. "label": "ACL Entry",
  728. "schema": {
  729. "type": "dict",
  730. "attrs": [
  731. {
  732. "variable": "id_type",
  733. "label": "ID Type",
  734. "schema": {
  735. "type": "string",
  736. "enum": [
  737. {
  738. "value": "USER",
  739. "description": "Entry is for a USER"
  740. },
  741. {
  742. "value": "GROUP",
  743. "description": "Entry is for a GROUP"
  744. }
  745. ],
  746. "default": "USER"
  747. }
  748. },
  749. {
  750. "variable": "id",
  751. "label": "ID",
  752. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  753. "schema": {
  754. "type": "int",
  755. "required": true,
  756. "min": 0
  757. }
  758. },
  759. {
  760. "variable": "access",
  761. "label": "Access",
  762. "schema": {
  763. "type": "string",
  764. "enum": [
  765. {
  766. "value": "READ",
  767. "description": "Read Access"
  768. },
  769. {
  770. "value": "MODIFY",
  771. "description": "Modify Access"
  772. },
  773. {
  774. "value": "FULL_CONTROL",
  775. "description": "FULL_CONTROL Access"
  776. }
  777. ]
  778. }
  779. }
  780. ]
  781. }
  782. }
  783. ]
  784. }
  785. },
  786. {
  787. "variable": "options",
  788. "label": "ACL Options",
  789. "schema": {
  790. "type": "dict",
  791. "attrs": [
  792. {
  793. "variable": "force",
  794. "label": "Force Flag",
  795. "description": "Enabling `Force` applies ACL even if the path has existing data",
  796. "schema": {
  797. "type": "boolean",
  798. "default": false
  799. }
  800. }
  801. ]
  802. }
  803. }
  804. ],
  805. "$ref": [
  806. "normalize/acl"
  807. ]
  808. }
  809. },
  810. {
  811. "variable": "hostPath",
  812. "label": "Host Path",
  813. "description": "The host path to use for storage.",
  814. "schema": {
  815. "type": "hostpath",
  816. "show_if": [
  817. [
  818. "aclEnable",
  819. "=",
  820. false
  821. ]
  822. ],
  823. "required": true
  824. }
  825. }
  826. ]
  827. }
  828. },
  829. {
  830. "variable": "ixVolumeConfig",
  831. "label": "ixVolume Configuration",
  832. "description": "The configuration for the ixVolume dataset.",
  833. "schema": {
  834. "type": "dict",
  835. "show_if": [
  836. [
  837. "type",
  838. "=",
  839. "ixVolume"
  840. ]
  841. ],
  842. "$ref": [
  843. "normalize/ixVolume"
  844. ],
  845. "attrs": [
  846. {
  847. "variable": "aclEnable",
  848. "label": "Enable ACL",
  849. "description": "Enable ACL for the dataset.",
  850. "schema": {
  851. "type": "boolean",
  852. "default": false
  853. }
  854. },
  855. {
  856. "variable": "datasetName",
  857. "label": "Dataset Name",
  858. "description": "The name of the dataset to use for storage.",
  859. "schema": {
  860. "type": "string",
  861. "required": true,
  862. "immutable": true,
  863. "default": "storage_entry"
  864. }
  865. },
  866. {
  867. "variable": "aclEntries",
  868. "label": "ACL Configuration",
  869. "schema": {
  870. "type": "dict",
  871. "show_if": [
  872. [
  873. "aclEnable",
  874. "=",
  875. true
  876. ]
  877. ],
  878. "attrs": [
  879. {
  880. "variable": "path",
  881. "label": "Path",
  882. "description": "Path to perform ACL",
  883. "schema": {
  884. "type": "string",
  885. "hidden": true
  886. }
  887. },
  888. {
  889. "variable": "entries",
  890. "label": "ACL Entries",
  891. "description": "ACL Entries",
  892. "schema": {
  893. "type": "list",
  894. "items": [
  895. {
  896. "variable": "aclEntry",
  897. "label": "ACL Entry",
  898. "schema": {
  899. "type": "dict",
  900. "attrs": [
  901. {
  902. "variable": "id_type",
  903. "label": "ID Type",
  904. "schema": {
  905. "type": "string",
  906. "enum": [
  907. {
  908. "value": "USER",
  909. "description": "Entry is for a USER"
  910. },
  911. {
  912. "value": "GROUP",
  913. "description": "Entry is for a GROUP"
  914. }
  915. ],
  916. "default": "USER"
  917. }
  918. },
  919. {
  920. "variable": "id",
  921. "label": "ID",
  922. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  923. "schema": {
  924. "type": "int",
  925. "required": true,
  926. "min": 0
  927. }
  928. },
  929. {
  930. "variable": "access",
  931. "label": "Access",
  932. "schema": {
  933. "type": "string",
  934. "enum": [
  935. {
  936. "value": "READ",
  937. "description": "Read Access"
  938. },
  939. {
  940. "value": "MODIFY",
  941. "description": "Modify Access"
  942. },
  943. {
  944. "value": "FULL_CONTROL",
  945. "description": "FULL_CONTROL Access"
  946. }
  947. ]
  948. }
  949. }
  950. ]
  951. }
  952. }
  953. ]
  954. }
  955. }
  956. ]
  957. }
  958. }
  959. ]
  960. }
  961. },
  962. {
  963. "variable": "smbConfig",
  964. "label": "SMB Share Configuration",
  965. "description": "The configuration for the SMB Share.",
  966. "schema": {
  967. "type": "dict",
  968. "show_if": [
  969. [
  970. "type",
  971. "=",
  972. "smb-pv-pvc"
  973. ]
  974. ],
  975. "attrs": [
  976. {
  977. "variable": "server",
  978. "label": "Server",
  979. "description": "The server for the SMB share.",
  980. "schema": {
  981. "type": "string",
  982. "required": true
  983. }
  984. },
  985. {
  986. "variable": "share",
  987. "label": "Share",
  988. "description": "The share name for the SMB share.",
  989. "schema": {
  990. "type": "string",
  991. "required": true
  992. }
  993. },
  994. {
  995. "variable": "domain",
  996. "label": "Domain (Optional)",
  997. "description": "The domain for the SMB share.",
  998. "schema": {
  999. "type": "string"
  1000. }
  1001. },
  1002. {
  1003. "variable": "username",
  1004. "label": "Username",
  1005. "description": "The username for the SMB share.",
  1006. "schema": {
  1007. "type": "string",
  1008. "required": true
  1009. }
  1010. },
  1011. {
  1012. "variable": "password",
  1013. "label": "Password",
  1014. "description": "The password for the SMB share.",
  1015. "schema": {
  1016. "type": "string",
  1017. "required": true,
  1018. "private": true
  1019. }
  1020. },
  1021. {
  1022. "variable": "size",
  1023. "label": "Size (in Gi)",
  1024. "description": "The size of the volume quota.",
  1025. "schema": {
  1026. "type": "int",
  1027. "required": true,
  1028. "min": 1,
  1029. "default": 1
  1030. }
  1031. }
  1032. ]
  1033. }
  1034. }
  1035. ]
  1036. }
  1037. }
  1038. ]
  1039. }
  1040. }
  1041. ]
  1042. }
  1043. },
  1044. {
  1045. "variable": "resources",
  1046. "group": "Resources Configuration",
  1047. "label": "",
  1048. "schema": {
  1049. "type": "dict",
  1050. "attrs": [
  1051. {
  1052. "variable": "limits",
  1053. "label": "Limits",
  1054. "schema": {
  1055. "type": "dict",
  1056. "attrs": [
  1057. {
  1058. "variable": "cpu",
  1059. "label": "CPU",
  1060. "description": "CPU limit for Unifi Controller.",
  1061. "schema": {
  1062. "type": "string",
  1063. "max_length": 6,
  1064. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1065. "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",
  1066. "default": "4000m",
  1067. "required": true
  1068. }
  1069. },
  1070. {
  1071. "variable": "memory",
  1072. "label": "Memory",
  1073. "description": "Memory limit for Unifi Controller.",
  1074. "schema": {
  1075. "type": "string",
  1076. "max_length": 12,
  1077. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1078. "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",
  1079. "default": "8Gi",
  1080. "required": true
  1081. }
  1082. }
  1083. ]
  1084. }
  1085. }
  1086. ]
  1087. }
  1088. }
  1089. ]
  1090. },
  1091. "app_readme": "<h1>Unifi Controller</h1>\n<p><a href=\"https://github.com/goofball222/unifi\">Unifi Controller</a> is a network management controller for Unifi Equipment.</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>Unifi Controller</code> directories.\nAfterward, the <code>Unifi Controller</code> container will run as a <strong>non</strong>-root user (<code>999</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the configured user.</p>\n</blockquote>",
  1092. "detailed_readme": "<h1>Unifi Controller</h1>\n<p><a href=\"https://github.com/goofball222/unifi\">Unifi Controller</a> is a network management controller for Unifi Equipment.</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>Unifi Controller</code> directories.\nAfterward, the <code>Unifi Controller</code> container will run as a <strong>non</strong>-root user (<code>999</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the configured user.</p>\n</blockquote>",
  1093. "changelog": null
  1094. }
  1095. }