app_versions.json 49 KB

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