app_versions.json 61 KB

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