From 1ff83ba2deccb34841fbcaea8304a5f4e06a3126 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 13:00:10 +0100 Subject: [PATCH 1/9] Create Clusterio Egg --- .../factorio/clusterio/egg-clusterio.json | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 game_eggs/factorio/clusterio/egg-clusterio.json diff --git a/game_eggs/factorio/clusterio/egg-clusterio.json b/game_eggs/factorio/clusterio/egg-clusterio.json new file mode 100644 index 00000000..e8f72876 --- /dev/null +++ b/game_eggs/factorio/clusterio/egg-clusterio.json @@ -0,0 +1,116 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2022-10-05T12:57:53+01:00", + "name": "Clusterio", + "author": "psychoalex@thevcbc.com", + "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17", + "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16", + "ghcr.io\/parkervcp\/yolks:nodejs_15": "ghcr.io\/parkervcp\/yolks:nodejs_15", + "ghcr.io\/parkervcp\/yolks:nodejs_14": "ghcr.io\/parkervcp\/yolks:nodejs_14", + "ghcr.io\/parkervcp\/yolks:nodejs_12": "ghcr.io\/parkervcp\/yolks:nodejs_12" + }, + "file_denylist": [], + "startup": "exec .\/node_modules\/.bin\/clusterio{{SERVER_MODE}} run", + "config": { + "files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n\t\t\t\"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n\t\"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n\t\t\t\"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n\t\t\t\"groups[0].fields.public_address\": \"{{server.build.default.ip}}:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Started\"\r\n}", + "logs": "{}", + "stop": "^c" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Clusterio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\ncase \"${SERVER_MODE}\" in\r\n\r\n \"master\")\r\n echo -e \"Initialising Clustorio In Master mode\"\r\n npm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --admin \"${ADMIN_STRING}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --plugins ${PLUGINS}\r\n\t;;\r\n\r\n \"slave\")\r\n echo -e \"Initialising Clustorio In Slave mode\"\r\n\tnpm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --slave-name \"${SLAVE_NAME}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --master-url \"${MASTER_URL}\" --master-token \"${MASTER_TOKEN}\" --plugins ${PLUGINS}\r\n ;;\r\n \r\nesac\r\n\r\necho -e \"install complete\"\r\nexit 0", + "container": "node:14-buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Mode", + "description": "Set's the cluster operation mode of the server, can be either \"master\" or \"slave\".\r\n\r\nRequired on:\r\nAll", + "env_variable": "SERVER_MODE", + "default_value": "master", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:master,slave", + "field_type": "text" + }, + { + "name": "Log Level", + "description": "Options: \"none\", \"fatal\", \"error\", \"warn\", \"audit\", \"info\", \"verbose\"\r\n\r\nRequired on:\r\nAll", + "env_variable": "LOG_LEVEL", + "default_value": "info", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:none,fatal,error,warn,audit,info,verbose", + "field_type": "text" + }, + { + "name": "Server Admin", + "description": "Superadmin account name\r\n\r\nRequired on:\r\nMaster", + "env_variable": "ADMIN_STRING", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Slave Name", + "description": "Slave name in the Master Web UI\r\n\r\nRequired on:\r\nSlave", + "env_variable": "SLAVE_NAME", + "default_value": "Your Sub-Server", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Master URL", + "description": "Connection URL to the Master server, can be an internal address if you have allocated an additional internal port to the Master Server.\r\n\r\nRequired on:\r\nSlave", + "env_variable": "MASTER_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Master Token", + "description": "Authentication token used to connect to the Master server, generated through the Master Web UI.\r\n\r\nRequired on:\r\nSlave", + "env_variable": "MASTER_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:256", + "field_type": "text" + }, + { + "name": "Plugins", + "description": "Clusterio Plugins to install, space separate list.\r\n\r\nExample:\r\n@clusterio\/plugin-subspace_storage @clusterio\/plugin-global_chat @clusterio\/plugin-research_sync @clusterio\/plugin-inventory_sync\r\n\r\nRequired on:\r\nAll", + "env_variable": "PLUGINS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Cluster Name", + "description": "The Name of your Master server cluster.\r\n\r\nRequired:\r\nMaster", + "env_variable": "CLUSTER_NAME", + "default_value": "Your Cluster", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + } + ] +} From 586f1a42ef5756af9497fa32bf4a43f90996d63d Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 13:34:52 +0100 Subject: [PATCH 2/9] Create README.md --- game_eggs/factorio/clusterio/README.md | 47 ++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 game_eggs/factorio/clusterio/README.md diff --git a/game_eggs/factorio/clusterio/README.md b/game_eggs/factorio/clusterio/README.md new file mode 100644 index 00000000..6552882b --- /dev/null +++ b/game_eggs/factorio/clusterio/README.md @@ -0,0 +1,47 @@ +# Clusterio + +## Introduction + +Clusterio (https://github.com/clusterio/clusterio) is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. +It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. +But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named [Subspace Storage](https://github.com/clusterio/subspace_storage). + +By itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. +Plugins do the work of modding in the visible changes into the game, see the [Plugins section](#plugins) for ready-made plugins you can install into a Clusterio cluster. + +## Features + +- Clustered Factorio server management allowing you manage the running of Factorio servers across a fleet of physical servers from both a web interface and a command line interface. + +- User list management for synchronizing in-game admins, whitelisted users, and bans to all the servers in the cluster. + +- Integrated support for exporting statistics for the whole cluster to Prometheus via a single metrics endpoint. + +- Extensive plugin support for adding your own cross server features to Factorio using Clusterio's communication backbone. + +## Setup + +Clusterio uses a Master/Slave system setup, with the Master server running the Web UI and controlling which Slaves run which Instances. + +The Master server runs a web server that needs to be reachable for cluster management by the user, and by the other nodes to manage them. + +The Slave server runs the factorio server, and will need any mods manually importing at this time, including the Factorio mods for the Clustorio Library(https://mods.factorio.com/mod/clusterio_lib) and Subspace Storage(https://mods.factorio.com/mod/subspace_storage). + +Both only require a single port each. + +Server Mode controls if the server is a master or slave, and each varaible is labeled as required for Master, Slave or All. Please ensure you fill in all required variables. + +Set up the master server first, and from there you can generate the Master URL and Master Token required for the slave servers to connect. + +Additional configuration options can be found in config-master.json and config-slave.json as relevant. + +Changes to the Cluster will only be written out to the database on a graceful stop. + +## Server Ports + +Clusterio requires a single port + +| Port | default | +|------------|------------| +| Master HTTP| 8081 | +| Slave Game | 34197 | From 642139e53956d9227020282dc0d4734f1765813f Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 13:36:26 +0100 Subject: [PATCH 3/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 37a64c7f..687f68c7 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Vanilla](game_eggs/factorio/factorio) * [ModUpdate](game_eggs/factorio/factorio-modupdate) +* [Clusterio](game_eggs/factorio/clusterio) [Grand Theft Auto](game_eggs/gta) From 1d343ff3349164b1b29118d902e5cb44a65dee1b Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:44:43 +0100 Subject: [PATCH 4/9] Update README.md --- game_eggs/factorio/clusterio/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/game_eggs/factorio/clusterio/README.md b/game_eggs/factorio/clusterio/README.md index 6552882b..471f577d 100644 --- a/game_eggs/factorio/clusterio/README.md +++ b/game_eggs/factorio/clusterio/README.md @@ -1,5 +1,7 @@ # Clusterio +*A Note on terminology. The developers of Clustorio are using the rather outdated Master/Slave terms for Primary/Secondary or Management/Processing nodes. We will use them in this guide and egg to avoid confusion, but would prefer a more modern set of terminology.* + ## Introduction Clusterio (https://github.com/clusterio/clusterio) is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. From 64c21293a2186bf9a37bb692268d935da68b1661 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:48:57 +0100 Subject: [PATCH 5/9] Update egg-clusterio.json --- game_eggs/factorio/clusterio/egg-clusterio.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/factorio/clusterio/egg-clusterio.json b/game_eggs/factorio/clusterio/egg-clusterio.json index e8f72876..1cd62107 100644 --- a/game_eggs/factorio/clusterio/egg-clusterio.json +++ b/game_eggs/factorio/clusterio/egg-clusterio.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-05T12:57:53+01:00", + "exported_at": "2022-10-05T14:47:36+01:00", "name": "Clusterio", "author": "psychoalex@thevcbc.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -19,7 +19,7 @@ "file_denylist": [], "startup": "exec .\/node_modules\/.bin\/clusterio{{SERVER_MODE}} run", "config": { - "files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n\t\t\t\"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n\t\"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n\t\t\t\"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n\t\t\t\"groups[0].fields.public_address\": \"{{server.build.default.ip}}:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n \"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n \"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n \"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n \"groups[0].fields.public_address\": \"{{server.build.default.ip}}:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Started\"\r\n}", "logs": "{}", "stop": "^c" @@ -34,7 +34,7 @@ "variables": [ { "name": "Server Mode", - "description": "Set's the cluster operation mode of the server, can be either \"master\" or \"slave\".\r\n\r\nRequired on:\r\nAll", + "description": "Set's the cluster operation mode of the server, can be either \"master\" or \"slave\". This is better thought of as Management or Gameserver nodes.\r\n\r\nRequired on:\r\nAll", "env_variable": "SERVER_MODE", "default_value": "master", "user_viewable": true, From 9470b13ad6fc031fffa82c853248bcb5b1d35364 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:33:09 +0100 Subject: [PATCH 6/9] Update egg-clusterio.json --- game_eggs/factorio/clusterio/egg-clusterio.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/factorio/clusterio/egg-clusterio.json b/game_eggs/factorio/clusterio/egg-clusterio.json index 1cd62107..64b4b207 100644 --- a/game_eggs/factorio/clusterio/egg-clusterio.json +++ b/game_eggs/factorio/clusterio/egg-clusterio.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-05T14:47:36+01:00", + "exported_at": "2022-10-05T16:32:34+01:00", "name": "Clusterio", "author": "psychoalex@thevcbc.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -19,14 +19,14 @@ "file_denylist": [], "startup": "exec .\/node_modules\/.bin\/clusterio{{SERVER_MODE}} run", "config": { - "files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n \"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n \"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n \"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n \"groups[0].fields.public_address\": \"{{server.build.default.ip}}:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n \"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n \"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n \"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n \"groups[0].fields.public_address\": \"{{server.build.default.ip}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Started\"\r\n}", "logs": "{}", "stop": "^c" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Clusterio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\ncase \"${SERVER_MODE}\" in\r\n\r\n \"master\")\r\n echo -e \"Initialising Clustorio In Master mode\"\r\n npm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --admin \"${ADMIN_STRING}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --plugins ${PLUGINS}\r\n\t;;\r\n\r\n \"slave\")\r\n echo -e \"Initialising Clustorio In Slave mode\"\r\n\tnpm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --slave-name \"${SLAVE_NAME}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --master-url \"${MASTER_URL}\" --master-token \"${MASTER_TOKEN}\" --plugins ${PLUGINS}\r\n ;;\r\n \r\nesac\r\n\r\necho -e \"install complete\"\r\nexit 0", + "script": "#!\/bin\/bash\r\n# Clusterio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\ncase \"${SERVER_MODE}\" in\r\n\r\n \"master\")\r\n echo -e \"Initialising Clustorio In Master mode\"\r\n npm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --admin \"${ADMIN_STRING}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --plugins ${PLUGINS}\r\n\t;;\r\n\r\n \"slave\")\r\n echo -e \"Initialising Clustorio In Slave mode\"\r\n\tnpm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --slave-name \"${SLAVE_NAME}\" --public-address \"${SERVER_IP}\" --master-url \"${MASTER_URL}\" --master-token \"${MASTER_TOKEN}\" --plugins ${PLUGINS}\r\n ;;\r\n \r\nesac\r\n\r\necho -e \"install complete\"\r\nexit 0", "container": "node:14-buster-slim", "entrypoint": "bash" } @@ -74,7 +74,7 @@ }, { "name": "Master URL", - "description": "Connection URL to the Master server, can be an internal address if you have allocated an additional internal port to the Master Server.\r\n\r\nRequired on:\r\nSlave", + "description": "Connection URL to the Master server, can be an internal address if you have allocated an additional internal port to the Master Server.\r\nExample: http:\/\/yourip:yourport\r\nRequired on:\r\nSlave", "env_variable": "MASTER_URL", "default_value": "", "user_viewable": true, From acdc7a720716be22addccac533a9d66d51b00d51 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:33:52 +0100 Subject: [PATCH 7/9] Update egg-clusterio.json --- game_eggs/factorio/clusterio/egg-clusterio.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/factorio/clusterio/egg-clusterio.json b/game_eggs/factorio/clusterio/egg-clusterio.json index 64b4b207..d6a40f84 100644 --- a/game_eggs/factorio/clusterio/egg-clusterio.json +++ b/game_eggs/factorio/clusterio/egg-clusterio.json @@ -4,10 +4,10 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-05T16:32:34+01:00", + "exported_at": "2022-10-05T16:33:36+01:00", "name": "Clusterio", "author": "psychoalex@thevcbc.com", - "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", + "description": "Clusterio is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named Subspace Storage.\r\n\r\nBy itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. Plugins do the work of modding in the visible changes into the game, see the Plugins section for ready-made plugins you can install into a Clusterio cluster.", "features": null, "docker_images": { "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17", From 0dd6ff7e43d7df351135eb96534bb0ecfe6b2357 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:35:01 +0100 Subject: [PATCH 8/9] Update egg-clusterio.json --- game_eggs/factorio/clusterio/egg-clusterio.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/factorio/clusterio/egg-clusterio.json b/game_eggs/factorio/clusterio/egg-clusterio.json index d6a40f84..61e011fe 100644 --- a/game_eggs/factorio/clusterio/egg-clusterio.json +++ b/game_eggs/factorio/clusterio/egg-clusterio.json @@ -4,10 +4,10 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-05T16:33:36+01:00", + "exported_at": "2022-10-05T16:34:47+01:00", "name": "Clusterio", "author": "psychoalex@thevcbc.com", - "description": "Clusterio is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named Subspace Storage.\r\n\r\nBy itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. Plugins do the work of modding in the visible changes into the game, see the Plugins section for ready-made plugins you can install into a Clusterio cluster.", + "description": "Clusterio is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named Subspace Storage.\r\n\r\nBy itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. Plugins do the work of modding in the visible changes into the game, see the Plugins section for ready-made plugins you can install into a Clusterio cluster.\r\n\r\nA Note on terminology. The developers of Clustorio are using the rather outdated Master\/Slave terms for Primary\/Secondary or Management\/Processing nodes. We will use them in this guide and egg to avoid confusion, but would prefer a more modern set of terminology.", "features": null, "docker_images": { "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17", From 1871bf09d76d7ffddf591ffb44341eef3b2260e2 Mon Sep 17 00:00:00 2001 From: PsychoZander <62998704+PsychoZander@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:38:14 +0100 Subject: [PATCH 9/9] Update egg-clusterio.json