app_versions.json 78 KB

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