From c67703caa627e897c6550d15a1515d27c04ce750 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 5 May 2022 20:05:22 +0200 Subject: [PATCH 01/11] Update egg-code--server.json --- software/code-server/egg-code--server.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/software/code-server/egg-code--server.json b/software/code-server/egg-code--server.json index 8820b7eb..30cdae39 100644 --- a/software/code-server/egg-code--server.json +++ b/software/code-server/egg-code--server.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-12-17T09:23:57+00:00", + "exported_at": "2022-05-05T19:37:05+02:00", "name": "Code-Server", "author": "mario.franze@gmail.com", "description": "Run VS Code on any machine anywhere and access it in the browser.", @@ -25,8 +25,8 @@ }, "scripts": { "installation": { - "script": "apt update\r\napt install -y curl jq\r\nMATCH=linux-amd64\r\n\r\n# Create initial directories\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Create needed directories\r\nmkdir -p \/mnt\/server\/.local\/lib \/mnt\/server\/.local\/bin \/mnt\/server\/.config\/code-server \/mnt\/server\/projects\r\n\r\n# Change permission of projects directory so it can be accessed by code-server\r\nchmod 777 \/mnt\/server\/projects\r\ntouch \"\/mnt\/server\/projects\/PLACE YOUR PROJECTS HERE\"\r\n\r\n# Check for available versions. Defaults to latest if no valid version is found.\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/coder\/code-server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/coder\/code-server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"v${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n# Download the given Version and extract it\r\necho \"Downloading $DOWNLOAD_URL\"\r\ncurl -fL $DOWNLOAD_URL | tar -C \/mnt\/server\/.local\/lib -xz\r\nmv \/mnt\/server\/.local\/lib\/code-server-*linux-amd64 \/mnt\/server\/.local\/lib\/code-server-${VERSION}\r\n\r\n\r\nPATH=\"\/mnt\/server\/.local\/bin:$PATH\"\r\necho \"password: changeme\r\nbind-addr: 0.0.0.0\r\nauth: password\r\ncert: false\" > \/mnt\/server\/.config\/code-server\/config.yaml\r\n\r\necho \"Install complete\"", - "container": "ghcr.io/parkervcp/installers:debian", + "script": "apt update\r\napt install -y curl jq\r\n\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\nMATCH=linux-${ARCH}\r\n# Create initial directories\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho ${ARCH}\r\necho ${MATCH}\r\n# Create needed directories\r\nmkdir -p \/mnt\/server\/.local\/lib \/mnt\/server\/.local\/bin \/mnt\/server\/.config\/code-server \/mnt\/server\/projects\r\n\r\n# Change permission of projects directory so it can be accessed by code-server\r\nchmod 777 \/mnt\/server\/projects\r\ntouch \"\/mnt\/server\/projects\/PLACE YOUR PROJECTS HERE\"\r\n\r\n# Check for available versions. Defaults to latest if no valid version is found.\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/coder\/code-server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/coder\/code-server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"v${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n# Download the given Version and extract it\r\necho \"Downloading $DOWNLOAD_URL\"\r\ncurl -fL $DOWNLOAD_URL | tar -C \/mnt\/server\/.local\/lib -xz\r\nmv \/mnt\/server\/.local\/lib\/code-server-*linux-${ARCH} \/mnt\/server\/.local\/lib\/code-server-${VERSION}\r\n\r\n\r\nPATH=\"\/mnt\/server\/.local\/bin:$PATH\"\r\necho \"password: changeme\r\nbind-addr: 0.0.0.0\r\nauth: password\r\ncert: false\" > \/mnt\/server\/.config\/code-server\/config.yaml\r\n\r\necho \"Install complete\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, From 12273e55b32c4723e68746fc3315a774d427db1f Mon Sep 17 00:00:00 2001 From: DaFray31 Date: Thu, 12 May 2022 15:16:04 +0200 Subject: [PATCH 02/11] Update egg-j-music-bot.json Token from discord have length equal to 70 not 64 --- bots/discord/jmusicbot/egg-j-music-bot.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bots/discord/jmusicbot/egg-j-music-bot.json b/bots/discord/jmusicbot/egg-j-music-bot.json index 96da03ca..5804cde5 100644 --- a/bots/discord/jmusicbot/egg-j-music-bot.json +++ b/bots/discord/jmusicbot/egg-j-music-bot.json @@ -34,7 +34,7 @@ "default_value": "You need to get a token", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64" + "rules": "required|string|max:70" }, { "name": "[REQUIRED] Bot Owner ID", @@ -127,4 +127,4 @@ "rules": "required|integer" } ] -} \ No newline at end of file +} From 7a5f16730ac6304cb03f4e7d6d250bc0502e5c12 Mon Sep 17 00:00:00 2001 From: Faye Date: Sat, 14 May 2022 09:55:19 +0200 Subject: [PATCH 03/11] Fixed install script --- .../terraria/tmodloader/egg-t-modloader.json | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/game_eggs/terraria/tmodloader/egg-t-modloader.json b/game_eggs/terraria/tmodloader/egg-t-modloader.json index 6d8cc605..22376c34 100755 --- a/game_eggs/terraria/tmodloader/egg-t-modloader.json +++ b/game_eggs/terraria/tmodloader/egg-t-modloader.json @@ -1,14 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2021-08-02T22:44:50-04:00", + "exported_at": "2022-05-14T02:54:50-05:00", "name": "tModloader", "author": "parker@parkervcp.com", "description": "tModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5" + ], + "file_denylist": [], "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port ${SERVER_PORT} -maxplayers ${MAX_PLAYERS} -difficulty ${DIFFICULTY} -password \"${SERVER_PASSWORD}\" -motd \"${MOTD}\" -lang ${LANGUAGE} -world ~\/saves\/Worlds\/${WORLD_NAME}.wld -worldname ${WORLD_NAME} -autocreate ${WORLD_SIZE} -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods", "config": { "files": "{}", @@ -18,12 +22,21 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl jq file unzip\r\n\r\nGITHUB_PACKAGE=tModLoader\/tModLoader\r\n\r\nif [ -z \"$GITHUB_USER\" ] && [ -z \"$GITHUB_OAUTH_TOKEN\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u $GITHUB_USER:$GITHUB_OAUTH_TOKEN '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/$GITHUB_PACKAGE\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/$GITHUB_PACKAGE\/releases\")\r\n\r\nif [ -z \"$VERSION\" ] || [ \"$VERSION\" == \"latest\" ]; then\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux | grep -i zip)\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i linux)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux | grep -i zip)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip -o ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2 \r\nfi\r\n\r\nchmod +x tModLoaderServer.bin.x86_64\r\nchmod +x tModLoaderServer\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf terraria-server-${CLEAN_VERSION}.zip rm ${DOWNLOAD_LINK##*\/}", + "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl jq file unzip\r\n\r\nGITHUB_PACKAGE=tModLoader\/tModLoader\r\n\r\nif [ -z \"$GITHUB_USER\" ] && [ -z \"$GITHUB_OAUTH_TOKEN\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u $GITHUB_USER:$GITHUB_OAUTH_TOKEN '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/tmodloader\/tmodloader\/releases\" | jq -c '.[] | select(.name | contains(\"v0\"))' | head -1)\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/$GITHUB_PACKAGE\/releases\" | jq '.[] | select(.name | contains(\"v0\"))')\r\n\r\n\r\nif [ -z \"$VERSION\" ] || [ \"$VERSION\" == \"latest\" ]; then\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux | grep -i zip)\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i linux)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux | grep -i zip)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip -o ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2 \r\nfi\r\n\r\nchmod +x tModLoaderServer.bin.x86_64\r\nchmod +x tModLoaderServer\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf terraria-server-${CLEAN_VERSION}.zip rm ${DOWNLOAD_LINK##*\/}", "container": "debian:buster-slim", "entrypoint": "bash" } }, "variables": [ + { + "name": "tModloader Version", + "description": "The version of tModloader that is to be used.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, { "name": "World Name", "description": "The name for the world file.", @@ -51,15 +64,6 @@ "user_editable": true, "rules": "required|numeric|digits_between:1,3" }, - { - "name": "tModloader Version", - "description": "The version of tModloader that is to be used.", - "env_variable": "VERSION", - "default_value": "latest", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20" - }, { "name": "GitHub User", "description": "GitHub user to use for api calls.\r\n\r\nThis only needs to be set if you hit the GitHub API too often across multiple servers.", @@ -115,4 +119,4 @@ "rules": "required|numeric|digits_between:1,5" } ] -} \ No newline at end of file +} From 6db9034c0a80e547edf2e0b15662f033ad1ffed0 Mon Sep 17 00:00:00 2001 From: gOOvER Date: Sun, 15 May 2022 11:17:13 +0200 Subject: [PATCH 04/11] fix startup, to show console; update images to ghcr --- .../valheim/valheim_plus/egg-valheim-plus-mod.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json index cd0f888e..c6168247 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-03-08T17:51:46+01:00", + "exported_at": "2022-05-15T11:15:06+02:00", "name": "Valheim Plus Mod", "author": "info@goover.de", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.", @@ -12,10 +12,10 @@ "steam_disk_space" ], "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_source" + "ghcr.io\/parkervcp\/games:source" ], "file_denylist": [], - "startup": "export templdpath=$LD_LIBRARY_PATH; export DOORSTOP_ENABLE=TRUE; export DOORSTOP_INVOKE_DLL_PATH=.\/BepInEx\/core\/BepInEx.Preloader.dll; export DOORSTOP_CORLIB_OVERRIDE_PATH=.\/unstripped_corlib; export LD_LIBRARY_PATH=.\/doorstop_libs:$LD_LIBRARY_PATH; export LD_PRELOAD=libdoorstop_x64.so:$LD_PRELOAD; export LD_LIBRARY_PATH=.\/linux64:$LD_LIBRARY_PATH; export SteamAppId=892970; .\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" -public ${PUBLIC} > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", + "startup": "export DOORSTOP_ENABLE=TRUE; export DOORSTOP_INVOKE_DLL_PATH=.\/BepInEx\/core\/BepInEx.Preloader.dll; export DOORSTOP_CORLIB_OVERRIDE_PATH=.\/unstripped_corlib; export LD_LIBRARY_PATH=\".\/doorstop_libs:$LD_LIBRARY_PATH\"; export LD_PRELOAD=\"libdoorstop_x64.so:$LD_PRELOAD\"; export templdpath=$LD_LIBRARY_PATH; export LD_LIBRARY_PATH=\".\/linux64:$LD_LIBRARY_PATH\"; export SteamAppId=892970; export LD_LIBRARY_PATH=$templdpath; .\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" -public ${PUBLIC} > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", "config": { "files": "{}", "startup": "{\r\n \"done\": \"DungeonDB Start\"\r\n}", @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc1 ca-certificates unzip jq wget\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; 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\ncd \/mnt\/server\/steamcmd\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 game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\ncd \/mnt\/server\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH\r\nrm -fR $MATCH\r\n\r\nchmod u+x start_server_bepinex.sh", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates unzip jq wget\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; 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\ncd \/mnt\/server\/steamcmd\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 game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\ncd \/mnt\/server\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH\r\nrm -fR $MATCH\r\n\r\nchmod u+x start_server_bepinex.sh", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -139,4 +139,4 @@ "rules": "required|string" } ] -} +} \ No newline at end of file From 2ef442053c75f86ee9b5345f7ade4988a7dc7a44 Mon Sep 17 00:00:00 2001 From: Bad <87938689+yesBad@users.noreply.github.com> Date: Sun, 15 May 2022 17:21:32 +0300 Subject: [PATCH 05/11] Fix L4D & L4D2 links in readme.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19c8bea8..14ab3907 100644 --- a/README.md +++ b/README.md @@ -208,8 +208,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Hurtworld](game_eggs/steamcmd_servers/hurtworld) * [Insurgency: Sandstorm](game_eggs/steamcmd_servers/insurgency_sandstorm) * [Killing Floor 2](game_eggs/steamcmd_servers/killing_floor_2) -* [Left 4 Dead](game_eggs/steamcdm_servers/left4dead) -* [Left 4 Dead 2](game_eggs/steamcdm_servers/left4dead_2) +* [Left 4 Dead](game_eggs/steamcmd_servers/left4dead) +* [Left 4 Dead 2](game_eggs/steamcmd_servers/left4dead_2) * [Modiverse](game_eggs/steamcmd_servers/modiverse) * [Mordhau](game_eggs/steamcmd_servers/mordhau) * [No More Room in Hell](game_eggs/steamcmd_servers/nmrih) From 8d0fa47a8311bd478bd36bfb27cf330d1041de29 Mon Sep 17 00:00:00 2001 From: DaFray31 Date: Mon, 16 May 2022 15:33:15 +0200 Subject: [PATCH 06/11] Update egg-j-music-bot.json --- bots/discord/jmusicbot/egg-j-music-bot.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/jmusicbot/egg-j-music-bot.json b/bots/discord/jmusicbot/egg-j-music-bot.json index 5804cde5..31f440c7 100644 --- a/bots/discord/jmusicbot/egg-j-music-bot.json +++ b/bots/discord/jmusicbot/egg-j-music-bot.json @@ -34,7 +34,7 @@ "default_value": "You need to get a token", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:70" + "rules": "required|string" }, { "name": "[REQUIRED] Bot Owner ID", From 62df08d68ad2c254a2aa1595a18d8b60e70077c4 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 16 May 2022 16:53:52 +0200 Subject: [PATCH 07/11] Update egg-gitea.json --- software/gitea/egg-gitea.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/software/gitea/egg-gitea.json b/software/gitea/egg-gitea.json index bb51ced3..f402222a 100644 --- a/software/gitea/egg-gitea.json +++ b/software/gitea/egg-gitea.json @@ -4,13 +4,13 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-07-07T21:58:54+02:00", + "exported_at": "2022-05-16T16:53:24+02:00", "name": "Gitea", "author": "mario.franze@gmail.com", "description": "Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.", "features": null, "images": [ - "quay.io\/parkervcp\/pterodactyl-images:base_debian" + "ghcr.io\/parkervcp\/yolks:debian" ], "file_denylist": [], "startup": ".\/gitea web -p {{SERVER_PORT}} -c .\/app.ini", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "apt update\r\napt install -y wget\r\n\r\ncd \/mnt\/server\r\n\r\nwget -O gitea https:\/\/dl.gitea.io\/gitea\/main\/gitea-main-linux-amd64\r\nchmod +x gitea\r\n\r\nmkdir custom\r\n\r\necho \"[server]\r\nLOCAL_ROOT_URL = http:\/\/localhost:${SERVER_PORT}\/\r\nDOMAIN = ${SERVER_IP}\r\nHTTP_PORT = ${SERVER_PORT}\r\nDISABLE_SSH = ${DISABLE_SSH}\r\nSSH_PORT = ${SSH_PORT}\" > \/mnt\/server\/custom\/app.ini\r\n\r\necho \"Install complete\"", + "script": "apt update\r\napt install -y wget\r\n\r\ncd \/mnt\/server\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n\r\n\r\nwget -O gitea https:\/\/dl.gitea.io\/gitea\/main\/gitea-main-linux-${ARCH}\r\nchmod +x gitea\r\n\r\nmkdir custom\r\n\r\necho \"[server]\r\nLOCAL_ROOT_URL = http:\/\/localhost:${SERVER_PORT}\/\r\nDOMAIN = ${SERVER_IP}\r\nHTTP_PORT = ${SERVER_PORT}\r\nDISABLE_SSH = ${DISABLE_SSH}\r\nSSH_PORT = ${SSH_PORT}\" > \/mnt\/server\/custom\/app.ini\r\n\r\necho \"Install complete\"", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -47,4 +47,4 @@ "rules": "required|integer|between:1024,65535" } ] -} \ No newline at end of file +} From 65d5978e8c1d3e60637f37c7fa47380be23dbfc6 Mon Sep 17 00:00:00 2001 From: softwarenoob Date: Sat, 21 May 2022 18:31:51 +0300 Subject: [PATCH 08/11] fix: update Paper API Paper api endpoints have been updated to api.papermc.io/v2 from the old papermc.io/api/v2 This is a copy of default Paper egg from the Panel, but without PTDL_V2 changes, which requires Panel 1.8+ that has not been released yet. --- game_eggs/minecraft/java/paper/egg-paper.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/game_eggs/minecraft/java/paper/egg-paper.json b/game_eggs/minecraft/java/paper/egg-paper.json index bbb9de1b..98d3195e 100644 --- a/game_eggs/minecraft/java/paper/egg-paper.json +++ b/game_eggs/minecraft/java/paper/egg-paper.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-12-09T13:30:53-05:00", + "exported_at": "2022-05-21T10:48:18-04:00", "name": "Paper", "author": "parker@pterodactyl.io", "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.", @@ -14,24 +14,24 @@ "pid_limit" ], "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_8", "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" + "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_17" ], "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { - "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", "logs": "{}", "stop": "stop" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/java\/server.properties\r\nfi", - "container": "debian:buster-slim", - "entrypoint": "bash" + "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi", + "container": "ghcr.io\/pterodactyl\/installers:alpine", + "entrypoint": "ash" } }, "variables": [ @@ -41,7 +41,7 @@ "env_variable": "MINECRAFT_VERSION", "default_value": "latest", "user_viewable": true, - "user_editable": false, + "user_editable": true, "rules": "nullable|string|max:20" }, { @@ -51,7 +51,7 @@ "default_value": "server.jar", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" }, { "name": "Download Path", @@ -68,7 +68,7 @@ "env_variable": "BUILD_NUMBER", "default_value": "latest", "user_viewable": true, - "user_editable": false, + "user_editable": true, "rules": "required|string|max:20" } ] From d0d92996a3340c9526abc895df23f957fc7a70b2 Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 22 May 2022 00:21:59 -0400 Subject: [PATCH 09/11] Update download API for Magma --- game_eggs/minecraft/java/magma/egg-magma.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/game_eggs/minecraft/java/magma/egg-magma.json b/game_eggs/minecraft/java/magma/egg-magma.json index 49e63930..9be55697 100644 --- a/game_eggs/minecraft/java/magma/egg-magma.json +++ b/game_eggs/minecraft/java/magma/egg-magma.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2022-01-11T09:07:47-05:00", + "exported_at": "2022-05-22T00:20:47-04:00", "name": "Magma", "author": "support@pterodactyl.io", "description": "Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability.", @@ -28,7 +28,7 @@ }, "scripts": { "installation": { - "script": "apt update\r\napt install -y curl jq\r\n\r\nif [[ ! -d \/mnt\/server ]]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\n# get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/1.16.5\/${BRANCH}\/latest\")\r\nOLD_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/1.12\/${BRANCH}\/latest\")\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i installer.jar)\r\n\r\nelif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/${MC_VERSION}\/${BRANCH}\/latest\")\r\n DOWNLOAD_LINK=$(echo ${CUSTOM_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i installer.jar)\r\nelif [[ \"${MC_VERSION}\" == \"1.12\" ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/1.12\/${BRANCH}\/latest\")\r\n DOWNLOAD_LINK=$(echo ${OLD_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i server.jar)\r\nelse\r\n # Try to locate version by exact tag name. This will most likely always fail, because the tag names are in a weird format. Leaving it here just in case someone wants to fetch exact tag releases.\r\n VERSION_CHECK=$(echo ${OLD_JSON} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.[] | select(.tag_name==$MC_VERSION) | .tag_name')\r\n if [[ \"${MC_VERSION}\" == \"${VERSION_CHECK}\" ]]; then\r\n DOWNLOAD_LINK=$(echo ${OLD_JSON} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.[] | select(.tag_name==$MC_VERSION) | .assets[].browser_download_url' | grep -i installer.jar)\r\n else\r\n echo -e \"Specified ${MC_VERSION} version not found. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n# validate download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n echo -e \"Validating downlaod link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nfunction downloadMagma {\r\n echo -e \"running: curl -sSL -o installer.jar ${DOWNLOAD_LINK}\"\r\n curl -sSL -o installer.jar -sSL ${DOWNLOAD_LINK}\r\n}\r\n\r\nif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]] || [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]] ; then\r\n downloadMagma\r\n echo -e \"1.16.5 or newer version detected. Running installer\"\r\n java -jar installer.jar --installServer || { echo -e \"install failed\" exit 4; }\r\n mv forge-*.jar $SERVER_JARFILE\r\n echo -e \"Deleting installer.jar file.\\n\"\r\n rm -rf *installer.jar\r\nelse\r\n downloadMagma\r\n echo -e \"Older magma version detected. Skipping installer\"\r\n mv installer.jar $SERVER_JARFILE\r\nfi\r\n\r\necho -e \"Install Complete\"", + "script": "apt update\r\napt install -y curl jq\r\n\r\nif [[ ! -d \/mnt\/server ]]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\n# get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/1.16.5\/latest\")\r\n\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION = \"latest\"\r\nfi\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq -r .link | grep -i installer.jar)\r\nelif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/${TAG_VERSION}\")\r\n DOWNLOAD_LINK=$(echo ${CUSTOM_JSON} | jq -r .link | grep -i installer.jar)\r\nelif [[ \"${MC_VERSION}\" == \"1.12\" ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/1.12\/${TAG_VERSION}\")\r\n DOWNLOAD_LINK=$(echo ${CUSTOM_JSON} | jq -r .link | grep -i server.jar)\r\nelse\r\n echo -e \"Specified ${MC_VERSION} version not found. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .link)\r\nfi\r\n\r\n# validate download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nfunction downloadMagma {\r\n echo -e \"running: curl -sSL -o installer.jar ${DOWNLOAD_LINK}\"\r\n curl -sSL -o installer.jar -sSL ${DOWNLOAD_LINK}\r\n}\r\n\r\nif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]] || [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]] ; then\r\n downloadMagma\r\n echo -e \"1.16.5 or newer version detected. Running installer\"\r\n java -jar installer.jar --installServer || { echo -e \"install failed\" exit 4; }\r\n mv forge-*.jar $SERVER_JARFILE\r\n echo -e \"Deleting installer.jar file.\\n\"\r\n rm -rf *installer.jar\r\nelse\r\n downloadMagma\r\n echo -e \"Older magma version detected. Skipping installer\"\r\n mv installer.jar $SERVER_JARFILE\r\nfi\r\n\r\necho -e \"Install Complete\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } @@ -53,13 +53,13 @@ "rules": "nullable|string|max:20" }, { - "name": "Branch [dev or stable]", - "description": "Branch to install. Valid options: dev or stable", - "env_variable": "BRANCH", - "default_value": "dev", + "name": "Tag Version", + "description": "Optional.\r\n\r\nSpecify the tag version to install. Leave empty or set latest to install latest", + "env_variable": "TAG_VERSION", + "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:dev,stable" + "rules": "nullable|string|max:20" } ] -} +} \ No newline at end of file From da7bfab43dafb0f2cb19126756fadad2fdd33c4a Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Sun, 22 May 2022 18:17:59 -0700 Subject: [PATCH 10/11] General Egg Cleanup - Fixed typo in description - Fixed BattlEye path in startup command - Wrapped extra startup parameters in quotations to prevent a malicious client from executing arbitrary bash commands on the container via a (potentially forced) Arma server application crash. - Stop command no longer requires extra "C" and was fixed. - Updated install script to check for valid Steam credentials (required for Arma 3) and removed an un-needed directory creation. Also made the Script Entrypoint Command more specific. - Removed long gone depreciated startup variables (not even used in startup or entrypoint anymore). --- .../arma/arma3/egg-arma3.json | 33 ++++--------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json b/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json index c4bc36b3..fc781d8f 100644 --- a/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json +++ b/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json @@ -1,13 +1,12 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "_comment": "Pterodactyl Arma 3 Egg ~ David Wolfe (Red-Thirten) ~ 2022-05-22", "meta": { "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-11-26T13:51:11+01:00", "name": "Arma 3", "author": "rehlmgaming@gmail.com", - "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", + "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", "features": [ "steam_disk_space" ], @@ -15,18 +14,18 @@ "ghcr.io\/parkervcp\/games:arma3" ], "file_denylist": [], - "startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=basic.cfg -config=server.cfg -mod=\\\"{{CLIENT_MODS}}\\\" -serverMod=\\\"{{SERVERMODS}}\\\" {{STARTUP_PARAMS}}", + "startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/ -cfg=basic.cfg -config=server.cfg -mod=\\\"{{CLIENT_MODS}}\\\" -serverMod=\\\"{{SERVERMODS}}\\\" \\\"{{STARTUP_PARAMS}}\\\"", "config": { "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"password=\": \"password = \\\"{{env.SERVER_PASSWORD}}\\\";\",\r\n \"\/\/password=\": \"password = \\\"{{env.SERVER_PASSWORD}}\\\";\",\r\n \"password =\": \"password = \\\"{{env.SERVER_PASSWORD}}\\\";\",\r\n \"\/\/password =\": \"password = \\\"{{env.SERVER_PASSWORD}}\\\";\",\r\n \"maxPlayers\": \"maxPlayers = {{env.MAX_PLAYERS}};\",\r\n \"headlessClients\": \"headlessClients[] = { \\\"127.0.0.1\\\" };\",\r\n \"localClient\": \"localClient[] = { \\\"127.0.0.1\\\" };\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Host identity created.\"\r\n}", "logs": "{}", - "stop": "^CC" + "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Arma 3 Egg - egg-arma3.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2021\/07\/11\r\n## License: MIT License\r\n\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Download and install SteamCMD\r\ncd \/tmp\r\nmkdir -p \"\/mnt\/server\/steamcmd\" \"\/mnt\/server\/steamapps\"\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\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 game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server \"+login \\\"${STEAM_USER}\\\" \\\"${STEAM_PASS}\\\"\" +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\r\n\r\n# Set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n# Set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# Arma 3 setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO ${BASIC_URL}\r\n[[ -f server.cfg ]] || curl -sSLO ${BASIC_URL%\/*}\/server.cfg\r\nchmod 755 basic.cfg server.cfg", + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Arma 3 Egg - egg-arma3.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2022\/05\/22\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Check for valid Steam credentials to download Arma 3 with (requires valid Steam account)\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_USER}\" == \"anonymous\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"INSTALLATION ERROR: A valid REAL Steam account is required to download the Arma 3 Dedicated Server.\"\r\n echo -e \"\\t(\\\"anonymous\\\" account cannot be used. Game ownership is not required.)\"\r\n exit 1\r\nfi\r\n\r\n# Download and install SteamCMD\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd \/mnt\/server\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\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 game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server \"+login \\\"${STEAM_USER}\\\" \\\"${STEAM_PASS}\\\"\" +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n# Arma 3 setup\r\ncd \/mnt\/server\/\r\n[[ -f basic.cfg ]] || curl -sSLO ${BASIC_URL}\r\n[[ -f server.cfg ]] || curl -sSLO ${BASIC_URL%\/*}\/server.cfg\r\nchmod 644 basic.cfg server.cfg", "container": "ghcr.io\/parkervcp\/installers:debian", - "entrypoint": "bash" + "entrypoint": "\/bin\/bash" } }, "variables": [ @@ -227,24 +226,6 @@ "user_viewable": false, "user_editable": false, "rules": "required|url" - }, - { - "name": "[Depreciated] Server Configuration File", - "description": "This is a depreciated variable that is only included for servers running on an older Startup Command.", - "env_variable": "CONFIG", - "default_value": "server.cfg", - "user_viewable": false, - "user_editable": false, - "rules": "string|nullable" - }, - { - "name": "[Depreciated] Basic Configuration File", - "description": "This is a depreciated variable that is only included for servers running on an older Startup Command.", - "env_variable": "BASIC", - "default_value": "basic.cfg", - "user_viewable": false, - "user_editable": false, - "rules": "required|string" } ] -} +} \ No newline at end of file From c109097ee4af0094ff66402d45f55627a01c9a4e Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Sun, 22 May 2022 20:36:57 -0700 Subject: [PATCH 11/11] Cleaned up README - Added IAmSilK as a code contributor - Condensed System Requirements/Recommendations to a nice table --- .../steamcmd_servers/arma/arma3/README.md | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/game_eggs/steamcmd_servers/arma/arma3/README.md b/game_eggs/steamcmd_servers/arma/arma3/README.md index c06131db..b5570650 100644 --- a/game_eggs/steamcmd_servers/arma/arma3/README.md +++ b/game_eggs/steamcmd_servers/arma/arma3/README.md @@ -25,6 +25,14 @@ ___ 💻 💡 + + +
IAmSilK +
+
+ 💻 + 💡 +
Daave @@ -76,33 +84,27 @@ ___ Default server ports are listed below, but the Main port can be any port. There are three more ports after the Main port are relative to the Main port (For example: The BattlEye port is always 4 ports higher than the main port). **All four ports are required for normal server behavior.** It is [recommended](https://community.bistudio.com/wiki/Arma_3:_Dedicated_Server#Port_Forwarding) that each server be 100 ports separate from each other. -| Port | Default | +| Port | Default (UDP) | |---------|---------| | **Arma 3 Game & VON (Main)** | 2302 | | Steam Query (+1) | 2303 | | Steam Port (+2) | 2304 | | BattleEye (+4) | 2306 | -#### Mods/Plugins may require ports to be added to the server - ___ -### CPU Usage Information +### Installation/System Requirements -ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU allotted to it for AI processing seems to be limited as well. Therefore, a Headless Client ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used. +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | Recent x86/64 (AMD/Intel) processor. No ARM support. | ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU allotted to it for AI processing seems to be limited as well. Therefore, a Headless Client ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used. | +| RAM | 2048 MiB | 3072 MiB (If used, every Headless Client uses an additional 2048 MB of RAM as well) | +| Storage | 10 GB | 50+ GB (depends on how many mods are installed) | +| Network | 0.512 Mbit/s/player | 1-5 Mbit/s/player | +| Host OS | Most stable Linux OS branches should work | Using the latest kernel version for your installed OS can prevent some edge-case installation/boot issues. | ___ -### Minimum RAM Requirement - -This server requires about 2048 MB of RAM to run properly. If used, every Headless Client uses an additional 2048 MB of RAM as well. -___ - -### Minimum Disk Requirement - -This server requires just under 10 GB of disk space to safely run properly with no mods. However, mods can easily increase disk usage to 50 GB or more, depending on how many are downloaded. -___ - ### Recommended Egg Modifications The following are highly recommended variable modifications you can make to the egg after importing it to your panel. While viewing this egg, simply go to the "Variables" tab of the egg editor to make these changes.