From c28463a9e23cf30bf00ffa95f596f144cf3a27a6 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:05:29 +0100 Subject: [PATCH 01/17] Update egg-squad.json --- .../steamcmd_servers/squad/egg-squad.json | 160 +++++++----------- 1 file changed, 59 insertions(+), 101 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad.json b/game_eggs/steamcmd_servers/squad/egg-squad.json index f9457e00..9a72c6d2 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad.json @@ -4,60 +4,78 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-03-06T13:01:46+02:00", - "name": "Squad", - "author": "brycea@terrahost.cloud", - "description": "Squad is a 50 vs 50 multiplayer first-person shooter that aims to capture combat realism through communication and teamplay. Major features include vehicle-based combined arms gameplay, large scale environments, base building, and integrated positional VoIP for proximity talking & radio.", - "features": [ - "steam_disk_space" - ], + "exported_at": "2024-04-11T14:59:42+01:00", + "name": "Wine Generic", + "author": "parker@parkervcp.com", + "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", + "features": null, "docker_images": { - "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": "\/home\/container\/SquadGame\/Binaries\/Linux\/SquadGameServer SquadGame Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -beaconport={{BEACON_PORT}}", + "startup": ".\/start.sh", "config": { - "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.servername}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.ptciu}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambal}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.recorddemos}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}", + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.servername}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.ptciu}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambal}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.recorddemos}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAutoKickEnabled}}\"\r\n }\r\n },\r\n \"SquadGame\/ServerConfig\/Rcon.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Password\": \"Password=\\\"{{server.build.env.rconpassword}}\\\"\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\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\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n## Deleted app workshop file if available to not save mods ID`s for the future as that will interviene with the mods specified in the variables tab\r\nrm \/mnt\/server\/container\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install the game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} \\\r\n$( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) \\\r\n+app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) \\\r\n$( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\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## Moves downloaded mods to the necesary folder\r\nmv -rf \/mnt\/server\/container\/steamapps\/workshop\/content\/393380 \/mnt\/server\/SquadGame\/Plugins\/Mods\r\necho -e \"Moving downloaded mods if avabile\\n\"\r\n\r\n## add below your custom commands if needed\r\nchmod +x \/mnt\/server\/SquadGame\/Binaries\/Linux\/SquadGameServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\n\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n\r\n# Tail the log file\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, "variables": [ { - "name": "Query Port", - "description": "Query port for your Squad server.", - "env_variable": "QUERY_PORT", - "default_value": "27165", + "name": "Server Executable", + "description": "The server executable to run.", + "env_variable": "SERVER_EXECUTABLE", + "default_value": "SquadGameServer.exe", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "sub directory to install into", + "description": "for example is the server needs to get installed into \/home\/container\/server\/bin\/\r\n\r\nuse server\/bin\/", + "env_variable": "INSTALL_DIR", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Download Workshops Items", + "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", + "env_variable": "WORKSHOP_ITEMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Beacon Port", + "description": "Beacon port for your Squad server.", + "env_variable": "BEACON_PORT", + "default_value": "", "user_viewable": true, "user_editable": false, "rules": "required|numeric", "field_type": "text" }, { - "name": "ld lib path", - "description": "this is needed for some reason", - "env_variable": "LD_LIBRARY_PATH", - "default_value": "\/home\/container\/linux64\/", - "user_viewable": false, + "name": "Max Players", + "description": "Sets the maximum number of players.", + "env_variable": "maxplayers", + "default_value": "80", + "user_viewable": true, "user_editable": false, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Game ID", - "description": "The ID corresponding to the game to download and run using SRCDS.", - "env_variable": "SRCDS_APPID", - "default_value": "403240", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", + "rules": "required", "field_type": "text" }, { @@ -71,18 +89,8 @@ "field_type": "text" }, { - "name": "Max Players", - "description": "Sets the maximum number of players.", - "env_variable": "maxplayers", - "default_value": "80", - "user_viewable": true, - "user_editable": true, - "rules": "required", - "field_type": "text" - }, - { - "name": "Allow Team Change", - "description": "Allow players to change teams ( true \/ false )", + "name": "Allowteamchange", + "description": "Allow players to change teams ( true \\\/ false )", "env_variable": "allowteamchange", "default_value": "true", "user_viewable": true, @@ -91,9 +99,9 @@ "field_type": "text" }, { - "name": "Advertise Server", - "description": "Have the server report to the public server list ( true \/ false )", - "env_variable": "advertise", + "name": "TKAutoKick", + "description": "teamkill system if you like enable by ( true \\\/ false )", + "env_variable": "TKAutoKickEnabled", "default_value": "true", "user_viewable": true, "user_editable": true, @@ -101,60 +109,10 @@ "field_type": "text" }, { - "name": "Reserved Slots", - "description": "The number of reserved slots for admins \/ mods", - "env_variable": "reservedslots", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Prevent Team Change If Unbalanced", - "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )", - "env_variable": "ptciu", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Enforce Team Balance", - "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )", - "env_variable": "teambal", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Record Demos", - "description": "This will record demos of the players ( true \/ false )", - "env_variable": "recorddemos", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Beacon Port", - "description": "Beacon port for your Squad server.", - "env_variable": "BEACON_PORT", - "default_value": "15000", - "user_viewable": true, - "user_editable": false, - "rules": "required|numeric", - "field_type": "text" - }, - { - "name": "Download Workshops Items", - "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", - "env_variable": "WORKSHOP_ITEMS", - "default_value": "", + "name": "tickrate", + "description": "your numbers of max tickrate", + "env_variable": "FIXEDMAXTICKRATE", + "default_value": "50", "user_viewable": true, "user_editable": true, "rules": "required|string", From 95444122cd42c99181bf7142ccd1e49bca0bb9d8 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:07:18 +0100 Subject: [PATCH 02/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index b5b93d6d..aceafa6d 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -1,9 +1,25 @@ -# Squad - -Squad is an online multiplayer first-person shooter that aims to capture combat realism through communication and teamplay. - -## Server Ports - +# Squad-egg-pterodactyl +Overview +The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. +--- +## Features +Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. +Mod Support: Full support for downloading and configuring mods directly through the Pterodactyl panel. +Automated Scripts: Includes scripts for easy setup and management of the game server, including installations and updates. +Installation +To install the Squad game server egg on your Pterodactyl panel, follow these steps: +--- +## Download the latest release from this repository. +Log into your Pterodactyl panel. +Navigate to the Nests section under the Admin Panel. +Import the JSON file for the nest and egg through the Import Egg feature. +Configure the variables and paths according to your server setup. +For detailed installation instructions, refer to the included installation.md file in this repository. +--- +# Credits +## Created by: Fakhry and Rectofen +## Support from: Ghoti and Cartitarul +These individuals have contributed to the development of this project either by direct code contributions, testing, or providing insights and documentation help. Squad requires 5 ports | Port | default | From 376ed5f00ecb670b0d3623aae1a0574fa0212d4a Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:28:03 +0100 Subject: [PATCH 03/17] Update egg-squad.json --- .../steamcmd_servers/squad/egg-squad.json | 90 ++++++++++++++----- 1 file changed, 70 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad.json b/game_eggs/steamcmd_servers/squad/egg-squad.json index 9a72c6d2..8dd77633 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad.json @@ -4,8 +4,8 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-04-11T14:59:42+01:00", - "name": "Wine Generic", + "exported_at": "2024-04-11T17:26:20+01:00", + "name": "Squad Wine", "author": "parker@parkervcp.com", "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", "features": null, @@ -15,14 +15,14 @@ "file_denylist": [], "startup": ".\/start.sh", "config": { - "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.servername}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.ptciu}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambal}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.recorddemos}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAutoKickEnabled}}\"\r\n }\r\n },\r\n \"SquadGame\/ServerConfig\/Rcon.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Password\": \"Password=\\\"{{server.build.env.rconpassword}}\\\"\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"start.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE=\\\"{{server.build.env.FIXEDMAXTICKRATE}}\\\"\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\n\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n\r\n# Tail the log file\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\nFIXEDMAXTICKRATE=\"50\"\r\nQueryPort=27165\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n# Create the necessary directories if they do not exist\r\nmkdir -p \/home\/container\/SquadGame\/Saved\/Logs\r\n\r\n# Create the log file if it does not exist\r\ntouch \"$LOG_PATH\"\r\n# Tail the log file\r\n\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -38,16 +38,6 @@ "rules": "required|string", "field_type": "text" }, - { - "name": "sub directory to install into", - "description": "for example is the server needs to get installed into \/home\/container\/server\/bin\/\r\n\r\nuse server\/bin\/", - "env_variable": "INSTALL_DIR", - "default_value": "", - "user_viewable": false, - "user_editable": false, - "rules": "nullable|string", - "field_type": "text" - }, { "name": "Download Workshops Items", "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", @@ -71,7 +61,7 @@ { "name": "Max Players", "description": "Sets the maximum number of players.", - "env_variable": "maxplayers", + "env_variable": "MAXPLAYERS", "default_value": "80", "user_viewable": true, "user_editable": false, @@ -81,7 +71,7 @@ { "name": "Server Name", "description": "The name for the server in the server list", - "env_variable": "servername", + "env_variable": "SERVERNAME", "default_value": "Squad Server", "user_viewable": true, "user_editable": true, @@ -91,7 +81,7 @@ { "name": "Allowteamchange", "description": "Allow players to change teams ( true \\\/ false )", - "env_variable": "allowteamchange", + "env_variable": "ALLOWTEAMCHANGE", "default_value": "true", "user_viewable": true, "user_editable": true, @@ -101,7 +91,7 @@ { "name": "TKAutoKick", "description": "teamkill system if you like enable by ( true \\\/ false )", - "env_variable": "TKAutoKickEnabled", + "env_variable": "TKAUTOKICKENABLED", "default_value": "true", "user_viewable": true, "user_editable": true, @@ -109,10 +99,70 @@ "field_type": "text" }, { - "name": "tickrate", + "name": "Tickrate", "description": "your numbers of max tickrate", "env_variable": "FIXEDMAXTICKRATE", - "default_value": "50", + "default_value": "60", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "", + "env_variable": "QUERY_PORT", + "default_value": "27165", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Advertise Server", + "description": "Have the server report to the public server list ( true \/ false )", + "env_variable": "ADVERTISE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Reserved Slots", + "description": "The number of reserved slots for admins \/ mods", + "env_variable": "RESERVEDSLOTS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Prevent Team Change If Unbalanced", + "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )", + "env_variable": "PTCIU", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Enforce Team Balance", + "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )", + "env_variable": "TEAMBAL", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Record Demos", + "description": "This will record demos of the players ( true \/ false )", + "env_variable": "RECORDDEMOS", + "default_value": "true", "user_viewable": true, "user_editable": true, "rules": "required|string", From de378c2b4ab5d17079756e69927c8828094f6045 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:39:37 +0100 Subject: [PATCH 04/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 46 +++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index aceafa6d..4dff22ed 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -1,25 +1,5 @@ # Squad-egg-pterodactyl -Overview -The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. ---- -## Features -Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. -Mod Support: Full support for downloading and configuring mods directly through the Pterodactyl panel. -Automated Scripts: Includes scripts for easy setup and management of the game server, including installations and updates. -Installation -To install the Squad game server egg on your Pterodactyl panel, follow these steps: ---- -## Download the latest release from this repository. -Log into your Pterodactyl panel. -Navigate to the Nests section under the Admin Panel. -Import the JSON file for the nest and egg through the Import Egg feature. -Configure the variables and paths according to your server setup. -For detailed installation instructions, refer to the included installation.md file in this repository. ---- -# Credits -## Created by: Fakhry and Rectofen -## Support from: Ghoti and Cartitarul -These individuals have contributed to the development of this project either by direct code contributions, testing, or providing insights and documentation help. +## Required Ports Squad requires 5 ports | Port | default | @@ -28,4 +8,26 @@ Squad requires 5 ports | game +1 | 7788 | | Query | 27165 | | Query +1 | 27166 | -| Beacon | 15000 | +| Beacon | 15000+ | + +For additional servers please increase the beacon port by 1 + +## Overview +The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. +--- +## Features + - [Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. + - [Mod Support: Full support for downloading and configuring mods directly through the Pterodactyl panel. + - [Scripts: Includes scripts for easy setup and management of the game server, including installations and updates. + +Installation +To install the Squad game server egg on your Pterodactyl panel, follow these steps: + +## Credits +### Autors: + - [@Fakhry](https://github.com/fakhry7050) + - [@Rectofen](https://github.com/Cloud9OS) + - [@Ghoti](https://github.com/sergelouie6) + - [@Cartitarul](https://github.com/fakhry7050) + +These individuals have contributed to the development of this project either by direct code contributions, testing, or providing insights and documentation help. From a16fa1979dec433c675aa5345e5873336497deb7 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:40:53 +0100 Subject: [PATCH 05/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index 4dff22ed..a9e67eac 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -13,7 +13,7 @@ Squad requires 5 ports For additional servers please increase the beacon port by 1 ## Overview -The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. +### The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. --- ## Features - [Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. From 5c4baf2108db1217dbb946e02a59b973eb85b090 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:42:57 +0100 Subject: [PATCH 06/17] Add files via upload --- .../squad/egg-squad-wine (3).json | 172 ++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json b/game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json new file mode 100644 index 00000000..ef856128 --- /dev/null +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json @@ -0,0 +1,172 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-04-11T17:42:26+01:00", + "name": "Squad Wine", + "author": "parker@parkervcp.com", + "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" + }, + "file_denylist": [], + "startup": ".\/start.sh", + "config": { + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"start.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE=\\\"{{server.build.env.FIXEDMAXTICKRATE}}\\\"\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\nFIXEDMAXTICKRATE=\"50\"\r\nQueryPort=27165\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n# Create the necessary directories if they do not exist\r\nmkdir -p \/home\/container\/SquadGame\/Saved\/Logs\r\n\r\n# Create the log file if it does not exist\r\ntouch \"$LOG_PATH\"\r\n# Tail the log file\r\n\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Executable", + "description": "The server executable to run.", + "env_variable": "SERVER_EXECUTABLE", + "default_value": "SquadGameServer.exe", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Download Workshops Items", + "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", + "env_variable": "WORKSHOP_ITEMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Beacon Port", + "description": "Beacon port for your Squad server.", + "env_variable": "BEACON_PORT", + "default_value": "", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Sets the maximum number of players.", + "env_variable": "MAXPLAYERS", + "default_value": "80", + "user_viewable": true, + "user_editable": false, + "rules": "required", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name for the server in the server list", + "env_variable": "SERVERNAME", + "default_value": "Squad Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + }, + { + "name": "Allowteamchange", + "description": "Allow players to change teams ( true \\\/ false )", + "env_variable": "ALLOWTEAMCHANGE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "TKAutoKick", + "description": "teamkill system if you like enable by ( true \\\/ false )", + "env_variable": "TKAUTOKICKENABLED", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Tickrate", + "description": "your numbers of max tickrate", + "env_variable": "FIXEDMAXTICKRATE", + "default_value": "60", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "", + "env_variable": "QUERY_PORT", + "default_value": "27165", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Advertise Server", + "description": "Have the server report to the public server list ( true \/ false )", + "env_variable": "ADVERTISE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Reserved Slots", + "description": "The number of reserved slots for admins \/ mods", + "env_variable": "RESERVEDSLOTS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Prevent Team Change If Unbalanced", + "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )", + "env_variable": "PTCIU", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Enforce Team Balance", + "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )", + "env_variable": "TEAMBAL", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Record Demos", + "description": "This will record demos of the players ( true \/ false )", + "env_variable": "RECORDDEMOS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file From 1c3c5ee55edc94e95f6109c440cdc0a8d44c2f8e Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:43:44 +0100 Subject: [PATCH 07/17] Delete game_eggs/steamcmd_servers/squad/egg-squad.json --- .../steamcmd_servers/squad/egg-squad.json | 172 ------------------ 1 file changed, 172 deletions(-) delete mode 100644 game_eggs/steamcmd_servers/squad/egg-squad.json diff --git a/game_eggs/steamcmd_servers/squad/egg-squad.json b/game_eggs/steamcmd_servers/squad/egg-squad.json deleted file mode 100644 index 8dd77633..00000000 --- a/game_eggs/steamcmd_servers/squad/egg-squad.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2024-04-11T17:26:20+01:00", - "name": "Squad Wine", - "author": "parker@parkervcp.com", - "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", - "features": null, - "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" - }, - "file_denylist": [], - "startup": ".\/start.sh", - "config": { - "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"start.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE=\\\"{{server.build.env.FIXEDMAXTICKRATE}}\\\"\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", - "logs": "{}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\nFIXEDMAXTICKRATE=\"50\"\r\nQueryPort=27165\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n# Create the necessary directories if they do not exist\r\nmkdir -p \/home\/container\/SquadGame\/Saved\/Logs\r\n\r\n# Create the log file if it does not exist\r\ntouch \"$LOG_PATH\"\r\n# Tail the log file\r\n\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", - "container": "ghcr.io\/parkervcp\/installers:debian", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Server Executable", - "description": "The server executable to run.", - "env_variable": "SERVER_EXECUTABLE", - "default_value": "SquadGameServer.exe", - "user_viewable": true, - "user_editable": false, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Download Workshops Items", - "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", - "env_variable": "WORKSHOP_ITEMS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Beacon Port", - "description": "Beacon port for your Squad server.", - "env_variable": "BEACON_PORT", - "default_value": "", - "user_viewable": true, - "user_editable": false, - "rules": "required|numeric", - "field_type": "text" - }, - { - "name": "Max Players", - "description": "Sets the maximum number of players.", - "env_variable": "MAXPLAYERS", - "default_value": "80", - "user_viewable": true, - "user_editable": false, - "rules": "required", - "field_type": "text" - }, - { - "name": "Server Name", - "description": "The name for the server in the server list", - "env_variable": "SERVERNAME", - "default_value": "Squad Server", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:30", - "field_type": "text" - }, - { - "name": "Allowteamchange", - "description": "Allow players to change teams ( true \\\/ false )", - "env_variable": "ALLOWTEAMCHANGE", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "TKAutoKick", - "description": "teamkill system if you like enable by ( true \\\/ false )", - "env_variable": "TKAUTOKICKENABLED", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Tickrate", - "description": "your numbers of max tickrate", - "env_variable": "FIXEDMAXTICKRATE", - "default_value": "60", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Query Port", - "description": "", - "env_variable": "QUERY_PORT", - "default_value": "27165", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Advertise Server", - "description": "Have the server report to the public server list ( true \/ false )", - "env_variable": "ADVERTISE", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Reserved Slots", - "description": "The number of reserved slots for admins \/ mods", - "env_variable": "RESERVEDSLOTS", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "Prevent Team Change If Unbalanced", - "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )", - "env_variable": "PTCIU", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "Enforce Team Balance", - "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )", - "env_variable": "TEAMBAL", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Record Demos", - "description": "This will record demos of the players ( true \/ false )", - "env_variable": "RECORDDEMOS", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - } - ] -} From bef8ff8ff76048aaad830972cab06670294ec762 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:44:35 +0100 Subject: [PATCH 08/17] Rename egg-squad-wine (3).json to egg-squad-wine.json --- .../squad/{egg-squad-wine (3).json => egg-squad-wine.json} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename game_eggs/steamcmd_servers/squad/{egg-squad-wine (3).json => egg-squad-wine.json} (99%) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json similarity index 99% rename from game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json rename to game_eggs/steamcmd_servers/squad/egg-squad-wine.json index ef856128..95dc71f9 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad-wine (3).json +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json @@ -169,4 +169,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 225e935d8f14ee15eb784830fe61bf6194305edf Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:00:04 +0100 Subject: [PATCH 09/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 33 ++++++++++++---------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index a9e67eac..f9f2d6f9 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -1,4 +1,13 @@ -# Squad-egg-pterodactyl + +# Squad + +## Steam Description +Squad is a tactical FPS that provides authentic combat experiences through teamwork, communication, and realistic combat. It bridges the gap between arcade shooter and military realism with 100-player battles, combined-arms warfare, and base building. + +## Versions +* Vanilla - The standard Squad server optimized for Linux environments. Offers maximum stability and performance. +* Wine - Enables the use of Windows-specific Squad mods on a Linux server. Ideal for expanded modding options. + ## Required Ports Squad requires 5 ports @@ -8,26 +17,20 @@ Squad requires 5 ports | game +1 | 7788 | | Query | 27165 | | Query +1 | 27166 | -| Beacon | 15000+ | +| Beacon | 15000+ | -For additional servers please increase the beacon port by 1 +Add `-beaconport=15000` to your commandline if you have more than one (1) server, increase this number by five (5). -## Overview -### The Squad-egg-pterodactyl project provides the necessary configurations to deploy and manage a Squad game server on the Pterodactyl platform using Windows compatibility layers provided by Wine. This setup is particularly useful for supporting mods and ensuring that the Squad server operates seamlessly in a Windows-emulated environment on Linux servers. ---- ## Features - - [Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. - - [Mod Support: Full support for downloading and configuring mods directly through the Pterodactyl panel. - - [Scripts: Includes scripts for easy setup and management of the game server, including installations and updates. - -Installation -To install the Squad game server egg on your Pterodactyl panel, follow these steps: + - Wine Integration: Runs Squad servers through Wine, allowing you to leverage Windows-based server executables on Linux platforms. + - Workshop Items Management: Full support for downloading and configuring mods directly through the Pterodactyl panel. + - Automation: Includes scripts for easy setup and management of the game server, including installations and updates. ## Credits -### Autors: +#### Authors: - [@Fakhry](https://github.com/fakhry7050) - [@Rectofen](https://github.com/Cloud9OS) - - [@Ghoti](https://github.com/sergelouie6) - - [@Cartitarul](https://github.com/fakhry7050) + - [@ghoti](https://github.com/sergelouie6) + - [@Cartitarul]([https://github.com/fakhry7050](https://github.com/Cartitarul)) These individuals have contributed to the development of this project either by direct code contributions, testing, or providing insights and documentation help. From bf5aef15963dc6bc422d36ef60df667f4c82e50b Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:00:31 +0100 Subject: [PATCH 10/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index f9f2d6f9..1f5732d8 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -31,6 +31,6 @@ Add `-beaconport=15000` to your commandline if you have more than one (1) server - [@Fakhry](https://github.com/fakhry7050) - [@Rectofen](https://github.com/Cloud9OS) - [@ghoti](https://github.com/sergelouie6) - - [@Cartitarul]([https://github.com/fakhry7050](https://github.com/Cartitarul)) + - [@Cartitarul](https://github.com/Cartitarul) These individuals have contributed to the development of this project either by direct code contributions, testing, or providing insights and documentation help. From f1a4ff777ce61d74fc0b80f879136c7fbbcf1727 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:46:50 +0100 Subject: [PATCH 11/17] Update egg-squad-wine.json --- game_eggs/steamcmd_servers/squad/egg-squad-wine.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json index 95dc71f9..4d28d129 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-04-11T17:42:26+01:00", + "exported_at": "2024-04-11T19:42:46+01:00", "name": "Squad Wine", "author": "parker@parkervcp.com", "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": ".\/start.sh", + "startup": "rm \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log; wine \/home\/container\/SquadGame\/Binaries\/Win64\/SquadGameServer.exe Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} beaconport={{BEACON_PORT}} FIXEDMAXTICKRATE={{FIXEDMAXTICKRATE}} -log & SQD_PID=$!; tail -c0 -F \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log --pid=$SQD_PID", "config": { "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"start.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE=\\\"{{server.build.env.FIXEDMAXTICKRATE}}\\\"\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", From 91749f34e57a1a5dae1972489a026ff2daa7b1fd Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:02:58 +0100 Subject: [PATCH 12/17] Add files via upload --- .../steamcmd_servers/squad/egg-squad (1).json | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 game_eggs/steamcmd_servers/squad/egg-squad (1).json diff --git a/game_eggs/steamcmd_servers/squad/egg-squad (1).json b/game_eggs/steamcmd_servers/squad/egg-squad (1).json new file mode 100644 index 00000000..f9457e00 --- /dev/null +++ b/game_eggs/steamcmd_servers/squad/egg-squad (1).json @@ -0,0 +1,164 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-03-06T13:01:46+02:00", + "name": "Squad", + "author": "brycea@terrahost.cloud", + "description": "Squad is a 50 vs 50 multiplayer first-person shooter that aims to capture combat realism through communication and teamplay. Major features include vehicle-based combined arms gameplay, large scale environments, base building, and integrated positional VoIP for proximity talking & radio.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, + "file_denylist": [], + "startup": "\/home\/container\/SquadGame\/Binaries\/Linux\/SquadGameServer SquadGame Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -beaconport={{BEACON_PORT}}", + "config": { + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.servername}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.ptciu}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambal}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.recorddemos}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\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\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n## Deleted app workshop file if available to not save mods ID`s for the future as that will interviene with the mods specified in the variables tab\r\nrm \/mnt\/server\/container\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install the game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} \\\r\n$( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) \\\r\n+app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) \\\r\n$( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\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## Moves downloaded mods to the necesary folder\r\nmv -rf \/mnt\/server\/container\/steamapps\/workshop\/content\/393380 \/mnt\/server\/SquadGame\/Plugins\/Mods\r\necho -e \"Moving downloaded mods if avabile\\n\"\r\n\r\n## add below your custom commands if needed\r\nchmod +x \/mnt\/server\/SquadGame\/Binaries\/Linux\/SquadGameServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Query Port", + "description": "Query port for your Squad server.", + "env_variable": "QUERY_PORT", + "default_value": "27165", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "ld lib path", + "description": "this is needed for some reason", + "env_variable": "LD_LIBRARY_PATH", + "default_value": "\/home\/container\/linux64\/", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Game ID", + "description": "The ID corresponding to the game to download and run using SRCDS.", + "env_variable": "SRCDS_APPID", + "default_value": "403240", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name for the server in the server list", + "env_variable": "servername", + "default_value": "Squad Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Sets the maximum number of players.", + "env_variable": "maxplayers", + "default_value": "80", + "user_viewable": true, + "user_editable": true, + "rules": "required", + "field_type": "text" + }, + { + "name": "Allow Team Change", + "description": "Allow players to change teams ( true \/ false )", + "env_variable": "allowteamchange", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Advertise Server", + "description": "Have the server report to the public server list ( true \/ false )", + "env_variable": "advertise", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Reserved Slots", + "description": "The number of reserved slots for admins \/ mods", + "env_variable": "reservedslots", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Prevent Team Change If Unbalanced", + "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )", + "env_variable": "ptciu", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Enforce Team Balance", + "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )", + "env_variable": "teambal", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Record Demos", + "description": "This will record demos of the players ( true \/ false )", + "env_variable": "recorddemos", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Beacon Port", + "description": "Beacon port for your Squad server.", + "env_variable": "BEACON_PORT", + "default_value": "15000", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Download Workshops Items", + "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", + "env_variable": "WORKSHOP_ITEMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} From 8416e6213f8753fb360b967cf746439304d41a1b Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:03:48 +0100 Subject: [PATCH 13/17] Rename egg-squad (1).json to egg-squad.json --- .../steamcmd_servers/squad/{egg-squad (1).json => egg-squad.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename game_eggs/steamcmd_servers/squad/{egg-squad (1).json => egg-squad.json} (100%) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad (1).json b/game_eggs/steamcmd_servers/squad/egg-squad.json similarity index 100% rename from game_eggs/steamcmd_servers/squad/egg-squad (1).json rename to game_eggs/steamcmd_servers/squad/egg-squad.json From df2bdae488751128e00e01e8030b68caadac52c7 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:19:06 +0100 Subject: [PATCH 14/17] Update egg-squad-wine.json --- .../squad/egg-squad-wine.json | 100 +++++++++++++++--- 1 file changed, 86 insertions(+), 14 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json index 4d28d129..686d9259 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json @@ -4,40 +4,32 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-04-11T19:42:46+01:00", + "exported_at": "2024-04-12T13:17:40+01:00", "name": "Squad Wine", "author": "parker@parkervcp.com", "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", - "features": null, + "features": [ + "steam_disk_space" + ], "docker_images": { "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], "startup": "rm \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log; wine \/home\/container\/SquadGame\/Binaries\/Win64\/SquadGameServer.exe Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} beaconport={{BEACON_PORT}} FIXEDMAXTICKRATE={{FIXEDMAXTICKRATE}} -log & SQD_PID=$!; tail -c0 -F \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log --pid=$SQD_PID", "config": { - "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"start.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE=\\\"{{server.build.env.FIXEDMAXTICKRATE}}\\\"\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"config.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE={{server.build.env.FIXEDMAXTICKRATE}}\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# Install the Squad server for Windows using SteamCMD\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous +app_update 403240 validate +quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating start.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/start.sh\r\n#!\/bin\/bash\r\n# Startup command to run the Squad game server and tail logs.\r\n\r\n# Ensure the server executable variable is replaced correctly\r\nSERVER_EXEC=\"\/home\/container\/SquadGame\/Binaries\/Win64\/${SERVER_EXECUTABLE}\"\r\nLOG_PATH=\"\/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log\"\r\n\r\n# Output startup details\r\necho \"Starting the Squad game server...\"\r\necho \"Executable: $SERVER_EXEC\"\r\necho \"Logs will be tailed from: $LOG_PATH\"\r\nFIXEDMAXTICKRATE=\"50\"\r\nQueryPort=27165\r\n# Start the Squad server in the background\r\nwine \"$SERVER_EXEC\" Port=${SERVER_PORT} QueryPort=${QUERY_PORT} beaconport=${BEACON_PORT} FIXEDMAXTICKRATE=${FIXEDMAXTICKRATE} -log &\r\n# Create the necessary directories if they do not exist\r\nmkdir -p \/home\/container\/SquadGame\/Saved\/Logs\r\n\r\n# Create the log file if it does not exist\r\ntouch \"$LOG_PATH\"\r\n# Tail the log file\r\n\r\ntail -f \"$LOG_PATH\"\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n# Install the game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} \\\r\n$( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) \\\r\n+app_update ${SRCDS_APPID} $( [[ -n ${SRCDS_BETAID} ]] && printf %s \"-beta ${SRCDS_BETAID}\" ) \\\r\n$( [[ -n ${SRCDS_BETAPASS} ]] && printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate \\\r\n+quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating config.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/config.sh\r\n#!\/bin\/bash\r\nFIXEDMAXTICKRATE=\r\nQueryPort=\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/config.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, "variables": [ - { - "name": "Server Executable", - "description": "The server executable to run.", - "env_variable": "SERVER_EXECUTABLE", - "default_value": "SquadGameServer.exe", - "user_viewable": true, - "user_editable": false, - "rules": "required|string", - "field_type": "text" - }, { "name": "Download Workshops Items", "description": "Workshop file ids separated by a comma \",\" (1111111,222222) \r\nReinstall Required to install mods", @@ -167,6 +159,86 @@ "user_editable": true, "rules": "required|string", "field_type": "text" + }, + { + "name": "STEAM USER", + "description": "Specify Steam User or leave it Blank for anonymous", + "env_variable": "STEAM_USER", + "default_value": "anonymous", + "user_viewable": true, + "user_editable": true, + "rules": "max:30", + "field_type": "text" + }, + { + "name": "STEAM PASSWORD", + "description": "Specify Steam Password or leave it Blank for anonymous", + "env_variable": "STEAM_PASS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "max:30", + "field_type": "text" + }, + { + "name": "STEAM AUTH", + "description": "Specify Steam AUTH for 2FA if enabled or leave it Blank for anonymous", + "env_variable": "STEAM_AUTH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "max:30", + "field_type": "text" + }, + { + "name": "WINDOWS INSTALL", + "description": "Set specific SteamCMD platform type\r\n1 For WIndows\r\n2 For linux", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:2", + "field_type": "text" + }, + { + "name": "SRCDS APPID", + "description": "steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List", + "env_variable": "SRCDS_APPID", + "default_value": "403240", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "SRCDS BETAID", + "description": "Beta branch of a steam app. Leave blank to install normal branch", + "env_variable": "SRCDS_BETAID", + "default_value": "", + "user_viewable": true, + "user_editable": false, + "rules": "max:20", + "field_type": "text" + }, + { + "name": "SRCDS BETAPASS", + "description": "password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.", + "env_variable": "SRCDS_BETAPASS", + "default_value": "", + "user_viewable": true, + "user_editable": false, + "rules": "max:30", + "field_type": "text" + }, + { + "name": "INSTALL FLAGS", + "description": "Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.", + "env_variable": "INSTALL_FLAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "max:30", + "field_type": "text" } ] } From 6a65a08431fc1347e3692a086990e579a107ec06 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Fri, 12 Apr 2024 14:17:04 +0100 Subject: [PATCH 15/17] Update README.md --- game_eggs/steamcmd_servers/squad/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/game_eggs/steamcmd_servers/squad/README.md b/game_eggs/steamcmd_servers/squad/README.md index 1f5732d8..e576b9e3 100644 --- a/game_eggs/steamcmd_servers/squad/README.md +++ b/game_eggs/steamcmd_servers/squad/README.md @@ -17,6 +17,7 @@ Squad requires 5 ports | game +1 | 7788 | | Query | 27165 | | Query +1 | 27166 | +| Beacon | 15000 | | Beacon | 15000+ | Add `-beaconport=15000` to your commandline if you have more than one (1) server, increase this number by five (5). From ded701057c9709660f06fa8bfc6d33397e159420 Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Fri, 12 Apr 2024 15:02:09 +0100 Subject: [PATCH 16/17] Update egg-squad-wine.json --- .../squad/egg-squad-wine.json | 64 ++++++++----------- 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json index 686d9259..6eb8414d 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-04-12T13:17:40+01:00", + "exported_at": "2024-04-12T14:58:16+01:00", "name": "Squad Wine", "author": "parker@parkervcp.com", "description": "Squad is a realism-based military tactical first-person shooter video game developed and published by Canadian indie developer Offworld Industries exclusively through the Steam distribution platform. It is a spiritual successor to the Project Reality modification for Battlefield 2.", @@ -17,14 +17,14 @@ "file_denylist": [], "startup": "rm \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log; wine \/home\/container\/SquadGame\/Binaries\/Win64\/SquadGameServer.exe Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} beaconport={{BEACON_PORT}} FIXEDMAXTICKRATE={{FIXEDMAXTICKRATE}} -log & SQD_PID=$!; tail -c0 -F \/home\/container\/SquadGame\/Saved\/Logs\/SquadGame.log --pid=$SQD_PID", "config": { - "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n },\r\n \"config.sh\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"FIXEDMAXTICKRATE\": \"FIXEDMAXTICKRATE={{server.build.env.FIXEDMAXTICKRATE}}\",\r\n \"QueryPort\": \"QueryPort={{server.build.env.QUERY_PORT}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.SERVERNAME}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAXPLAYERS}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.ALLOWTEAMCHANGE}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.ADVERTISE}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.RESERVEDSLOTS}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.PTCIU}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.TEAMBAL}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.RECORDDEMOS}}\",\r\n \"TKAutoKickEnabled\": \"TKAutoKickEnabled={{server.build.env.TKAUTOKICKENABLED}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Everything Done\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n# Install the game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} \\\r\n$( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) \\\r\n+app_update ${SRCDS_APPID} $( [[ -n ${SRCDS_BETAID} ]] && printf %s \"-beta ${SRCDS_BETAID}\" ) \\\r\n$( [[ -n ${SRCDS_BETAPASS} ]] && printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate \\\r\n+quit\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous \\\r\n$(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) \\\r\n+quit\r\n\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n# Create or Download 'start.sh' in the server directory\r\necho \"Creating config.sh script in the server directory...\"\r\ncat << 'EOF' > \/mnt\/server\/config.sh\r\n#!\/bin\/bash\r\nFIXEDMAXTICKRATE=\r\nQueryPort=\r\nEOF\r\n\r\nchmod +x \/mnt\/server\/config.sh\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# This script installs the Squad game server using Wine and SteamCMD, as well as creates a start.sh script.\r\n\r\n# Navigate to the temporary directory and setup 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\n\r\n# Create a directory to prevent SteamCMD disk write errors\r\nmkdir -p \/mnt\/server\/steamapps\r\ncd \/mnt\/server\/steamcmd\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n# Install the game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -n ${SRCDS_BETAID} ]] && printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -n ${SRCDS_BETAPASS} ]] && printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit\r\n\r\n\r\n# Remove the Steam workshop file to prevent conflict with mods specified in the variables tab\r\nrm \/mnt\/server\/steamapps\/workshop\/appworkshop_393380.acf\r\n\r\n# Address ownership issues which can cause SteamCMD to fail, especially when running as root\r\nchown -R root:root \/mnt\r\n\r\n# Set the HOME environment variable to the server directory\r\nexport HOME=\/mnt\/server\r\n\r\n# Download specified workshop items using a list from the `WORKSHOP_ITEMS` environment variable\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +login anonymous $(IFS=','; for item in $WORKSHOP_ITEMS; do echo \"+workshop_download_item 393380 ${item}\"; done) +quit\r\n# Move downloaded mods to the appropriate directory\r\nmv -f \/mnt\/server\/steamapps\/workshop\/content\/393380\/* \/mnt\/server\/SquadGame\/Plugins\/Mods\/\r\n\r\n\r\n\r\n# Inform user of installation completion\r\necho \"-----------------------------------------\"\r\necho \"Installation and script setup completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -57,7 +57,7 @@ "default_value": "80", "user_viewable": true, "user_editable": false, - "rules": "required", + "rules": "required|numeric|between:1,100", "field_type": "text" }, { @@ -67,7 +67,7 @@ "default_value": "Squad Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:30", + "rules": "required|string", "field_type": "text" }, { @@ -77,7 +77,7 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|in:true,false", "field_type": "text" }, { @@ -87,17 +87,17 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|in:true,false", "field_type": "text" }, { "name": "Tickrate", "description": "your numbers of max tickrate", "env_variable": "FIXEDMAXTICKRATE", - "default_value": "60", + "default_value": "50", "user_viewable": true, - "user_editable": true, - "rules": "required|string", + "user_editable": false, + "rules": "required|numeric", "field_type": "text" }, { @@ -106,8 +106,8 @@ "env_variable": "QUERY_PORT", "default_value": "27165", "user_viewable": true, - "user_editable": true, - "rules": "required|string", + "user_editable": false, + "rules": "required|numeric", "field_type": "text" }, { @@ -117,7 +117,7 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|in:true,false", "field_type": "text" }, { @@ -127,7 +127,7 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20", + "rules": "required|numeric|max:20", "field_type": "text" }, { @@ -137,7 +137,7 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20", + "rules": "required|string|max:20|in:true,false", "field_type": "text" }, { @@ -147,7 +147,7 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|in:true,false", "field_type": "text" }, { @@ -167,7 +167,7 @@ "default_value": "anonymous", "user_viewable": true, "user_editable": true, - "rules": "max:30", + "rules": "nullable|string", "field_type": "text" }, { @@ -177,7 +177,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "max:30", + "rules": "nullable", "field_type": "text" }, { @@ -187,17 +187,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "max:30", - "field_type": "text" - }, - { - "name": "WINDOWS INSTALL", - "description": "Set specific SteamCMD platform type\r\n1 For WIndows\r\n2 For linux", - "env_variable": "WINDOWS_INSTALL", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:2", + "rules": "string|max:30|nullable", "field_type": "text" }, { @@ -205,7 +195,7 @@ "description": "steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List", "env_variable": "SRCDS_APPID", "default_value": "403240", - "user_viewable": true, + "user_viewable": false, "user_editable": false, "rules": "required|string|max:20", "field_type": "text" @@ -216,8 +206,8 @@ "env_variable": "SRCDS_BETAID", "default_value": "", "user_viewable": true, - "user_editable": false, - "rules": "max:20", + "user_editable": true, + "rules": "nullable|string", "field_type": "text" }, { @@ -225,9 +215,9 @@ "description": "password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.", "env_variable": "SRCDS_BETAPASS", "default_value": "", - "user_viewable": true, + "user_viewable": false, "user_editable": false, - "rules": "max:30", + "rules": "nullable|string", "field_type": "text" }, { @@ -235,8 +225,8 @@ "description": "Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.", "env_variable": "INSTALL_FLAGS", "default_value": "", - "user_viewable": true, - "user_editable": true, + "user_viewable": false, + "user_editable": false, "rules": "max:30", "field_type": "text" } From fccf455506c8c6f119a08569c905e0f97e7329ae Mon Sep 17 00:00:00 2001 From: fakhry <108018177+fakhry7050@users.noreply.github.com> Date: Fri, 12 Apr 2024 15:27:20 +0100 Subject: [PATCH 17/17] Update egg-squad-wine.json --- game_eggs/steamcmd_servers/squad/egg-squad-wine.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json index 6eb8414d..65b1bfa3 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad-wine.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad-wine.json @@ -160,6 +160,16 @@ "rules": "required|string", "field_type": "text" }, + { + "name": "WINDOWS INSTALL", + "description": "Set specific SteamCMD platform type\r\n1 For WIndows\r\n2 For linux", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:1", + "field_type": "text" + }, { "name": "STEAM USER", "description": "Specify Steam User or leave it Blank for anonymous",