app_versions.json 48 KB

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