app_versions.json 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  1. {
  2. "1.1.2": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/pigallery2/1.1.2",
  7. "last_update": "2023-11-14 10:11:57",
  8. "required_features": [
  9. "normalize/ixVolume"
  10. ],
  11. "human_version": "2.0.0_1.1.2",
  12. "version": "1.1.2",
  13. "chart_metadata": {
  14. "name": "pigallery2",
  15. "description": "PiGallery2 is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers",
  16. "annotations": {
  17. "title": "PiGallery2"
  18. },
  19. "type": "application",
  20. "version": "1.1.2",
  21. "apiVersion": "v2",
  22. "appVersion": "2.0.0",
  23. "kubeVersion": ">=1.16.0-0",
  24. "maintainers": [
  25. {
  26. "name": "truenas",
  27. "url": "https://www.truenas.com/",
  28. "email": "dev@ixsystems.com"
  29. }
  30. ],
  31. "dependencies": [
  32. {
  33. "name": "common",
  34. "repository": "file://../../../common",
  35. "version": "1.2.2"
  36. }
  37. ],
  38. "home": "https://bpatrik.github.io/pigallery2",
  39. "icon": "https://media.sys.truenas.net/apps/pigallery2/icons/icon.png",
  40. "sources": [
  41. "https://hub.docker.com/r/bpatrik/pigallery2",
  42. "https://github.com/truenas/charts/tree/master/library/ix-dev/community/pigallery2",
  43. "https://github.com/bpatrik/pigallery2"
  44. ],
  45. "keywords": [
  46. "media",
  47. "photo"
  48. ]
  49. },
  50. "app_metadata": {
  51. "runAsContext": [
  52. {
  53. "userName": "pigallery",
  54. "groupName": "pigallery",
  55. "gid": 568,
  56. "uid": 568,
  57. "description": "PiGallery2 can run as any non-root user."
  58. }
  59. ],
  60. "capabilities": [],
  61. "hostMounts": []
  62. },
  63. "schema": {
  64. "groups": [
  65. {
  66. "name": "PiGallery2 Configuration",
  67. "description": "Configure PiGallery2"
  68. },
  69. {
  70. "name": "User and Group Configuration",
  71. "description": "Configure User and Group for PiGallery2"
  72. },
  73. {
  74. "name": "Network Configuration",
  75. "description": "Configure Network for PiGallery2"
  76. },
  77. {
  78. "name": "Storage Configuration",
  79. "description": "Configure Storage for PiGallery2"
  80. },
  81. {
  82. "name": "Resources Configuration",
  83. "description": "Configure Resources for PiGallery2"
  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": "pigalleryConfig",
  103. "label": "",
  104. "group": "PiGallery2 Configuration",
  105. "schema": {
  106. "type": "dict",
  107. "attrs": [
  108. {
  109. "variable": "applicationTitle",
  110. "label": "Application Title",
  111. "description": "The title of the PiGallery2 application.",
  112. "schema": {
  113. "type": "string",
  114. "default": "PiGallery 2",
  115. "required": true
  116. }
  117. },
  118. {
  119. "variable": "additionalEnvs",
  120. "label": "Additional Environment Variables",
  121. "description": "Configure additional environment variables for PiGallery2.",
  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": "pigalleryRunAs",
  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 PiGallery2 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 PiGallery2 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": "pigalleryNetwork",
  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 PiGallery2 Web UI.",
  200. "schema": {
  201. "type": "int",
  202. "default": 30099,
  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": "pigalleryStorage",
  222. "label": "",
  223. "group": "Storage Configuration",
  224. "schema": {
  225. "type": "dict",
  226. "attrs": [
  227. {
  228. "variable": "config",
  229. "label": "PiGallery2 Config Storage",
  230. "description": "The path to store PiGallery2 Configuration.",
  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": "datasetName",
  257. "label": "Dataset Name",
  258. "schema": {
  259. "type": "string",
  260. "show_if": [
  261. [
  262. "type",
  263. "=",
  264. "ixVolume"
  265. ]
  266. ],
  267. "required": true,
  268. "hidden": true,
  269. "immutable": true,
  270. "default": "config",
  271. "$ref": [
  272. "normalize/ixVolume"
  273. ]
  274. }
  275. },
  276. {
  277. "variable": "hostPath",
  278. "label": "Host Path",
  279. "schema": {
  280. "type": "hostpath",
  281. "show_if": [
  282. [
  283. "type",
  284. "=",
  285. "hostPath"
  286. ]
  287. ],
  288. "immutable": true,
  289. "required": true
  290. }
  291. }
  292. ]
  293. }
  294. },
  295. {
  296. "variable": "db",
  297. "label": "PiGallery2 Database Storage",
  298. "description": "The path to store PiGallery2 Database.",
  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": "datasetName",
  325. "label": "Dataset Name",
  326. "schema": {
  327. "type": "string",
  328. "show_if": [
  329. [
  330. "type",
  331. "=",
  332. "ixVolume"
  333. ]
  334. ],
  335. "required": true,
  336. "hidden": true,
  337. "immutable": true,
  338. "default": "db",
  339. "$ref": [
  340. "normalize/ixVolume"
  341. ]
  342. }
  343. },
  344. {
  345. "variable": "hostPath",
  346. "label": "Host Path",
  347. "schema": {
  348. "type": "hostpath",
  349. "show_if": [
  350. [
  351. "type",
  352. "=",
  353. "hostPath"
  354. ]
  355. ],
  356. "immutable": true,
  357. "required": true
  358. }
  359. }
  360. ]
  361. }
  362. },
  363. {
  364. "variable": "media",
  365. "label": "PiGallery2 Media Storage",
  366. "description": "The path to store PiGallery2 Media.",
  367. "schema": {
  368. "type": "dict",
  369. "attrs": [
  370. {
  371. "variable": "type",
  372. "label": "Type",
  373. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  374. "schema": {
  375. "type": "string",
  376. "required": true,
  377. "immutable": true,
  378. "default": "ixVolume",
  379. "enum": [
  380. {
  381. "value": "hostPath",
  382. "description": "Host Path (Path that already exists on the system)"
  383. },
  384. {
  385. "value": "ixVolume",
  386. "description": "ixVolume (Dataset created automatically by the system)"
  387. }
  388. ]
  389. }
  390. },
  391. {
  392. "variable": "datasetName",
  393. "label": "Dataset Name",
  394. "schema": {
  395. "type": "string",
  396. "show_if": [
  397. [
  398. "type",
  399. "=",
  400. "ixVolume"
  401. ]
  402. ],
  403. "required": true,
  404. "hidden": true,
  405. "immutable": true,
  406. "default": "media",
  407. "$ref": [
  408. "normalize/ixVolume"
  409. ]
  410. }
  411. },
  412. {
  413. "variable": "hostPath",
  414. "label": "Host Path",
  415. "schema": {
  416. "type": "hostpath",
  417. "show_if": [
  418. [
  419. "type",
  420. "=",
  421. "hostPath"
  422. ]
  423. ],
  424. "immutable": true,
  425. "required": true
  426. }
  427. }
  428. ]
  429. }
  430. },
  431. {
  432. "variable": "thumbnails",
  433. "label": "PiGallery2 Thumbnails Storage",
  434. "description": "The path to store PiGallery2 Thumbnails.",
  435. "schema": {
  436. "type": "dict",
  437. "attrs": [
  438. {
  439. "variable": "type",
  440. "label": "Type",
  441. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  442. "schema": {
  443. "type": "string",
  444. "required": true,
  445. "immutable": true,
  446. "default": "ixVolume",
  447. "enum": [
  448. {
  449. "value": "hostPath",
  450. "description": "Host Path (Path that already exists on the system)"
  451. },
  452. {
  453. "value": "ixVolume",
  454. "description": "ixVolume (Dataset created automatically by the system)"
  455. }
  456. ]
  457. }
  458. },
  459. {
  460. "variable": "datasetName",
  461. "label": "Dataset Name",
  462. "schema": {
  463. "type": "string",
  464. "show_if": [
  465. [
  466. "type",
  467. "=",
  468. "ixVolume"
  469. ]
  470. ],
  471. "required": true,
  472. "hidden": true,
  473. "immutable": true,
  474. "default": "thumbnails",
  475. "$ref": [
  476. "normalize/ixVolume"
  477. ]
  478. }
  479. },
  480. {
  481. "variable": "hostPath",
  482. "label": "Host Path",
  483. "schema": {
  484. "type": "hostpath",
  485. "show_if": [
  486. [
  487. "type",
  488. "=",
  489. "hostPath"
  490. ]
  491. ],
  492. "immutable": true,
  493. "required": true
  494. }
  495. }
  496. ]
  497. }
  498. },
  499. {
  500. "variable": "additionalStorages",
  501. "label": "Additional Storage",
  502. "description": "Additional storage for PiGallery2.",
  503. "schema": {
  504. "type": "list",
  505. "default": [],
  506. "items": [
  507. {
  508. "variable": "storageEntry",
  509. "label": "Storage Entry",
  510. "schema": {
  511. "type": "dict",
  512. "attrs": [
  513. {
  514. "variable": "type",
  515. "label": "Type",
  516. "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",
  517. "schema": {
  518. "type": "string",
  519. "required": true,
  520. "default": "ixVolume",
  521. "immutable": true,
  522. "enum": [
  523. {
  524. "value": "hostPath",
  525. "description": "Host Path (Path that already exists on the system)"
  526. },
  527. {
  528. "value": "ixVolume",
  529. "description": "ixVolume (Dataset created automatically by the system)"
  530. },
  531. {
  532. "value": "smb-pv-pvc",
  533. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  534. }
  535. ]
  536. }
  537. },
  538. {
  539. "variable": "mountPath",
  540. "label": "Mount Path",
  541. "description": "The path inside the container to mount the storage.",
  542. "schema": {
  543. "type": "path",
  544. "required": true
  545. }
  546. },
  547. {
  548. "variable": "hostPath",
  549. "label": "Host Path",
  550. "description": "The host path to use for storage.",
  551. "schema": {
  552. "type": "hostpath",
  553. "show_if": [
  554. [
  555. "type",
  556. "=",
  557. "hostPath"
  558. ]
  559. ],
  560. "required": true
  561. }
  562. },
  563. {
  564. "variable": "datasetName",
  565. "label": "Dataset Name",
  566. "description": "The name of the dataset to use for storage.",
  567. "schema": {
  568. "type": "string",
  569. "show_if": [
  570. [
  571. "type",
  572. "=",
  573. "ixVolume"
  574. ]
  575. ],
  576. "required": true,
  577. "immutable": true,
  578. "default": "storage_entry",
  579. "$ref": [
  580. "normalize/ixVolume"
  581. ]
  582. }
  583. },
  584. {
  585. "variable": "server",
  586. "label": "Server",
  587. "description": "The server for the SMB share.",
  588. "schema": {
  589. "type": "string",
  590. "show_if": [
  591. [
  592. "type",
  593. "=",
  594. "smb-pv-pvc"
  595. ]
  596. ],
  597. "required": true
  598. }
  599. },
  600. {
  601. "variable": "share",
  602. "label": "Share",
  603. "description": "The share name for the SMB share.",
  604. "schema": {
  605. "type": "string",
  606. "show_if": [
  607. [
  608. "type",
  609. "=",
  610. "smb-pv-pvc"
  611. ]
  612. ],
  613. "required": true
  614. }
  615. },
  616. {
  617. "variable": "domain",
  618. "label": "Domain (Optional)",
  619. "description": "The domain for the SMB share.",
  620. "schema": {
  621. "type": "string",
  622. "show_if": [
  623. [
  624. "type",
  625. "=",
  626. "smb-pv-pvc"
  627. ]
  628. ]
  629. }
  630. },
  631. {
  632. "variable": "username",
  633. "label": "Username",
  634. "description": "The username for the SMB share.",
  635. "schema": {
  636. "type": "string",
  637. "show_if": [
  638. [
  639. "type",
  640. "=",
  641. "smb-pv-pvc"
  642. ]
  643. ],
  644. "required": true
  645. }
  646. },
  647. {
  648. "variable": "password",
  649. "label": "Password",
  650. "description": "The password for the SMB share.",
  651. "schema": {
  652. "type": "string",
  653. "show_if": [
  654. [
  655. "type",
  656. "=",
  657. "smb-pv-pvc"
  658. ]
  659. ],
  660. "required": true,
  661. "private": true
  662. }
  663. },
  664. {
  665. "variable": "size",
  666. "label": "Size (in Gi)",
  667. "description": "The size of the volume quota.",
  668. "schema": {
  669. "type": "int",
  670. "show_if": [
  671. [
  672. "type",
  673. "=",
  674. "smb-pv-pvc"
  675. ]
  676. ],
  677. "required": true,
  678. "min": 1,
  679. "default": 1
  680. }
  681. }
  682. ]
  683. }
  684. }
  685. ]
  686. }
  687. }
  688. ]
  689. }
  690. },
  691. {
  692. "variable": "resources",
  693. "group": "Resources Configuration",
  694. "label": "",
  695. "schema": {
  696. "type": "dict",
  697. "attrs": [
  698. {
  699. "variable": "limits",
  700. "label": "Limits",
  701. "schema": {
  702. "type": "dict",
  703. "attrs": [
  704. {
  705. "variable": "cpu",
  706. "label": "CPU",
  707. "description": "CPU limit for PiGallery2.",
  708. "schema": {
  709. "type": "string",
  710. "max_length": 6,
  711. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  712. "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",
  713. "default": "4000m",
  714. "required": true
  715. }
  716. },
  717. {
  718. "variable": "memory",
  719. "label": "Memory",
  720. "description": "Memory limit for PiGallery2.",
  721. "schema": {
  722. "type": "string",
  723. "max_length": 12,
  724. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  725. "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",
  726. "default": "8Gi",
  727. "required": true
  728. }
  729. }
  730. ]
  731. }
  732. }
  733. ]
  734. }
  735. }
  736. ]
  737. },
  738. "app_readme": "<h1>PiGallery2</h1>\n<p><a href=\"https://bpatrik.github.io/pigallery2\">PiGallery2</a> is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers</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>PiGallery2</code> directories.\nAfterward, the <code>PiGallery2</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>",
  739. "detailed_readme": "<h1>PiGallery2</h1>\n<p><a href=\"https://bpatrik.github.io/pigallery2\">PiGallery2</a> is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers</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>PiGallery2</code> directories.\nAfterward, the <code>PiGallery2</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>",
  740. "changelog": null
  741. }
  742. }