app_versions.json 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966
  1. {
  2. "1.0.6": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/factorio/1.0.6",
  7. "last_update": "2025-09-05 14:25:56",
  8. "required_features": [],
  9. "human_version": "stable-2.0.66_1.0.6",
  10. "version": "1.0.6",
  11. "app_metadata": {
  12. "app_version": "stable-2.0.66",
  13. "capabilities": [
  14. {
  15. "description": "Factorio is able to change file ownership arbitrarily",
  16. "name": "CHOWN"
  17. },
  18. {
  19. "description": "Factorio is able to bypass file permission checks",
  20. "name": "DAC_OVERRIDE"
  21. },
  22. {
  23. "description": "Factorio is able to bypass permission checks for file operations",
  24. "name": "FOWNER"
  25. },
  26. {
  27. "description": "Factorio is able to change group ID of processes",
  28. "name": "SETGID"
  29. },
  30. {
  31. "description": "Factorio is able to change user ID of processes",
  32. "name": "SETUID"
  33. }
  34. ],
  35. "categories": [
  36. "games"
  37. ],
  38. "changelog_url": "https://wiki.factorio.com/Version_history",
  39. "date_added": "2025-07-02",
  40. "description": "Factorio headless server in a Docker container",
  41. "home": "https://factorio.com/",
  42. "host_mounts": [],
  43. "icon": "https://media.sys.truenas.net/apps/factorio/icons/icon.png",
  44. "keywords": [
  45. "games",
  46. "server",
  47. "factorio"
  48. ],
  49. "lib_version": "2.1.49",
  50. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  51. "maintainers": [
  52. {
  53. "email": "dev@ixsystems.com",
  54. "name": "truenas",
  55. "url": "https://www.truenas.com/"
  56. }
  57. ],
  58. "name": "factorio",
  59. "run_as_context": [
  60. {
  61. "description": "Factorio runs as root user.",
  62. "gid": 0,
  63. "group_name": "root",
  64. "uid": 0,
  65. "user_name": "root"
  66. }
  67. ],
  68. "screenshots": [],
  69. "sources": [
  70. "https://github.com/factoriotools/factorio-docker",
  71. "https://hub.docker.com/r/factoriotools/factorio/"
  72. ],
  73. "title": "Factorio Server",
  74. "train": "community",
  75. "version": "1.0.6"
  76. },
  77. "schema": {
  78. "groups": [
  79. {
  80. "name": "Factorio Configuration",
  81. "description": "Configure Factorio"
  82. },
  83. {
  84. "name": "User and Group Configuration",
  85. "description": "Configure User and Group for Factorio"
  86. },
  87. {
  88. "name": "Network Configuration",
  89. "description": "Configure Network for Factorio"
  90. },
  91. {
  92. "name": "Storage Configuration",
  93. "description": "Configure Storage for Factorio"
  94. },
  95. {
  96. "name": "Labels Configuration",
  97. "description": "Configure Labels for Factorio"
  98. },
  99. {
  100. "name": "Resources Configuration",
  101. "description": "Configure Resources for Factorio"
  102. }
  103. ],
  104. "questions": [
  105. {
  106. "variable": "factorio",
  107. "label": "",
  108. "group": "Factorio Configuration",
  109. "schema": {
  110. "type": "dict",
  111. "attrs": [
  112. {
  113. "variable": "generate_new_save",
  114. "label": "Generate New Save",
  115. "description": "Generate a new save if one does not exist before starting the server.",
  116. "schema": {
  117. "type": "boolean",
  118. "default": false
  119. }
  120. },
  121. {
  122. "variable": "load_latest_save",
  123. "label": "Load Latest Save",
  124. "description": "Load latest when true. Otherwise it will load \"Name of Save File\".",
  125. "schema": {
  126. "type": "boolean",
  127. "default": true
  128. }
  129. },
  130. {
  131. "variable": "save_name",
  132. "label": "Name of Save File",
  133. "schema": {
  134. "type": "string",
  135. "default": "_autosave1"
  136. }
  137. },
  138. {
  139. "variable": "username",
  140. "label": "Factorio.com Username",
  141. "schema": {
  142. "type": "string",
  143. "required": true
  144. }
  145. },
  146. {
  147. "variable": "token",
  148. "label": "Factorio.com Token",
  149. "schema": {
  150. "type": "string",
  151. "required": true
  152. }
  153. },
  154. {
  155. "variable": "update_mods_on_start",
  156. "label": "Update Mods on Start",
  157. "description": "If mods should be updated before starting the server.",
  158. "schema": {
  159. "type": "boolean",
  160. "default": false
  161. }
  162. },
  163. {
  164. "variable": "dlc_space_age",
  165. "label": "Enable Mods for DLC Space Age",
  166. "schema": {
  167. "type": "boolean",
  168. "default": true
  169. }
  170. },
  171. {
  172. "variable": "additional_envs",
  173. "label": "Additional Environment Variables",
  174. "schema": {
  175. "type": "list",
  176. "default": [],
  177. "items": [
  178. {
  179. "variable": "env",
  180. "label": "Environment Variable",
  181. "schema": {
  182. "type": "dict",
  183. "attrs": [
  184. {
  185. "variable": "name",
  186. "label": "Name",
  187. "schema": {
  188. "type": "string",
  189. "required": true
  190. }
  191. },
  192. {
  193. "variable": "value",
  194. "label": "Value",
  195. "schema": {
  196. "type": "string"
  197. }
  198. }
  199. ]
  200. }
  201. }
  202. ]
  203. }
  204. }
  205. ]
  206. }
  207. },
  208. {
  209. "variable": "run_as",
  210. "label": "",
  211. "group": "User and Group Configuration",
  212. "schema": {
  213. "type": "dict",
  214. "attrs": [
  215. {
  216. "variable": "user",
  217. "label": "User ID",
  218. "description": "The user id that Factorio files will be owned by.",
  219. "schema": {
  220. "type": "int",
  221. "min": 568,
  222. "default": 568,
  223. "required": true
  224. }
  225. },
  226. {
  227. "variable": "group",
  228. "label": "Group ID",
  229. "description": "The group id that Factorio files will be owned by.",
  230. "schema": {
  231. "type": "int",
  232. "min": 568,
  233. "default": 568,
  234. "required": true
  235. }
  236. }
  237. ]
  238. }
  239. },
  240. {
  241. "variable": "network",
  242. "label": "",
  243. "group": "Network Configuration",
  244. "schema": {
  245. "type": "dict",
  246. "attrs": [
  247. {
  248. "variable": "game_port",
  249. "label": "Game Port",
  250. "schema": {
  251. "type": "dict",
  252. "attrs": [
  253. {
  254. "variable": "bind_mode",
  255. "label": "Port Bind Mode",
  256. "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",
  257. "schema": {
  258. "type": "string",
  259. "default": "published",
  260. "enum": [
  261. {
  262. "value": "published",
  263. "description": "Publish port on the host for external access"
  264. },
  265. {
  266. "value": "exposed",
  267. "description": "Expose port for inter-container communication"
  268. },
  269. {
  270. "value": "",
  271. "description": "None"
  272. }
  273. ]
  274. }
  275. },
  276. {
  277. "variable": "port_number",
  278. "label": "Port Number",
  279. "schema": {
  280. "type": "int",
  281. "default": 34197,
  282. "min": 1,
  283. "max": 65535,
  284. "required": true
  285. }
  286. },
  287. {
  288. "variable": "host_ips",
  289. "label": "Host IPs",
  290. "description": "IPs on the host to bind this port",
  291. "schema": {
  292. "type": "list",
  293. "show_if": [
  294. [
  295. "bind_mode",
  296. "=",
  297. "published"
  298. ]
  299. ],
  300. "default": [],
  301. "items": [
  302. {
  303. "variable": "host_ip",
  304. "label": "Host IP",
  305. "schema": {
  306. "type": "string",
  307. "required": true,
  308. "$ref": [
  309. "definitions/node_bind_ip"
  310. ]
  311. }
  312. }
  313. ]
  314. }
  315. }
  316. ]
  317. }
  318. },
  319. {
  320. "variable": "rcon_port",
  321. "label": "RCON Port",
  322. "schema": {
  323. "type": "dict",
  324. "attrs": [
  325. {
  326. "variable": "bind_mode",
  327. "label": "Port Bind Mode",
  328. "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",
  329. "schema": {
  330. "type": "string",
  331. "default": "published",
  332. "enum": [
  333. {
  334. "value": "published",
  335. "description": "Publish port on the host for external access"
  336. },
  337. {
  338. "value": "exposed",
  339. "description": "Expose port for inter-container communication"
  340. },
  341. {
  342. "value": "",
  343. "description": "None"
  344. }
  345. ]
  346. }
  347. },
  348. {
  349. "variable": "port_number",
  350. "label": "Port Number",
  351. "schema": {
  352. "type": "int",
  353. "default": 27015,
  354. "min": 1,
  355. "max": 65535,
  356. "required": true
  357. }
  358. },
  359. {
  360. "variable": "host_ips",
  361. "label": "Host IPs",
  362. "description": "IPs on the host to bind this port",
  363. "schema": {
  364. "type": "list",
  365. "show_if": [
  366. [
  367. "bind_mode",
  368. "=",
  369. "published"
  370. ]
  371. ],
  372. "default": [],
  373. "items": [
  374. {
  375. "variable": "host_ip",
  376. "label": "Host IP",
  377. "schema": {
  378. "type": "string",
  379. "required": true,
  380. "$ref": [
  381. "definitions/node_bind_ip"
  382. ]
  383. }
  384. }
  385. ]
  386. }
  387. }
  388. ]
  389. }
  390. },
  391. {
  392. "variable": "host_network",
  393. "label": "Host Network",
  394. "description": "Bind to the host network. It's recommended to keep this disabled.\n",
  395. "schema": {
  396. "type": "boolean",
  397. "default": false
  398. }
  399. }
  400. ]
  401. }
  402. },
  403. {
  404. "variable": "storage",
  405. "label": "",
  406. "group": "Storage Configuration",
  407. "schema": {
  408. "type": "dict",
  409. "attrs": [
  410. {
  411. "variable": "data",
  412. "label": "Data Storage",
  413. "schema": {
  414. "type": "dict",
  415. "attrs": [
  416. {
  417. "variable": "type",
  418. "label": "Type",
  419. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  420. "schema": {
  421. "type": "string",
  422. "required": true,
  423. "default": "ix_volume",
  424. "enum": [
  425. {
  426. "value": "host_path",
  427. "description": "Host Path (Path that already exists on the system)"
  428. },
  429. {
  430. "value": "ix_volume",
  431. "description": "ixVolume (Dataset created automatically by the system)"
  432. }
  433. ]
  434. }
  435. },
  436. {
  437. "variable": "ix_volume_config",
  438. "label": "ixVolume Configuration",
  439. "description": "The configuration for the ixVolume dataset.",
  440. "schema": {
  441. "type": "dict",
  442. "show_if": [
  443. [
  444. "type",
  445. "=",
  446. "ix_volume"
  447. ]
  448. ],
  449. "$ref": [
  450. "normalize/ix_volume"
  451. ],
  452. "attrs": [
  453. {
  454. "variable": "acl_enable",
  455. "label": "Enable ACL",
  456. "description": "Enable ACL for the storage.",
  457. "schema": {
  458. "type": "boolean",
  459. "default": false
  460. }
  461. },
  462. {
  463. "variable": "dataset_name",
  464. "label": "Dataset Name",
  465. "description": "The name of the dataset to use for storage.",
  466. "schema": {
  467. "type": "string",
  468. "required": true,
  469. "hidden": true,
  470. "default": "data"
  471. }
  472. },
  473. {
  474. "variable": "acl_entries",
  475. "label": "ACL Configuration",
  476. "schema": {
  477. "type": "dict",
  478. "show_if": [
  479. [
  480. "acl_enable",
  481. "=",
  482. true
  483. ]
  484. ],
  485. "attrs": []
  486. }
  487. }
  488. ]
  489. }
  490. },
  491. {
  492. "variable": "host_path_config",
  493. "label": "Host Path Configuration",
  494. "schema": {
  495. "type": "dict",
  496. "show_if": [
  497. [
  498. "type",
  499. "=",
  500. "host_path"
  501. ]
  502. ],
  503. "attrs": [
  504. {
  505. "variable": "acl_enable",
  506. "label": "Enable ACL",
  507. "description": "Enable ACL for the storage.",
  508. "schema": {
  509. "type": "boolean",
  510. "default": false
  511. }
  512. },
  513. {
  514. "variable": "acl",
  515. "label": "ACL Configuration",
  516. "schema": {
  517. "type": "dict",
  518. "show_if": [
  519. [
  520. "acl_enable",
  521. "=",
  522. true
  523. ]
  524. ],
  525. "attrs": [],
  526. "$ref": [
  527. "normalize/acl"
  528. ]
  529. }
  530. },
  531. {
  532. "variable": "path",
  533. "label": "Host Path",
  534. "description": "The host path to use for storage.",
  535. "schema": {
  536. "type": "hostpath",
  537. "show_if": [
  538. [
  539. "acl_enable",
  540. "=",
  541. false
  542. ]
  543. ],
  544. "required": true
  545. }
  546. }
  547. ]
  548. }
  549. }
  550. ]
  551. }
  552. },
  553. {
  554. "variable": "additional_storage",
  555. "label": "Additional Storage",
  556. "schema": {
  557. "type": "list",
  558. "min_length": 1,
  559. "default": [],
  560. "items": [
  561. {
  562. "variable": "storageEntry",
  563. "label": "Storage Entry",
  564. "schema": {
  565. "type": "dict",
  566. "attrs": [
  567. {
  568. "variable": "type",
  569. "label": "Type",
  570. "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",
  571. "schema": {
  572. "type": "string",
  573. "required": true,
  574. "default": "ix_volume",
  575. "enum": [
  576. {
  577. "value": "host_path",
  578. "description": "Host Path (Path that already exists on the system)"
  579. },
  580. {
  581. "value": "ix_volume",
  582. "description": "ixVolume (Dataset created automatically by the system)"
  583. },
  584. {
  585. "value": "cifs",
  586. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  587. }
  588. ]
  589. }
  590. },
  591. {
  592. "variable": "read_only",
  593. "label": "Read Only",
  594. "description": "Mount the volume as read only.",
  595. "schema": {
  596. "type": "boolean",
  597. "default": false
  598. }
  599. },
  600. {
  601. "variable": "mount_path",
  602. "label": "Mount Path",
  603. "description": "The path inside the container to mount the storage.",
  604. "schema": {
  605. "type": "path",
  606. "required": true
  607. }
  608. },
  609. {
  610. "variable": "host_path_config",
  611. "label": "Host Path Configuration",
  612. "schema": {
  613. "type": "dict",
  614. "show_if": [
  615. [
  616. "type",
  617. "=",
  618. "host_path"
  619. ]
  620. ],
  621. "attrs": [
  622. {
  623. "variable": "acl_enable",
  624. "label": "Enable ACL",
  625. "description": "Enable ACL for the storage.",
  626. "schema": {
  627. "type": "boolean",
  628. "default": false
  629. }
  630. },
  631. {
  632. "variable": "acl",
  633. "label": "ACL Configuration",
  634. "schema": {
  635. "type": "dict",
  636. "show_if": [
  637. [
  638. "acl_enable",
  639. "=",
  640. true
  641. ]
  642. ],
  643. "attrs": [],
  644. "$ref": [
  645. "normalize/acl"
  646. ]
  647. }
  648. },
  649. {
  650. "variable": "path",
  651. "label": "Host Path",
  652. "description": "The host path to use for storage.",
  653. "schema": {
  654. "type": "hostpath",
  655. "show_if": [
  656. [
  657. "acl_enable",
  658. "=",
  659. false
  660. ]
  661. ],
  662. "required": true
  663. }
  664. }
  665. ]
  666. }
  667. },
  668. {
  669. "variable": "ix_volume_config",
  670. "label": "ixVolume Configuration",
  671. "description": "The configuration for the ixVolume dataset.",
  672. "schema": {
  673. "type": "dict",
  674. "show_if": [
  675. [
  676. "type",
  677. "=",
  678. "ix_volume"
  679. ]
  680. ],
  681. "$ref": [
  682. "normalize/ix_volume"
  683. ],
  684. "attrs": [
  685. {
  686. "variable": "acl_enable",
  687. "label": "Enable ACL",
  688. "description": "Enable ACL for the storage.",
  689. "schema": {
  690. "type": "boolean",
  691. "default": false
  692. }
  693. },
  694. {
  695. "variable": "dataset_name",
  696. "label": "Dataset Name",
  697. "description": "The name of the dataset to use for storage.",
  698. "schema": {
  699. "type": "string",
  700. "required": true,
  701. "default": "storage_entry"
  702. }
  703. },
  704. {
  705. "variable": "acl_entries",
  706. "label": "ACL Configuration",
  707. "schema": {
  708. "type": "dict",
  709. "show_if": [
  710. [
  711. "acl_enable",
  712. "=",
  713. true
  714. ]
  715. ],
  716. "attrs": [],
  717. "$ref": [
  718. "normalize/acl"
  719. ]
  720. }
  721. }
  722. ]
  723. }
  724. },
  725. {
  726. "variable": "cifs_config",
  727. "label": "SMB Configuration",
  728. "description": "The configuration for the SMB dataset.",
  729. "schema": {
  730. "type": "dict",
  731. "show_if": [
  732. [
  733. "type",
  734. "=",
  735. "cifs"
  736. ]
  737. ],
  738. "attrs": [
  739. {
  740. "variable": "server",
  741. "label": "Server",
  742. "description": "The server to mount the SMB share.",
  743. "schema": {
  744. "type": "string",
  745. "required": true
  746. }
  747. },
  748. {
  749. "variable": "path",
  750. "label": "Path",
  751. "description": "The path to mount the SMB share.",
  752. "schema": {
  753. "type": "string",
  754. "required": true
  755. }
  756. },
  757. {
  758. "variable": "username",
  759. "label": "Username",
  760. "description": "The username to use for the SMB share.",
  761. "schema": {
  762. "type": "string",
  763. "required": true
  764. }
  765. },
  766. {
  767. "variable": "password",
  768. "label": "Password",
  769. "description": "The password to use for the SMB share.",
  770. "schema": {
  771. "type": "string",
  772. "required": true,
  773. "private": true
  774. }
  775. },
  776. {
  777. "variable": "domain",
  778. "label": "Domain",
  779. "description": "The domain to use for the SMB share.",
  780. "schema": {
  781. "type": "string"
  782. }
  783. }
  784. ]
  785. }
  786. }
  787. ]
  788. }
  789. }
  790. ]
  791. }
  792. }
  793. ]
  794. }
  795. },
  796. {
  797. "variable": "labels",
  798. "label": "",
  799. "group": "Labels Configuration",
  800. "schema": {
  801. "type": "list",
  802. "default": [],
  803. "items": [
  804. {
  805. "variable": "label",
  806. "label": "Label",
  807. "schema": {
  808. "type": "dict",
  809. "attrs": [
  810. {
  811. "variable": "key",
  812. "label": "Key",
  813. "schema": {
  814. "type": "string",
  815. "required": true
  816. }
  817. },
  818. {
  819. "variable": "value",
  820. "label": "Value",
  821. "schema": {
  822. "type": "string",
  823. "required": true
  824. }
  825. },
  826. {
  827. "variable": "containers",
  828. "label": "Containers",
  829. "description": "Containers where the label should be applied",
  830. "schema": {
  831. "type": "list",
  832. "items": [
  833. {
  834. "variable": "container",
  835. "label": "Container",
  836. "schema": {
  837. "type": "string",
  838. "required": true,
  839. "enum": [
  840. {
  841. "value": "factorio",
  842. "description": "factorio"
  843. }
  844. ]
  845. }
  846. }
  847. ]
  848. }
  849. }
  850. ]
  851. }
  852. }
  853. ]
  854. }
  855. },
  856. {
  857. "variable": "resources",
  858. "label": "",
  859. "group": "Resources Configuration",
  860. "schema": {
  861. "type": "dict",
  862. "attrs": [
  863. {
  864. "variable": "limits",
  865. "label": "Limits",
  866. "schema": {
  867. "type": "dict",
  868. "attrs": [
  869. {
  870. "variable": "cpus",
  871. "label": "CPUs",
  872. "description": "CPUs limit for Factorio.",
  873. "schema": {
  874. "type": "int",
  875. "default": 2,
  876. "required": true
  877. }
  878. },
  879. {
  880. "variable": "memory",
  881. "label": "Memory (in MB)",
  882. "description": "Memory limit for Factorio.",
  883. "schema": {
  884. "type": "int",
  885. "default": 4096,
  886. "required": true
  887. }
  888. }
  889. ]
  890. }
  891. }
  892. ]
  893. }
  894. }
  895. ]
  896. },
  897. "readme": "<h1>Factorio</h1> <p><a href=\"https://factorio.com/\">Factorio</a> headless server in a Docker container</p>",
  898. "changelog": null,
  899. "chart_metadata": {
  900. "app_version": "stable-2.0.66",
  901. "capabilities": [
  902. {
  903. "description": "Factorio is able to change file ownership arbitrarily",
  904. "name": "CHOWN"
  905. },
  906. {
  907. "description": "Factorio is able to bypass file permission checks",
  908. "name": "DAC_OVERRIDE"
  909. },
  910. {
  911. "description": "Factorio is able to bypass permission checks for file operations",
  912. "name": "FOWNER"
  913. },
  914. {
  915. "description": "Factorio is able to change group ID of processes",
  916. "name": "SETGID"
  917. },
  918. {
  919. "description": "Factorio is able to change user ID of processes",
  920. "name": "SETUID"
  921. }
  922. ],
  923. "categories": [
  924. "games"
  925. ],
  926. "changelog_url": "https://wiki.factorio.com/Version_history",
  927. "date_added": "2025-07-02",
  928. "description": "Factorio headless server in a Docker container",
  929. "home": "https://factorio.com/",
  930. "host_mounts": [],
  931. "icon": "https://media.sys.truenas.net/apps/factorio/icons/icon.png",
  932. "keywords": [
  933. "games",
  934. "server",
  935. "factorio"
  936. ],
  937. "lib_version": "2.1.49",
  938. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  939. "maintainers": [
  940. {
  941. "email": "dev@ixsystems.com",
  942. "name": "truenas",
  943. "url": "https://www.truenas.com/"
  944. }
  945. ],
  946. "name": "factorio",
  947. "run_as_context": [
  948. {
  949. "description": "Factorio runs as root user.",
  950. "gid": 0,
  951. "group_name": "root",
  952. "uid": 0,
  953. "user_name": "root"
  954. }
  955. ],
  956. "screenshots": [],
  957. "sources": [
  958. "https://github.com/factoriotools/factorio-docker",
  959. "https://hub.docker.com/r/factoriotools/factorio/"
  960. ],
  961. "title": "Factorio Server",
  962. "train": "community",
  963. "version": "1.0.6"
  964. }
  965. }
  966. }