From 87840a32c993a953158453715afa420551a40a25 Mon Sep 17 00:00:00 2001 From: softwarenoob Date: Fri, 26 Nov 2021 01:22:11 +0200 Subject: [PATCH] refactor(forest): rewrite the egg Changes docker images, startup parameters, enables auto-updates, removes shellscript from startup, fixes DHCP network config --- .../the_forest/egg-the-forest.json | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json b/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json index f23cea77..1fff9c86 100644 --- a/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json +++ b/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json @@ -4,25 +4,26 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-01-03T20:24:12+01:00", + "exported_at": "2021-11-25T23:18:02+00:00", "name": "The Forest", "author": "admin@softwarenoob.com", "description": "As the lone survivor of a passenger jet crash, you find yourself in a mysterious forest battling to stay alive against a society of cannibalistic mutants. Build, explore, survive in this terrifying first-person survival horror simulator.", "features": null, "images": [ - "quay.io\/parkervcp\/pterodactyl-images:ubuntu_wine-xvfb" + "ghcr.io\/parkervcp\/yolks:wine_latest" ], - "startup": ".\/start.sh", + "file_denylist": [], + "startup": "xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 \/home\/container\/TheForestDedicatedServer.exe -batchmode -nographics -nosteamclient -savefolderpath \/home\/container\/TheForestDedicatedServer_Data -configfilepath \/home\/container\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg |grep -v 'RenderTexture.Create failed: format unsupported - 2.'", "config": { - "files": "{\r\n \"\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"serverIP\": \"serverIP {{server.build.default.ip}}:{{server.build.default.port}}\",\r\n \"serverSteamPort\": \"serverSteamPort {{server.build.env.STEAM_PORT}}\",\r\n \"serverGamePort\": \"serverGamePort {{server.build.default.port}}\",\r\n \"serverQueryPort\": \"serverQueryPort {{server.build.env.QUERY_PORT}}\",\r\n \"serverName\": \"serverName {{server.build.env.SERVER_NAME}}\",\r\n \"serverPlayers\": \"serverPlayers {{server.build.env.MAX_PLAYERS}}\",\r\n \"serverPassword\": \"serverPassword {{server.build.env.SERVER_PASS}}\",\r\n \"serverPasswordAdmin\": \"serverPasswordAdmin {{server.build.env.ADMIN_PASS}}\",\r\n \"serverSteamAccount\": \"serverSteamAccount {{server.build.env.STEAM_ACC}}\",\r\n \"enableVAC\": \"enableVAC {{server.build.env.VAC}}\",\r\n \"difficulty\": \"difficulty {{server.build.env.SERVER_DIFFICULTY}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"serverIP\": \"serverIP 0.0.0.0\",\r\n \"serverSteamPort\": \"serverSteamPort {{server.build.env.STEAM_PORT}}\",\r\n \"serverGamePort\": \"serverGamePort {{server.build.default.port}}\",\r\n \"serverQueryPort\": \"serverQueryPort {{server.build.env.QUERY_PORT}}\",\r\n \"serverName\": \"serverName {{server.build.env.SERVER_NAME}}\",\r\n \"serverPlayers\": \"serverPlayers {{server.build.env.MAX_PLAYERS}}\",\r\n \"serverPassword\": \"serverPassword {{server.build.env.SERVER_PASS}}\",\r\n \"serverPasswordAdmin\": \"serverPasswordAdmin {{server.build.env.ADMIN_PASS}}\",\r\n \"serverSteamAccount\": \"serverSteamAccount {{server.build.env.STEAM_ACC}}\",\r\n \"enableVAC\": \"enableVAC {{server.build.env.VAC}}\",\r\n \"difficulty\": \"difficulty {{server.build.env.SERVER_DIFFICULTY}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Game autosave started\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates\r\n\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## Install game using steamcmd\r\n.\/steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Configure wine and server startup config\r\nmkdir -p \/home\/container\/.wine64\r\necho \"#!\/bin\/sh\r\nexport WINEARCH=win64\r\nexport WINEPREFIX=\/home\/container\/.wine64\r\nxvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 \/home\/container\/TheForestDedicatedServer.exe -batchmode -nographics -nosteamclient -savefolderpath \/home\/container\/TheForestDedicatedServer_Data -configfilepath \/home\/container\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg |grep -v 'RenderTexture.Create failed: format unsupported - 2.'\" > \/mnt\/server\/start.sh\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n## Create Config\r\n\r\nmkdir -p $HOME\/TheForestDedicatedServer_Data\/forest\/config\/\r\n#rm -fR $HOME\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\r\ncat < $HOME\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\r\n\/\/ Dedicated Server Settings.\r\n\/\/ Server IP address - Note: If you have a router, this address is the internal address, and you need to configure ports forwarding, append the current game port here as well\r\nserverIP\r\n\/\/ Steam Communication Port - Note: If you have a router you will need to open this port.\r\nserverSteamPort\r\n\/\/ Game Communication Port - Note: If you have a router you will need to open this port.\r\nserverGamePort\r\n\/\/ Query Communication Port - Note: If you have a router you will need to open this port.\r\nserverQueryPort\r\n\/\/ Server display name\r\nserverName\r\n\/\/ Maximum number of players\r\nserverPlayers 5\r\n\/\/ Server password. blank means no password\r\nserverPassword\r\n\/\/ Server administration password. blank means no password\r\nserverPasswordAdmin\r\n\/\/ Your Steam account name. blank means anonymous (see Steam server account bellow)\r\nserverSteamAccount\r\n\/\/ Enable VAC (Valve Anti Cheat) on the server. off by default, uncomment to enable\r\nenableVAC on\r\n\/\/ Time between server auto saves in minutes\r\nserverAutoSaveInterval 15\r\n\/\/ Game difficulty mode. Must be set to \"Peaceful\" \"Normal\" or \"Hard\"\r\ndifficulty Normal\r\n\/\/ New or continue a game. Must be set to \"New\" or \"Continue\"\r\ninitType New\r\n\/\/ Slot to save the game. Must be set 1 2 3 4 or 5\r\nslot 1\r\n\/\/ Show event log. Must be set \"off\" or \"on\"\r\nshowLogs off\r\n\/\/ Contact email for server admin\r\nserverContact email@gmail.com\r\n\/\/ No enemies. Must be set to \"on\" or \"off\"\r\nveganMode off\r\n\/\/ No enemies during day time. Must be set to \"on\" or \"off\"\r\nvegetarianMode off\r\n\/\/ Reset all structure holes when loading a save. Must be set to \"on\" or \"off\"\r\nresetHolesMode off\r\n\/\/ Regrow 10% of cut down trees when sleeping. Must be set to \"on\" or \"off\"\r\ntreeRegrowMode off\r\n\/\/ Allow building destruction. Must be set to \"on\" or \"off\"\r\nallowBuildingDestruction on\r\n\/\/ Allow enemies in creative games. Must be set to \"on\" or \"off\"\r\nallowEnemiesCreativeMode off\r\n\/\/ Allow clients to use the built in development console. Must be set to \"on\" or \"off\"\r\nallowCheats off\r\n\/\/ Allows defining a custom folder for save slots, leave empty to use the default location\r\nsaveFolderPath\r\n\/\/ Target FPS when no client is connected\r\ntargetFpsIdle 5\r\n\/\/ Target FPS when there is at least one client connected\r\ntargetFpsActive 60\r\nEOT", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\napt -y --no-install-recommends install libstdc++6 lib32gcc-s1 ca-certificates\r\n\r\nexport WINEARCH=win64\r\nexport WINEPREFIX=\/home\/container\/.wine64\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## Install game using steamcmd\r\n.\/steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Configure wine and server startup config\r\nmkdir -p \/home\/container\/.wine64\r\nexport WINEARCH=win64\r\nexport WINEPREFIX=\/home\/container\/.wine64\r\n\r\n## Create Config\r\n\r\nmkdir -p $HOME\/TheForestDedicatedServer_Data\/forest\/config\/\r\n#rm -fR $HOME\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\r\ncat < $HOME\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\r\n\/\/ Dedicated Server Settings.\r\n\/\/ Server IP address - Note: If you have a router, this address is the internal address, and you need to configure ports forwarding, append the current game port here as well\r\nserverIP\r\n\/\/ Steam Communication Port - Note: If you have a router you will need to open this port.\r\nserverSteamPort\r\n\/\/ Game Communication Port - Note: If you have a router you will need to open this port.\r\nserverGamePort\r\n\/\/ Query Communication Port - Note: If you have a router you will need to open this port.\r\nserverQueryPort\r\n\/\/ Server display name\r\nserverName\r\n\/\/ Maximum number of players\r\nserverPlayers 5\r\n\/\/ Server password. blank means no password\r\nserverPassword\r\n\/\/ Server administration password. blank means no password\r\nserverPasswordAdmin\r\n\/\/ Your Steam account name. blank means anonymous (see Steam server account bellow)\r\nserverSteamAccount\r\n\/\/ Enable VAC (Valve Anti Cheat) on the server. off by default, uncomment to enable\r\nenableVAC on\r\n\/\/ Time between server auto saves in minutes\r\nserverAutoSaveInterval 15\r\n\/\/ Game difficulty mode. Must be set to \"Peaceful\" \"Normal\" or \"Hard\"\r\ndifficulty Normal\r\n\/\/ New or continue a game. Must be set to \"New\" or \"Continue\"\r\ninitType New\r\n\/\/ Slot to save the game. Must be set 1 2 3 4 or 5\r\nslot 1\r\n\/\/ Show event log. Must be set \"off\" or \"on\"\r\nshowLogs off\r\n\/\/ Contact email for server admin\r\nserverContact email@gmail.com\r\n\/\/ No enemies. Must be set to \"on\" or \"off\"\r\nveganMode off\r\n\/\/ No enemies during day time. Must be set to \"on\" or \"off\"\r\nvegetarianMode off\r\n\/\/ Reset all structure holes when loading a save. Must be set to \"on\" or \"off\"\r\nresetHolesMode off\r\n\/\/ Regrow 10% of cut down trees when sleeping. Must be set to \"on\" or \"off\"\r\ntreeRegrowMode off\r\n\/\/ Allow building destruction. Must be set to \"on\" or \"off\"\r\nallowBuildingDestruction on\r\n\/\/ Allow enemies in creative games. Must be set to \"on\" or \"off\"\r\nallowEnemiesCreativeMode off\r\n\/\/ Allow clients to use the built in development console. Must be set to \"on\" or \"off\"\r\nallowCheats off\r\n\/\/ Allows defining a custom folder for save slots, leave empty to use the default location\r\nsaveFolderPath\r\n\/\/ Target FPS when no client is connected\r\ntargetFpsIdle 5\r\n\/\/ Target FPS when there is at least one client connected\r\ntargetFpsActive 60\r\nEOT", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -30,7 +31,7 @@ { "name": "APP ID", "description": "The ID corresponding to the game to download.", - "env_variable": "APPID", + "env_variable": "SRCDS_APPID", "default_value": "556450", "user_viewable": false, "user_editable": false, @@ -55,7 +56,7 @@ "rules": "required|string|max:20" }, { - "name": "Query Port", + "name": "[Connection Port] Query Port", "description": "Query port, this port is also used for connecting to the server", "env_variable": "QUERY_PORT", "default_value": "27016", @@ -116,6 +117,24 @@ "user_viewable": true, "user_editable": true, "rules": "required|string|max:3" + }, + { + "name": "Windows Install", + "description": "This is required to install the correct Forest version. Removing or touching this will overwrite the files with a non-existing Linux releases.", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:1" + }, + { + "name": "Auto-Update", + "description": "0 disables auto-update on each server startup, while 1 enables it.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean" } ] } \ No newline at end of file