app_versions.json 104 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  1. {
  2. "1.2.6": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/navidrome/1.2.6",
  7. "last_update": "2024-03-29 12:30:11",
  8. "required_features": [
  9. "normalize/acl",
  10. "normalize/ixVolume"
  11. ],
  12. "human_version": "0.51.1_1.2.6",
  13. "version": "1.2.6",
  14. "chart_metadata": {
  15. "name": "navidrome",
  16. "description": "Navidrome is a personal streaming service",
  17. "annotations": {
  18. "title": "Navidrome"
  19. },
  20. "type": "application",
  21. "version": "1.2.6",
  22. "apiVersion": "v2",
  23. "appVersion": "0.51.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://www.navidrome.org/",
  40. "icon": "https://media.sys.truenas.net/apps/navidrome/icons/icon.png",
  41. "sources": [
  42. "https://hub.docker.com/r/deluan/navidrome",
  43. "https://github.com/truenas/charts/tree/master/community/navidrome",
  44. "https://github.com/navidrome/navidrome/"
  45. ],
  46. "keywords": [
  47. "media",
  48. "music"
  49. ]
  50. },
  51. "app_metadata": {
  52. "runAsContext": [
  53. {
  54. "userName": "navidrome",
  55. "groupName": "navidrome",
  56. "gid": 568,
  57. "uid": 568,
  58. "description": "Navidrome can run as any non-root user."
  59. }
  60. ],
  61. "capabilities": [],
  62. "hostMounts": []
  63. },
  64. "schema": {
  65. "groups": [
  66. {
  67. "name": "Navidrome Configuration",
  68. "description": "Configure Navidrome"
  69. },
  70. {
  71. "name": "User and Group Configuration",
  72. "description": "Configure User and Group for Navidrome"
  73. },
  74. {
  75. "name": "Network Configuration",
  76. "description": "Configure Network for Navidrome"
  77. },
  78. {
  79. "name": "Storage Configuration",
  80. "description": "Configure Storage for Navidrome"
  81. },
  82. {
  83. "name": "Resources Configuration",
  84. "description": "Configure Resources for Navidrome"
  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": "navidromeConfig",
  104. "label": "",
  105. "group": "Navidrome Configuration",
  106. "schema": {
  107. "type": "dict",
  108. "attrs": [
  109. {
  110. "variable": "uiWelcomeMessage",
  111. "label": "Login Screen Welcome Message",
  112. "description": "The welcome message to display on the Navidrome Login Screen.",
  113. "schema": {
  114. "type": "string",
  115. "default": ""
  116. }
  117. },
  118. {
  119. "variable": "additionalEnvs",
  120. "label": "Additional Environment Variables",
  121. "description": "Configure additional environment variables for Navidrome.",
  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": "navidromeRunAs",
  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 Navidrome 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 Navidrome 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": "navidromeNetwork",
  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 Navidrome Web UI.",
  200. "schema": {
  201. "type": "int",
  202. "default": 30043,
  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": "navidromeStorage",
  222. "label": "",
  223. "group": "Storage Configuration",
  224. "schema": {
  225. "type": "dict",
  226. "attrs": [
  227. {
  228. "variable": "data",
  229. "label": "Navidrome Data Storage",
  230. "description": "The path to store Navidrome Data.",
  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": "data"
  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": "music",
  550. "label": "Navidrome Music Storage",
  551. "description": "The path to store Navidrome Music.",
  552. "schema": {
  553. "type": "dict",
  554. "attrs": [
  555. {
  556. "variable": "type",
  557. "label": "Type",
  558. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  559. "schema": {
  560. "type": "string",
  561. "required": true,
  562. "immutable": true,
  563. "default": "ixVolume",
  564. "enum": [
  565. {
  566. "value": "hostPath",
  567. "description": "Host Path (Path that already exists on the system)"
  568. },
  569. {
  570. "value": "ixVolume",
  571. "description": "ixVolume (Dataset created automatically by the system)"
  572. }
  573. ]
  574. }
  575. },
  576. {
  577. "variable": "ixVolumeConfig",
  578. "label": "ixVolume Configuration",
  579. "description": "The configuration for the ixVolume dataset.",
  580. "schema": {
  581. "type": "dict",
  582. "show_if": [
  583. [
  584. "type",
  585. "=",
  586. "ixVolume"
  587. ]
  588. ],
  589. "$ref": [
  590. "normalize/ixVolume"
  591. ],
  592. "attrs": [
  593. {
  594. "variable": "aclEnable",
  595. "label": "Enable ACL",
  596. "description": "Enable ACL for the dataset.",
  597. "schema": {
  598. "type": "boolean",
  599. "default": false
  600. }
  601. },
  602. {
  603. "variable": "datasetName",
  604. "label": "Dataset Name",
  605. "description": "The name of the dataset to use for storage.",
  606. "schema": {
  607. "type": "string",
  608. "required": true,
  609. "immutable": true,
  610. "hidden": true,
  611. "default": "music"
  612. }
  613. },
  614. {
  615. "variable": "aclEntries",
  616. "label": "ACL Configuration",
  617. "schema": {
  618. "type": "dict",
  619. "show_if": [
  620. [
  621. "aclEnable",
  622. "=",
  623. true
  624. ]
  625. ],
  626. "attrs": [
  627. {
  628. "variable": "path",
  629. "label": "Path",
  630. "description": "Path to perform ACL",
  631. "schema": {
  632. "type": "string",
  633. "hidden": true
  634. }
  635. },
  636. {
  637. "variable": "entries",
  638. "label": "ACL Entries",
  639. "description": "ACL Entries",
  640. "schema": {
  641. "type": "list",
  642. "items": [
  643. {
  644. "variable": "aclEntry",
  645. "label": "ACL Entry",
  646. "schema": {
  647. "type": "dict",
  648. "attrs": [
  649. {
  650. "variable": "id_type",
  651. "label": "ID Type",
  652. "schema": {
  653. "type": "string",
  654. "enum": [
  655. {
  656. "value": "USER",
  657. "description": "Entry is for a USER"
  658. },
  659. {
  660. "value": "GROUP",
  661. "description": "Entry is for a GROUP"
  662. }
  663. ],
  664. "default": "USER"
  665. }
  666. },
  667. {
  668. "variable": "id",
  669. "label": "ID",
  670. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  671. "schema": {
  672. "type": "int",
  673. "required": true,
  674. "min": 0
  675. }
  676. },
  677. {
  678. "variable": "access",
  679. "label": "Access",
  680. "schema": {
  681. "type": "string",
  682. "enum": [
  683. {
  684. "value": "READ",
  685. "description": "Read Access"
  686. },
  687. {
  688. "value": "MODIFY",
  689. "description": "Modify Access"
  690. },
  691. {
  692. "value": "FULL_CONTROL",
  693. "description": "FULL_CONTROL Access"
  694. }
  695. ]
  696. }
  697. }
  698. ]
  699. }
  700. }
  701. ]
  702. }
  703. }
  704. ]
  705. }
  706. }
  707. ]
  708. }
  709. },
  710. {
  711. "variable": "hostPathConfig",
  712. "label": "Host Path Configuration",
  713. "schema": {
  714. "type": "dict",
  715. "show_if": [
  716. [
  717. "type",
  718. "=",
  719. "hostPath"
  720. ]
  721. ],
  722. "attrs": [
  723. {
  724. "variable": "aclEnable",
  725. "label": "Enable ACL",
  726. "description": "Enable ACL for the dataset.",
  727. "schema": {
  728. "type": "boolean",
  729. "default": false
  730. }
  731. },
  732. {
  733. "variable": "acl",
  734. "label": "ACL Configuration",
  735. "schema": {
  736. "type": "dict",
  737. "show_if": [
  738. [
  739. "aclEnable",
  740. "=",
  741. true
  742. ]
  743. ],
  744. "attrs": [
  745. {
  746. "variable": "path",
  747. "label": "Host Path",
  748. "description": "Host Path to perform ACL",
  749. "schema": {
  750. "type": "hostpath",
  751. "required": true,
  752. "empty": false
  753. }
  754. },
  755. {
  756. "variable": "entries",
  757. "label": "ACL Entries",
  758. "description": "ACL Entries",
  759. "schema": {
  760. "type": "list",
  761. "items": [
  762. {
  763. "variable": "aclEntry",
  764. "label": "ACL Entry",
  765. "schema": {
  766. "type": "dict",
  767. "attrs": [
  768. {
  769. "variable": "id_type",
  770. "label": "ID Type",
  771. "schema": {
  772. "type": "string",
  773. "enum": [
  774. {
  775. "value": "USER",
  776. "description": "Entry is for a USER"
  777. },
  778. {
  779. "value": "GROUP",
  780. "description": "Entry is for a GROUP"
  781. }
  782. ],
  783. "default": "USER"
  784. }
  785. },
  786. {
  787. "variable": "id",
  788. "label": "ID",
  789. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  790. "schema": {
  791. "type": "int",
  792. "required": true,
  793. "min": 0
  794. }
  795. },
  796. {
  797. "variable": "access",
  798. "label": "Access",
  799. "schema": {
  800. "type": "string",
  801. "enum": [
  802. {
  803. "value": "READ",
  804. "description": "Read Access"
  805. },
  806. {
  807. "value": "MODIFY",
  808. "description": "Modify Access"
  809. },
  810. {
  811. "value": "FULL_CONTROL",
  812. "description": "FULL_CONTROL Access"
  813. }
  814. ]
  815. }
  816. }
  817. ]
  818. }
  819. }
  820. ]
  821. }
  822. },
  823. {
  824. "variable": "options",
  825. "label": "ACL Options",
  826. "schema": {
  827. "type": "dict",
  828. "attrs": [
  829. {
  830. "variable": "force",
  831. "label": "Force Flag",
  832. "description": "Enabling `Force` applies ACL even if the path has existing data",
  833. "schema": {
  834. "type": "boolean",
  835. "default": false
  836. }
  837. }
  838. ]
  839. }
  840. }
  841. ],
  842. "$ref": [
  843. "normalize/acl"
  844. ]
  845. }
  846. },
  847. {
  848. "variable": "hostPath",
  849. "label": "Host Path",
  850. "description": "The host path to use for storage.",
  851. "schema": {
  852. "type": "hostpath",
  853. "show_if": [
  854. [
  855. "aclEnable",
  856. "=",
  857. false
  858. ]
  859. ],
  860. "required": true
  861. }
  862. }
  863. ]
  864. }
  865. }
  866. ]
  867. }
  868. },
  869. {
  870. "variable": "additionalStorages",
  871. "label": "Additional Storage",
  872. "description": "Additional storage for Navidrome.",
  873. "schema": {
  874. "type": "list",
  875. "default": [],
  876. "items": [
  877. {
  878. "variable": "storageEntry",
  879. "label": "Storage Entry",
  880. "schema": {
  881. "type": "dict",
  882. "attrs": [
  883. {
  884. "variable": "type",
  885. "label": "Type",
  886. "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",
  887. "schema": {
  888. "type": "string",
  889. "required": true,
  890. "default": "ixVolume",
  891. "immutable": true,
  892. "enum": [
  893. {
  894. "value": "hostPath",
  895. "description": "Host Path (Path that already exists on the system)"
  896. },
  897. {
  898. "value": "ixVolume",
  899. "description": "ixVolume (Dataset created automatically by the system)"
  900. },
  901. {
  902. "value": "smb-pv-pvc",
  903. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  904. }
  905. ]
  906. }
  907. },
  908. {
  909. "variable": "readOnly",
  910. "label": "Read Only",
  911. "description": "Mount the volume as read only.",
  912. "schema": {
  913. "type": "boolean",
  914. "default": false
  915. }
  916. },
  917. {
  918. "variable": "mountPath",
  919. "label": "Mount Path",
  920. "description": "The path inside the container to mount the storage.",
  921. "schema": {
  922. "type": "path",
  923. "required": true
  924. }
  925. },
  926. {
  927. "variable": "hostPathConfig",
  928. "label": "Host Path Configuration",
  929. "schema": {
  930. "type": "dict",
  931. "show_if": [
  932. [
  933. "type",
  934. "=",
  935. "hostPath"
  936. ]
  937. ],
  938. "attrs": [
  939. {
  940. "variable": "aclEnable",
  941. "label": "Enable ACL",
  942. "description": "Enable ACL for the dataset.",
  943. "schema": {
  944. "type": "boolean",
  945. "default": false
  946. }
  947. },
  948. {
  949. "variable": "acl",
  950. "label": "ACL Configuration",
  951. "schema": {
  952. "type": "dict",
  953. "show_if": [
  954. [
  955. "aclEnable",
  956. "=",
  957. true
  958. ]
  959. ],
  960. "attrs": [
  961. {
  962. "variable": "path",
  963. "label": "Host Path",
  964. "description": "Host Path to perform ACL",
  965. "schema": {
  966. "type": "hostpath",
  967. "required": true,
  968. "empty": false
  969. }
  970. },
  971. {
  972. "variable": "entries",
  973. "label": "ACL Entries",
  974. "description": "ACL Entries",
  975. "schema": {
  976. "type": "list",
  977. "items": [
  978. {
  979. "variable": "aclEntry",
  980. "label": "ACL Entry",
  981. "schema": {
  982. "type": "dict",
  983. "attrs": [
  984. {
  985. "variable": "id_type",
  986. "label": "ID Type",
  987. "schema": {
  988. "type": "string",
  989. "enum": [
  990. {
  991. "value": "USER",
  992. "description": "Entry is for a USER"
  993. },
  994. {
  995. "value": "GROUP",
  996. "description": "Entry is for a GROUP"
  997. }
  998. ],
  999. "default": "USER"
  1000. }
  1001. },
  1002. {
  1003. "variable": "id",
  1004. "label": "ID",
  1005. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1006. "schema": {
  1007. "type": "int",
  1008. "required": true,
  1009. "min": 0
  1010. }
  1011. },
  1012. {
  1013. "variable": "access",
  1014. "label": "Access",
  1015. "schema": {
  1016. "type": "string",
  1017. "enum": [
  1018. {
  1019. "value": "READ",
  1020. "description": "Read Access"
  1021. },
  1022. {
  1023. "value": "MODIFY",
  1024. "description": "Modify Access"
  1025. },
  1026. {
  1027. "value": "FULL_CONTROL",
  1028. "description": "FULL_CONTROL Access"
  1029. }
  1030. ]
  1031. }
  1032. }
  1033. ]
  1034. }
  1035. }
  1036. ]
  1037. }
  1038. },
  1039. {
  1040. "variable": "options",
  1041. "label": "ACL Options",
  1042. "schema": {
  1043. "type": "dict",
  1044. "attrs": [
  1045. {
  1046. "variable": "force",
  1047. "label": "Force Flag",
  1048. "description": "Enabling `Force` applies ACL even if the path has existing data",
  1049. "schema": {
  1050. "type": "boolean",
  1051. "default": false
  1052. }
  1053. }
  1054. ]
  1055. }
  1056. }
  1057. ],
  1058. "$ref": [
  1059. "normalize/acl"
  1060. ]
  1061. }
  1062. },
  1063. {
  1064. "variable": "hostPath",
  1065. "label": "Host Path",
  1066. "description": "The host path to use for storage.",
  1067. "schema": {
  1068. "type": "hostpath",
  1069. "show_if": [
  1070. [
  1071. "aclEnable",
  1072. "=",
  1073. false
  1074. ]
  1075. ],
  1076. "required": true
  1077. }
  1078. }
  1079. ]
  1080. }
  1081. },
  1082. {
  1083. "variable": "ixVolumeConfig",
  1084. "label": "ixVolume Configuration",
  1085. "description": "The configuration for the ixVolume dataset.",
  1086. "schema": {
  1087. "type": "dict",
  1088. "show_if": [
  1089. [
  1090. "type",
  1091. "=",
  1092. "ixVolume"
  1093. ]
  1094. ],
  1095. "$ref": [
  1096. "normalize/ixVolume"
  1097. ],
  1098. "attrs": [
  1099. {
  1100. "variable": "aclEnable",
  1101. "label": "Enable ACL",
  1102. "description": "Enable ACL for the dataset.",
  1103. "schema": {
  1104. "type": "boolean",
  1105. "default": false
  1106. }
  1107. },
  1108. {
  1109. "variable": "datasetName",
  1110. "label": "Dataset Name",
  1111. "description": "The name of the dataset to use for storage.",
  1112. "schema": {
  1113. "type": "string",
  1114. "required": true,
  1115. "immutable": true,
  1116. "default": "storage_entry"
  1117. }
  1118. },
  1119. {
  1120. "variable": "aclEntries",
  1121. "label": "ACL Configuration",
  1122. "schema": {
  1123. "type": "dict",
  1124. "show_if": [
  1125. [
  1126. "aclEnable",
  1127. "=",
  1128. true
  1129. ]
  1130. ],
  1131. "attrs": [
  1132. {
  1133. "variable": "path",
  1134. "label": "Path",
  1135. "description": "Path to perform ACL",
  1136. "schema": {
  1137. "type": "string",
  1138. "hidden": true
  1139. }
  1140. },
  1141. {
  1142. "variable": "entries",
  1143. "label": "ACL Entries",
  1144. "description": "ACL Entries",
  1145. "schema": {
  1146. "type": "list",
  1147. "items": [
  1148. {
  1149. "variable": "aclEntry",
  1150. "label": "ACL Entry",
  1151. "schema": {
  1152. "type": "dict",
  1153. "attrs": [
  1154. {
  1155. "variable": "id_type",
  1156. "label": "ID Type",
  1157. "schema": {
  1158. "type": "string",
  1159. "enum": [
  1160. {
  1161. "value": "USER",
  1162. "description": "Entry is for a USER"
  1163. },
  1164. {
  1165. "value": "GROUP",
  1166. "description": "Entry is for a GROUP"
  1167. }
  1168. ],
  1169. "default": "USER"
  1170. }
  1171. },
  1172. {
  1173. "variable": "id",
  1174. "label": "ID",
  1175. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1176. "schema": {
  1177. "type": "int",
  1178. "required": true,
  1179. "min": 0
  1180. }
  1181. },
  1182. {
  1183. "variable": "access",
  1184. "label": "Access",
  1185. "schema": {
  1186. "type": "string",
  1187. "enum": [
  1188. {
  1189. "value": "READ",
  1190. "description": "Read Access"
  1191. },
  1192. {
  1193. "value": "MODIFY",
  1194. "description": "Modify Access"
  1195. },
  1196. {
  1197. "value": "FULL_CONTROL",
  1198. "description": "FULL_CONTROL Access"
  1199. }
  1200. ]
  1201. }
  1202. }
  1203. ]
  1204. }
  1205. }
  1206. ]
  1207. }
  1208. }
  1209. ]
  1210. }
  1211. }
  1212. ]
  1213. }
  1214. },
  1215. {
  1216. "variable": "smbConfig",
  1217. "label": "SMB Share Configuration",
  1218. "description": "The configuration for the SMB Share.",
  1219. "schema": {
  1220. "type": "dict",
  1221. "show_if": [
  1222. [
  1223. "type",
  1224. "=",
  1225. "smb-pv-pvc"
  1226. ]
  1227. ],
  1228. "attrs": [
  1229. {
  1230. "variable": "server",
  1231. "label": "Server",
  1232. "description": "The server for the SMB share.",
  1233. "schema": {
  1234. "type": "string",
  1235. "required": true
  1236. }
  1237. },
  1238. {
  1239. "variable": "share",
  1240. "label": "Share",
  1241. "description": "The share name for the SMB share.",
  1242. "schema": {
  1243. "type": "string",
  1244. "required": true
  1245. }
  1246. },
  1247. {
  1248. "variable": "domain",
  1249. "label": "Domain (Optional)",
  1250. "description": "The domain for the SMB share.",
  1251. "schema": {
  1252. "type": "string"
  1253. }
  1254. },
  1255. {
  1256. "variable": "username",
  1257. "label": "Username",
  1258. "description": "The username for the SMB share.",
  1259. "schema": {
  1260. "type": "string",
  1261. "required": true
  1262. }
  1263. },
  1264. {
  1265. "variable": "password",
  1266. "label": "Password",
  1267. "description": "The password for the SMB share.",
  1268. "schema": {
  1269. "type": "string",
  1270. "required": true,
  1271. "private": true
  1272. }
  1273. },
  1274. {
  1275. "variable": "size",
  1276. "label": "Size (in Gi)",
  1277. "description": "The size of the volume quota.",
  1278. "schema": {
  1279. "type": "int",
  1280. "required": true,
  1281. "min": 1,
  1282. "default": 1
  1283. }
  1284. }
  1285. ]
  1286. }
  1287. }
  1288. ]
  1289. }
  1290. }
  1291. ]
  1292. }
  1293. }
  1294. ]
  1295. }
  1296. },
  1297. {
  1298. "variable": "resources",
  1299. "group": "Resources Configuration",
  1300. "label": "",
  1301. "schema": {
  1302. "type": "dict",
  1303. "attrs": [
  1304. {
  1305. "variable": "limits",
  1306. "label": "Limits",
  1307. "schema": {
  1308. "type": "dict",
  1309. "attrs": [
  1310. {
  1311. "variable": "cpu",
  1312. "label": "CPU",
  1313. "description": "CPU limit for Navidrome.",
  1314. "schema": {
  1315. "type": "string",
  1316. "max_length": 6,
  1317. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1318. "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",
  1319. "default": "4000m",
  1320. "required": true
  1321. }
  1322. },
  1323. {
  1324. "variable": "memory",
  1325. "label": "Memory",
  1326. "description": "Memory limit for Navidrome.",
  1327. "schema": {
  1328. "type": "string",
  1329. "max_length": 12,
  1330. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1331. "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",
  1332. "default": "8Gi",
  1333. "required": true
  1334. }
  1335. }
  1336. ]
  1337. }
  1338. }
  1339. ]
  1340. }
  1341. }
  1342. ]
  1343. },
  1344. "app_readme": "<h1>Navidrome</h1>\n<p><a href=\"https://www.navidrome.org/\">Navidrome</a> is a personal streaming service</p>\n<p>Additional configuration options can be defined via environment variables.\nSee more information on the <a href=\"https://www.navidrome.org/docs/usage/configuration-options\">Navidrome Documentation</a></p>",
  1345. "detailed_readme": "<h1>Navidrome</h1>\n<p><a href=\"https://www.navidrome.org/\">Navidrome</a> is a personal streaming service</p>\n<p>Additional configuration options can be defined via environment variables.\nSee more information on the <a href=\"https://www.navidrome.org/docs/usage/configuration-options\">Navidrome Documentation</a></p>",
  1346. "changelog": null
  1347. }
  1348. }