From 60abe76d556a92f81d0abc78d4a3e51ff0a21ae3 Mon Sep 17 00:00:00 2001 From: Gorian <1012176+Gorian@users.noreply.github.com> Date: Mon, 15 Nov 2021 13:39:20 -0800 Subject: [PATCH 01/25] Create README.md --- software/5e-tools/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 software/5e-tools/README.md diff --git a/software/5e-tools/README.md b/software/5e-tools/README.md new file mode 100644 index 00000000..b8ffb15b --- /dev/null +++ b/software/5e-tools/README.md @@ -0,0 +1,4 @@ +# 5e Tools +> A suite of tools for 5th Edition Dungeons & Dragons players and Dungeon Masters. + +This is a self-hosted mirror of https://5e.tools. It will clone a github repository mirror on install and update on container reboot. From 563b828958492515df1f5af577fab2d36e5e932a Mon Sep 17 00:00:00 2001 From: Gorian <1012176+Gorian@users.noreply.github.com> Date: Mon, 15 Nov 2021 13:40:02 -0800 Subject: [PATCH 02/25] Create egg-5e-tools.json --- software/5e-tools/egg-5e-tools.json | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 software/5e-tools/egg-5e-tools.json diff --git a/software/5e-tools/egg-5e-tools.json b/software/5e-tools/egg-5e-tools.json new file mode 100644 index 00000000..7643cad4 --- /dev/null +++ b/software/5e-tools/egg-5e-tools.json @@ -0,0 +1,41 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-11-15T13:39:55-08:00", + "name": "5e Tools", + "author": "pterodactyl@demi.cloud", + "description": "A suite of tools for 5th Edition Dungeons & Dragons players and Dungeon Masters.", + "features": null, + "images": [ + "ghcr.io\/parkervcp\/yolks:debian" + ], + "file_denylist": [], + "startup": "cd ~\/5e-tools && git pull && cd && .\/caddy run -config ~\/caddy.json", + "config": { + "files": "{\r\n \"caddy.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"apps.http.servers.srv0.listen.0\": \":{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"serving initial configuration\",\r\n \"userInteraction\": []\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# 5e Tools install script\r\n#\r\n# Server Files: \/mnt\/server\r\ndeclare -r DIR=\"\/mnt\/server\"\r\ndeclare -r CADDY_INSTALL_URL=\"https:\/\/caddyserver.com\/api\/download?os=linux&arch=amd64&idempotency=41554620449867\"\r\ndeclare -r LOCAL_REPO=\"${DIR}\/5e-tools\"\r\n\r\ndie() {\r\n local message=\"$1\"\r\n printf \"\\n%s\\n\" \"${message}\"\r\n exit 2\r\n}\r\ncd_error() {\r\n die \"ERROR: installation encountered an error while trying to change directory\"\r\n}\r\n\r\nmain() {\r\n local git_origin\r\n apt update\r\n apt install -y wget\r\n cd \"${DIR}\" || cd_error\r\n printf \"\\nInstalling Caddy...\\n\"\r\n wget \"${CADDY_INSTALL_URL}\" -O .\/caddy\r\n chmod +x .\/caddy\r\n printf \"\\nGenerating Caddy configuration...\\n\"\r\n # this is a default config\r\n # key variables, such as the port, will get overwritten with the pterodactyl\r\n # configuration parser\r\n cat <\"${DIR}\/caddy.json\"\r\n{\r\n \"apps\": {\r\n \"http\": {\r\n \"servers\": {\r\n \"srv0\": {\r\n \"listen\": [\r\n \":8080\"\r\n ],\r\n \"routes\": [\r\n {\r\n \"handle\": [\r\n {\r\n \"handler\": \"vars\",\r\n \"root\": \"\/home\/container\/5e-tools\"\r\n },\r\n {\r\n \"encodings\": {\r\n \"gzip\": {},\r\n \"zstd\": {}\r\n },\r\n \"handler\": \"encode\",\r\n \"prefer\": [\r\n \"zstd\",\r\n \"gzip\"\r\n ]\r\n },\r\n {\r\n \"handler\": \"file_server\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n }\r\n}\r\nEOF\r\n git config --global pull.ff only\r\n if [[ ! -d \"${LOCAL_REPO}\" ]]; then\r\n printf \"\\nCloning latest version (this may take a while)...\\n\"\r\n # $REPOSITORY is passed via environment variable from pterodactyl\r\n git clone \"${REPOSITORY}\" \"${LOCAL_REPO}\"\r\n else\r\n cd \"${LOCAL_REPO}\" || cd_error\r\n git_origin=\"$(git config --get remote.origin.url)\"\r\n cd \"${DIR}\" || cd_error\r\n printf \"\\n\\ngit origin is %s\\n\\n\" \"${git_origin}\"\r\n # if the user hasn't change the repository variable\r\n if [[ \"${git_origin}\" == \"${REPOSITORY}\" ]]; then\r\n cd \"${LOCAL_REPO}\" || cd_error\r\n printf \"\\nRepository already installed - updating...\\n\"\r\n git fetch --all\r\n git reset --hard origin\/master\r\n git pull\r\n cd \"${DIR}\" || cd_error\r\n else\r\n printf \"\\nRepository variable changed since last update\\n...\\n\"\r\n rm -rf \"${LOCAL_REPO}\"\r\n git clone \"${REPOSITORY}\" \"${LOCAL_REPO}\"\r\n fi\r\n fi\r\n printf \"\\nInstallation Complete\\n\"\r\n}\r\nmain \"@\"", + "container": "ghcr.io\/pterodactyl\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "5e Tools Repository", + "description": "Git Repository to use for cloning 5e Tools", + "env_variable": "REPOSITORY", + "default_value": "https:\/\/github.com\/5etools-mirror-1\/5etools-mirror-1.github.io", + "user_viewable": false, + "user_editable": false, + "rules": "required|url" + } + ] +} From dcf1db3c5596c5ec82d730e32077b4bda2e02104 Mon Sep 17 00:00:00 2001 From: Gorian <1012176+Gorian@users.noreply.github.com> Date: Mon, 15 Nov 2021 13:41:19 -0800 Subject: [PATCH 03/25] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 302c1ad3..248a7d2f 100644 --- a/README.md +++ b/README.md @@ -257,3 +257,5 @@ If you are reading this it looks like you are looking to add an egg to your serv * [haste-server](/software/haste-server) ### RabbitMQ * [rabbitmq](/software/rabbitmq) +### 5e Tools +* [5e Tools](/software/5e-tools) From effed6d573260e133a970e5cef6d054b4a5a9515 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Mon, 18 Apr 2022 15:37:14 +0200 Subject: [PATCH 04/25] Fix Image for ARM64 --- voice_servers/lavalink/egg-lavalink.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index 29b3a673..77b2effa 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -10,7 +10,7 @@ "description": "Standalone audio sending node based on Lavaplayer and JDA-Audio. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/Frederikam\/Lavalink", "features": null, "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-13" + "ghcr.io/parkervcp/yolks:java_11" ], "file_denylist": [], "startup": "java -jar Lavalink.jar", @@ -28,4 +28,4 @@ } }, "variables": [] -} \ No newline at end of file +} From c69183d5b0ab92f7fb01183d12e203fe4809a7dc Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Mon, 18 Apr 2022 15:43:50 +0200 Subject: [PATCH 05/25] Update egg-lavalink.json --- voice_servers/lavalink/egg-lavalink.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index 77b2effa..5fee7eba 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# NodeJS Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\ncurl -L -o Lavalink.jar https:\/\/github.com\/freyacodes\/Lavalink\/releases\/latest\/download\/Lavalink.jar\r\n\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho -e \"install complete\"\r\nexit 0", - "container": "debian:buster-slim", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, From d412e4fb79c8b64259eb60db3495a2fbe3b60a33 Mon Sep 17 00:00:00 2001 From: Charles Morgan Date: Thu, 21 Apr 2022 00:25:47 -0700 Subject: [PATCH 06/25] Update README.md (#1618) Update minecraft links --- game_eggs/minecraft/README.md | 66 +++++++++++++++++------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index e10d63b2..3e8fca16 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -13,39 +13,39 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, ## [Java](java) Servers for Java Minecraft -* [Airplane](minecraft/java/airplane) -* [Cuberite](minecraft/java/cuberite) -* [Fabric](minecraft/java/fabric) -* [Feather](minecraft/java/feather) -* [Forge](minecraft/java/forge) - * [Forge](minecraft/java/forge/forge) - * [CusreForge Generic](minecraft/java/forge/curseforge-generic) -* [Feed The Beast](minecraft/java/ftb) -* [Glowstone](/minecraft/java/glowstone) -* [Krypton](/minecraft/java/krypton) -* [Magma](minecraft/java/magma) -* [Mohist](minecraft/java/mohist) -* [NanoLimbo](/minecraft/java/nanolimbo) -* [Paper](minecraft/java/paper) -* [Purpur](minecraft/java/purpur) -* [Spigot](minecraft/java/spigot) -* [SpongeForge](minecraft/java/spongeforge) -* [SpongeVanilla](minecraft/java/spongevanilla) -* [Technic](minecraft/java/technic) -* [Tuinity](minecraft/java/tuinity) -* [VanillaCord](minecraft/java/vanillacord) +* [Airplane](java/airplane) +* [Cuberite](java/cuberite) +* [Fabric](java/fabric) +* [Feather](java/feather) +* [Forge](java/forge) + * [Forge](java/forge/forge) + * [CusreForge Generic](java/forge/curseforge-generic) +* [Feed The Beast](java/ftb) +* [Glowstone](java/glowstone) +* [Krypton](java/krypton) +* [Magma](java/magma) +* [Mohist](java/mohist) +* [NanoLimbo](java/nanolimbo) +* [Paper](java/paper) +* [Purpur](java/purpur) +* [Spigot](java/spigot) +* [SpongeForge](java/spongeforge) +* [SpongeVanilla](/java/spongevanilla) +* [Technic](java/technic) +* [Tuinity](java/tuinity) +* [VanillaCord](java/vanillacord) ## [Proxies](proxy) Minecraft Server Proxies -* [Bedrock](minecraft/proxy/bedrock) - * [Waterdog PE](minecraft/proxy/bedrock/waterdog_pe) -* [Cross Platform](minecraft/proxy/cross_platform) - * [GeyserMC](minecraft/proxy/cross_platform/geyser) - * [Waterdog](minecraft/proxy/cross_platform/waterdog) -* [Java](minecraft/proxy/java) - * [FlameCord](minecraft/proxy/java/flamecord) - * [Travertine](minecraft/proxy/java/travertine) - * [TyphoonLimbo](minecraft/proxy/java/typhoonlimbo) - * [Velocity](minecraft/proxy/java/velocity) - * [VIAaas](minecraft/proxy/java/viaaas) - * [Waterfall](minecraft/proxy/java/waterfall) \ No newline at end of file +* [Bedrock](proxy/bedrock) + * [Waterdog PE](proxy/bedrock/waterdog_pe) +* [Cross Platform](proxy/cross_platform) + * [GeyserMC](proxy/cross_platform/geyser) + * [Waterdog](proxy/cross_platform/waterdog) +* [Java](proxy/java) + * [FlameCord](proxy/java/flamecord) + * [Travertine](proxy/java/travertine) + * [TyphoonLimbo](proxy/java/typhoonlimbo) + * [Velocity](proxy/java/velocity) + * [VIAaas](proxy/java/viaaas) + * [Waterfall](proxy/java/waterfall) From 9ac7d4860dea989e1cf6247459ffc2b679e6f96d Mon Sep 17 00:00:00 2001 From: TuEye Date: Sat, 23 Apr 2022 15:26:04 +0200 Subject: [PATCH 07/25] * Made egg compatible to Nitrox 1.6.0.0 * Using parkers script to determine Nitrox Downnload-URL * Moved to yolks * Made Admin Password longer and required --- .../subnautica_nitrox_mod/egg-subnautica.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json index 446b9485..6ff877ef 100644 --- a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json +++ b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-08-18T21:29:22+02:00", + "exported_at": "2022-04-23T15:20:19+02:00", "name": "Subnautica", "author": "tueye@tuworld.de", "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.5.0.0 is required", @@ -12,7 +12,7 @@ "steam_disk_space" ], "images": [ - "quay.io\/pterodactyl\/core:mono" + "ghcr.io\/parkervcp\/yolks:mono_latest" ], "file_denylist": [], "startup": "mono .\/nitrox\/NitroxServer-Subnautica.exe", @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\nlatest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\nif [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_NitroxMod\r\nelse\r\n DL_VERSION=${NITROX_VERSION}\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL https:\/\/github.com\/SubnauticaNitrox\/Nitrox\/releases\/download\/${DL_VERSION}\/Nitrox.${DL_VERSION}.zip -o Nitrox.${DL_VERSION}.zip\r\nunzip $HOME\/nitrox\/Nitrox.${DL_VERSION}.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n#latest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\n#if [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n# DL_VERSION=$latest_NitroxMod\r\n#else\r\n# DL_VERSION=${NITROX_VERSION}\r\n#fi\r\n\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\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_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 \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(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_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL $DOWNLOAD_URL -o Nitrox.zip\r\nunzip $HOME\/nitrox\/Nitrox.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n## Create mono registry entry for Subnautica Install-Dir. Needed for versions since 1.6.0\r\nmkdir -p $HOME\/.mono\/registry\/CurrentUser\r\n cat < $HOME\/.mono\/registry\/CurrentUser\/values.xml\r\n \r\n \/home\/container\/subnautica<\/value>\r\n <\/values>\r\nEOT\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -118,7 +118,7 @@ "default_value": "PleaseChangeMe", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|between:3,12" + "rules": "required|string|between:3,16" }, { "name": "Game Mode", @@ -148,4 +148,4 @@ "rules": "required|string|in:PROTOBUF,JSON" } ] -} +} \ No newline at end of file From 280547b07a9569c6ddf1164331e639774afd550a Mon Sep 17 00:00:00 2001 From: Stephen White Date: Sun, 24 Apr 2022 12:15:44 -0300 Subject: [PATCH 08/25] feat(arma 3): Variable for specifying optional mods (#1592) --- game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json b/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json index 9c72ea16..c4bc36b3 100644 --- a/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json +++ b/game_eggs/steamcmd_servers/arma/arma3/egg-arma3.json @@ -165,6 +165,15 @@ "user_editable": true, "rules": "nullable|string" }, + { + "name": "[Advanced] Optional Client-Side Mods", + "description": "A semicolon-separated list of optional mods to load into the keys folder, but not include in server's mod parameter. Useful for allowing clients to connect to the server with or without the mod loaded. Mods in this list must be in \"@workshopID\" form (ex. @123456789;@987654321;). These will also be included in Automatic Updates (if enabled).", + "env_variable": "OPTIONALMODS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, { "name": "[Advanced] Extra Flags for SteamCMD", "description": "[This will override \"Download Creator DLCs\" if used] Only used when checking for server updates, and typically used for grabbing beta builds. Example: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", From 05be24d2b0df27770b6d68673bc6766846c2ec5b Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Apr 2022 12:20:00 -0700 Subject: [PATCH 09/25] Added "Disable Seasonal Events" Option Added "Disable Seasonal Events" startup variable and updated the startup command to add the new flag `-DisableSeasonalEvents` if the variable is "true". This new flag was added to Satisfactory in 0.5.1.4 (https://satisfactory.fandom.com/wiki/Patch_0.5.1.4). --- .../satisfactory/egg-satisfactory.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json index 3d8f7889..cc82ea88 100644 --- a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json +++ b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json @@ -1,5 +1,5 @@ { - "_comment": "Pterodactyl Satisfactory Egg ~ Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord ~ 2021-11-29", + "_comment": "Pterodactyl Satisfactory Egg ~ Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord ~ 2022-02-07", "meta": { "version": "PTDL_v1", "update_url": null @@ -14,7 +14,7 @@ "ghcr.io\/parkervcp\/games:source" ], "file_denylist": [], - "startup": ".\/Engine\/Binaries\/Linux\/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0", + "startup": ".\/Engine\/Binaries\/Linux\/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo \"-DisableSeasonalEvents\"; fi)", "config": { "files": "{\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Engine.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mNumRotatingAutosaves\": \"mNumRotatingAutosaves={{server.build.env.NUM_AUTOSAVES}}\",\r\n \"bImplicitSend\": \"bImplicitSend={{server.build.env.UPLOAD_CRASH_REPORT}}\",\r\n \"InitialConnectTimeout\": \"InitialConnectTimeout={{server.build.env.INIT_CONNECT_TIMEOUT}}\",\r\n \"ConnectionTimeout\": \"ConnectionTimeout={{server.build.env.CONNECT_TIMEOUT}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mFloatValues\": \"mFloatValues=((\\\"FG.AutosaveInterval\\\", {{server.build.env.AUTOSAVE_INTERVAL}}))\",\r\n \"mIntValues\": \"mIntValues=((\\\"FG.NetworkQuality\\\", {{server.build.env.NETWORK_QUALITY}}))\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}", @@ -92,6 +92,15 @@ "user_editable": true, "rules": "required|string|in:true,false" }, + { + "name": "Disable Seasonal Events", + "description": "Accepted values are \"true\" or \"false\". Setting to \"true\" will disable any currently active seasonal events.", + "env_variable": "DISABLE_SEASONAL", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, { "name": "[Experimental] Max Players", "description": "[Requires server re-install to change default value!] The server and client are currently not optimized to support more than 4 players. However, you can override this value here at your own risk of poor performance.", From c1f57dfd7497e1e4c043874be00bb349664985a2 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Apr 2022 12:31:18 -0700 Subject: [PATCH 10/25] General README Improvements Updated some info and cleaned up verbiage in some places. --- .../steamcmd_servers/satisfactory/README.md | 53 +++++-------------- 1 file changed, 12 insertions(+), 41 deletions(-) diff --git a/game_eggs/steamcmd_servers/satisfactory/README.md b/game_eggs/steamcmd_servers/satisfactory/README.md index 79b49fed..a0d643ab 100644 --- a/game_eggs/steamcmd_servers/satisfactory/README.md +++ b/game_eggs/steamcmd_servers/satisfactory/README.md @@ -1,10 +1,7 @@ # Satisfactory - ***Updating your Egg?**: Ensure any existing servers have the latest Startup Command, new Startup Variables are set, **and you reinstall server!*** ___ - -## Authors / Contributors - +### Authors / Contributors @@ -62,40 +59,33 @@ ___ ___ - ### Game Description - From Coffee Stain's [Website](https://www.satisfactorygame.com/): > Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven! - ___ - ### Egg Capabilities - - Configuration of the Server Query, Beacon, and Game ports. - Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable. - *[Experimental]* Max player configuration. - Autosave amount and interval configuration. - Disable crash reporting if desired. +- Disable seasonal events if desired. - ...and other advanced networking and server branch configurable settings. - ___ - ### Server Ports - -- Default server ports are listed below, but all three ports can be changed freely. +- Default server ports are listed below, but all three ports can be changed freely (\*some exceptions apply below). + - All three ports must be unique; they cannot currently be shared on one port (this may change in the future). + - It is recommended to distance ports of other running Satisfactory servers in Pterodactyl by **increments of 100** (it is currently unknown what the minimum increment is, but an increment of +1 caused cross-server talk in testing). Also, your internal ports **must match** your external ports on your network (ie. you can't have an external port of 7778 forwarded to your 7777 internal port; they must match). - **Note:** The Primary/Default/Game Port for your server in Pterodactyl will be Satisfactory's `-Port=????` game port, even though clients will **connect with the Query port**. -- It is recommended to distance ports of other running Satisfactory servers in Pterodactyl by **increments of 100** (it is currently unknown what the minimum increment is, but an increment of +1 caused cross-server talk in testing). Also, your internal ports **must match** your external ports on your network (ie. you can't have an external port of 7778 forwarded to your 7777 internal port; they must match). - ***All three ports are required to be open/allocated for normal server behavior!*** | Port | Default (UDP) | |---------|---------| | **Game (Primary Port in Pterodactyl)** | 7777 | | Beacon | 15000 | -| Server Query | 15777 | +| Server Query (Port clients connect with) | 15777 | ___ - ### Installation/System Requirements | | Bare Minimum | Recommended | @@ -108,54 +98,40 @@ ___ | Game Ownership | Not required to start. | Required to fully "initialize" (see [Server Initialization](#server-initialization) below) | ___ - ### Server Initialization - For a server to be fully "initialized", a client who owns the game must log into the server to "claim" it and create an administrator password. Then, a new session can be created via the "Create Game" tab in-game, or an existing save file can be uploaded (see [Save Files](#save-files) below). Misc. settings listed below can be configured by an admin client via the game's "Server Settings" tab, and are currently **not** set via the Egg: - - Server Password - Admin Password - Auto-Save on Player Disconnect - Pause When No Players Online - ...and possibly more as the client's UI is developed further for more configuration options. - ___ - ### Save Files - An existing save file (including single-player saves) can currently be uploaded to the server via two different methods: -- "Manage Saves" tab via a client in-game (Recommended) +- "Manage Saves" tab via an admin client in-game (Recommended) - Manually via the File Manager or SFTP Save files are located in this directory: - ```md /home/container/.config/Epic/FactoryGame/Saved/SaveGames/server ``` - *Note: A manually uploaded save will only load if it is (a.) loaded manually via the "Manage Saves" tab in-game, (b.) it is the only save file present, or (c.) its existing session name (not its file name) matches the existing save's session name *and* has the most recent time stamp.* ***Warning:*** Stopping the server **does not** currently save your game! Ensure it is saved before stopping the server. If you have forgotten your administrator password or would generally like to reset your server as if it were new, you can delete the following file: - ```md /home/container/.config/Epic/FactoryGame/Saved/SaveGames/ServerSettings. ``` - ___ - ### Console Commands - -As of v0.5.1.2, the console tab in the client server manager is the only way to execute commands. Entering commands via Pterodactyl do nothing. +As of v0.5.1.10, the console tab in the client server manager is the only way to execute commands. Entering commands via Pterodactyl do nothing. [List of known commands can be found via the Wiki.](https://satisfactory.fandom.com/wiki/Dedicated_servers#Console_commands) ___ - -### Errors/Warnings - +### Known Errors/Warnings The following errors or warnings you see in the console can safely be ignored: ```log @@ -163,29 +139,24 @@ steamclient.so: cannot open shared object file: No such file or directory [S_API] SteamAPI_Init(): Loaded '/home/container/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so') LogSteamShared: Warning: Steam Dedicated Server API failed to initialize. ``` - -The local file of 'steamclient.so' was attempted to be loaded, but could not because it is not present, causing the warning message. However, the backup `/home/container/.steam/sdk64/steamclient.so` is loaded successfully (this is the correct behavior according to the [Wiki](https://satisfactory.fandom.com/wiki/Dedicated_servers#SteamAPI_Init.28.29:_Sys_LoadModule_filed_to_load:_.2Fpath.2Fto.2F.steam.2Fsdk64.2Fsteamclient.so)). +↑ The local file of 'steamclient.so' was attempted to be loaded, but could not because it is not present, causing the warning message. However, the backup `/home/container/.steam/sdk64/steamclient.so` is loaded successfully (this is the correct behavior according to the [Wiki](https://satisfactory.fandom.com/wiki/Dedicated_servers#SteamAPI_Init.28.29:_Sys_LoadModule_filed_to_load:_.2Fpath.2Fto.2F.steam.2Fsdk64.2Fsteamclient.so)). ```log Warning: failed to init SDL thread priority manager: SDL not found ``` -This is a common error with Steam related software on Linux, but can safely be ignored. +↑ This is a common error with Steam related software on Linux, but can safely be ignored. ```log ...Error: Couldn't find file for package... ``` - ```log ...Error: Navmesh bounds are too large!... ``` - ```log ...Warning: NiagaraSystem... ``` - ```log LogStreaming: Warning: Failed to read file '../../../FactoryGame/Saved/SaveGames/GameAnalytics.sav' error. ``` - -These seem to be common error messages with the current experimental version of the game. +↑ These seem to be common error messages with the current experimental version of the game. From dcdb4fdfb167070f4d7b278e7ce472aed1505978 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 26 Apr 2022 12:46:43 -0700 Subject: [PATCH 11/25] Fix whitespace issues in README.md Fixed a regression with newline spacing. --- .../steamcmd_servers/satisfactory/README.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/game_eggs/steamcmd_servers/satisfactory/README.md b/game_eggs/steamcmd_servers/satisfactory/README.md index a0d643ab..ccd22a4f 100644 --- a/game_eggs/steamcmd_servers/satisfactory/README.md +++ b/game_eggs/steamcmd_servers/satisfactory/README.md @@ -1,7 +1,10 @@ # Satisfactory + ***Updating your Egg?**: Ensure any existing servers have the latest Startup Command, new Startup Variables are set, **and you reinstall server!*** ___ + ### Authors / Contributors +
@@ -59,11 +62,16 @@ ___ ___ + ### Game Description + From Coffee Stain's [Website](https://www.satisfactorygame.com/): > Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven! + ___ + ### Egg Capabilities + - Configuration of the Server Query, Beacon, and Game ports. - Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable. - *[Experimental]* Max player configuration. @@ -71,8 +79,11 @@ ___ - Disable crash reporting if desired. - Disable seasonal events if desired. - ...and other advanced networking and server branch configurable settings. + ___ + ### Server Ports + - Default server ports are listed below, but all three ports can be changed freely (\*some exceptions apply below). - All three ports must be unique; they cannot currently be shared on one port (this may change in the future). - It is recommended to distance ports of other running Satisfactory servers in Pterodactyl by **increments of 100** (it is currently unknown what the minimum increment is, but an increment of +1 caused cross-server talk in testing). Also, your internal ports **must match** your external ports on your network (ie. you can't have an external port of 7778 forwarded to your 7777 internal port; they must match). @@ -86,6 +97,7 @@ ___ | Server Query (Port clients connect with) | 15777 | ___ + ### Installation/System Requirements | | Bare Minimum | Recommended | @@ -98,40 +110,56 @@ ___ | Game Ownership | Not required to start. | Required to fully "initialize" (see [Server Initialization](#server-initialization) below) | ___ + ### Server Initialization + For a server to be fully "initialized", a client who owns the game must log into the server to "claim" it and create an administrator password. Then, a new session can be created via the "Create Game" tab in-game, or an existing save file can be uploaded (see [Save Files](#save-files) below). Misc. settings listed below can be configured by an admin client via the game's "Server Settings" tab, and are currently **not** set via the Egg: + - Server Password - Admin Password - Auto-Save on Player Disconnect - Pause When No Players Online - ...and possibly more as the client's UI is developed further for more configuration options. + ___ + ### Save Files + An existing save file (including single-player saves) can currently be uploaded to the server via two different methods: + - "Manage Saves" tab via an admin client in-game (Recommended) - Manually via the File Manager or SFTP Save files are located in this directory: + ```md /home/container/.config/Epic/FactoryGame/Saved/SaveGames/server ``` + *Note: A manually uploaded save will only load if it is (a.) loaded manually via the "Manage Saves" tab in-game, (b.) it is the only save file present, or (c.) its existing session name (not its file name) matches the existing save's session name *and* has the most recent time stamp.* ***Warning:*** Stopping the server **does not** currently save your game! Ensure it is saved before stopping the server. If you have forgotten your administrator password or would generally like to reset your server as if it were new, you can delete the following file: + ```md /home/container/.config/Epic/FactoryGame/Saved/SaveGames/ServerSettings. ``` + ___ + ### Console Commands + As of v0.5.1.10, the console tab in the client server manager is the only way to execute commands. Entering commands via Pterodactyl do nothing. [List of known commands can be found via the Wiki.](https://satisfactory.fandom.com/wiki/Dedicated_servers#Console_commands) + ___ + ### Known Errors/Warnings + The following errors or warnings you see in the console can safely be ignored: ```log @@ -139,6 +167,7 @@ steamclient.so: cannot open shared object file: No such file or directory [S_API] SteamAPI_Init(): Loaded '/home/container/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so') LogSteamShared: Warning: Steam Dedicated Server API failed to initialize. ``` + ↑ The local file of 'steamclient.so' was attempted to be loaded, but could not because it is not present, causing the warning message. However, the backup `/home/container/.steam/sdk64/steamclient.so` is loaded successfully (this is the correct behavior according to the [Wiki](https://satisfactory.fandom.com/wiki/Dedicated_servers#SteamAPI_Init.28.29:_Sys_LoadModule_filed_to_load:_.2Fpath.2Fto.2F.steam.2Fsdk64.2Fsteamclient.so)). ```log @@ -150,13 +179,17 @@ Warning: failed to init SDL thread priority manager: SDL not found ```log ...Error: Couldn't find file for package... ``` + ```log ...Error: Navmesh bounds are too large!... ``` + ```log ...Warning: NiagaraSystem... ``` + ```log LogStreaming: Warning: Failed to read file '../../../FactoryGame/Saved/SaveGames/GameAnalytics.sav' error. ``` + ↑ These seem to be common error messages with the current experimental version of the game. From 46e5666e0eaf8815864813ddb8ad75770de8981b Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Wed, 4 May 2022 14:43:58 +0200 Subject: [PATCH 12/25] update egg-s-a--m-p.json to new image --- game_eggs/gta/samp/egg-s-a--m-p.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/gta/samp/egg-s-a--m-p.json b/game_eggs/gta/samp/egg-s-a--m-p.json index 1f117213..0ef670ff 100644 --- a/game_eggs/gta/samp/egg-s-a--m-p.json +++ b/game_eggs/gta/samp/egg-s-a--m-p.json @@ -7,7 +7,7 @@ "name": "SA-MP", "author": "bl4ckspr4y@protonmail.com", "description": "SA-MP is a free Massively Multiplayer Online game mod for the PC version of Rockstar Games Grand Theft Auto: San Andreas (tm).", - "image": "quay.io\/parkervcp\/pterodactyl-images:game_samp", + "image": "ghcr.io\/parkervcp\/games:samp", "startup": ".\/samp03svr", "config": { "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port {{server.build.default.port}}\"\r\n }\r\n }\r\n}", @@ -23,4 +23,4 @@ } }, "variables": [] -} \ No newline at end of file +} 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 13/25] 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 56829c88cd49d83a941e91c778bcc81d61a7932d Mon Sep 17 00:00:00 2001 From: Boy132 Date: Fri, 6 May 2022 10:21:09 +0200 Subject: [PATCH 14/25] Fix download link for Flamecord --- .../minecraft/proxy/java/flamecord/egg-flamecord.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/minecraft/proxy/java/flamecord/egg-flamecord.json b/game_eggs/minecraft/proxy/java/flamecord/egg-flamecord.json index e80e7b72..626cd935 100644 --- a/game_eggs/minecraft/proxy/java/flamecord/egg-flamecord.json +++ b/game_eggs/minecraft/proxy/java/flamecord/egg-flamecord.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-12-09T13:32:08-05:00", + "exported_at": "2022-05-06T10:20:32+02:00", "name": "Flamecord", "author": "admin@softwarenoob.com", "description": "FlameCord is a patch for Travertine to fix possible exploits and add useful functionalities. FlameCord aims to fix Netty related exploits to keep your server safe from attacks.", @@ -23,13 +23,13 @@ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"Listening on \",\r\n \"userInteraction\": [\r\n \"Listening on \/0.0.0.0:\"\r\n ]\r\n}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", "logs": "{}", "stop": "end" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Travertine Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nMATCH=Flamecord.jar\r\napt update\r\napt install -y curl jq\r\n\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/2lstudios-mc\/FlameCord\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/2lstudios-mc\/FlameCord\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo \"Downloading latest version\"\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 \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n echo \"Download version ${VERSION}\"\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\ncd \/mnt\/server\r\n\r\necho -e \"curl -L ${DOWNLOAD_URL} -o ${SERVER_JARFILE}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -L ${DOWNLOAD_URL} -o ${SERVER_JARFILE}\r\necho \"Install complete\"", + "script": "#!\/bin\/bash\r\n# FlameCord Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl\r\n\r\n# Get download link\r\nif [ -z \"${FLAMECORD_VERSION}\" ] || [ \"${FLAMECORD_VERSION}\" == \"latest\" ]; then\r\n echo -e \"Downloading latest FlameCord build\"\r\n DOWNLOAD_URL=https:\/\/ci.2lstudios.dev\/job\/FlameCord\/lastSuccessfulBuild\/artifact\/FlameCord-Proxy\/bootstrap\/target\/FlameCord.jar\r\nelse \r\n echo -e \"Downloading FlameCord build ${FLAMECORD_VERSION}\"\r\n DOWNLOAD_URL=https:\/\/ci.2lstudios.dev\/job\/FlameCord\/${FLAMECORD_VERSION}\/artifact\/FlameCord-Proxy\/bootstrap\/target\/FlameCord.jar\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"curl -L ${DOWNLOAD_URL} -o ${SERVER_JARFILE}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -L ${DOWNLOAD_URL} -o ${SERVER_JARFILE}\r\necho \"Install complete\"", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -37,7 +37,7 @@ "variables": [ { "name": "Flamecord Version", - "description": "The Github release version of Flamecord to install such as 48d53ee, all releases at https:\/\/github.com\/2lstudios-mc\/FlameCord\/releases", + "description": "The build to pull and install. (Ex. 97), or set to latest.\r\n\r\nYou can find all builds on https:\/\/ci.2lstudios.dev\/job\/FlameCord\/", "env_variable": "FLAMECORD_VERSION", "default_value": "latest", "user_viewable": true, From 158ba055dc131ca6494ee5eee5ed1676421e92e3 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Fri, 6 May 2022 10:53:01 +0200 Subject: [PATCH 15/25] Update server name variable for project zomboid --- .../project_zomboid/egg-project-zomboid.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json index 946d9747..a13be003 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json +++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json @@ -4,7 +4,7 @@ "version": "PTDL_v1", "update_url": null }, - "exported_at": "2021-12-29T14:38:26+00:00", + "exported_at": "2022-05-06T10:50:50+02:00", "name": "Project Zomboid", "author": "iamkubi@gmail.com", "description": "Project Zomboid is an open world survival horror video game in alpha stage development by British and Canadian independent developer, The Indie Stone. The game is set in a post apocalyptic, zombie infested world where the player is challenged to survive for as long as possible before inevitably dying.", @@ -15,7 +15,7 @@ "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], - "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -steamport1 {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \\\"{{SERVER_NAME}}\\\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", + "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -steamport1 {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"SERVER STARTED\"\r\n}", @@ -32,12 +32,12 @@ "variables": [ { "name": "Server Name", - "description": "Name of the server", + "description": "The internal server name used for save\/ config files.", "env_variable": "SERVER_NAME", - "default_value": "Project Zomboid Server", + "default_value": "Pterodactyl", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64" + "rules": "required|alpha_num|max:64" }, { "name": "Admin Username", From 12273e55b32c4723e68746fc3315a774d427db1f Mon Sep 17 00:00:00 2001 From: DaFray31 Date: Thu, 12 May 2022 15:16:04 +0200 Subject: [PATCH 16/25] 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 17/25] 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 40e207d17d294329bbd7993b172a8a3ed733cbb3 Mon Sep 17 00:00:00 2001 From: Bad <87938689+yesBad@users.noreply.github.com> Date: Sun, 15 May 2022 00:38:52 +0300 Subject: [PATCH 18/25] Fix Rust Staging mistake Quary -> Query --- game_eggs/steamcmd_servers/rust/rust_staging/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/rust/rust_staging/README.md b/game_eggs/steamcmd_servers/rust/rust_staging/README.md index f1742a66..c8dcdcde 100644 --- a/game_eggs/steamcmd_servers/rust/rust_staging/README.md +++ b/game_eggs/steamcmd_servers/rust/rust_staging/README.md @@ -21,7 +21,7 @@ Ports required to run the server. | Port | default | |---------|---------| -| Game and Quary | 28015 UDP | +| Game and Query | 28015 UDP | | RCON | 28016 TCP | ### Information about server updates can be found [here](https://steamdb.info/app/258550/depots/?branch=staging) From 6db9034c0a80e547edf2e0b15662f033ad1ffed0 Mon Sep 17 00:00:00 2001 From: gOOvER Date: Sun, 15 May 2022 11:17:13 +0200 Subject: [PATCH 19/25] 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 20/25] 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 21/25] 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 22/25] 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 d0d92996a3340c9526abc895df23f957fc7a70b2 Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 22 May 2022 00:21:59 -0400 Subject: [PATCH 23/25] 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 24/25] 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 25/25] 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.