app_versions.json 59 KB

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