app_versions.json 67 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101
  1. {
  2. "1.2.16": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/penpot/1.2.16",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "2.9.0_1.2.16",
  10. "version": "1.2.16",
  11. "app_metadata": {
  12. "annotations": {
  13. "min_scale_version": "24.10.2.2"
  14. },
  15. "app_version": "2.9.0",
  16. "capabilities": [],
  17. "categories": [
  18. "productivity"
  19. ],
  20. "changelog_url": "https://github.com/penpot/penpot/blob/main/CHANGES.md",
  21. "date_added": "2024-10-25",
  22. "description": "Penpot - The open-source design tool for design and code collaboration",
  23. "home": "https://penpot.app/",
  24. "host_mounts": [],
  25. "icon": "https://media.sys.truenas.net/apps/penpot/icons/icon.svg",
  26. "keywords": [
  27. "design"
  28. ],
  29. "lib_version": "2.1.49",
  30. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  31. "maintainers": [
  32. {
  33. "email": "dev@ixsystems.com",
  34. "name": "truenas",
  35. "url": "https://www.truenas.com/"
  36. }
  37. ],
  38. "name": "penpot",
  39. "run_as_context": [
  40. {
  41. "description": "Penpot runs as non-root user.",
  42. "gid": 1001,
  43. "group_name": "penpot",
  44. "uid": 1001,
  45. "user_name": "penpot"
  46. },
  47. {
  48. "description": "Postgres runs as non-root user.",
  49. "gid": 999,
  50. "group_name": "postgres",
  51. "uid": 999,
  52. "user_name": "postgres"
  53. },
  54. {
  55. "description": "Redis runs as any non-root user.",
  56. "gid": 568,
  57. "group_name": "redis",
  58. "uid": 568,
  59. "user_name": "redis"
  60. }
  61. ],
  62. "screenshots": [
  63. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot1.webp",
  64. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot2.webp",
  65. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot3.webp",
  66. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot4.webp",
  67. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot5.webp",
  68. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot6.webp"
  69. ],
  70. "sources": [
  71. "https://github.com/penpot/penpot"
  72. ],
  73. "title": "Penpot",
  74. "train": "community",
  75. "version": "1.2.16"
  76. },
  77. "schema": {
  78. "groups": [
  79. {
  80. "name": "Penpot Configuration",
  81. "description": "Configure Penpot"
  82. },
  83. {
  84. "name": "Network Configuration",
  85. "description": "Configure Network for Penpot"
  86. },
  87. {
  88. "name": "Storage Configuration",
  89. "description": "Configure Storage for Penpot"
  90. },
  91. {
  92. "name": "Labels Configuration",
  93. "description": "Configure Labels for Penpot"
  94. },
  95. {
  96. "name": "Resources Configuration",
  97. "description": "Configure Resources for Penpot"
  98. }
  99. ],
  100. "questions": [
  101. {
  102. "variable": "penpot",
  103. "label": "",
  104. "group": "Penpot Configuration",
  105. "schema": {
  106. "type": "dict",
  107. "attrs": [
  108. {
  109. "variable": "postgres_image_selector",
  110. "label": "Postgres Image (CAUTION)",
  111. "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",
  112. "schema": {
  113. "type": "string",
  114. "default": "postgres_17_image",
  115. "required": true,
  116. "enum": [
  117. {
  118. "value": "postgres_15_image",
  119. "description": "Postgres 15"
  120. },
  121. {
  122. "value": "postgres_17_image",
  123. "description": "Postgres 17"
  124. }
  125. ]
  126. }
  127. },
  128. {
  129. "variable": "public_uri",
  130. "label": "Public URI",
  131. "description": "The public URI for Penpot.",
  132. "schema": {
  133. "type": "string",
  134. "default": "",
  135. "required": true
  136. }
  137. },
  138. {
  139. "variable": "secret_key",
  140. "label": "Secret Key",
  141. "description": "The secret key for Penpot.",
  142. "schema": {
  143. "type": "string",
  144. "default": "change-me",
  145. "private": true,
  146. "required": true
  147. }
  148. },
  149. {
  150. "variable": "db_password",
  151. "label": "Database Password",
  152. "description": "The password for Penpot.",
  153. "schema": {
  154. "type": "string",
  155. "default": "",
  156. "private": true,
  157. "required": true
  158. }
  159. },
  160. {
  161. "variable": "redis_password",
  162. "label": "Redis Password",
  163. "description": "The password for Penpot.",
  164. "schema": {
  165. "type": "string",
  166. "default": "",
  167. "private": true,
  168. "required": true
  169. }
  170. },
  171. {
  172. "variable": "flags",
  173. "label": "Flags",
  174. "description": "Configure flags for Penpot.</br>\nThe defaults are just enough for getting started and are not recommended for production.</br>\nSee https://help.penpot.app/technical-guide/configuration\n",
  175. "schema": {
  176. "type": "list",
  177. "default": [
  178. {
  179. "enable": true,
  180. "name": "prepl-server"
  181. },
  182. {
  183. "enable": true,
  184. "name": "login-with-password"
  185. },
  186. {
  187. "enable": true,
  188. "name": "registration"
  189. },
  190. {
  191. "enable": true,
  192. "name": "insecure-register"
  193. },
  194. {
  195. "enable": true,
  196. "name": "smtp"
  197. },
  198. {
  199. "enable": true,
  200. "name": "log-emails"
  201. },
  202. {
  203. "enable": false,
  204. "name": "email-verification"
  205. },
  206. {
  207. "enable": false,
  208. "name": "secure-session-cookies"
  209. }
  210. ],
  211. "items": [
  212. {
  213. "variable": "flag",
  214. "label": "Flag",
  215. "schema": {
  216. "type": "dict",
  217. "attrs": [
  218. {
  219. "variable": "enable",
  220. "label": "Enable or Disable the Flag",
  221. "description": "Check to 'enable' or uncheck to 'disable' the flag",
  222. "schema": {
  223. "type": "boolean",
  224. "default": true
  225. }
  226. },
  227. {
  228. "variable": "name",
  229. "label": "Name",
  230. "description": "The name of the flag. Without the 'enabled-' or 'disabled-' prefix </br>\neg. 'demo-users' or 'registration'\n",
  231. "schema": {
  232. "type": "string",
  233. "required": true,
  234. "default": ""
  235. }
  236. }
  237. ]
  238. }
  239. }
  240. ]
  241. }
  242. },
  243. {
  244. "variable": "additional_envs",
  245. "label": "Additional Environment Variables",
  246. "schema": {
  247. "type": "list",
  248. "default": [],
  249. "items": [
  250. {
  251. "variable": "env",
  252. "label": "Environment Variable",
  253. "schema": {
  254. "type": "dict",
  255. "attrs": [
  256. {
  257. "variable": "name",
  258. "label": "Name",
  259. "schema": {
  260. "type": "string",
  261. "required": true
  262. }
  263. },
  264. {
  265. "variable": "value",
  266. "label": "Value",
  267. "schema": {
  268. "type": "string"
  269. }
  270. }
  271. ]
  272. }
  273. }
  274. ]
  275. }
  276. }
  277. ]
  278. }
  279. },
  280. {
  281. "variable": "network",
  282. "label": "",
  283. "group": "Network Configuration",
  284. "schema": {
  285. "type": "dict",
  286. "attrs": [
  287. {
  288. "variable": "web_port",
  289. "label": "WebUI Port",
  290. "schema": {
  291. "type": "dict",
  292. "attrs": [
  293. {
  294. "variable": "bind_mode",
  295. "label": "Port Bind Mode",
  296. "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",
  297. "schema": {
  298. "type": "string",
  299. "default": "published",
  300. "enum": [
  301. {
  302. "value": "published",
  303. "description": "Publish port on the host for external access"
  304. },
  305. {
  306. "value": "exposed",
  307. "description": "Expose port for inter-container communication"
  308. },
  309. {
  310. "value": "",
  311. "description": "None"
  312. }
  313. ]
  314. }
  315. },
  316. {
  317. "variable": "port_number",
  318. "label": "Port Number",
  319. "schema": {
  320. "type": "int",
  321. "default": 31027,
  322. "min": 1,
  323. "max": 65535,
  324. "required": true
  325. }
  326. },
  327. {
  328. "variable": "host_ips",
  329. "label": "Host IPs",
  330. "description": "IPs on the host to bind this port",
  331. "schema": {
  332. "type": "list",
  333. "show_if": [
  334. [
  335. "bind_mode",
  336. "=",
  337. "published"
  338. ]
  339. ],
  340. "default": [],
  341. "items": [
  342. {
  343. "variable": "host_ip",
  344. "label": "Host IP",
  345. "schema": {
  346. "type": "string",
  347. "required": true,
  348. "$ref": [
  349. "definitions/node_bind_ip"
  350. ]
  351. }
  352. }
  353. ]
  354. }
  355. }
  356. ]
  357. }
  358. }
  359. ]
  360. }
  361. },
  362. {
  363. "variable": "storage",
  364. "label": "",
  365. "group": "Storage Configuration",
  366. "schema": {
  367. "type": "dict",
  368. "attrs": [
  369. {
  370. "variable": "assets",
  371. "label": "Penpot Assets Storage",
  372. "description": "The path to store Penpot Assets.",
  373. "schema": {
  374. "type": "dict",
  375. "attrs": [
  376. {
  377. "variable": "type",
  378. "label": "Type",
  379. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  380. "schema": {
  381. "type": "string",
  382. "required": true,
  383. "default": "ix_volume",
  384. "enum": [
  385. {
  386. "value": "host_path",
  387. "description": "Host Path (Path that already exists on the system)"
  388. },
  389. {
  390. "value": "ix_volume",
  391. "description": "ixVolume (Dataset created automatically by the system)"
  392. }
  393. ]
  394. }
  395. },
  396. {
  397. "variable": "ix_volume_config",
  398. "label": "ixVolume Configuration",
  399. "description": "The configuration for the ixVolume dataset.",
  400. "schema": {
  401. "type": "dict",
  402. "show_if": [
  403. [
  404. "type",
  405. "=",
  406. "ix_volume"
  407. ]
  408. ],
  409. "$ref": [
  410. "normalize/ix_volume"
  411. ],
  412. "attrs": [
  413. {
  414. "variable": "acl_enable",
  415. "label": "Enable ACL",
  416. "description": "Enable ACL for the storage.",
  417. "schema": {
  418. "type": "boolean",
  419. "default": false
  420. }
  421. },
  422. {
  423. "variable": "dataset_name",
  424. "label": "Dataset Name",
  425. "description": "The name of the dataset to use for storage.",
  426. "schema": {
  427. "type": "string",
  428. "required": true,
  429. "hidden": true,
  430. "default": "assets"
  431. }
  432. },
  433. {
  434. "variable": "acl_entries",
  435. "label": "ACL Configuration",
  436. "schema": {
  437. "type": "dict",
  438. "show_if": [
  439. [
  440. "acl_enable",
  441. "=",
  442. true
  443. ]
  444. ],
  445. "attrs": []
  446. }
  447. }
  448. ]
  449. }
  450. },
  451. {
  452. "variable": "host_path_config",
  453. "label": "Host Path Configuration",
  454. "schema": {
  455. "type": "dict",
  456. "show_if": [
  457. [
  458. "type",
  459. "=",
  460. "host_path"
  461. ]
  462. ],
  463. "attrs": [
  464. {
  465. "variable": "acl_enable",
  466. "label": "Enable ACL",
  467. "description": "Enable ACL for the storage.",
  468. "schema": {
  469. "type": "boolean",
  470. "default": false
  471. }
  472. },
  473. {
  474. "variable": "acl",
  475. "label": "ACL Configuration",
  476. "schema": {
  477. "type": "dict",
  478. "show_if": [
  479. [
  480. "acl_enable",
  481. "=",
  482. true
  483. ]
  484. ],
  485. "attrs": [],
  486. "$ref": [
  487. "normalize/acl"
  488. ]
  489. }
  490. },
  491. {
  492. "variable": "path",
  493. "label": "Host Path",
  494. "description": "The host path to use for storage.",
  495. "schema": {
  496. "type": "hostpath",
  497. "show_if": [
  498. [
  499. "acl_enable",
  500. "=",
  501. false
  502. ]
  503. ],
  504. "required": true
  505. }
  506. }
  507. ]
  508. }
  509. }
  510. ]
  511. }
  512. },
  513. {
  514. "variable": "postgres_data",
  515. "label": "Penpot Postgres Data Storage",
  516. "description": "The path to store Penpot Postgres Data.",
  517. "schema": {
  518. "type": "dict",
  519. "attrs": [
  520. {
  521. "variable": "type",
  522. "label": "Type",
  523. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  524. "schema": {
  525. "type": "string",
  526. "required": true,
  527. "default": "ix_volume",
  528. "enum": [
  529. {
  530. "value": "host_path",
  531. "description": "Host Path (Path that already exists on the system)"
  532. },
  533. {
  534. "value": "ix_volume",
  535. "description": "ixVolume (Dataset created automatically by the system)"
  536. }
  537. ]
  538. }
  539. },
  540. {
  541. "variable": "ix_volume_config",
  542. "label": "ixVolume Configuration",
  543. "description": "The configuration for the ixVolume dataset.",
  544. "schema": {
  545. "type": "dict",
  546. "show_if": [
  547. [
  548. "type",
  549. "=",
  550. "ix_volume"
  551. ]
  552. ],
  553. "$ref": [
  554. "normalize/ix_volume"
  555. ],
  556. "attrs": [
  557. {
  558. "variable": "acl_enable",
  559. "label": "Enable ACL",
  560. "description": "Enable ACL for the storage.",
  561. "schema": {
  562. "type": "boolean",
  563. "default": false
  564. }
  565. },
  566. {
  567. "variable": "dataset_name",
  568. "label": "Dataset Name",
  569. "description": "The name of the dataset to use for storage.",
  570. "schema": {
  571. "type": "string",
  572. "required": true,
  573. "hidden": true,
  574. "default": "postgres_data"
  575. }
  576. },
  577. {
  578. "variable": "acl_entries",
  579. "label": "ACL Configuration",
  580. "schema": {
  581. "type": "dict",
  582. "show_if": [
  583. [
  584. "acl_enable",
  585. "=",
  586. true
  587. ]
  588. ],
  589. "attrs": []
  590. }
  591. }
  592. ]
  593. }
  594. },
  595. {
  596. "variable": "host_path_config",
  597. "label": "Host Path Configuration",
  598. "schema": {
  599. "type": "dict",
  600. "show_if": [
  601. [
  602. "type",
  603. "=",
  604. "host_path"
  605. ]
  606. ],
  607. "attrs": [
  608. {
  609. "variable": "acl_enable",
  610. "label": "Enable ACL",
  611. "description": "Enable ACL for the storage.",
  612. "schema": {
  613. "type": "boolean",
  614. "default": false
  615. }
  616. },
  617. {
  618. "variable": "acl",
  619. "label": "ACL Configuration",
  620. "schema": {
  621. "type": "dict",
  622. "show_if": [
  623. [
  624. "acl_enable",
  625. "=",
  626. true
  627. ]
  628. ],
  629. "attrs": [],
  630. "$ref": [
  631. "normalize/acl"
  632. ]
  633. }
  634. },
  635. {
  636. "variable": "path",
  637. "label": "Host Path",
  638. "description": "The host path to use for storage.",
  639. "schema": {
  640. "type": "hostpath",
  641. "show_if": [
  642. [
  643. "acl_enable",
  644. "=",
  645. false
  646. ]
  647. ],
  648. "required": true
  649. }
  650. },
  651. {
  652. "variable": "auto_permissions",
  653. "label": "Automatic Permissions",
  654. "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",
  655. "schema": {
  656. "type": "boolean",
  657. "default": false,
  658. "show_if": [
  659. [
  660. "acl_enable",
  661. "=",
  662. false
  663. ]
  664. ]
  665. }
  666. }
  667. ]
  668. }
  669. }
  670. ]
  671. }
  672. },
  673. {
  674. "variable": "additional_storage",
  675. "label": "Additional Storage",
  676. "schema": {
  677. "type": "list",
  678. "default": [],
  679. "items": [
  680. {
  681. "variable": "storageEntry",
  682. "label": "Storage Entry",
  683. "schema": {
  684. "type": "dict",
  685. "attrs": [
  686. {
  687. "variable": "type",
  688. "label": "Type",
  689. "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",
  690. "schema": {
  691. "type": "string",
  692. "required": true,
  693. "default": "ix_volume",
  694. "enum": [
  695. {
  696. "value": "host_path",
  697. "description": "Host Path (Path that already exists on the system)"
  698. },
  699. {
  700. "value": "ix_volume",
  701. "description": "ixVolume (Dataset created automatically by the system)"
  702. },
  703. {
  704. "value": "cifs",
  705. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  706. }
  707. ]
  708. }
  709. },
  710. {
  711. "variable": "read_only",
  712. "label": "Read Only",
  713. "description": "Mount the volume as read only.",
  714. "schema": {
  715. "type": "boolean",
  716. "default": false
  717. }
  718. },
  719. {
  720. "variable": "mount_path",
  721. "label": "Mount Path",
  722. "description": "The path inside the container to mount the storage.",
  723. "schema": {
  724. "type": "path",
  725. "required": true
  726. }
  727. },
  728. {
  729. "variable": "host_path_config",
  730. "label": "Host Path Configuration",
  731. "schema": {
  732. "type": "dict",
  733. "show_if": [
  734. [
  735. "type",
  736. "=",
  737. "host_path"
  738. ]
  739. ],
  740. "attrs": [
  741. {
  742. "variable": "acl_enable",
  743. "label": "Enable ACL",
  744. "description": "Enable ACL for the storage.",
  745. "schema": {
  746. "type": "boolean",
  747. "default": false
  748. }
  749. },
  750. {
  751. "variable": "acl",
  752. "label": "ACL Configuration",
  753. "schema": {
  754. "type": "dict",
  755. "show_if": [
  756. [
  757. "acl_enable",
  758. "=",
  759. true
  760. ]
  761. ],
  762. "attrs": [],
  763. "$ref": [
  764. "normalize/acl"
  765. ]
  766. }
  767. },
  768. {
  769. "variable": "path",
  770. "label": "Host Path",
  771. "description": "The host path to use for storage.",
  772. "schema": {
  773. "type": "hostpath",
  774. "show_if": [
  775. [
  776. "acl_enable",
  777. "=",
  778. false
  779. ]
  780. ],
  781. "required": true
  782. }
  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. "default": "storage_entry"
  821. }
  822. },
  823. {
  824. "variable": "acl_entries",
  825. "label": "ACL Configuration",
  826. "schema": {
  827. "type": "dict",
  828. "show_if": [
  829. [
  830. "acl_enable",
  831. "=",
  832. true
  833. ]
  834. ],
  835. "attrs": [],
  836. "$ref": [
  837. "normalize/acl"
  838. ]
  839. }
  840. }
  841. ]
  842. }
  843. },
  844. {
  845. "variable": "cifs_config",
  846. "label": "SMB Configuration",
  847. "description": "The configuration for the SMB dataset.",
  848. "schema": {
  849. "type": "dict",
  850. "show_if": [
  851. [
  852. "type",
  853. "=",
  854. "cifs"
  855. ]
  856. ],
  857. "attrs": [
  858. {
  859. "variable": "server",
  860. "label": "Server",
  861. "description": "The server to mount the SMB share.",
  862. "schema": {
  863. "type": "string",
  864. "required": true
  865. }
  866. },
  867. {
  868. "variable": "path",
  869. "label": "Path",
  870. "description": "The path to mount the SMB share.",
  871. "schema": {
  872. "type": "string",
  873. "required": true
  874. }
  875. },
  876. {
  877. "variable": "username",
  878. "label": "Username",
  879. "description": "The username to use for the SMB share.",
  880. "schema": {
  881. "type": "string",
  882. "required": true
  883. }
  884. },
  885. {
  886. "variable": "password",
  887. "label": "Password",
  888. "description": "The password to use for the SMB share.",
  889. "schema": {
  890. "type": "string",
  891. "required": true,
  892. "private": true
  893. }
  894. },
  895. {
  896. "variable": "domain",
  897. "label": "Domain",
  898. "description": "The domain to use for the SMB share.",
  899. "schema": {
  900. "type": "string"
  901. }
  902. }
  903. ]
  904. }
  905. }
  906. ]
  907. }
  908. }
  909. ]
  910. }
  911. }
  912. ]
  913. }
  914. },
  915. {
  916. "variable": "labels",
  917. "label": "",
  918. "group": "Labels Configuration",
  919. "schema": {
  920. "type": "list",
  921. "default": [],
  922. "items": [
  923. {
  924. "variable": "label",
  925. "label": "Label",
  926. "schema": {
  927. "type": "dict",
  928. "attrs": [
  929. {
  930. "variable": "key",
  931. "label": "Key",
  932. "schema": {
  933. "type": "string",
  934. "required": true
  935. }
  936. },
  937. {
  938. "variable": "value",
  939. "label": "Value",
  940. "schema": {
  941. "type": "string",
  942. "required": true
  943. }
  944. },
  945. {
  946. "variable": "containers",
  947. "label": "Containers",
  948. "description": "Containers where the label should be applied",
  949. "schema": {
  950. "type": "list",
  951. "items": [
  952. {
  953. "variable": "container",
  954. "label": "Container",
  955. "schema": {
  956. "type": "string",
  957. "required": true,
  958. "enum": [
  959. {
  960. "value": "penpot-backend",
  961. "description": "penpot-backend"
  962. },
  963. {
  964. "value": "penpot-frontend",
  965. "description": "penpot-frontend"
  966. },
  967. {
  968. "value": "penpot-exporter",
  969. "description": "penpot-exporter"
  970. },
  971. {
  972. "value": "postgres",
  973. "description": "postgres"
  974. },
  975. {
  976. "value": "redis",
  977. "description": "redis"
  978. }
  979. ]
  980. }
  981. }
  982. ]
  983. }
  984. }
  985. ]
  986. }
  987. }
  988. ]
  989. }
  990. },
  991. {
  992. "variable": "resources",
  993. "label": "",
  994. "group": "Resources Configuration",
  995. "schema": {
  996. "type": "dict",
  997. "attrs": [
  998. {
  999. "variable": "limits",
  1000. "label": "Limits",
  1001. "schema": {
  1002. "type": "dict",
  1003. "attrs": [
  1004. {
  1005. "variable": "cpus",
  1006. "label": "CPUs",
  1007. "description": "CPUs limit for Penpot.",
  1008. "schema": {
  1009. "type": "int",
  1010. "default": 2,
  1011. "required": true
  1012. }
  1013. },
  1014. {
  1015. "variable": "memory",
  1016. "label": "Memory (in MB)",
  1017. "description": "Memory limit for Penpot.",
  1018. "schema": {
  1019. "type": "int",
  1020. "default": 4096,
  1021. "required": true
  1022. }
  1023. }
  1024. ]
  1025. }
  1026. }
  1027. ]
  1028. }
  1029. }
  1030. ]
  1031. },
  1032. "readme": "<h1>Penpot</h1> <p><a href=\"https://penpot.app/\">Penpot</a> - The open-source design tool for design and code collaboration</p> <p>Penpot is the first open-source design tool for design and code collaboration. Designers can create stunning designs, interactive prototypes, design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast. And all of this with no handoff drama.</p>",
  1033. "changelog": null,
  1034. "chart_metadata": {
  1035. "annotations": {
  1036. "min_scale_version": "24.10.2.2"
  1037. },
  1038. "app_version": "2.9.0",
  1039. "capabilities": [],
  1040. "categories": [
  1041. "productivity"
  1042. ],
  1043. "changelog_url": "https://github.com/penpot/penpot/blob/main/CHANGES.md",
  1044. "date_added": "2024-10-25",
  1045. "description": "Penpot - The open-source design tool for design and code collaboration",
  1046. "home": "https://penpot.app/",
  1047. "host_mounts": [],
  1048. "icon": "https://media.sys.truenas.net/apps/penpot/icons/icon.svg",
  1049. "keywords": [
  1050. "design"
  1051. ],
  1052. "lib_version": "2.1.49",
  1053. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1054. "maintainers": [
  1055. {
  1056. "email": "dev@ixsystems.com",
  1057. "name": "truenas",
  1058. "url": "https://www.truenas.com/"
  1059. }
  1060. ],
  1061. "name": "penpot",
  1062. "run_as_context": [
  1063. {
  1064. "description": "Penpot runs as non-root user.",
  1065. "gid": 1001,
  1066. "group_name": "penpot",
  1067. "uid": 1001,
  1068. "user_name": "penpot"
  1069. },
  1070. {
  1071. "description": "Postgres runs as non-root user.",
  1072. "gid": 999,
  1073. "group_name": "postgres",
  1074. "uid": 999,
  1075. "user_name": "postgres"
  1076. },
  1077. {
  1078. "description": "Redis runs as any non-root user.",
  1079. "gid": 568,
  1080. "group_name": "redis",
  1081. "uid": 568,
  1082. "user_name": "redis"
  1083. }
  1084. ],
  1085. "screenshots": [
  1086. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot1.webp",
  1087. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot2.webp",
  1088. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot3.webp",
  1089. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot4.webp",
  1090. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot5.webp",
  1091. "https://media.sys.truenas.net/apps/penpot/screenshots/screenshot6.webp"
  1092. ],
  1093. "sources": [
  1094. "https://github.com/penpot/penpot"
  1095. ],
  1096. "title": "Penpot",
  1097. "train": "community",
  1098. "version": "1.2.16"
  1099. }
  1100. }
  1101. }