app_versions.json 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041
  1. {
  2. "1.5.13": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/mealie/1.5.13",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "v3.1.2_1.5.13",
  10. "version": "1.5.13",
  11. "app_metadata": {
  12. "annotations": {
  13. "min_scale_version": "24.10.2.2"
  14. },
  15. "app_version": "v3.1.2",
  16. "capabilities": [],
  17. "categories": [
  18. "productivity"
  19. ],
  20. "changelog_url": "https://github.com/mealie-recipes/mealie/releases",
  21. "date_added": "2024-08-22",
  22. "description": "Mealie is a self-hosted recipe manager and meal planner",
  23. "home": "https://docs.mealie.io/",
  24. "host_mounts": [],
  25. "icon": "https://media.sys.truenas.net/apps/mealie/icons/icon.png",
  26. "keywords": [
  27. "recipes",
  28. "meal planner"
  29. ],
  30. "lib_version": "2.1.49",
  31. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  32. "maintainers": [
  33. {
  34. "email": "dev@ixsystems.com",
  35. "name": "truenas",
  36. "url": "https://www.truenas.com/"
  37. }
  38. ],
  39. "name": "mealie",
  40. "run_as_context": [
  41. {
  42. "description": "Mealie runs as any non-root user.",
  43. "gid": 568,
  44. "group_name": "mealie",
  45. "uid": 568,
  46. "user_name": "mealie"
  47. },
  48. {
  49. "description": "Postgres runs as non-root user.",
  50. "gid": 999,
  51. "group_name": "postgres",
  52. "uid": 999,
  53. "user_name": "postgres"
  54. }
  55. ],
  56. "screenshots": [
  57. "https://media.sys.truenas.net/apps/mealie/screenshots/screenshot1.png"
  58. ],
  59. "sources": [
  60. "https://docs.mealie.io/"
  61. ],
  62. "title": "Mealie",
  63. "train": "community",
  64. "version": "1.5.13"
  65. },
  66. "schema": {
  67. "groups": [
  68. {
  69. "name": "Mealie Configuration",
  70. "description": "Configure Mealie"
  71. },
  72. {
  73. "name": "User and Group Configuration",
  74. "description": "Configure User and Group for Mealie"
  75. },
  76. {
  77. "name": "Network Configuration",
  78. "description": "Configure Network for Mealie"
  79. },
  80. {
  81. "name": "Storage Configuration",
  82. "description": "Configure Storage for Mealie"
  83. },
  84. {
  85. "name": "Labels Configuration",
  86. "description": "Configure Labels for Mealie"
  87. },
  88. {
  89. "name": "Resources Configuration",
  90. "description": "Configure Resources for Mealie"
  91. }
  92. ],
  93. "questions": [
  94. {
  95. "variable": "TZ",
  96. "group": "Mealie Configuration",
  97. "label": "Timezone",
  98. "schema": {
  99. "type": "string",
  100. "default": "Etc/UTC",
  101. "required": true,
  102. "$ref": [
  103. "definitions/timezone"
  104. ]
  105. }
  106. },
  107. {
  108. "variable": "mealie",
  109. "label": "",
  110. "group": "Mealie Configuration",
  111. "schema": {
  112. "type": "dict",
  113. "attrs": [
  114. {
  115. "variable": "postgres_image_selector",
  116. "label": "Postgres Image (CAUTION)",
  117. "description": "If you are changing this after the postgres directory has been initialized,</br>\nSTOP! and make sure you have a backup of your data.</br>\nChanging this will trigger an one way database upgrade.</br>\nYou can only select newer versions of postgres.</br>\nSelecting an older version will refuse to start.</br>\nIf something goes wrong, you will have to restore from backup.\n",
  118. "schema": {
  119. "type": "string",
  120. "default": "postgres_17_image",
  121. "required": true,
  122. "enum": [
  123. {
  124. "value": "postgres_15_image",
  125. "description": "Postgres 15"
  126. },
  127. {
  128. "value": "postgres_17_image",
  129. "description": "Postgres 17"
  130. }
  131. ]
  132. }
  133. },
  134. {
  135. "variable": "db_password",
  136. "label": "Database Password",
  137. "description": "The password for Mealie.",
  138. "schema": {
  139. "type": "string",
  140. "default": "",
  141. "private": true,
  142. "required": true
  143. }
  144. },
  145. {
  146. "variable": "allow_signup",
  147. "label": "Allow Signup",
  148. "description": "Allow users to signup for Mealie.",
  149. "schema": {
  150. "type": "boolean",
  151. "default": true
  152. }
  153. },
  154. {
  155. "variable": "default_group",
  156. "label": "Default Group",
  157. "description": "The default group for new users.",
  158. "schema": {
  159. "type": "string",
  160. "default": "Home",
  161. "required": true
  162. }
  163. },
  164. {
  165. "variable": "base_url",
  166. "label": "Base URL",
  167. "description": "The URL that Mealie will be accessible from.</br>\nExample: </br>\nhttp://server.ip:30111</br>\nhttps://Mealie.example.com\n",
  168. "schema": {
  169. "type": "uri",
  170. "default": "",
  171. "required": true
  172. }
  173. },
  174. {
  175. "variable": "additional_envs",
  176. "label": "Additional Environment Variables",
  177. "schema": {
  178. "type": "list",
  179. "default": [],
  180. "items": [
  181. {
  182. "variable": "env",
  183. "label": "Environment Variable",
  184. "schema": {
  185. "type": "dict",
  186. "attrs": [
  187. {
  188. "variable": "name",
  189. "label": "Name",
  190. "schema": {
  191. "type": "string",
  192. "required": true
  193. }
  194. },
  195. {
  196. "variable": "value",
  197. "label": "Value",
  198. "schema": {
  199. "type": "string"
  200. }
  201. }
  202. ]
  203. }
  204. }
  205. ]
  206. }
  207. }
  208. ]
  209. }
  210. },
  211. {
  212. "variable": "run_as",
  213. "label": "",
  214. "group": "User and Group Configuration",
  215. "schema": {
  216. "type": "dict",
  217. "attrs": [
  218. {
  219. "variable": "user",
  220. "label": "User ID",
  221. "description": "The user id that Mealie files will be owned by.",
  222. "schema": {
  223. "type": "int",
  224. "min": 568,
  225. "default": 568,
  226. "required": true
  227. }
  228. },
  229. {
  230. "variable": "group",
  231. "label": "Group ID",
  232. "description": "The group id that Mealie files will be owned by.",
  233. "schema": {
  234. "type": "int",
  235. "min": 568,
  236. "default": 568,
  237. "required": true
  238. }
  239. }
  240. ]
  241. }
  242. },
  243. {
  244. "variable": "network",
  245. "label": "",
  246. "group": "Network Configuration",
  247. "schema": {
  248. "type": "dict",
  249. "attrs": [
  250. {
  251. "variable": "web_port",
  252. "label": "WebUI Port",
  253. "schema": {
  254. "type": "dict",
  255. "attrs": [
  256. {
  257. "variable": "bind_mode",
  258. "label": "Port Bind Mode",
  259. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  260. "schema": {
  261. "type": "string",
  262. "default": "published",
  263. "enum": [
  264. {
  265. "value": "published",
  266. "description": "Publish port on the host for external access"
  267. },
  268. {
  269. "value": "exposed",
  270. "description": "Expose port for inter-container communication"
  271. },
  272. {
  273. "value": "",
  274. "description": "None"
  275. }
  276. ]
  277. }
  278. },
  279. {
  280. "variable": "port_number",
  281. "label": "Port Number",
  282. "schema": {
  283. "type": "int",
  284. "default": 30111,
  285. "min": 1,
  286. "max": 65535,
  287. "required": true
  288. }
  289. },
  290. {
  291. "variable": "host_ips",
  292. "label": "Host IPs",
  293. "description": "IPs on the host to bind this port",
  294. "schema": {
  295. "type": "list",
  296. "show_if": [
  297. [
  298. "bind_mode",
  299. "=",
  300. "published"
  301. ]
  302. ],
  303. "default": [],
  304. "items": [
  305. {
  306. "variable": "host_ip",
  307. "label": "Host IP",
  308. "schema": {
  309. "type": "string",
  310. "required": true,
  311. "$ref": [
  312. "definitions/node_bind_ip"
  313. ]
  314. }
  315. }
  316. ]
  317. }
  318. }
  319. ]
  320. }
  321. }
  322. ]
  323. }
  324. },
  325. {
  326. "variable": "storage",
  327. "label": "",
  328. "group": "Storage Configuration",
  329. "schema": {
  330. "type": "dict",
  331. "attrs": [
  332. {
  333. "variable": "data",
  334. "label": "Mealie Data Storage",
  335. "description": "The path to store Mealie Data.",
  336. "schema": {
  337. "type": "dict",
  338. "attrs": [
  339. {
  340. "variable": "type",
  341. "label": "Type",
  342. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  343. "schema": {
  344. "type": "string",
  345. "required": true,
  346. "default": "ix_volume",
  347. "enum": [
  348. {
  349. "value": "host_path",
  350. "description": "Host Path (Path that already exists on the system)"
  351. },
  352. {
  353. "value": "ix_volume",
  354. "description": "ixVolume (Dataset created automatically by the system)"
  355. }
  356. ]
  357. }
  358. },
  359. {
  360. "variable": "ix_volume_config",
  361. "label": "ixVolume Configuration",
  362. "description": "The configuration for the ixVolume dataset.",
  363. "schema": {
  364. "type": "dict",
  365. "show_if": [
  366. [
  367. "type",
  368. "=",
  369. "ix_volume"
  370. ]
  371. ],
  372. "$ref": [
  373. "normalize/ix_volume"
  374. ],
  375. "attrs": [
  376. {
  377. "variable": "acl_enable",
  378. "label": "Enable ACL",
  379. "description": "Enable ACL for the storage.",
  380. "schema": {
  381. "type": "boolean",
  382. "default": false
  383. }
  384. },
  385. {
  386. "variable": "dataset_name",
  387. "label": "Dataset Name",
  388. "description": "The name of the dataset to use for storage.",
  389. "schema": {
  390. "type": "string",
  391. "required": true,
  392. "hidden": true,
  393. "default": "data"
  394. }
  395. },
  396. {
  397. "variable": "acl_entries",
  398. "label": "ACL Configuration",
  399. "schema": {
  400. "type": "dict",
  401. "show_if": [
  402. [
  403. "acl_enable",
  404. "=",
  405. true
  406. ]
  407. ],
  408. "attrs": []
  409. }
  410. }
  411. ]
  412. }
  413. },
  414. {
  415. "variable": "host_path_config",
  416. "label": "Host Path Configuration",
  417. "schema": {
  418. "type": "dict",
  419. "show_if": [
  420. [
  421. "type",
  422. "=",
  423. "host_path"
  424. ]
  425. ],
  426. "attrs": [
  427. {
  428. "variable": "acl_enable",
  429. "label": "Enable ACL",
  430. "description": "Enable ACL for the storage.",
  431. "schema": {
  432. "type": "boolean",
  433. "default": false
  434. }
  435. },
  436. {
  437. "variable": "acl",
  438. "label": "ACL Configuration",
  439. "schema": {
  440. "type": "dict",
  441. "show_if": [
  442. [
  443. "acl_enable",
  444. "=",
  445. true
  446. ]
  447. ],
  448. "attrs": [],
  449. "$ref": [
  450. "normalize/acl"
  451. ]
  452. }
  453. },
  454. {
  455. "variable": "path",
  456. "label": "Host Path",
  457. "description": "The host path to use for storage.",
  458. "schema": {
  459. "type": "hostpath",
  460. "show_if": [
  461. [
  462. "acl_enable",
  463. "=",
  464. false
  465. ]
  466. ],
  467. "required": true
  468. }
  469. }
  470. ]
  471. }
  472. }
  473. ]
  474. }
  475. },
  476. {
  477. "variable": "postgres_data",
  478. "label": "Mealie Postgres Data Storage",
  479. "description": "The path to store Mealie Postgres Data.",
  480. "schema": {
  481. "type": "dict",
  482. "attrs": [
  483. {
  484. "variable": "type",
  485. "label": "Type",
  486. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  487. "schema": {
  488. "type": "string",
  489. "required": true,
  490. "default": "ix_volume",
  491. "enum": [
  492. {
  493. "value": "host_path",
  494. "description": "Host Path (Path that already exists on the system)"
  495. },
  496. {
  497. "value": "ix_volume",
  498. "description": "ixVolume (Dataset created automatically by the system)"
  499. }
  500. ]
  501. }
  502. },
  503. {
  504. "variable": "ix_volume_config",
  505. "label": "ixVolume Configuration",
  506. "description": "The configuration for the ixVolume dataset.",
  507. "schema": {
  508. "type": "dict",
  509. "show_if": [
  510. [
  511. "type",
  512. "=",
  513. "ix_volume"
  514. ]
  515. ],
  516. "$ref": [
  517. "normalize/ix_volume"
  518. ],
  519. "attrs": [
  520. {
  521. "variable": "acl_enable",
  522. "label": "Enable ACL",
  523. "description": "Enable ACL for the storage.",
  524. "schema": {
  525. "type": "boolean",
  526. "default": false
  527. }
  528. },
  529. {
  530. "variable": "dataset_name",
  531. "label": "Dataset Name",
  532. "description": "The name of the dataset to use for storage.",
  533. "schema": {
  534. "type": "string",
  535. "required": true,
  536. "hidden": true,
  537. "default": "postgres_data"
  538. }
  539. },
  540. {
  541. "variable": "acl_entries",
  542. "label": "ACL Configuration",
  543. "schema": {
  544. "type": "dict",
  545. "show_if": [
  546. [
  547. "acl_enable",
  548. "=",
  549. true
  550. ]
  551. ],
  552. "attrs": []
  553. }
  554. }
  555. ]
  556. }
  557. },
  558. {
  559. "variable": "host_path_config",
  560. "label": "Host Path Configuration",
  561. "schema": {
  562. "type": "dict",
  563. "show_if": [
  564. [
  565. "type",
  566. "=",
  567. "host_path"
  568. ]
  569. ],
  570. "attrs": [
  571. {
  572. "variable": "acl_enable",
  573. "label": "Enable ACL",
  574. "description": "Enable ACL for the storage.",
  575. "schema": {
  576. "type": "boolean",
  577. "default": false
  578. }
  579. },
  580. {
  581. "variable": "acl",
  582. "label": "ACL Configuration",
  583. "schema": {
  584. "type": "dict",
  585. "show_if": [
  586. [
  587. "acl_enable",
  588. "=",
  589. true
  590. ]
  591. ],
  592. "attrs": [],
  593. "$ref": [
  594. "normalize/acl"
  595. ]
  596. }
  597. },
  598. {
  599. "variable": "path",
  600. "label": "Host Path",
  601. "description": "The host path to use for storage.",
  602. "schema": {
  603. "type": "hostpath",
  604. "show_if": [
  605. [
  606. "acl_enable",
  607. "=",
  608. false
  609. ]
  610. ],
  611. "required": true
  612. }
  613. },
  614. {
  615. "variable": "auto_permissions",
  616. "label": "Automatic Permissions",
  617. "description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
  618. "schema": {
  619. "type": "boolean",
  620. "default": false,
  621. "show_if": [
  622. [
  623. "acl_enable",
  624. "=",
  625. false
  626. ]
  627. ]
  628. }
  629. }
  630. ]
  631. }
  632. }
  633. ]
  634. }
  635. },
  636. {
  637. "variable": "additional_storage",
  638. "label": "Additional Storage",
  639. "schema": {
  640. "type": "list",
  641. "default": [],
  642. "items": [
  643. {
  644. "variable": "storageEntry",
  645. "label": "Storage Entry",
  646. "schema": {
  647. "type": "dict",
  648. "attrs": [
  649. {
  650. "variable": "type",
  651. "label": "Type",
  652. "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 as a volume.\n",
  653. "schema": {
  654. "type": "string",
  655. "required": true,
  656. "default": "ix_volume",
  657. "enum": [
  658. {
  659. "value": "host_path",
  660. "description": "Host Path (Path that already exists on the system)"
  661. },
  662. {
  663. "value": "ix_volume",
  664. "description": "ixVolume (Dataset created automatically by the system)"
  665. },
  666. {
  667. "value": "cifs",
  668. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  669. }
  670. ]
  671. }
  672. },
  673. {
  674. "variable": "read_only",
  675. "label": "Read Only",
  676. "description": "Mount the volume as read only.",
  677. "schema": {
  678. "type": "boolean",
  679. "default": false
  680. }
  681. },
  682. {
  683. "variable": "mount_path",
  684. "label": "Mount Path",
  685. "description": "The path inside the container to mount the storage.",
  686. "schema": {
  687. "type": "path",
  688. "required": true
  689. }
  690. },
  691. {
  692. "variable": "host_path_config",
  693. "label": "Host Path Configuration",
  694. "schema": {
  695. "type": "dict",
  696. "show_if": [
  697. [
  698. "type",
  699. "=",
  700. "host_path"
  701. ]
  702. ],
  703. "attrs": [
  704. {
  705. "variable": "acl_enable",
  706. "label": "Enable ACL",
  707. "description": "Enable ACL for the storage.",
  708. "schema": {
  709. "type": "boolean",
  710. "default": false
  711. }
  712. },
  713. {
  714. "variable": "acl",
  715. "label": "ACL Configuration",
  716. "schema": {
  717. "type": "dict",
  718. "show_if": [
  719. [
  720. "acl_enable",
  721. "=",
  722. true
  723. ]
  724. ],
  725. "attrs": [],
  726. "$ref": [
  727. "normalize/acl"
  728. ]
  729. }
  730. },
  731. {
  732. "variable": "path",
  733. "label": "Host Path",
  734. "description": "The host path to use for storage.",
  735. "schema": {
  736. "type": "hostpath",
  737. "show_if": [
  738. [
  739. "acl_enable",
  740. "=",
  741. false
  742. ]
  743. ],
  744. "required": true
  745. }
  746. }
  747. ]
  748. }
  749. },
  750. {
  751. "variable": "ix_volume_config",
  752. "label": "ixVolume Configuration",
  753. "description": "The configuration for the ixVolume dataset.",
  754. "schema": {
  755. "type": "dict",
  756. "show_if": [
  757. [
  758. "type",
  759. "=",
  760. "ix_volume"
  761. ]
  762. ],
  763. "$ref": [
  764. "normalize/ix_volume"
  765. ],
  766. "attrs": [
  767. {
  768. "variable": "acl_enable",
  769. "label": "Enable ACL",
  770. "description": "Enable ACL for the storage.",
  771. "schema": {
  772. "type": "boolean",
  773. "default": false
  774. }
  775. },
  776. {
  777. "variable": "dataset_name",
  778. "label": "Dataset Name",
  779. "description": "The name of the dataset to use for storage.",
  780. "schema": {
  781. "type": "string",
  782. "required": true,
  783. "default": "storage_entry"
  784. }
  785. },
  786. {
  787. "variable": "acl_entries",
  788. "label": "ACL Configuration",
  789. "schema": {
  790. "type": "dict",
  791. "show_if": [
  792. [
  793. "acl_enable",
  794. "=",
  795. true
  796. ]
  797. ],
  798. "attrs": [],
  799. "$ref": [
  800. "normalize/acl"
  801. ]
  802. }
  803. }
  804. ]
  805. }
  806. },
  807. {
  808. "variable": "cifs_config",
  809. "label": "SMB Configuration",
  810. "description": "The configuration for the SMB dataset.",
  811. "schema": {
  812. "type": "dict",
  813. "show_if": [
  814. [
  815. "type",
  816. "=",
  817. "cifs"
  818. ]
  819. ],
  820. "attrs": [
  821. {
  822. "variable": "server",
  823. "label": "Server",
  824. "description": "The server to mount the SMB share.",
  825. "schema": {
  826. "type": "string",
  827. "required": true
  828. }
  829. },
  830. {
  831. "variable": "path",
  832. "label": "Path",
  833. "description": "The path to mount the SMB share.",
  834. "schema": {
  835. "type": "string",
  836. "required": true
  837. }
  838. },
  839. {
  840. "variable": "username",
  841. "label": "Username",
  842. "description": "The username to use for the SMB share.",
  843. "schema": {
  844. "type": "string",
  845. "required": true
  846. }
  847. },
  848. {
  849. "variable": "password",
  850. "label": "Password",
  851. "description": "The password to use for the SMB share.",
  852. "schema": {
  853. "type": "string",
  854. "required": true,
  855. "private": true
  856. }
  857. },
  858. {
  859. "variable": "domain",
  860. "label": "Domain",
  861. "description": "The domain to use for the SMB share.",
  862. "schema": {
  863. "type": "string"
  864. }
  865. }
  866. ]
  867. }
  868. }
  869. ]
  870. }
  871. }
  872. ]
  873. }
  874. }
  875. ]
  876. }
  877. },
  878. {
  879. "variable": "labels",
  880. "label": "",
  881. "group": "Labels Configuration",
  882. "schema": {
  883. "type": "list",
  884. "default": [],
  885. "items": [
  886. {
  887. "variable": "label",
  888. "label": "Label",
  889. "schema": {
  890. "type": "dict",
  891. "attrs": [
  892. {
  893. "variable": "key",
  894. "label": "Key",
  895. "schema": {
  896. "type": "string",
  897. "required": true
  898. }
  899. },
  900. {
  901. "variable": "value",
  902. "label": "Value",
  903. "schema": {
  904. "type": "string",
  905. "required": true
  906. }
  907. },
  908. {
  909. "variable": "containers",
  910. "label": "Containers",
  911. "description": "Containers where the label should be applied",
  912. "schema": {
  913. "type": "list",
  914. "items": [
  915. {
  916. "variable": "container",
  917. "label": "Container",
  918. "schema": {
  919. "type": "string",
  920. "required": true,
  921. "enum": [
  922. {
  923. "value": "mealie",
  924. "description": "mealie"
  925. },
  926. {
  927. "value": "postgres",
  928. "description": "postgres"
  929. }
  930. ]
  931. }
  932. }
  933. ]
  934. }
  935. }
  936. ]
  937. }
  938. }
  939. ]
  940. }
  941. },
  942. {
  943. "variable": "resources",
  944. "label": "",
  945. "group": "Resources Configuration",
  946. "schema": {
  947. "type": "dict",
  948. "attrs": [
  949. {
  950. "variable": "limits",
  951. "label": "Limits",
  952. "schema": {
  953. "type": "dict",
  954. "attrs": [
  955. {
  956. "variable": "cpus",
  957. "label": "CPUs",
  958. "description": "CPUs limit for Mealie.",
  959. "schema": {
  960. "type": "int",
  961. "default": 2,
  962. "required": true
  963. }
  964. },
  965. {
  966. "variable": "memory",
  967. "label": "Memory (in MB)",
  968. "description": "Memory limit for Mealie.",
  969. "schema": {
  970. "type": "int",
  971. "default": 4096,
  972. "required": true
  973. }
  974. }
  975. ]
  976. }
  977. }
  978. ]
  979. }
  980. }
  981. ]
  982. },
  983. "readme": "<h1>Mealie</h1> <p><a href=\"https://mealie.io\">Mealie</a> is a self-hosted recipe manager and meal planner</p>",
  984. "changelog": null,
  985. "chart_metadata": {
  986. "annotations": {
  987. "min_scale_version": "24.10.2.2"
  988. },
  989. "app_version": "v3.1.2",
  990. "capabilities": [],
  991. "categories": [
  992. "productivity"
  993. ],
  994. "changelog_url": "https://github.com/mealie-recipes/mealie/releases",
  995. "date_added": "2024-08-22",
  996. "description": "Mealie is a self-hosted recipe manager and meal planner",
  997. "home": "https://docs.mealie.io/",
  998. "host_mounts": [],
  999. "icon": "https://media.sys.truenas.net/apps/mealie/icons/icon.png",
  1000. "keywords": [
  1001. "recipes",
  1002. "meal planner"
  1003. ],
  1004. "lib_version": "2.1.49",
  1005. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1006. "maintainers": [
  1007. {
  1008. "email": "dev@ixsystems.com",
  1009. "name": "truenas",
  1010. "url": "https://www.truenas.com/"
  1011. }
  1012. ],
  1013. "name": "mealie",
  1014. "run_as_context": [
  1015. {
  1016. "description": "Mealie runs as any non-root user.",
  1017. "gid": 568,
  1018. "group_name": "mealie",
  1019. "uid": 568,
  1020. "user_name": "mealie"
  1021. },
  1022. {
  1023. "description": "Postgres runs as non-root user.",
  1024. "gid": 999,
  1025. "group_name": "postgres",
  1026. "uid": 999,
  1027. "user_name": "postgres"
  1028. }
  1029. ],
  1030. "screenshots": [
  1031. "https://media.sys.truenas.net/apps/mealie/screenshots/screenshot1.png"
  1032. ],
  1033. "sources": [
  1034. "https://docs.mealie.io/"
  1035. ],
  1036. "title": "Mealie",
  1037. "train": "community",
  1038. "version": "1.5.13"
  1039. }
  1040. }
  1041. }