app_versions.json 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. {
  2. "1.0.4": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/paperless-ai/1.0.4",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "3.0.7_1.0.4",
  10. "version": "1.0.4",
  11. "app_metadata": {
  12. "app_version": "3.0.7",
  13. "capabilities": [],
  14. "categories": [
  15. "productivity"
  16. ],
  17. "changelog_url": "https://github.com/clusterzx/paperless-ai/releases",
  18. "date_added": "2025-07-08",
  19. "description": "The most advanced AI companion for Paperless-NGX. Transform your document management with powerful AI-driven automation and insights.",
  20. "home": "https://clusterzx.github.io/paperless-ai/",
  21. "host_mounts": [],
  22. "icon": "https://media.sys.truenas.net/apps/paperless-ai/icons/icon.png",
  23. "keywords": [
  24. "paperless",
  25. "ai",
  26. "automation"
  27. ],
  28. "lib_version": "2.1.49",
  29. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  30. "maintainers": [
  31. {
  32. "email": "dev@ixsystems.com",
  33. "name": "truenas",
  34. "url": "https://www.truenas.com/"
  35. }
  36. ],
  37. "name": "paperless-ai",
  38. "run_as_context": [
  39. {
  40. "description": "Paperless AI runs as root user.",
  41. "gid": 0,
  42. "group_name": "root",
  43. "uid": 0,
  44. "user_name": "root"
  45. }
  46. ],
  47. "screenshots": [],
  48. "sources": [
  49. "https://hub.docker.com/r/clusterzx/paperless-ai",
  50. "https://github.com/clusterzx/paperless-ai"
  51. ],
  52. "title": "Paperless AI",
  53. "train": "community",
  54. "version": "1.0.4"
  55. },
  56. "schema": {
  57. "groups": [
  58. {
  59. "name": "Paperless AI Configuration",
  60. "description": "Configure Paperless AI"
  61. },
  62. {
  63. "name": "Network Configuration",
  64. "description": "Configure Network for Paperless AI"
  65. },
  66. {
  67. "name": "Storage Configuration",
  68. "description": "Configure Storage for Paperless AI"
  69. },
  70. {
  71. "name": "Labels Configuration",
  72. "description": "Configure Labels for Paperless AI"
  73. },
  74. {
  75. "name": "Resources Configuration",
  76. "description": "Configure Resources for Paperless AI"
  77. }
  78. ],
  79. "questions": [
  80. {
  81. "variable": "TZ",
  82. "group": "Paperless AI Configuration",
  83. "label": "Timezone",
  84. "schema": {
  85. "type": "string",
  86. "default": "Etc/UTC",
  87. "required": true,
  88. "$ref": [
  89. "definitions/timezone"
  90. ]
  91. }
  92. },
  93. {
  94. "variable": "paperless",
  95. "label": "",
  96. "group": "Paperless AI Configuration",
  97. "schema": {
  98. "type": "dict",
  99. "attrs": [
  100. {
  101. "variable": "additional_envs",
  102. "label": "Additional Environment Variables",
  103. "schema": {
  104. "type": "list",
  105. "default": [],
  106. "items": [
  107. {
  108. "variable": "env",
  109. "label": "Environment Variable",
  110. "schema": {
  111. "type": "dict",
  112. "attrs": [
  113. {
  114. "variable": "name",
  115. "label": "Name",
  116. "schema": {
  117. "type": "string",
  118. "required": true
  119. }
  120. },
  121. {
  122. "variable": "value",
  123. "label": "Value",
  124. "schema": {
  125. "type": "string"
  126. }
  127. }
  128. ]
  129. }
  130. }
  131. ]
  132. }
  133. }
  134. ]
  135. }
  136. },
  137. {
  138. "variable": "network",
  139. "label": "",
  140. "group": "Network Configuration",
  141. "schema": {
  142. "type": "dict",
  143. "attrs": [
  144. {
  145. "variable": "web_port",
  146. "label": "WebUI Port",
  147. "schema": {
  148. "type": "dict",
  149. "attrs": [
  150. {
  151. "variable": "bind_mode",
  152. "label": "Port Bind Mode",
  153. "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",
  154. "schema": {
  155. "type": "string",
  156. "default": "published",
  157. "enum": [
  158. {
  159. "value": "published",
  160. "description": "Publish port on the host for external access"
  161. },
  162. {
  163. "value": "exposed",
  164. "description": "Expose port for inter-container communication"
  165. },
  166. {
  167. "value": "",
  168. "description": "None"
  169. }
  170. ]
  171. }
  172. },
  173. {
  174. "variable": "port_number",
  175. "label": "Port Number",
  176. "schema": {
  177. "type": "int",
  178. "default": 30226,
  179. "min": 1,
  180. "max": 65535,
  181. "required": true
  182. }
  183. },
  184. {
  185. "variable": "host_ips",
  186. "label": "Host IPs",
  187. "description": "IPs on the host to bind this port",
  188. "schema": {
  189. "type": "list",
  190. "show_if": [
  191. [
  192. "bind_mode",
  193. "=",
  194. "published"
  195. ]
  196. ],
  197. "default": [],
  198. "items": [
  199. {
  200. "variable": "host_ip",
  201. "label": "Host IP",
  202. "schema": {
  203. "type": "string",
  204. "required": true,
  205. "$ref": [
  206. "definitions/node_bind_ip"
  207. ]
  208. }
  209. }
  210. ]
  211. }
  212. }
  213. ]
  214. }
  215. },
  216. {
  217. "variable": "host_network",
  218. "label": "Host Network",
  219. "description": "Bind to the host network. It's recommended to keep this disabled.\n",
  220. "schema": {
  221. "type": "boolean",
  222. "default": false
  223. }
  224. }
  225. ]
  226. }
  227. },
  228. {
  229. "variable": "storage",
  230. "label": "",
  231. "group": "Storage Configuration",
  232. "schema": {
  233. "type": "dict",
  234. "attrs": [
  235. {
  236. "variable": "data",
  237. "label": "Data Storage",
  238. "schema": {
  239. "type": "dict",
  240. "attrs": [
  241. {
  242. "variable": "type",
  243. "label": "Type",
  244. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  245. "schema": {
  246. "type": "string",
  247. "required": true,
  248. "default": "ix_volume",
  249. "enum": [
  250. {
  251. "value": "host_path",
  252. "description": "Host Path (Path that already exists on the system)"
  253. },
  254. {
  255. "value": "ix_volume",
  256. "description": "ixVolume (Dataset created automatically by the system)"
  257. }
  258. ]
  259. }
  260. },
  261. {
  262. "variable": "ix_volume_config",
  263. "label": "ixVolume Configuration",
  264. "description": "The configuration for the ixVolume dataset.",
  265. "schema": {
  266. "type": "dict",
  267. "show_if": [
  268. [
  269. "type",
  270. "=",
  271. "ix_volume"
  272. ]
  273. ],
  274. "$ref": [
  275. "normalize/ix_volume"
  276. ],
  277. "attrs": [
  278. {
  279. "variable": "acl_enable",
  280. "label": "Enable ACL",
  281. "description": "Enable ACL for the storage.",
  282. "schema": {
  283. "type": "boolean",
  284. "default": false
  285. }
  286. },
  287. {
  288. "variable": "dataset_name",
  289. "label": "Dataset Name",
  290. "description": "The name of the dataset to use for storage.",
  291. "schema": {
  292. "type": "string",
  293. "required": true,
  294. "hidden": true,
  295. "default": "data"
  296. }
  297. },
  298. {
  299. "variable": "acl_entries",
  300. "label": "ACL Configuration",
  301. "schema": {
  302. "type": "dict",
  303. "show_if": [
  304. [
  305. "acl_enable",
  306. "=",
  307. true
  308. ]
  309. ],
  310. "attrs": []
  311. }
  312. }
  313. ]
  314. }
  315. },
  316. {
  317. "variable": "host_path_config",
  318. "label": "Host Path Configuration",
  319. "schema": {
  320. "type": "dict",
  321. "show_if": [
  322. [
  323. "type",
  324. "=",
  325. "host_path"
  326. ]
  327. ],
  328. "attrs": [
  329. {
  330. "variable": "acl_enable",
  331. "label": "Enable ACL",
  332. "description": "Enable ACL for the storage.",
  333. "schema": {
  334. "type": "boolean",
  335. "default": false
  336. }
  337. },
  338. {
  339. "variable": "acl",
  340. "label": "ACL Configuration",
  341. "schema": {
  342. "type": "dict",
  343. "show_if": [
  344. [
  345. "acl_enable",
  346. "=",
  347. true
  348. ]
  349. ],
  350. "attrs": [],
  351. "$ref": [
  352. "normalize/acl"
  353. ]
  354. }
  355. },
  356. {
  357. "variable": "path",
  358. "label": "Host Path",
  359. "description": "The host path to use for storage.",
  360. "schema": {
  361. "type": "hostpath",
  362. "show_if": [
  363. [
  364. "acl_enable",
  365. "=",
  366. false
  367. ]
  368. ],
  369. "required": true
  370. }
  371. }
  372. ]
  373. }
  374. }
  375. ]
  376. }
  377. },
  378. {
  379. "variable": "additional_storage",
  380. "label": "Additional Storage",
  381. "schema": {
  382. "type": "list",
  383. "default": [],
  384. "items": [
  385. {
  386. "variable": "storageEntry",
  387. "label": "Storage Entry",
  388. "schema": {
  389. "type": "dict",
  390. "attrs": [
  391. {
  392. "variable": "type",
  393. "label": "Type",
  394. "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",
  395. "schema": {
  396. "type": "string",
  397. "required": true,
  398. "default": "ix_volume",
  399. "enum": [
  400. {
  401. "value": "host_path",
  402. "description": "Host Path (Path that already exists on the system)"
  403. },
  404. {
  405. "value": "ix_volume",
  406. "description": "ixVolume (Dataset created automatically by the system)"
  407. },
  408. {
  409. "value": "cifs",
  410. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  411. }
  412. ]
  413. }
  414. },
  415. {
  416. "variable": "read_only",
  417. "label": "Read Only",
  418. "description": "Mount the volume as read only.",
  419. "schema": {
  420. "type": "boolean",
  421. "default": false
  422. }
  423. },
  424. {
  425. "variable": "mount_path",
  426. "label": "Mount Path",
  427. "description": "The path inside the container to mount the storage.",
  428. "schema": {
  429. "type": "path",
  430. "required": true
  431. }
  432. },
  433. {
  434. "variable": "host_path_config",
  435. "label": "Host Path Configuration",
  436. "schema": {
  437. "type": "dict",
  438. "show_if": [
  439. [
  440. "type",
  441. "=",
  442. "host_path"
  443. ]
  444. ],
  445. "attrs": [
  446. {
  447. "variable": "acl_enable",
  448. "label": "Enable ACL",
  449. "description": "Enable ACL for the storage.",
  450. "schema": {
  451. "type": "boolean",
  452. "default": false
  453. }
  454. },
  455. {
  456. "variable": "acl",
  457. "label": "ACL Configuration",
  458. "schema": {
  459. "type": "dict",
  460. "show_if": [
  461. [
  462. "acl_enable",
  463. "=",
  464. true
  465. ]
  466. ],
  467. "attrs": [],
  468. "$ref": [
  469. "normalize/acl"
  470. ]
  471. }
  472. },
  473. {
  474. "variable": "path",
  475. "label": "Host Path",
  476. "description": "The host path to use for storage.",
  477. "schema": {
  478. "type": "hostpath",
  479. "show_if": [
  480. [
  481. "acl_enable",
  482. "=",
  483. false
  484. ]
  485. ],
  486. "required": true
  487. }
  488. }
  489. ]
  490. }
  491. },
  492. {
  493. "variable": "ix_volume_config",
  494. "label": "ixVolume Configuration",
  495. "description": "The configuration for the ixVolume dataset.",
  496. "schema": {
  497. "type": "dict",
  498. "show_if": [
  499. [
  500. "type",
  501. "=",
  502. "ix_volume"
  503. ]
  504. ],
  505. "$ref": [
  506. "normalize/ix_volume"
  507. ],
  508. "attrs": [
  509. {
  510. "variable": "acl_enable",
  511. "label": "Enable ACL",
  512. "description": "Enable ACL for the storage.",
  513. "schema": {
  514. "type": "boolean",
  515. "default": false
  516. }
  517. },
  518. {
  519. "variable": "dataset_name",
  520. "label": "Dataset Name",
  521. "description": "The name of the dataset to use for storage.",
  522. "schema": {
  523. "type": "string",
  524. "required": true,
  525. "default": "storage_entry"
  526. }
  527. },
  528. {
  529. "variable": "acl_entries",
  530. "label": "ACL Configuration",
  531. "schema": {
  532. "type": "dict",
  533. "show_if": [
  534. [
  535. "acl_enable",
  536. "=",
  537. true
  538. ]
  539. ],
  540. "attrs": [],
  541. "$ref": [
  542. "normalize/acl"
  543. ]
  544. }
  545. }
  546. ]
  547. }
  548. },
  549. {
  550. "variable": "cifs_config",
  551. "label": "SMB Configuration",
  552. "description": "The configuration for the SMB dataset.",
  553. "schema": {
  554. "type": "dict",
  555. "show_if": [
  556. [
  557. "type",
  558. "=",
  559. "cifs"
  560. ]
  561. ],
  562. "attrs": [
  563. {
  564. "variable": "server",
  565. "label": "Server",
  566. "description": "The server to mount the SMB share.",
  567. "schema": {
  568. "type": "string",
  569. "required": true
  570. }
  571. },
  572. {
  573. "variable": "path",
  574. "label": "Path",
  575. "description": "The path to mount the SMB share.",
  576. "schema": {
  577. "type": "string",
  578. "required": true
  579. }
  580. },
  581. {
  582. "variable": "username",
  583. "label": "Username",
  584. "description": "The username to use for the SMB share.",
  585. "schema": {
  586. "type": "string",
  587. "required": true
  588. }
  589. },
  590. {
  591. "variable": "password",
  592. "label": "Password",
  593. "description": "The password to use for the SMB share.",
  594. "schema": {
  595. "type": "string",
  596. "required": true,
  597. "private": true
  598. }
  599. },
  600. {
  601. "variable": "domain",
  602. "label": "Domain",
  603. "description": "The domain to use for the SMB share.",
  604. "schema": {
  605. "type": "string"
  606. }
  607. }
  608. ]
  609. }
  610. }
  611. ]
  612. }
  613. }
  614. ]
  615. }
  616. }
  617. ]
  618. }
  619. },
  620. {
  621. "variable": "labels",
  622. "label": "",
  623. "group": "Labels Configuration",
  624. "schema": {
  625. "type": "list",
  626. "default": [],
  627. "items": [
  628. {
  629. "variable": "label",
  630. "label": "Label",
  631. "schema": {
  632. "type": "dict",
  633. "attrs": [
  634. {
  635. "variable": "key",
  636. "label": "Key",
  637. "schema": {
  638. "type": "string",
  639. "required": true
  640. }
  641. },
  642. {
  643. "variable": "value",
  644. "label": "Value",
  645. "schema": {
  646. "type": "string",
  647. "required": true
  648. }
  649. },
  650. {
  651. "variable": "containers",
  652. "label": "Containers",
  653. "description": "Containers where the label should be applied",
  654. "schema": {
  655. "type": "list",
  656. "items": [
  657. {
  658. "variable": "container",
  659. "label": "Container",
  660. "schema": {
  661. "type": "string",
  662. "required": true,
  663. "enum": [
  664. {
  665. "value": "paperless",
  666. "description": "paperless"
  667. }
  668. ]
  669. }
  670. }
  671. ]
  672. }
  673. }
  674. ]
  675. }
  676. }
  677. ]
  678. }
  679. },
  680. {
  681. "variable": "resources",
  682. "label": "",
  683. "group": "Resources Configuration",
  684. "schema": {
  685. "type": "dict",
  686. "attrs": [
  687. {
  688. "variable": "limits",
  689. "label": "Limits",
  690. "schema": {
  691. "type": "dict",
  692. "attrs": [
  693. {
  694. "variable": "cpus",
  695. "label": "CPUs",
  696. "description": "CPUs limit for Paperless AI.",
  697. "schema": {
  698. "type": "int",
  699. "default": 2,
  700. "required": true
  701. }
  702. },
  703. {
  704. "variable": "memory",
  705. "label": "Memory (in MB)",
  706. "description": "Memory limit for Paperless AI.",
  707. "schema": {
  708. "type": "int",
  709. "default": 4096,
  710. "required": true
  711. }
  712. }
  713. ]
  714. }
  715. }
  716. ]
  717. }
  718. }
  719. ]
  720. },
  721. "readme": "<h1>Paperless AI</h1> <p><a href=\"https://github.com/clusterzx/paperless-ai\">Paperless AI</a> is the most advanced AI companion for Paperless-NGX. Transform your document management with powerful AI-driven automation and insights.</p>",
  722. "changelog": null,
  723. "chart_metadata": {
  724. "app_version": "3.0.7",
  725. "capabilities": [],
  726. "categories": [
  727. "productivity"
  728. ],
  729. "changelog_url": "https://github.com/clusterzx/paperless-ai/releases",
  730. "date_added": "2025-07-08",
  731. "description": "The most advanced AI companion for Paperless-NGX. Transform your document management with powerful AI-driven automation and insights.",
  732. "home": "https://clusterzx.github.io/paperless-ai/",
  733. "host_mounts": [],
  734. "icon": "https://media.sys.truenas.net/apps/paperless-ai/icons/icon.png",
  735. "keywords": [
  736. "paperless",
  737. "ai",
  738. "automation"
  739. ],
  740. "lib_version": "2.1.49",
  741. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  742. "maintainers": [
  743. {
  744. "email": "dev@ixsystems.com",
  745. "name": "truenas",
  746. "url": "https://www.truenas.com/"
  747. }
  748. ],
  749. "name": "paperless-ai",
  750. "run_as_context": [
  751. {
  752. "description": "Paperless AI runs as root user.",
  753. "gid": 0,
  754. "group_name": "root",
  755. "uid": 0,
  756. "user_name": "root"
  757. }
  758. ],
  759. "screenshots": [],
  760. "sources": [
  761. "https://hub.docker.com/r/clusterzx/paperless-ai",
  762. "https://github.com/clusterzx/paperless-ai"
  763. ],
  764. "title": "Paperless AI",
  765. "train": "community",
  766. "version": "1.0.4"
  767. }
  768. }
  769. }