app_versions.json 60 KB

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