app_versions.json 71 KB

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