app_versions.json 76 KB

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