app_versions.json 102 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675
  1. {
  2. "1.0.69": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/windmill/1.0.69",
  7. "last_update": "2025-09-02 15:29:51",
  8. "required_features": [],
  9. "human_version": "1.538.0_1.0.69",
  10. "version": "1.0.69",
  11. "app_metadata": {
  12. "app_version": "1.538.0",
  13. "capabilities": [
  14. {
  15. "description": "Worker Reports is able to change file ownership arbitrarily",
  16. "name": "CHOWN"
  17. },
  18. {
  19. "description": "Worker Reports is able to bypass file permission checks",
  20. "name": "DAC_OVERRIDE"
  21. },
  22. {
  23. "description": "Worker Reports is able to bypass permission checks for file operations",
  24. "name": "FOWNER"
  25. },
  26. {
  27. "description": "Caddy is able to bind to privileged ports (< 1024)",
  28. "name": "NET_BIND_SERVICE"
  29. },
  30. {
  31. "description": "Worker Reports is able to change group ID of processes",
  32. "name": "SETGID"
  33. },
  34. {
  35. "description": "Worker Reports is able to change user ID of processes",
  36. "name": "SETUID"
  37. }
  38. ],
  39. "categories": [
  40. "productivity"
  41. ],
  42. "changelog_url": "https://github.com/windmill-labs/windmill/releases",
  43. "date_added": "2025-05-01",
  44. "description": "Open-source developer platform and workflow engine",
  45. "home": "https://www.windmill.dev/",
  46. "host_mounts": [],
  47. "icon": "https://media.sys.truenas.net/apps/windmill/icons/icon.svg",
  48. "keywords": [
  49. "workflows",
  50. "automation",
  51. "scripts",
  52. "developer"
  53. ],
  54. "lib_version": "2.1.49",
  55. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  56. "maintainers": [
  57. {
  58. "email": "dev@ixsystems.com",
  59. "name": "truenas",
  60. "url": "https://www.truenas.com/"
  61. }
  62. ],
  63. "name": "windmill",
  64. "run_as_context": [
  65. {
  66. "description": "Windmill runs as non-root user.",
  67. "gid": 1000,
  68. "group_name": "windmill",
  69. "uid": 1000,
  70. "user_name": "windmill"
  71. },
  72. {
  73. "description": "Windmill LSP runs as non-root user.",
  74. "gid": 1000,
  75. "group_name": "windmill",
  76. "uid": 1000,
  77. "user_name": "windmill"
  78. },
  79. {
  80. "description": "Windmill Worker runs as non-root user.",
  81. "gid": 1000,
  82. "group_name": "windmill",
  83. "uid": 1000,
  84. "user_name": "windmill"
  85. },
  86. {
  87. "description": "Windmill Native Worker runs as non-root user.",
  88. "gid": 1000,
  89. "group_name": "windmill",
  90. "uid": 1000,
  91. "user_name": "windmill"
  92. },
  93. {
  94. "description": "Windmill Reports Worker runs as root user.",
  95. "gid": 0,
  96. "group_name": "root",
  97. "uid": 0,
  98. "user_name": "root"
  99. },
  100. {
  101. "description": "Caddy runs as non-root user",
  102. "gid": 1000,
  103. "group_name": "caddy",
  104. "uid": 1000,
  105. "user_name": "caddy"
  106. },
  107. {
  108. "description": "Postgres runs as non-root user.",
  109. "gid": 999,
  110. "group_name": "postgres",
  111. "uid": 999,
  112. "user_name": "postgres"
  113. }
  114. ],
  115. "screenshots": [],
  116. "sources": [
  117. "https://github.com/windmill-labs/windmill",
  118. "https://www.windmill.dev/"
  119. ],
  120. "title": "Windmill",
  121. "train": "community",
  122. "version": "1.0.69"
  123. },
  124. "schema": {
  125. "groups": [
  126. {
  127. "name": "Windmill Configuration",
  128. "description": "Configure Windmill"
  129. },
  130. {
  131. "name": "Network Configuration",
  132. "description": "Configure Network for Windmill"
  133. },
  134. {
  135. "name": "Storage Configuration",
  136. "description": "Configure Storage for Windmill"
  137. },
  138. {
  139. "name": "Labels Configuration",
  140. "description": "Configure Labels for Windmill"
  141. },
  142. {
  143. "name": "Resources Configuration",
  144. "description": "Configure Resources for Windmill"
  145. }
  146. ],
  147. "questions": [
  148. {
  149. "variable": "TZ",
  150. "group": "Windmill Configuration",
  151. "label": "Timezone",
  152. "schema": {
  153. "type": "string",
  154. "default": "Etc/UTC",
  155. "required": true,
  156. "$ref": [
  157. "definitions/timezone"
  158. ]
  159. }
  160. },
  161. {
  162. "variable": "windmill",
  163. "label": "",
  164. "group": "Windmill Configuration",
  165. "schema": {
  166. "type": "dict",
  167. "attrs": [
  168. {
  169. "variable": "postgres_image_selector",
  170. "label": "Postgres Image (CAUTION)",
  171. "description": "If you are changing this after the postgres directory has been initialized,</br>\nSTOP! and make sure you have a backup of your data.</br>\nChanging this will trigger an one way database upgrade.</br>\nYou can only select newer versions of postgres.</br>\nSelecting an older version will refuse to start.</br>\nIf something goes wrong, you will have to restore from backup.\n",
  172. "schema": {
  173. "type": "string",
  174. "default": "postgres_17_image",
  175. "required": true,
  176. "enum": [
  177. {
  178. "value": "postgres_17_image",
  179. "description": "Postgres 17"
  180. }
  181. ]
  182. }
  183. },
  184. {
  185. "variable": "db_password",
  186. "label": "Database Password",
  187. "description": "The password for PostgreSQL database.",
  188. "schema": {
  189. "type": "string",
  190. "default": "",
  191. "required": true,
  192. "private": true
  193. }
  194. },
  195. {
  196. "variable": "enable_report_workers",
  197. "label": "Enable Report Workers",
  198. "description": "Enable report workers for Windmill.</br>\nThis is used for generating reports, web scraping and\nsending notifications.\n",
  199. "schema": {
  200. "type": "boolean",
  201. "default": false
  202. }
  203. },
  204. {
  205. "variable": "reports_num_workers",
  206. "label": "Report Worker Threads",
  207. "description": "Number of worker threads per report worker.",
  208. "schema": {
  209. "type": "int",
  210. "show_if": [
  211. [
  212. "enable_report_workers",
  213. "=",
  214. true
  215. ]
  216. ],
  217. "min": 1,
  218. "default": 8,
  219. "required": true
  220. }
  221. },
  222. {
  223. "variable": "native_num_workers",
  224. "label": "Native Worker Threads",
  225. "description": "Number of worker threads per native worker.",
  226. "schema": {
  227. "type": "int",
  228. "default": 8,
  229. "min": 1,
  230. "required": true
  231. }
  232. },
  233. {
  234. "variable": "mount_docker_socket",
  235. "label": "Mount Docker Socket",
  236. "description": "Mount the Docker socket to allow running Docker containers from within workers.</br>\nThis gives the workers access to the host Docker daemon.\n",
  237. "schema": {
  238. "type": "boolean",
  239. "default": false
  240. }
  241. },
  242. {
  243. "variable": "additional_envs",
  244. "label": "Additional Environment Variables",
  245. "schema": {
  246. "type": "list",
  247. "default": [],
  248. "items": [
  249. {
  250. "variable": "env",
  251. "label": "Environment Variable",
  252. "schema": {
  253. "type": "dict",
  254. "attrs": [
  255. {
  256. "variable": "name",
  257. "label": "Name",
  258. "schema": {
  259. "type": "string",
  260. "required": true
  261. }
  262. },
  263. {
  264. "variable": "value",
  265. "label": "Value",
  266. "schema": {
  267. "type": "string"
  268. }
  269. }
  270. ]
  271. }
  272. }
  273. ]
  274. }
  275. }
  276. ]
  277. }
  278. },
  279. {
  280. "variable": "network",
  281. "label": "",
  282. "group": "Network Configuration",
  283. "schema": {
  284. "type": "dict",
  285. "attrs": [
  286. {
  287. "variable": "web_port",
  288. "label": "WebUI Port",
  289. "schema": {
  290. "type": "dict",
  291. "attrs": [
  292. {
  293. "variable": "bind_mode",
  294. "label": "Port Bind Mode",
  295. "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",
  296. "schema": {
  297. "type": "string",
  298. "default": "published",
  299. "enum": [
  300. {
  301. "value": "published",
  302. "description": "Publish port on the host for external access"
  303. },
  304. {
  305. "value": "exposed",
  306. "description": "Expose port for inter-container communication"
  307. },
  308. {
  309. "value": "",
  310. "description": "None"
  311. }
  312. ]
  313. }
  314. },
  315. {
  316. "variable": "port_number",
  317. "label": "Port Number",
  318. "schema": {
  319. "type": "int",
  320. "default": 30155,
  321. "min": 1,
  322. "max": 65535,
  323. "required": true
  324. }
  325. },
  326. {
  327. "variable": "host_ips",
  328. "label": "Host IPs",
  329. "description": "IPs on the host to bind this port",
  330. "schema": {
  331. "type": "list",
  332. "show_if": [
  333. [
  334. "bind_mode",
  335. "=",
  336. "published"
  337. ]
  338. ],
  339. "default": [],
  340. "items": [
  341. {
  342. "variable": "host_ip",
  343. "label": "Host IP",
  344. "schema": {
  345. "type": "string",
  346. "required": true,
  347. "$ref": [
  348. "definitions/node_bind_ip"
  349. ]
  350. }
  351. }
  352. ]
  353. }
  354. }
  355. ]
  356. }
  357. },
  358. {
  359. "variable": "smtp_port",
  360. "label": "SMTP Port",
  361. "schema": {
  362. "type": "dict",
  363. "attrs": [
  364. {
  365. "variable": "bind_mode",
  366. "label": "Port Bind Mode",
  367. "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",
  368. "schema": {
  369. "type": "string",
  370. "default": "published",
  371. "enum": [
  372. {
  373. "value": "published",
  374. "description": "Publish port on the host for external access"
  375. },
  376. {
  377. "value": "exposed",
  378. "description": "Expose port for inter-container communication"
  379. },
  380. {
  381. "value": "",
  382. "description": "None"
  383. }
  384. ]
  385. }
  386. },
  387. {
  388. "variable": "port_number",
  389. "label": "Port Number",
  390. "schema": {
  391. "type": "int",
  392. "default": 30156,
  393. "min": 1,
  394. "max": 65535,
  395. "required": true
  396. }
  397. },
  398. {
  399. "variable": "host_ips",
  400. "label": "Host IPs",
  401. "description": "IPs on the host to bind this port",
  402. "schema": {
  403. "type": "list",
  404. "show_if": [
  405. [
  406. "bind_mode",
  407. "=",
  408. "published"
  409. ]
  410. ],
  411. "default": [],
  412. "items": [
  413. {
  414. "variable": "host_ip",
  415. "label": "Host IP",
  416. "schema": {
  417. "type": "string",
  418. "required": true,
  419. "$ref": [
  420. "definitions/node_bind_ip"
  421. ]
  422. }
  423. }
  424. ]
  425. }
  426. }
  427. ]
  428. }
  429. }
  430. ]
  431. }
  432. },
  433. {
  434. "variable": "storage",
  435. "label": "",
  436. "group": "Storage Configuration",
  437. "schema": {
  438. "type": "dict",
  439. "attrs": [
  440. {
  441. "variable": "postgres_data",
  442. "label": "PostgreSQL Data Storage",
  443. "description": "The path to store PostgreSQL data.",
  444. "schema": {
  445. "type": "dict",
  446. "attrs": [
  447. {
  448. "variable": "type",
  449. "label": "Type",
  450. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  451. "schema": {
  452. "type": "string",
  453. "required": true,
  454. "default": "ix_volume",
  455. "enum": [
  456. {
  457. "value": "host_path",
  458. "description": "Host Path (Path that already exists on the system)"
  459. },
  460. {
  461. "value": "ix_volume",
  462. "description": "ixVolume (Dataset created automatically by the system)"
  463. }
  464. ]
  465. }
  466. },
  467. {
  468. "variable": "ix_volume_config",
  469. "label": "ixVolume Configuration",
  470. "description": "The configuration for the ixVolume dataset.",
  471. "schema": {
  472. "type": "dict",
  473. "show_if": [
  474. [
  475. "type",
  476. "=",
  477. "ix_volume"
  478. ]
  479. ],
  480. "$ref": [
  481. "normalize/ix_volume"
  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": "dataset_name",
  495. "label": "Dataset Name",
  496. "description": "The name of the dataset to use for storage.",
  497. "schema": {
  498. "type": "string",
  499. "required": true,
  500. "hidden": true,
  501. "default": "postgres_data"
  502. }
  503. },
  504. {
  505. "variable": "acl_entries",
  506. "label": "ACL Configuration",
  507. "schema": {
  508. "type": "dict",
  509. "show_if": [
  510. [
  511. "acl_enable",
  512. "=",
  513. true
  514. ]
  515. ],
  516. "attrs": []
  517. }
  518. },
  519. {
  520. "variable": "auto_permissions",
  521. "label": "Automatic Permissions",
  522. "description": "Automatically set permissions for the host path.\nEnabling this will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
  523. "schema": {
  524. "type": "boolean",
  525. "default": false,
  526. "show_if": [
  527. [
  528. "acl_enable",
  529. "=",
  530. false
  531. ]
  532. ]
  533. }
  534. }
  535. ]
  536. }
  537. },
  538. {
  539. "variable": "host_path_config",
  540. "label": "Host Path Configuration",
  541. "schema": {
  542. "type": "dict",
  543. "show_if": [
  544. [
  545. "type",
  546. "=",
  547. "host_path"
  548. ]
  549. ],
  550. "attrs": [
  551. {
  552. "variable": "acl_enable",
  553. "label": "Enable ACL",
  554. "description": "Enable ACL for the storage.",
  555. "schema": {
  556. "type": "boolean",
  557. "default": false
  558. }
  559. },
  560. {
  561. "variable": "acl",
  562. "label": "ACL Configuration",
  563. "schema": {
  564. "type": "dict",
  565. "show_if": [
  566. [
  567. "acl_enable",
  568. "=",
  569. true
  570. ]
  571. ],
  572. "attrs": [],
  573. "$ref": [
  574. "normalize/acl"
  575. ]
  576. }
  577. },
  578. {
  579. "variable": "path",
  580. "label": "Host Path",
  581. "description": "The host path to use for storage.",
  582. "schema": {
  583. "type": "hostpath",
  584. "show_if": [
  585. [
  586. "acl_enable",
  587. "=",
  588. false
  589. ]
  590. ],
  591. "required": true
  592. }
  593. },
  594. {
  595. "variable": "auto_permissions",
  596. "label": "Automatic Permissions",
  597. "description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
  598. "schema": {
  599. "type": "boolean",
  600. "default": true,
  601. "show_if": [
  602. [
  603. "acl_enable",
  604. "=",
  605. false
  606. ]
  607. ]
  608. }
  609. }
  610. ]
  611. }
  612. }
  613. ]
  614. }
  615. },
  616. {
  617. "variable": "worker_cache",
  618. "label": "Worker Cache Storage",
  619. "description": "The path to store worker dependency cache.",
  620. "schema": {
  621. "type": "dict",
  622. "attrs": [
  623. {
  624. "variable": "type",
  625. "label": "Type",
  626. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  627. "schema": {
  628. "type": "string",
  629. "required": true,
  630. "default": "ix_volume",
  631. "enum": [
  632. {
  633. "value": "host_path",
  634. "description": "Host Path (Path that already exists on the system)"
  635. },
  636. {
  637. "value": "ix_volume",
  638. "description": "ixVolume (Dataset created automatically by the system)"
  639. }
  640. ]
  641. }
  642. },
  643. {
  644. "variable": "ix_volume_config",
  645. "label": "ixVolume Configuration",
  646. "description": "The configuration for the ixVolume dataset.",
  647. "schema": {
  648. "type": "dict",
  649. "show_if": [
  650. [
  651. "type",
  652. "=",
  653. "ix_volume"
  654. ]
  655. ],
  656. "$ref": [
  657. "normalize/ix_volume"
  658. ],
  659. "attrs": [
  660. {
  661. "variable": "acl_enable",
  662. "label": "Enable ACL",
  663. "description": "Enable ACL for the storage.",
  664. "schema": {
  665. "type": "boolean",
  666. "default": false
  667. }
  668. },
  669. {
  670. "variable": "dataset_name",
  671. "label": "Dataset Name",
  672. "description": "The name of the dataset to use for storage.",
  673. "schema": {
  674. "type": "string",
  675. "required": true,
  676. "hidden": true,
  677. "default": "worker_cache"
  678. }
  679. },
  680. {
  681. "variable": "acl_entries",
  682. "label": "ACL Configuration",
  683. "schema": {
  684. "type": "dict",
  685. "show_if": [
  686. [
  687. "acl_enable",
  688. "=",
  689. true
  690. ]
  691. ],
  692. "attrs": []
  693. }
  694. }
  695. ]
  696. }
  697. },
  698. {
  699. "variable": "host_path_config",
  700. "label": "Host Path Configuration",
  701. "schema": {
  702. "type": "dict",
  703. "show_if": [
  704. [
  705. "type",
  706. "=",
  707. "host_path"
  708. ]
  709. ],
  710. "attrs": [
  711. {
  712. "variable": "acl_enable",
  713. "label": "Enable ACL",
  714. "description": "Enable ACL for the storage.",
  715. "schema": {
  716. "type": "boolean",
  717. "default": false
  718. }
  719. },
  720. {
  721. "variable": "acl",
  722. "label": "ACL Configuration",
  723. "schema": {
  724. "type": "dict",
  725. "show_if": [
  726. [
  727. "acl_enable",
  728. "=",
  729. true
  730. ]
  731. ],
  732. "attrs": [],
  733. "$ref": [
  734. "normalize/acl"
  735. ]
  736. }
  737. },
  738. {
  739. "variable": "path",
  740. "label": "Host Path",
  741. "description": "The host path to use for storage.",
  742. "schema": {
  743. "type": "hostpath",
  744. "show_if": [
  745. [
  746. "acl_enable",
  747. "=",
  748. false
  749. ]
  750. ],
  751. "required": true
  752. }
  753. }
  754. ]
  755. }
  756. }
  757. ]
  758. }
  759. },
  760. {
  761. "variable": "worker_logs",
  762. "label": "Worker Logs Storage",
  763. "description": "The path to store worker logs.",
  764. "schema": {
  765. "type": "dict",
  766. "attrs": [
  767. {
  768. "variable": "type",
  769. "label": "Type",
  770. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  771. "schema": {
  772. "type": "string",
  773. "required": true,
  774. "default": "ix_volume",
  775. "enum": [
  776. {
  777. "value": "host_path",
  778. "description": "Host Path (Path that already exists on the system)"
  779. },
  780. {
  781. "value": "ix_volume",
  782. "description": "ixVolume (Dataset created automatically by the system)"
  783. }
  784. ]
  785. }
  786. },
  787. {
  788. "variable": "ix_volume_config",
  789. "label": "ixVolume Configuration",
  790. "description": "The configuration for the ixVolume dataset.",
  791. "schema": {
  792. "type": "dict",
  793. "show_if": [
  794. [
  795. "type",
  796. "=",
  797. "ix_volume"
  798. ]
  799. ],
  800. "$ref": [
  801. "normalize/ix_volume"
  802. ],
  803. "attrs": [
  804. {
  805. "variable": "acl_enable",
  806. "label": "Enable ACL",
  807. "description": "Enable ACL for the storage.",
  808. "schema": {
  809. "type": "boolean",
  810. "default": false
  811. }
  812. },
  813. {
  814. "variable": "dataset_name",
  815. "label": "Dataset Name",
  816. "description": "The name of the dataset to use for storage.",
  817. "schema": {
  818. "type": "string",
  819. "required": true,
  820. "hidden": true,
  821. "default": "worker_logs"
  822. }
  823. },
  824. {
  825. "variable": "acl_entries",
  826. "label": "ACL Configuration",
  827. "schema": {
  828. "type": "dict",
  829. "show_if": [
  830. [
  831. "acl_enable",
  832. "=",
  833. true
  834. ]
  835. ],
  836. "attrs": []
  837. }
  838. }
  839. ]
  840. }
  841. },
  842. {
  843. "variable": "host_path_config",
  844. "label": "Host Path Configuration",
  845. "schema": {
  846. "type": "dict",
  847. "show_if": [
  848. [
  849. "type",
  850. "=",
  851. "host_path"
  852. ]
  853. ],
  854. "attrs": [
  855. {
  856. "variable": "acl_enable",
  857. "label": "Enable ACL",
  858. "description": "Enable ACL for the storage.",
  859. "schema": {
  860. "type": "boolean",
  861. "default": false
  862. }
  863. },
  864. {
  865. "variable": "acl",
  866. "label": "ACL Configuration",
  867. "schema": {
  868. "type": "dict",
  869. "show_if": [
  870. [
  871. "acl_enable",
  872. "=",
  873. true
  874. ]
  875. ],
  876. "attrs": [],
  877. "$ref": [
  878. "normalize/acl"
  879. ]
  880. }
  881. },
  882. {
  883. "variable": "path",
  884. "label": "Host Path",
  885. "description": "The host path to use for storage.",
  886. "schema": {
  887. "type": "hostpath",
  888. "show_if": [
  889. [
  890. "acl_enable",
  891. "=",
  892. false
  893. ]
  894. ],
  895. "required": true
  896. }
  897. }
  898. ]
  899. }
  900. }
  901. ]
  902. }
  903. },
  904. {
  905. "variable": "lsp_cache",
  906. "label": "LSP Cache Storage",
  907. "description": "The path to store LSP cache data.",
  908. "schema": {
  909. "type": "dict",
  910. "attrs": [
  911. {
  912. "variable": "type",
  913. "label": "Type",
  914. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  915. "schema": {
  916. "type": "string",
  917. "required": true,
  918. "default": "ix_volume",
  919. "enum": [
  920. {
  921. "value": "host_path",
  922. "description": "Host Path (Path that already exists on the system)"
  923. },
  924. {
  925. "value": "ix_volume",
  926. "description": "ixVolume (Dataset created automatically by the system)"
  927. }
  928. ]
  929. }
  930. },
  931. {
  932. "variable": "ix_volume_config",
  933. "label": "ixVolume Configuration",
  934. "description": "The configuration for the ixVolume dataset.",
  935. "schema": {
  936. "type": "dict",
  937. "show_if": [
  938. [
  939. "type",
  940. "=",
  941. "ix_volume"
  942. ]
  943. ],
  944. "$ref": [
  945. "normalize/ix_volume"
  946. ],
  947. "attrs": [
  948. {
  949. "variable": "acl_enable",
  950. "label": "Enable ACL",
  951. "description": "Enable ACL for the storage.",
  952. "schema": {
  953. "type": "boolean",
  954. "default": false
  955. }
  956. },
  957. {
  958. "variable": "dataset_name",
  959. "label": "Dataset Name",
  960. "description": "The name of the dataset to use for storage.",
  961. "schema": {
  962. "type": "string",
  963. "required": true,
  964. "hidden": true,
  965. "default": "lsp_cache"
  966. }
  967. },
  968. {
  969. "variable": "acl_entries",
  970. "label": "ACL Configuration",
  971. "schema": {
  972. "type": "dict",
  973. "show_if": [
  974. [
  975. "acl_enable",
  976. "=",
  977. true
  978. ]
  979. ],
  980. "attrs": []
  981. }
  982. }
  983. ]
  984. }
  985. },
  986. {
  987. "variable": "host_path_config",
  988. "label": "Host Path Configuration",
  989. "schema": {
  990. "type": "dict",
  991. "show_if": [
  992. [
  993. "type",
  994. "=",
  995. "host_path"
  996. ]
  997. ],
  998. "attrs": [
  999. {
  1000. "variable": "acl_enable",
  1001. "label": "Enable ACL",
  1002. "description": "Enable ACL for the storage.",
  1003. "schema": {
  1004. "type": "boolean",
  1005. "default": false
  1006. }
  1007. },
  1008. {
  1009. "variable": "acl",
  1010. "label": "ACL Configuration",
  1011. "schema": {
  1012. "type": "dict",
  1013. "show_if": [
  1014. [
  1015. "acl_enable",
  1016. "=",
  1017. true
  1018. ]
  1019. ],
  1020. "attrs": [],
  1021. "$ref": [
  1022. "normalize/acl"
  1023. ]
  1024. }
  1025. },
  1026. {
  1027. "variable": "path",
  1028. "label": "Host Path",
  1029. "description": "The host path to use for storage.",
  1030. "schema": {
  1031. "type": "hostpath",
  1032. "show_if": [
  1033. [
  1034. "acl_enable",
  1035. "=",
  1036. false
  1037. ]
  1038. ],
  1039. "required": true
  1040. }
  1041. }
  1042. ]
  1043. }
  1044. }
  1045. ]
  1046. }
  1047. },
  1048. {
  1049. "variable": "caddy_data",
  1050. "label": "Caddy Data Storage",
  1051. "description": "The path to store Caddy data.",
  1052. "schema": {
  1053. "type": "dict",
  1054. "attrs": [
  1055. {
  1056. "variable": "type",
  1057. "label": "Type",
  1058. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  1059. "schema": {
  1060. "type": "string",
  1061. "required": true,
  1062. "default": "ix_volume",
  1063. "enum": [
  1064. {
  1065. "value": "host_path",
  1066. "description": "Host Path (Path that already exists on the system)"
  1067. },
  1068. {
  1069. "value": "ix_volume",
  1070. "description": "ixVolume (Dataset created automatically by the system)"
  1071. }
  1072. ]
  1073. }
  1074. },
  1075. {
  1076. "variable": "ix_volume_config",
  1077. "label": "ixVolume Configuration",
  1078. "description": "The configuration for the ixVolume dataset.",
  1079. "schema": {
  1080. "type": "dict",
  1081. "show_if": [
  1082. [
  1083. "type",
  1084. "=",
  1085. "ix_volume"
  1086. ]
  1087. ],
  1088. "$ref": [
  1089. "normalize/ix_volume"
  1090. ],
  1091. "attrs": [
  1092. {
  1093. "variable": "acl_enable",
  1094. "label": "Enable ACL",
  1095. "description": "Enable ACL for the storage.",
  1096. "schema": {
  1097. "type": "boolean",
  1098. "default": false
  1099. }
  1100. },
  1101. {
  1102. "variable": "dataset_name",
  1103. "label": "Dataset Name",
  1104. "description": "The name of the dataset to use for storage.",
  1105. "schema": {
  1106. "type": "string",
  1107. "required": true,
  1108. "hidden": true,
  1109. "default": "caddy_data"
  1110. }
  1111. },
  1112. {
  1113. "variable": "acl_entries",
  1114. "label": "ACL Configuration",
  1115. "schema": {
  1116. "type": "dict",
  1117. "show_if": [
  1118. [
  1119. "acl_enable",
  1120. "=",
  1121. true
  1122. ]
  1123. ],
  1124. "attrs": []
  1125. }
  1126. }
  1127. ]
  1128. }
  1129. },
  1130. {
  1131. "variable": "host_path_config",
  1132. "label": "Host Path Configuration",
  1133. "schema": {
  1134. "type": "dict",
  1135. "show_if": [
  1136. [
  1137. "type",
  1138. "=",
  1139. "host_path"
  1140. ]
  1141. ],
  1142. "attrs": [
  1143. {
  1144. "variable": "acl_enable",
  1145. "label": "Enable ACL",
  1146. "description": "Enable ACL for the storage.",
  1147. "schema": {
  1148. "type": "boolean",
  1149. "default": false
  1150. }
  1151. },
  1152. {
  1153. "variable": "acl",
  1154. "label": "ACL Configuration",
  1155. "schema": {
  1156. "type": "dict",
  1157. "show_if": [
  1158. [
  1159. "acl_enable",
  1160. "=",
  1161. true
  1162. ]
  1163. ],
  1164. "attrs": [],
  1165. "$ref": [
  1166. "normalize/acl"
  1167. ]
  1168. }
  1169. },
  1170. {
  1171. "variable": "path",
  1172. "label": "Host Path",
  1173. "description": "The host path to use for storage.",
  1174. "schema": {
  1175. "type": "hostpath",
  1176. "show_if": [
  1177. [
  1178. "acl_enable",
  1179. "=",
  1180. false
  1181. ]
  1182. ],
  1183. "required": true
  1184. }
  1185. }
  1186. ]
  1187. }
  1188. }
  1189. ]
  1190. }
  1191. },
  1192. {
  1193. "variable": "additional_storage",
  1194. "label": "Additional Storage",
  1195. "schema": {
  1196. "type": "list",
  1197. "default": [],
  1198. "items": [
  1199. {
  1200. "variable": "storageEntry",
  1201. "label": "Storage Entry",
  1202. "schema": {
  1203. "type": "dict",
  1204. "attrs": [
  1205. {
  1206. "variable": "type",
  1207. "label": "Type",
  1208. "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",
  1209. "schema": {
  1210. "type": "string",
  1211. "required": true,
  1212. "default": "ix_volume",
  1213. "enum": [
  1214. {
  1215. "value": "host_path",
  1216. "description": "Host Path (Path that already exists on the system)"
  1217. },
  1218. {
  1219. "value": "ix_volume",
  1220. "description": "ixVolume (Dataset created automatically by the system)"
  1221. },
  1222. {
  1223. "value": "cifs",
  1224. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  1225. }
  1226. ]
  1227. }
  1228. },
  1229. {
  1230. "variable": "read_only",
  1231. "label": "Read Only",
  1232. "description": "Mount the volume as read only.",
  1233. "schema": {
  1234. "type": "boolean",
  1235. "default": false
  1236. }
  1237. },
  1238. {
  1239. "variable": "mount_path",
  1240. "label": "Mount Path",
  1241. "description": "The path inside the container to mount the storage.",
  1242. "schema": {
  1243. "type": "path",
  1244. "required": true
  1245. }
  1246. },
  1247. {
  1248. "variable": "host_path_config",
  1249. "label": "Host Path Configuration",
  1250. "schema": {
  1251. "type": "dict",
  1252. "show_if": [
  1253. [
  1254. "type",
  1255. "=",
  1256. "host_path"
  1257. ]
  1258. ],
  1259. "attrs": [
  1260. {
  1261. "variable": "acl_enable",
  1262. "label": "Enable ACL",
  1263. "description": "Enable ACL for the storage.",
  1264. "schema": {
  1265. "type": "boolean",
  1266. "default": false
  1267. }
  1268. },
  1269. {
  1270. "variable": "acl",
  1271. "label": "ACL Configuration",
  1272. "schema": {
  1273. "type": "dict",
  1274. "show_if": [
  1275. [
  1276. "acl_enable",
  1277. "=",
  1278. true
  1279. ]
  1280. ],
  1281. "attrs": [],
  1282. "$ref": [
  1283. "normalize/acl"
  1284. ]
  1285. }
  1286. },
  1287. {
  1288. "variable": "path",
  1289. "label": "Host Path",
  1290. "description": "The host path to use for storage.",
  1291. "schema": {
  1292. "type": "hostpath",
  1293. "show_if": [
  1294. [
  1295. "acl_enable",
  1296. "=",
  1297. false
  1298. ]
  1299. ],
  1300. "required": true
  1301. }
  1302. }
  1303. ]
  1304. }
  1305. },
  1306. {
  1307. "variable": "ix_volume_config",
  1308. "label": "ixVolume Configuration",
  1309. "description": "The configuration for the ixVolume dataset.",
  1310. "schema": {
  1311. "type": "dict",
  1312. "show_if": [
  1313. [
  1314. "type",
  1315. "=",
  1316. "ix_volume"
  1317. ]
  1318. ],
  1319. "$ref": [
  1320. "normalize/ix_volume"
  1321. ],
  1322. "attrs": [
  1323. {
  1324. "variable": "acl_enable",
  1325. "label": "Enable ACL",
  1326. "description": "Enable ACL for the storage.",
  1327. "schema": {
  1328. "type": "boolean",
  1329. "default": false
  1330. }
  1331. },
  1332. {
  1333. "variable": "dataset_name",
  1334. "label": "Dataset Name",
  1335. "description": "The name of the dataset to use for storage.",
  1336. "schema": {
  1337. "type": "string",
  1338. "required": true,
  1339. "default": "storage_entry"
  1340. }
  1341. },
  1342. {
  1343. "variable": "acl_entries",
  1344. "label": "ACL Configuration",
  1345. "schema": {
  1346. "type": "dict",
  1347. "show_if": [
  1348. [
  1349. "acl_enable",
  1350. "=",
  1351. true
  1352. ]
  1353. ],
  1354. "attrs": [],
  1355. "$ref": [
  1356. "normalize/acl"
  1357. ]
  1358. }
  1359. }
  1360. ]
  1361. }
  1362. },
  1363. {
  1364. "variable": "cifs_config",
  1365. "label": "SMB Configuration",
  1366. "description": "The configuration for the SMB dataset.",
  1367. "schema": {
  1368. "type": "dict",
  1369. "show_if": [
  1370. [
  1371. "type",
  1372. "=",
  1373. "cifs"
  1374. ]
  1375. ],
  1376. "attrs": [
  1377. {
  1378. "variable": "server",
  1379. "label": "Server",
  1380. "description": "The server to mount the SMB share.",
  1381. "schema": {
  1382. "type": "string",
  1383. "required": true
  1384. }
  1385. },
  1386. {
  1387. "variable": "path",
  1388. "label": "Path",
  1389. "description": "The path to mount the SMB share.",
  1390. "schema": {
  1391. "type": "string",
  1392. "required": true
  1393. }
  1394. },
  1395. {
  1396. "variable": "username",
  1397. "label": "Username",
  1398. "description": "The username to use for the SMB share.",
  1399. "schema": {
  1400. "type": "string",
  1401. "required": true
  1402. }
  1403. },
  1404. {
  1405. "variable": "password",
  1406. "label": "Password",
  1407. "description": "The password to use for the SMB share.",
  1408. "schema": {
  1409. "type": "string",
  1410. "required": true,
  1411. "private": true
  1412. }
  1413. },
  1414. {
  1415. "variable": "domain",
  1416. "label": "Domain",
  1417. "description": "The domain to use for the SMB share.",
  1418. "schema": {
  1419. "type": "string"
  1420. }
  1421. }
  1422. ]
  1423. }
  1424. }
  1425. ]
  1426. }
  1427. }
  1428. ]
  1429. }
  1430. }
  1431. ]
  1432. }
  1433. },
  1434. {
  1435. "variable": "labels",
  1436. "label": "",
  1437. "group": "Labels Configuration",
  1438. "schema": {
  1439. "type": "list",
  1440. "default": [],
  1441. "items": [
  1442. {
  1443. "variable": "label",
  1444. "label": "Label",
  1445. "schema": {
  1446. "type": "dict",
  1447. "attrs": [
  1448. {
  1449. "variable": "key",
  1450. "label": "Key",
  1451. "schema": {
  1452. "type": "string",
  1453. "required": true
  1454. }
  1455. },
  1456. {
  1457. "variable": "value",
  1458. "label": "Value",
  1459. "schema": {
  1460. "type": "string",
  1461. "required": true
  1462. }
  1463. },
  1464. {
  1465. "variable": "containers",
  1466. "label": "Containers",
  1467. "description": "Containers where the label should be applied",
  1468. "schema": {
  1469. "type": "list",
  1470. "items": [
  1471. {
  1472. "variable": "container",
  1473. "label": "Container",
  1474. "schema": {
  1475. "type": "string",
  1476. "required": true,
  1477. "enum": [
  1478. {
  1479. "value": "server",
  1480. "description": "server"
  1481. },
  1482. {
  1483. "value": "worker",
  1484. "description": "worker"
  1485. },
  1486. {
  1487. "value": "worker-reports",
  1488. "description": "worker-reports"
  1489. },
  1490. {
  1491. "value": "worker-native",
  1492. "description": "worker-native"
  1493. },
  1494. {
  1495. "value": "lsp",
  1496. "description": "lsp"
  1497. },
  1498. {
  1499. "value": "caddy",
  1500. "description": "caddy"
  1501. },
  1502. {
  1503. "value": "postgres",
  1504. "description": "postgres"
  1505. }
  1506. ]
  1507. }
  1508. }
  1509. ]
  1510. }
  1511. }
  1512. ]
  1513. }
  1514. }
  1515. ]
  1516. }
  1517. },
  1518. {
  1519. "variable": "resources",
  1520. "label": "",
  1521. "group": "Resources Configuration",
  1522. "schema": {
  1523. "type": "dict",
  1524. "attrs": [
  1525. {
  1526. "variable": "limits",
  1527. "label": "Limits",
  1528. "schema": {
  1529. "type": "dict",
  1530. "attrs": [
  1531. {
  1532. "variable": "cpus",
  1533. "label": "CPUs",
  1534. "description": "CPUs limit for Windmill.",
  1535. "schema": {
  1536. "type": "int",
  1537. "default": 2,
  1538. "required": true
  1539. }
  1540. },
  1541. {
  1542. "variable": "memory",
  1543. "label": "Memory (in MB)",
  1544. "description": "Memory limit for Windmill.",
  1545. "schema": {
  1546. "type": "int",
  1547. "default": 4096,
  1548. "required": true
  1549. }
  1550. }
  1551. ]
  1552. }
  1553. }
  1554. ]
  1555. }
  1556. }
  1557. ]
  1558. },
  1559. "readme": "<h1>Windmill</h1> <p><a href=\"https://www.windmill.dev/\">Windmill</a> is an open-source developer platform and workflow engine. It turns scripts into auto-generated UIs, APIs, and cron jobs, allowing you to compose them as workflows or data pipelines to build complex, data-intensive apps with ease.</p>",
  1560. "changelog": null,
  1561. "chart_metadata": {
  1562. "app_version": "1.538.0",
  1563. "capabilities": [
  1564. {
  1565. "description": "Worker Reports is able to change file ownership arbitrarily",
  1566. "name": "CHOWN"
  1567. },
  1568. {
  1569. "description": "Worker Reports is able to bypass file permission checks",
  1570. "name": "DAC_OVERRIDE"
  1571. },
  1572. {
  1573. "description": "Worker Reports is able to bypass permission checks for file operations",
  1574. "name": "FOWNER"
  1575. },
  1576. {
  1577. "description": "Caddy is able to bind to privileged ports (< 1024)",
  1578. "name": "NET_BIND_SERVICE"
  1579. },
  1580. {
  1581. "description": "Worker Reports is able to change group ID of processes",
  1582. "name": "SETGID"
  1583. },
  1584. {
  1585. "description": "Worker Reports is able to change user ID of processes",
  1586. "name": "SETUID"
  1587. }
  1588. ],
  1589. "categories": [
  1590. "productivity"
  1591. ],
  1592. "changelog_url": "https://github.com/windmill-labs/windmill/releases",
  1593. "date_added": "2025-05-01",
  1594. "description": "Open-source developer platform and workflow engine",
  1595. "home": "https://www.windmill.dev/",
  1596. "host_mounts": [],
  1597. "icon": "https://media.sys.truenas.net/apps/windmill/icons/icon.svg",
  1598. "keywords": [
  1599. "workflows",
  1600. "automation",
  1601. "scripts",
  1602. "developer"
  1603. ],
  1604. "lib_version": "2.1.49",
  1605. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1606. "maintainers": [
  1607. {
  1608. "email": "dev@ixsystems.com",
  1609. "name": "truenas",
  1610. "url": "https://www.truenas.com/"
  1611. }
  1612. ],
  1613. "name": "windmill",
  1614. "run_as_context": [
  1615. {
  1616. "description": "Windmill runs as non-root user.",
  1617. "gid": 1000,
  1618. "group_name": "windmill",
  1619. "uid": 1000,
  1620. "user_name": "windmill"
  1621. },
  1622. {
  1623. "description": "Windmill LSP runs as non-root user.",
  1624. "gid": 1000,
  1625. "group_name": "windmill",
  1626. "uid": 1000,
  1627. "user_name": "windmill"
  1628. },
  1629. {
  1630. "description": "Windmill Worker runs as non-root user.",
  1631. "gid": 1000,
  1632. "group_name": "windmill",
  1633. "uid": 1000,
  1634. "user_name": "windmill"
  1635. },
  1636. {
  1637. "description": "Windmill Native Worker runs as non-root user.",
  1638. "gid": 1000,
  1639. "group_name": "windmill",
  1640. "uid": 1000,
  1641. "user_name": "windmill"
  1642. },
  1643. {
  1644. "description": "Windmill Reports Worker runs as root user.",
  1645. "gid": 0,
  1646. "group_name": "root",
  1647. "uid": 0,
  1648. "user_name": "root"
  1649. },
  1650. {
  1651. "description": "Caddy runs as non-root user",
  1652. "gid": 1000,
  1653. "group_name": "caddy",
  1654. "uid": 1000,
  1655. "user_name": "caddy"
  1656. },
  1657. {
  1658. "description": "Postgres runs as non-root user.",
  1659. "gid": 999,
  1660. "group_name": "postgres",
  1661. "uid": 999,
  1662. "user_name": "postgres"
  1663. }
  1664. ],
  1665. "screenshots": [],
  1666. "sources": [
  1667. "https://github.com/windmill-labs/windmill",
  1668. "https://www.windmill.dev/"
  1669. ],
  1670. "title": "Windmill",
  1671. "train": "community",
  1672. "version": "1.0.69"
  1673. }
  1674. }
  1675. }