From 43c83d2ce72c5ca65d970968e3e55fcbe1a77c2d Mon Sep 17 00:00:00 2001 From: QuintenQVD0 Date: Sun, 2 Jun 2024 20:44:28 +0200 Subject: [PATCH] ptero eggs compatibility --- .../egg-pterodactyl-super-tux-kart.json | 92 +++++++ ...gg-pterodactyl-better-crewlink-server.json | 92 +++++++ .../egg-pterodactyl-crewlink-server.json | 92 +++++++ ...pterodactyl-among-us--impostor-server.json | 43 ++++ .../egg-pterodactyl-beam-m-p-servers.json | 122 +++++++++ .../egg-pterodactyl-kiss-m-p-server.json | 31 +++ .../egg-pterodactyl-classi-cube--m-g-c.json | 62 +++++ clone_hero/egg-pterodactyl-clone-hero.json | 72 ++++++ cs2d/egg-pterodactyl-c-s2-d.json | 62 +++++ .../egg-pterodactyl-assault-cube.json | 112 +++++++++ .../egg-pterodactyl-cube2--sauerbraten.json | 72 ++++++ .../egg-pterodactyl-d-d-race-network.json | 82 +++++++ eft/egg-pterodactyl-stay-in-tarkov.json | 82 +++++++ .../clusterio/egg-pterodactyl-clusterio.json | 115 +++++++++ .../egg-pterodactyl-factorio--mod-update.json | 132 ++++++++++ .../egg-pterodactyl-factorio-a-r-m64.json | 192 +++++++++++++++ .../factorio/egg-pterodactyl-factorio.json | 132 ++++++++++ .../egg-pterodactyl-foundry-v-t-t.json | 62 +++++ ftl_tachyon/egg-pterodactyl-tachyon.json | 42 ++++ gta/altv/egg-pterodactyl-alt--v.json | 72 ++++++ gta/fivem/egg-pterodactyl-five-m.json | 112 +++++++++ ...terodactyl-grand-theft-auto-connected.json | 72 ++++++ .../egg-pterodactyl-multi-theft-auto.json | 42 ++++ gta/openmp/egg-pterodactyl-open-m-p.json | 52 ++++ .../egg-pterodactyl-rage-c-o-o-p.json | 42 ++++ gta/ragemp/egg-pterodactyl-rage--m-p.json | 52 ++++ gta/samp/egg-pterodactyl-s-a--m-p.json | 52 ++++ hogwarp/egg-pterodactyl-hogwarp.json | 122 +++++++++ ksp/egg-pterodactyl-k-s-p-d-m-p.json | 92 +++++++ .../egg-pterodactyl-league-sandbox.json | 31 +++ ...erodactyl-l-a-c--online-public-server.json | 42 ++++ mindustry/egg-pterodactyl-mindustry.json | 62 +++++ minetest/egg-pterodactyl-minetest.json | 192 +++++++++++++++ mohaa/egg-pterodactyl-mohaa.json | 112 +++++++++ ...-neverwinter-nights--enhanced-edition.json | 232 ++++++++++++++++++ openarena/egg-pterodactyl-open-arena.json | 42 ++++ .../egg-pterodactyl-open-r-a--dune2000.json | 112 +++++++++ .../egg-pterodactyl-open-r-a.json | 112 +++++++++ ...g-pterodactyl-open-r-a--tiberian-dawn.json | 112 +++++++++ openrct2/egg-pterodactyl-open-r-c-t2.json | 222 +++++++++++++++++ .../egg-pterodactyl-open-t-t-d-server.json | 72 ++++++ .../egg-pterodactyl-path-of-titans.json | 122 +++++++++ rdr/redm/egg-pterodactyl-red-m.json | 92 +++++++ .../egg-pterodactyl-rimworld--open-world.json | 113 +++++++++ .../egg-pterodactyl-rimworld-together.json | 62 +++++ .../egg-pterodactyl-spacestation14.json | 62 +++++ starmade/egg-pterodactyl-starmade.json | 42 ++++ teeworlds/egg-pterodactyl-teeworlds.json | 52 ++++ .../egg-pterodactyl-t-modloader.json | 133 ++++++++++ .../tshock/egg-pterodactyl-tshock-legacy.json | 72 ++++++ terraria/tshock/egg-pterodactyl-tshock.json | 72 ++++++ .../egg-pterodactyl-terraria-vanilla.json | 122 +++++++++ urbanterror/egg-pterodactyl-urban-terror.json | 152 ++++++++++++ veloren/egg-pterodactyl-veloren.json | 62 +++++ .../egg-pterodactyl-vintage-story.json | 82 +++++++ .../generic/egg-pterodactyl-wine-generic.json | 64 +++++ .../etlegacy/egg-pterodactyl-e-t-legacy.json | 62 +++++ xonotic/egg-pterodactyl-xonotic.json | 52 ++++ 58 files changed, 5162 insertions(+) create mode 100644 SuperTuxKart/egg-pterodactyl-super-tux-kart.json create mode 100644 among_us/bettercrewlink_server/egg-pterodactyl-better-crewlink-server.json create mode 100644 among_us/crewlink_server/egg-pterodactyl-crewlink-server.json create mode 100644 among_us/impostor_server/egg-pterodactyl-among-us--impostor-server.json create mode 100644 beamng/beammp/egg-pterodactyl-beam-m-p-servers.json create mode 100644 beamng/kissmp/egg-pterodactyl-kiss-m-p-server.json create mode 100644 classicube/mcgalaxy/egg-pterodactyl-classi-cube--m-g-c.json create mode 100644 clone_hero/egg-pterodactyl-clone-hero.json create mode 100644 cs2d/egg-pterodactyl-c-s2-d.json create mode 100644 cubeengine/assaultcube/egg-pterodactyl-assault-cube.json create mode 100644 cubeengine/cube2/egg-pterodactyl-cube2--sauerbraten.json create mode 100644 ddracenetwork/egg-pterodactyl-d-d-race-network.json create mode 100644 eft/egg-pterodactyl-stay-in-tarkov.json create mode 100644 factorio/clusterio/egg-pterodactyl-clusterio.json create mode 100644 factorio/factorio-modupdate/egg-pterodactyl-factorio--mod-update.json create mode 100644 factorio/factorio/egg-pterodactyl-factorio-a-r-m64.json create mode 100644 factorio/factorio/egg-pterodactyl-factorio.json create mode 100644 foundry_vtt/egg-pterodactyl-foundry-v-t-t.json create mode 100644 ftl_tachyon/egg-pterodactyl-tachyon.json create mode 100644 gta/altv/egg-pterodactyl-alt--v.json create mode 100644 gta/fivem/egg-pterodactyl-five-m.json create mode 100644 gta/gtac/egg-pterodactyl-grand-theft-auto-connected.json create mode 100644 gta/mtasa/egg-pterodactyl-multi-theft-auto.json create mode 100644 gta/openmp/egg-pterodactyl-open-m-p.json create mode 100644 gta/ragecoop/egg-pterodactyl-rage-c-o-o-p.json create mode 100644 gta/ragemp/egg-pterodactyl-rage--m-p.json create mode 100644 gta/samp/egg-pterodactyl-s-a--m-p.json create mode 100644 hogwarp/egg-pterodactyl-hogwarp.json create mode 100644 ksp/egg-pterodactyl-k-s-p-d-m-p.json create mode 100644 leaguesandbox/egg-pterodactyl-league-sandbox.json create mode 100644 losangelescrimes/egg-pterodactyl-l-a-c--online-public-server.json create mode 100644 mindustry/egg-pterodactyl-mindustry.json create mode 100644 minetest/egg-pterodactyl-minetest.json create mode 100644 mohaa/egg-pterodactyl-mohaa.json create mode 100644 neverwinter_nights_ee/egg-pterodactyl-neverwinter-nights--enhanced-edition.json create mode 100644 openarena/egg-pterodactyl-open-arena.json create mode 100644 openra/openra_dune2000/egg-pterodactyl-open-r-a--dune2000.json create mode 100644 openra/openra_red_alert/egg-pterodactyl-open-r-a.json create mode 100644 openra/openra_tiberian_dawn/egg-pterodactyl-open-r-a--tiberian-dawn.json create mode 100644 openrct2/egg-pterodactyl-open-r-c-t2.json create mode 100644 openttd/egg-pterodactyl-open-t-t-d-server.json create mode 100644 path_of_titans/egg-pterodactyl-path-of-titans.json create mode 100644 rdr/redm/egg-pterodactyl-red-m.json create mode 100644 rimworld/open_world/egg-pterodactyl-rimworld--open-world.json create mode 100644 rimworld/together/egg-pterodactyl-rimworld-together.json create mode 100644 spacestation_14/egg-pterodactyl-spacestation14.json create mode 100644 starmade/egg-pterodactyl-starmade.json create mode 100644 teeworlds/egg-pterodactyl-teeworlds.json create mode 100644 terraria/tmodloader/egg-pterodactyl-t-modloader.json create mode 100644 terraria/tshock/egg-pterodactyl-tshock-legacy.json create mode 100644 terraria/tshock/egg-pterodactyl-tshock.json create mode 100644 terraria/vanilla/egg-pterodactyl-terraria-vanilla.json create mode 100644 urbanterror/egg-pterodactyl-urban-terror.json create mode 100644 veloren/egg-pterodactyl-veloren.json create mode 100644 vintage_story/egg-pterodactyl-vintage-story.json create mode 100644 wine/generic/egg-pterodactyl-wine-generic.json create mode 100644 wolfenstein_enemy_territory/etlegacy/egg-pterodactyl-e-t-legacy.json create mode 100644 xonotic/egg-pterodactyl-xonotic.json diff --git a/SuperTuxKart/egg-pterodactyl-super-tux-kart.json b/SuperTuxKart/egg-pterodactyl-super-tux-kart.json new file mode 100644 index 00000000..7608172c --- /dev/null +++ b/SuperTuxKart/egg-pterodactyl-super-tux-kart.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:12+00:00", + "name": "SuperTuxKart", + "author": "mattamn107@github.com", + "description": "Egg for hosting a SuperTuxKart Server.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin/supertuxkart --server-config={{CONFIG_NAME}} --lan-server={{SERVER_NAME}} --network-console --port=\"{{SERVER_PORT}}\" --difficulty={{DIFFICULTY}} --mode={{MODE}} --max-players={{MAX_PLAYERS}} --motd=\"{{MOTD}}\"", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Available command:\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n# Install build tools\r\necho \"deb http://deb.debian.org/debian bullseye-backports main\" \u003e\u003e /etc/apt/sources.list \u0026\u0026 \\\r\napt-get update \u0026\u0026 apt-get -y full-upgrade \u0026\u0026 \\\r\n apt-get install -y build-essential cmake libbluetooth-dev libsdl2-dev \\\r\n libcurl4-openssl-dev libenet-dev libfreetype6-dev libharfbuzz-dev \\\r\n libjpeg-dev libogg-dev libopenal-dev libpng-dev \\\r\n libssl-dev libvorbis-dev libmbedtls-dev pkg-config zlib1g-dev subversion\r\n\r\nif [ ! -d \"/mnt/server/stk-code\" ] \u0026\u0026 [ ! -d \"/mnt/server/stk-assets\" ]; then\r\n \r\n #clone code repo\r\n git clone https://github.com/supertuxkart/stk-code /mnt/server/stk-code\r\n \r\n #get assets\r\n svn co https://svn.code.sf.net/p/supertuxkart/code/stk-assets /mnt/server/stk-assets\r\n \r\n # go into the stk-code directory\r\n cd /mnt/server/stk-code\r\n \r\n # create and enter the cmake_build directory\r\n mkdir cmake_build\r\n \r\nelse\r\n\r\n #update existing stuff\r\n cd /mnt/server/stk-assets\r\n svn up\r\n \r\n cd /mnt/server/stk-code\r\n git pull\r\n\r\n\r\nfi\r\n\r\n#build the server\r\ncd cmake_build\r\ncmake .. -DSERVER_ONLY=ON\r\nmake\r\n\r\n#copy binary to root/bin and make it executable\r\nmkdir /mnt/server/bin\r\ncp /mnt/server/stk-code/cmake_build/bin/supertuxkart /mnt/server/bin/supertuxkart\r\nchmod +x /mnt/server/bin/supertuxkart\r\n\r\n#copy data folder\r\ncp -r /mnt/server/stk-code/data /mnt/server/data\r\n\r\n#copy extra assets to data folder\r\ncd /mnt/server/stk-assets\r\ncp -r library models music sfx textures tracks karts /mnt/server/data/\r\n\r\n# Delete repo's to save disk space.\r\n#rm -rf /mnt/server/stk-code \u0026\u0026 rm -rf /mnt/server/stk-assets" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The Name of the Server", + "env_variable": "SERVER_NAME", + "default_value": "Pterodactyl_Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Config File Name", + "description": "Name of the Config File.", + "env_variable": "CONFIG_NAME", + "default_value": "config.xml", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.xml)$/", + "field_type": "text" + }, + { + "name": "Mode", + "description": "0 = Normal Race\r\n1 = Time Trial\r\n2 = Battle\r\n3 = Soccer\r\n4 = Follow The Leader\r\n5 = Capture the Flag", + "env_variable": "MODE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,1,2,3,4,5", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Speed of the carts and AI difficulty\r\n0 = Beginner\r\n1 = Intermediate\r\n2 = Expert\r\n3 = SuperTux", + "env_variable": "DIFFICULTY", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,1,2,3", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "How many players can there be in the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "8", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:1,24", + "field_type": "text" + }, + { + "name": "Message of the Day", + "description": "Message of the Day displayed in the server.", + "env_variable": "MOTD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:100", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/among_us/bettercrewlink_server/egg-pterodactyl-better-crewlink-server.json b/among_us/bettercrewlink_server/egg-pterodactyl-better-crewlink-server.json new file mode 100644 index 00000000..3321fa52 --- /dev/null +++ b/among_us/bettercrewlink_server/egg-pterodactyl-better-crewlink-server.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:29+00:00", + "name": "BetterCrewlink Server", + "author": "tobiornotto@gmail.com", + "description": "An egg designed to allow support for Proximity Chat in Among Us using BetterCrewLink Server", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_16": "ghcr.io/parkervcp/yolks:nodejs_16" + }, + "file_denylist": [], + "startup": "yarn start", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"\u003cinfo\u003e BetterCrewLink Server started\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "node:16-bookworm", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y git python3 python3-pip build-essential\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nINSTALL_REPO=\"https://github.com/OhMyGuus/BetterCrewLink-server.git\"\r\necho -e Install repo set to ${INSTALL_REPO}\r\necho -e \"/mnt/server is empty.\\ncloning files from repo\"\r\necho -e \"running 'git clone --single-branch --branch ${BRANCH} ${INSTALL_REPO} .'\"\r\ngit clone --single-branch --branch ${BRANCH} ${INSTALL_REPO} .\r\n\r\nif [ -f /mnt/server/package.json ]; then\r\n /usr/local/bin/yarn install\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0" + } + }, + "variables": [ + { + "name": "Github branch", + "description": "Select one of the available BetterCrewLink-server branches. Master per default.", + "env_variable": "BRANCH", + "default_value": "master", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Domain", + "description": "Domain of your server or ip of your server", + "env_variable": "HOSTNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:50", + "field_type": "text" + }, + { + "name": "Server name", + "description": "Specifiy the name of your BetterCrewLink server", + "env_variable": "NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:75", + "field_type": "text" + }, + { + "name": "Use HTTPS", + "description": "Enables https. You must place privkey.pem and fullchain.pem in your CWD.", + "env_variable": "HTTPS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Path to SSL", + "description": "Alternate path to SSL certificates.", + "env_variable": "SSLPATH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:250", + "field_type": "text" + }, + { + "name": "Port", + "description": "Choose the port your server should run on", + "env_variable": "PORT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/among_us/crewlink_server/egg-pterodactyl-crewlink-server.json b/among_us/crewlink_server/egg-pterodactyl-crewlink-server.json new file mode 100644 index 00000000..f5f3b16c --- /dev/null +++ b/among_us/crewlink_server/egg-pterodactyl-crewlink-server.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:31+00:00", + "name": "Crewlink server", + "author": "panel@oxtroit.com", + "description": "An egg designed to allow support for Proximity Chat in Among Us using CrewLink Server", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_16": "ghcr.io/parkervcp/yolks:nodejs_16" + }, + "file_denylist": [], + "startup": "yarn start", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"\u003cinfo\u003e CrewLink Server started\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "node:16-bookworm", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y git\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nINSTALL_REPO=\"https://github.com/ottomated/crewlink-server.git\"\r\necho -e Install repo set to ${INSTALL_REPO}\r\necho -e \"/mnt/server is empty.\\ncloning files from repo\"\r\necho -e \"running 'git clone --single-branch --branch ${BRANCH} ${INSTALL_REPO} .'\"\r\ngit clone --single-branch --branch ${BRANCH} ${INSTALL_REPO} .\r\n\r\nif [ -f /mnt/server/package.json ]; then\r\n /usr/local/bin/yarn install\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0" + } + }, + "variables": [ + { + "name": "Github branch", + "description": "Set this to 'devel' if you wanna run a develop server.", + "env_variable": "BRANCH", + "default_value": "master", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Domain", + "description": "Domain of your server or ip of your server", + "env_variable": "ADDRESS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:50", + "field_type": "text" + }, + { + "name": "Server name", + "description": "Specifiy the name of your Crewlink server", + "env_variable": "NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:75", + "field_type": "text" + }, + { + "name": "Use HTTPS", + "description": "Enables https. You must place privkey.pem and fullchain.pem in your CWD.", + "env_variable": "HTTPS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Path to SSL", + "description": "Alternate path to SSL certificates.", + "env_variable": "SSLPATH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:250", + "field_type": "text" + }, + { + "name": "Port", + "description": "Choose the port your server should run on", + "env_variable": "PORT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/among_us/impostor_server/egg-pterodactyl-among-us--impostor-server.json b/among_us/impostor_server/egg-pterodactyl-among-us--impostor-server.json new file mode 100644 index 00000000..a5a2d767 --- /dev/null +++ b/among_us/impostor_server/egg-pterodactyl-among-us--impostor-server.json @@ -0,0 +1,43 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:26+00:00", + "name": "Among Us - Impostor Server", + "author": "eggs@goover.dev", + "description": "Impostor is one of the first Among Us private servers, written in C#.\r\n\r\nThere are no special features at this moment, the goal is aiming to be as close as possible to the real server, for now. In a later stage, making modifications to game logic by modifying GameData packets can be looked at.", + "features": null, + "docker_images": { + "Dotnet_6": "ghcr.io/parkervcp/yolks:dotnet_6", + "Dotnet_7": "ghcr.io/parkervcp/yolks:dotnet_7" + }, + "file_denylist": [], + "startup": "./Impostor.Server", + "config": { + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Server.PublicPort\": \"{{server.build.default.port}}\",\r\n \"Server.ListenPort\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Matchmaker is listening on\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt -y install curl jq tar\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/Impostor/Impostor/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/Impostor/Impostor/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-x64\" || echo \"linux-arm64\")\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\necho -e \"\\nDownloading from $DOWNLOAD_URL\"\r\ncurl -sSL -o imposter-server.tar.gz $DOWNLOAD_URL\r\n\r\n\r\necho -e \"\\nUnpacking .tar.gz\"\r\ntar xvf imposter-server.tar.gz\r\n\r\nrm imposter-server.tar.gz\r\nchmod +x Impostor.Server\r\n\r\necho -e \"\\nInstall completed\"" + } + }, + "variables": [ + { + "name": "Download Version", + "description": "Version to Download. Leave latest for the latest release.\r\n\r\nFind all releases at https://github.com/Impostor/Impostor/releases\r\nNote: versions start with a v, example: v1.8.0", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/beamng/beammp/egg-pterodactyl-beam-m-p-servers.json b/beamng/beammp/egg-pterodactyl-beam-m-p-servers.json new file mode 100644 index 00000000..a5c6fd87 --- /dev/null +++ b/beamng/beammp/egg-pterodactyl-beam-m-p-servers.json @@ -0,0 +1,122 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:27+00:00", + "name": "BeamMP Servers", + "author": "noah@noahserver.online", + "description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point through which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./BeamMP-Server", + "config": { + "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.DESCRIPTION}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\",\r\n \"LogChat =\": \"LogChat = {{env.LOGCHAT}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"[INFO] Vehicle data network online\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n#Create the server directory\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release \u0026 download URLs\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/BeamMP/BeamMP-Server/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/BeamMP/BeamMP-Server/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"Server.debian.12.x86_64\" || echo \"Server.debian.12.arm64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\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}\" | head -1)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"Server\" | grep -i \"debian\" | grep -i \"12\" | grep -i \"x\" | grep -i \"64\" | head -1)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"# This is the BeamMP-Server config file.\r\n# Help \u0026 Documentation: `https://wiki.beammp.com/en/home/server-maintenance`\r\n# IMPORTANT: Fill in the AuthKey with the key you got from `https://keymaster.beammp.com/` on the left under 'Keys'\r\n\r\n[General]\r\nName = 'BeamMP Server'\r\nPort = 30814\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = ''\r\n# Whether to log chat messages in the console / log\r\nLogChat = true\r\n# Add custom identifying tags to your server to make it easier to find. Format should be TagA,TagB,TagC. Note the comma seperation.\r\nTags = 'Freeroam'\r\nDebug = false\r\nPrivate = true\r\nMaxCars = 1\r\nMaxPlayers = 8\r\nMap = '/levels/gridmap_v2/info.json'\r\nDescription = 'BeamMP Default Description'\r\nResourceFolder = 'Resources'\r\n\r\n[Misc]\r\n# Hides the periodic update message which notifies you of a new server version. You should really keep this on and always update as soon as possible. For more information visit https://wiki.beammp.com/en/home/server-maintenance#updating-the-server. An update message will always appear at startup regardless.\r\nImScaredOfUpdates = false\r\n# You can turn on/off the SendErrors message you get on startup here\r\nSendErrorsShowMessage = true\r\n# If SendErrors is 'true', the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to 'false'\r\nSendErrors = true\" \u003e ServerConfig.toml\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The name of your server. This is what appears on the server list.", + "env_variable": "NAME", + "default_value": "BeamMP Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Sets the server description", + "env_variable": "DESCRIPTION", + "default_value": "BeamMP Default Description", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "BeamMP Server Version", + "description": "The BeamMP server version to be installed. Latest or invalid versions will default to latest. See all available versions at https://github.com/BeamMP/BeamMP-Server/releases\r\n\r\nexample: v3.1.0 or v2.2.0 or latest", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:12", + "field_type": "text" + }, + { + "name": "Authentication Key", + "description": "The authentication key for your server. A key can be obtained from the BeamMP keymaster at https://keymaster.beammp.com", + "env_variable": "AUTHKEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum number of players allowed on the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "6", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:100", + "field_type": "text" + }, + { + "name": "Private", + "description": "Should the server be private?", + "env_variable": "PRIVATE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Max Cars", + "description": "The maximum number of cars allowed to be spawned per player.", + "env_variable": "MAX_CARS", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:10", + "field_type": "text" + }, + { + "name": "Map", + "description": "The map for your server. Stock maps are listed below.\r\n\r\n/levels/gridmap_v2/info.json\r\n/levels/automation_test_track/info.json\r\n/levels/east_coast_usa/info.json\r\n/levels/hirochi_raceway/info.json\r\n/levels/italy/info.json\r\n/levels/jungle_rock_island/info.json\r\n/levels/industrial/info.json\r\n/levels/small_island/info.json\r\n/levels/smallgrid/info.json\r\n/levels/utah/info.json\r\n/levels/west_coast_usa/info.json\r\n/levels/driver_training/info.json\r\n/levels/derby/info.json", + "env_variable": "MAP", + "default_value": "/levels/gridmap_v2/info.json", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Chat logging", + "description": "Enable chat logging by the server", + "env_variable": "LOGCHAT", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/beamng/kissmp/egg-pterodactyl-kiss-m-p-server.json b/beamng/kissmp/egg-pterodactyl-kiss-m-p-server.json new file mode 100644 index 00000000..5928560d --- /dev/null +++ b/beamng/kissmp/egg-pterodactyl-kiss-m-p-server.json @@ -0,0 +1,31 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:50+00:00", + "name": "KissMP Server", + "author": "me@weilbyte.dev", + "description": "Server for the KISS Multiplayer BeamNG.drive mod", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./kissmp-server", + "config": { + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server is running!\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Server Files: /mnt/server\r\napt update \r\napt install -y wget unzip \r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nLATEST_RELEASE=$(wget -qO- https://api.github.com/repos/TheHellBox/KISS-multiplayer/releases/latest | grep browser_download_url | cut -d '\"' -f 4)\r\necho -e Install repo set to ${INSTALL_REPO}\r\necho -e \"/mnt/server is empty.\\nDownloading latest release ${LATEST_RELEASE}\"\r\n\r\nwget $LATEST_RELEASE -O kissmp.zip\r\nunzip -j kissmp.zip '*/kissmp-server'\r\n\r\nrm -rf kissmp.zip\r\n\r\nif [ -f /mnt/server/kissmp-server ]; then\r\n echo -e \"Install complete\"\r\n chmod +x /mnt/server/kissmp-server\r\n \r\n # Generate config\r\n ./kissmp-server \u0026 serverpid=$! \r\n sleep 1\r\n kill $serverpid\r\n \r\n exit 0\r\nelse \r\n echo -e \"Install failed (no /mnt/server/kissmp-server file present)\"\r\n exit 1\r\nfi" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/classicube/mcgalaxy/egg-pterodactyl-classi-cube--m-g-c.json b/classicube/mcgalaxy/egg-pterodactyl-classi-cube--m-g-c.json new file mode 100644 index 00000000..dc8b9064 --- /dev/null +++ b/classicube/mcgalaxy/egg-pterodactyl-classi-cube--m-g-c.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:29+00:00", + "name": "ClassiCube(MGC)", + "author": "panel@qoutsy.33mail.com", + "description": "Debian based MCGalaxy Egg.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:mono_latest": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "mono MCGalaxyCLI.exe", + "config": { + "files": "{\r\n \"/properties/server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-name\": \"{{server.build.env.HOSTNAME}}\",\r\n \"motd\": \"{{server.build.env.MOTD}}\",\r\n \"public\": \"true\",\r\n \"port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Finished setting up server\"\r\n}", + "stop": "/shutdown 3 SIGTERM Server shutting down..." + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nMATCH=mcgalaxy_\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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/UnknownShadow200/MCGalaxy/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/UnknownShadow200/MCGalaxy/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\necho -e \"Downloading ClassiCube version ${VERSION}\"\r\necho -e \"Download URL is ${DOWNLOAD_URL}\"\r\n\r\ncurl -ssL -o mcgalaxy.zip ${DOWNLOAD_URL}\r\n\r\nunzip -j mcgalaxy.zip\r\nrm mcgalaxy.zip\r\nchmod +X *.dll *.exe\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Install Version", + "description": "Specify the version to install from https://github.com/UnknownShadow200/MCGalaxy/releases. Leave latest to install the latest version.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Specify the server name", + "env_variable": "HOSTNAME", + "default_value": "Pterodactyl Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + }, + { + "name": "MOTD", + "description": "Specify the message of the day", + "env_variable": "MOTD", + "default_value": "Welcome to the server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/clone_hero/egg-pterodactyl-clone-hero.json b/clone_hero/egg-pterodactyl-clone-hero.json new file mode 100644 index 00000000..fba4fc53 --- /dev/null +++ b/clone_hero/egg-pterodactyl-clone-hero.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:30+00:00", + "name": "Clone Hero", + "author": "josdekurk@gmail.com", + "description": "Clone Hero is a classic instrument based rhythm game for Windows, Mac, Linux, and Android. It's playable with any 5 or 6 fret guitar controller, any midi drum kit, any game controller and even your keyboard! Jam out with Drums, 5-fret Guitar, or 6-fret Guitar online or local!", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./Server -l {{LOG_LEVEL}} -n \"{{SERVER_DISPLAY_NAME}}\" -p {{SERVER_PORT}} -a 0.0.0.0 $([[ -z \"${SERVER_PASSWORD}\" ]] \u0026\u0026 echo -np || echo \"-ps ${SERVER_PASSWORD}\")", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server running...\"\r\n}", + "stop": "^c" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt -y install curl unzip jq\r\n\r\n## get release info and download links\r\nV=$(curl -s https://clonehero.net/ | grep -i \"Latest version\" | grep -oP '(?\u003c=\u003cb\u003e).+?(?=\u003c\\/b\u003e)' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') #v1.0.0.4080\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/clonehero-game/releases/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/clonehero-game/releases/releases\")\r\nMATCH=CloneHero-standalone_server\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 | grep -i server)\r\n fi\r\nfi\r\n\r\n\r\nV=$(curl -s https://clonehero.net/ | grep -i \"Latest version\" | grep -oP '(?\u003c=\u003cb\u003e).+?(?=\u003c\\/b\u003e)' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') #v1.0.0.4080\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho \"Running: curl -sSL -o ChStandaloneServer.zip ${DOWNLOAD_URL}\"\r\ncurl -sSL -o ChStandaloneServer.zip ${DOWNLOAD_URL}\r\n\r\nunzip -o ChStandaloneServer.zip\r\nrm ChStandaloneServer.zip\r\n\r\nmv ChStandaloneServer-${V}-final/${ARCH}/* .\r\nrm -rf ChStandaloneServer-${V}-final/\r\n\r\nchmod +x Server\r\n\r\n\r\nif [ ! -f /mnt/server/settings.ini ]\r\nthen\r\n\tcurl -sSL -o settings.ini https://pastebin.com/raw/rhcv0hvi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_DISPLAY_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:80", + "field_type": "text" + }, + { + "name": "Server password", + "description": "The password of the server", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|regex:/^[a-zA-Z0-9_]+$/", + "field_type": "text" + }, + { + "name": "Log level", + "description": "Set max logging level", + "env_variable": "LOG_LEVEL", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,1,2,3,4", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version of Clone Hero you want to install.\r\nExample: V1.0.0.4080 or latest", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/cs2d/egg-pterodactyl-c-s2-d.json b/cs2d/egg-pterodactyl-c-s2-d.json new file mode 100644 index 00000000..aaf90348 --- /dev/null +++ b/cs2d/egg-pterodactyl-c-s2-d.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:32+00:00", + "name": "CS2D", + "author": "josdekurk@gmail.com", + "description": "Plant and defuse bombs, rescue hostages or accomplish new missions like capture the flag or domination! Use a huge arsenal of weapons and equipment including crazy stuff like portal guns, lasers, RPGs, turrets and much more! You can even build things!", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/games:source": "ghcr.io/parkervcp/games:source" + }, + "file_denylist": [], + "startup": "./cs2d_dedicated", + "config": { + "files": "{\r\n \"sys/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_hostport \": \"sv_hostport {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name {{server.build.env.SERVER_NAME}}\",\r\n \"sv_password\": \"sv_password {{server.build.env.SERVER_PASSWORD}}\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.SERVER_PLAYERS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"----- Server started -----\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nv=$(curl -s https://www.cs2d.com/download.php | grep -Eo \"https?://\\S+?\\\"\" | grep -i \"get.php?get=cs2d_\" | grep -i \"linux\") # https://www.unrealsoftware.de/get.php?get=cs2d_1013_linux.zip\"\r\nn=$(echo ${v#*=} | sed 's/\"//' ) # cs2d_1013_linux.zip\r\n\r\nc=$(curl -s https://www.unrealsoftware.de/get.php?get=${n} | grep -o '\u003ca class=\"l_dl\" href=\"get.php?.*\"\u003e' | cut -f2 -d \"\u003c\" | awk '{print $3}' | grep -o '\"[^\"]*\"') # \"get.php?get=cs2d_1013_linux.zip\u0026amp;p=1\u0026amp;cid=15745\"\r\ncid=$(echo ${c//\\\"/} | cut -f4 -d '=') #15745\r\n\r\nDOWNLOAD_URL=\"https://www.unrealsoftware.de/get.php?get=${n}\u0026p=1\u0026cid=${cid}\"\r\n\r\necho \"${DOWNLOAD_URL}\"\r\n\r\ncurl -sSL -o client.zip \"${DOWNLOAD_URL}\"\r\n\r\nunzip -o client.zip\r\nrm client.zip\r\n\r\ncurl -sSL -o dedicated.zip \"https://www.unrealsoftware.de/files_pub/cs2d_dedicated_linux.zip\"\r\nunzip -o dedicated.zip\r\nrm dedicated.zip\r\n\r\nchmod +x cs2d_dedicated\r\n\r\necho \"install finished\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "", + "env_variable": "SERVER_NAME", + "default_value": "CS2D Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "", + "env_variable": "SERVER_PLAYERS", + "default_value": "12", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/cubeengine/assaultcube/egg-pterodactyl-assault-cube.json b/cubeengine/assaultcube/egg-pterodactyl-assault-cube.json new file mode 100644 index 00000000..39bdef44 --- /dev/null +++ b/cubeengine/assaultcube/egg-pterodactyl-assault-cube.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:28+00:00", + "name": "AssaultCube", + "author": "holeintheseat@gmail.com", + "description": "AssaultCube is a FREE, multiplayer, first-person shooter game, based on the CUBE engine.\r\n\r\nTaking place in realistic environments, with fast, arcade gameplay, it's addictive and fun!", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin_unix/linux_64_server -Y{{ASSAULT_SERVER_KEY}} -n\"{{ASSAULT_SERVER_DESCRIPTION}}\" -o\"{{ASSAULT_SERVER_MOTD}}\" -c{{ASSAULT_SERVER_MAXPLAYERS}} -x{{ASSAULT_SERVER_ADMINPASSWORD}} -f{{SERVER_PORT}} -p{{ASSAULT_SERVER_PLAYERPASSWORD}} -m{{ASSAULT_SERVER_MASTERSERVER}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) \u003c|-|\u003e (https://assault.cubers.net/)\r\n#\r\n# Server Files: /mnt/server\r\n\r\n#######-|Dependencies|-#######\r\napt update\r\napt -y install tar make bzip2 build-essential clang libclang-dev libclang1 llvm llvm-dev clang-tools libz-dev curl jq\r\n\r\n#######-|Downloading files|-#######\r\ncd /mnt/server\r\n## get release info and download links\r\n\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/assaultcube/AC/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/assaultcube/AC/releases\")\r\nMATCH=tar.bz2\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 | head -1)\r\n fi\r\nfi\r\n\r\n\r\ncurl -sSL -o AssaultCube.tar.bz2 ${DOWNLOAD_URL}\r\ntar -xf AssaultCube.tar.bz2\r\nrm AssaultCube.tar.bz2\r\n\r\n#######-|Setting Up Server|-#######\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\nrm -rf bin_win32/ *.sh\r\n\r\nif [ \"$(uname -m)\" = \"x86_64\" ]; then\r\n echo -e \"x86 System\"\r\nelse\r\n cd /mnt/server/source/src\r\n make server_install\r\nfi\r\n#######-|Insert Server Authkey|-#######\r\ncd /mnt/server\r\nsed -i 's/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/{{ASSAULT_SERVER_KEY}}/' ./config/servercmdline.txt\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Auth Key", + "description": "You must provide your own key for the server to register on the masterserver.\r\nTo generate a key you can run the client and issue the command:\r\n\r\n authkey new server \r\n \r\nSee: (https://assault.cubers.net/docs/server.html)", + "env_variable": "ASSAULT_SERVER_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|required|string|max:64", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "", + "env_variable": "ASSAULT_SERVER_DESCRIPTION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Message of the Day", + "description": "", + "env_variable": "ASSAULT_SERVER_MOTD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Set the limit on amount of players able to join (MAX 16)", + "env_variable": "ASSAULT_SERVER_MAXPLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|integer|max:16", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "", + "env_variable": "ASSAULT_SERVER_ADMINPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512|min:5", + "field_type": "text" + }, + { + "name": "Player Password", + "description": "Password need to join the server.", + "env_variable": "ASSAULT_SERVER_PLAYERPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Master Server", + "description": "Forces the server to register with the hostname or IP address of a different masterserver.\r\nThe default is ms.cubers.net\r\nIf you want your server to be hidden and not report to the masterserver, use -mlocalhost", + "env_variable": "ASSAULT_SERVER_MASTERSERVER", + "default_value": "ms.cubers.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version of the engine you want to download.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/cubeengine/cube2/egg-pterodactyl-cube2--sauerbraten.json b/cubeengine/cube2/egg-pterodactyl-cube2--sauerbraten.json new file mode 100644 index 00000000..e3583275 --- /dev/null +++ b/cubeengine/cube2/egg-pterodactyl-cube2--sauerbraten.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:32+00:00", + "name": "Cube 2: Sauerbraten", + "author": "holeintheseat@gmail.com", + "description": "Cube 2: Sauerbraten is a free multiplayer \u0026 singleplayer first person shooter, the successor of the Cube FPS.\r\nMuch like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also to allow map/geometry editing to be done cooperatively in-game.", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin_unix/linux_64_server -j{{SERVER_PORT}} -n{{CUBE_SERVERDESCRIPTION}} -c{{CUBE_MAXPLAYERS}} -m{{CUBE_MASTERSERVER}} -p{{CUBE_ADMINPASSWORD}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) \u003c|-|\u003e (https://assault.cubers.net/)\r\n#\r\n# Server Files: /mnt/server\r\n\r\napt update \r\n#######-|Dependencies|-#######\r\napt -y install tar curl bzip2\r\n#######-|Downloading files|-#######\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\necho -e \"###############################################\"\r\necho -e \"## Downloading and unarchiving Sauerbraten ##\"\r\necho -e \"## THIS WILL TAKE A WHILE. PLEASE BE PATIENT ##\"\r\necho -e \"###############################################\"\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\ncurl -sSL -o sauerbraten_2020_12_29_linux.tar.bz2 https://cfhcable.dl.sourceforge.net/project/sauerbraten/sauerbraten/2020_11_29/sauerbraten_2020_12_29_linux.tar.bz2\r\ntar -xf sauerbraten_2020_12_29_linux.tar.bz2 -strip-components=1\r\nrm sauerbraten_2020_12_29_linux.tar.bz2\r\nchmod +x bin_unix/linux_64_server\r\n\r\n#######-|Alert Completion|-#######\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Description", + "description": "", + "env_variable": "CUBE_SERVERDESCRIPTION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Sets the max number of clients to N. The default is 4. If you want to set it higher, be aware that bandwidth usage almost doubles with each extra client, so only do this if the server runs on a serious pipe (not your home DSL or Cable connection).", + "env_variable": "CUBE_MAXPLAYERS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:16", + "field_type": "text" + }, + { + "name": "Master Server", + "description": "Sets the master server to use for either server (registering) and client (updating) to S. (default: sauerbraten.org).", + "env_variable": "CUBE_MASTERSERVER", + "default_value": "sauerbraten.org", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "", + "env_variable": "CUBE_ADMINPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ddracenetwork/egg-pterodactyl-d-d-race-network.json b/ddracenetwork/egg-pterodactyl-d-d-race-network.json new file mode 100644 index 00000000..1b4b397b --- /dev/null +++ b/ddracenetwork/egg-pterodactyl-d-d-race-network.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:36+00:00", + "name": "DDRaceNetwork", + "author": "diedyesterdaywashere@gmail.com", + "description": "DDraceNetwork (DDNet) is an actively maintained version of DDRace, a Teeworlds modification with a unique cooperative gameplay.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./DDNet-Server", + "config": { + "files": "{\r\n \"data/autoexec_server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_port\": \"sv_port {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"password\": \"password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"sv_map\": \"sv_map \\\"{{server.build.env.SERVER_MAP}}\\\"\",\r\n \"sv_register\": \"sv_register {{server.build.env.SERVER_REGISTER}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \" server name is \"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\napt update\r\napt -y install curl xz-utils tar\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n A=$(curl -sSL https://ddnet.org/downloads/ | grep -io '\u003ca href=['\"'\"'\"][^\"'\"'\"']*['\"'\"'\"]' | grep linux_x86_64.tar.xz | awk '{print $2}' |cut -c7- | sed 's/.$//' | head -1)\r\n DOWNLOAD_URL=https://ddnet.org/downloads/${A}\r\nelse\r\n A=$(curl -sSL https://ddnet.org/downloads/ | grep -io '\u003ca href=['\"'\"'\"][^\"'\"'\"']*['\"'\"'\"]' | grep linux_x86_64.tar.xz | awk '{print $2}' |cut -c7- | sed 's/.$//' | grep -i ${VERSION})\r\n DOWNLOAD_URL=https://ddnet.org/downloads/${A}\r\nfi\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\ncurl -sSL -o ddnet_linux_x86_64.tar.xz ${DOWNLOAD_URL}\r\ntar -xf ddnet_linux_x86_64.tar.xz --strip-components=1\r\nrm ddnet_linux_x86_64.tar.xz\r\n\r\ncd /mnt/server/data\r\nsed -i 's/#\\(sv_port [0-9]\\+\\)/\\1/' autoexec_server.cfg\r\n\r\ncd /mnt/server\r\necho \"# Check /data/autoexec_config.cfg for more info!\" \u003e\u003e myServerconfig.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Game Version", + "description": "Latest is the default, put \"nightly\" for beta, or enter the version number, for example \"17.0\".", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_NAME", + "default_value": "My DDNet server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Server password", + "description": "Password for joining the server, empty for no password", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Server map", + "description": "Map to start server with", + "env_variable": "SERVER_MAP", + "default_value": "Tutorial", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Register server", + "description": "Register the server to the server list.\r\n0 is disabled\r\nipv4 is enabled listening ipv4", + "env_variable": "SERVER_REGISTER", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,ipv4", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/eft/egg-pterodactyl-stay-in-tarkov.json b/eft/egg-pterodactyl-stay-in-tarkov.json new file mode 100644 index 00000000..6b9dde75 --- /dev/null +++ b/eft/egg-pterodactyl-stay-in-tarkov.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:10+00:00", + "name": "Stay In Tarkov", + "author": "dino@papertots.page", + "description": "The Stay in Tarkov project was born due to Battlestate Games' (BSG) reluctance to create the pure PvE version of Escape from Tarkov. The project's aim is simple, create a Cooperation PvE experience that retains progression.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./Aki.Server.exe", + "config": { + "files": "{\r\n \"Aki_Data/Server/configs/http.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ip\": \"0.0.0.0\",\r\n \"port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server is running, do not close while playing SPT, Happy playing!!\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Stay In Tarkov Server Installation Script\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n# Install git-lfs python3\r\napt update \u0026\u0026 apt install -yq git-lfs python3 jq tar\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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 SIT coop mod release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/${SIT_PACKAGE}/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/${SIT_PACKAGE}/releases\")\r\n\r\nif [ -z \"${SIT_VERSION}\" ] || [ \"${SIT_VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i linux)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${SIT_VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${SIT_VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${SIT_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_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\nwget ${DOWNLOAD_URL} -O ${SIT_NAME}\r\ntar -xvzf ${SIT_NAME}\r\nrm ${SIT_NAME}" + } + }, + "variables": [ + { + "name": "SITCoop Version", + "description": "Version of the SIT co-op mod for the server. Use \"latest\" for latest release, or the github release/tag/hash.\r\n\r\nSITCoop: https://github.com/stayintarkov/SIT.Aki-Server-Mod", + "env_variable": "SIT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "SIT Mod Github Package", + "description": "Github package for the SIT Aki server co-op mod. \r\n\r\nSITCoop: https://github.com/stayintarkov/SIT.Aki-Server-Mod", + "env_variable": "SIT_PACKAGE", + "default_value": "stayintarkov/SIT.Aki-Server-Mod", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "SIT Mod asset name", + "description": "SIT mod release file's asset name.", + "env_variable": "SIT_NAME", + "default_value": "SITCoop.tar.gz", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Github Username", + "description": "Optional, a github username to use to avoid Github API rate limit", + "env_variable": "GITHUB_USER", + "default_value": "", + "user_viewable": false, + "user_editable": true, + "rules": "present", + "field_type": "text" + }, + { + "name": "Github OAuth token", + "description": "Optional, A Github OAuth token to use to avoid API rate limit.", + "env_variable": "GITHUB_OAUTH_TOKEN", + "default_value": "", + "user_viewable": false, + "user_editable": true, + "rules": "present", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/factorio/clusterio/egg-pterodactyl-clusterio.json b/factorio/clusterio/egg-pterodactyl-clusterio.json new file mode 100644 index 00000000..f9f1b632 --- /dev/null +++ b/factorio/clusterio/egg-pterodactyl-clusterio.json @@ -0,0 +1,115 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:31+00:00", + "name": "Clusterio", + "author": "psychoalex@thevcbc.com", + "description": "Clusterio is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named Subspace Storage.\r\n\r\nBy itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. Plugins do the work of modding in the visible changes into the game, see the Plugins section for ready-made plugins you can install into a Clusterio cluster.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_18": "ghcr.io/parkervcp/yolks:nodejs_18", + "ghcr.io/parkervcp/yolks:nodejs_19": "ghcr.io/parkervcp/yolks:nodejs_19", + "ghcr.io/parkervcp/yolks:nodejs_20": "ghcr.io/parkervcp/yolks:nodejs_20", + "ghcr.io/parkervcp/yolks:nodejs_21": "ghcr.io/parkervcp/yolks:nodejs_21" + }, + "file_denylist": [], + "startup": "exec ./node_modules/.bin/clusterio{{SERVER_MODE}} run", + "config": { + "files": "{\r\n \"config-controller.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"controller~1http_port\": \"{{server.build.default.port}}\",\r\n \"controller~1name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n \"config-host.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"host~1controller_url\": \"{{server.build.env.CONTROLLER_URL}}\",\r\n \"host~1controller_token\": \"{{server.build.env.CONTROLLER_TOKEN}}\",\r\n \"host~1public_address\": \"{{server.build.default.ip}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Started\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "node:21-bookworm-slim", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Clusterio Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\ncase \"${SERVER_MODE}\" in\r\n\r\n \"controller\")\r\n echo -e \"Initialising Clustorio In Controller mode\"\r\n npm init \"@clusterio\" -y -- --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --admin \"${ADMIN_STRING}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --plugins ${PLUGINS}\r\n\t;;\r\n\r\n \"host\")\r\n echo -e \"Initialising Clustorio In Host mode\"\r\n\tnpm init \"@clusterio\" -y -- --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --host-name \"${HOST_NAME}\" --public-address \"${SERVER_IP}\" --controller-url \"${CONTROLLER_URL}\" --controller-token \"${CONTROLLER_TOKEN}\" --plugins ${PLUGINS}\r\n ;;\r\n \r\nesac\r\n\r\necho -e \"install complete\"\r\nexit 0" + } + }, + "variables": [ + { + "name": "Server Mode", + "description": "Set's the cluster operation mode of the server, can be either \"controller\" or \"host\". This is better thought of as Management or Gameserver nodes.\r\n\r\nRequired on:\r\nAll", + "env_variable": "SERVER_MODE", + "default_value": "controller", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:controller,host", + "field_type": "text" + }, + { + "name": "Log Level", + "description": "Options: \"none\", \"fatal\", \"error\", \"warn\", \"audit\", \"info\", \"verbose\"\r\n\r\nRequired on:\r\nAll", + "env_variable": "LOG_LEVEL", + "default_value": "info", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:none,fatal,error,warn,audit,info,verbose", + "field_type": "text" + }, + { + "name": "Server Admin", + "description": "Superadmin account name\r\n\r\nRequired on:\r\nController", + "env_variable": "ADMIN_STRING", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Host Name", + "description": "Host name in the Controller Web UI\r\n\r\nRequired on:\r\nHost", + "env_variable": "HOST_NAME", + "default_value": "Your Sub-Server", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Controller URL", + "description": "Connection URL to the Controller server, can be an internal address if you have allocated an additional internal port to the Controller Server.\r\nExample: http://yourip:yourport\r\nRequired on:\r\nHost", + "env_variable": "CONTROLLER_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Controller Token", + "description": "Authentication token used to connect to the Controller server, generated through the Controller Web UI.\r\n\r\nRequired on:\r\nHost", + "env_variable": "CONTROLLER_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:256", + "field_type": "text" + }, + { + "name": "Plugins", + "description": "Clusterio Plugins to install, space separate list.\r\n\r\nExample:\r\n@clusterio/plugin-subspace_storage @clusterio/plugin-global_chat @clusterio/plugin-research_sync @clusterio/plugin-inventory_sync\r\n\r\nRequired on:\r\nAll", + "env_variable": "PLUGINS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Cluster Name", + "description": "The Name of your Controller server cluster.\r\n\r\nRequired:\r\nController", + "env_variable": "CLUSTER_NAME", + "default_value": "Your Cluster", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/factorio/factorio-modupdate/egg-pterodactyl-factorio--mod-update.json b/factorio/factorio-modupdate/egg-pterodactyl-factorio--mod-update.json new file mode 100644 index 00000000..6c5803f2 --- /dev/null +++ b/factorio/factorio-modupdate/egg-pterodactyl-factorio--mod-update.json @@ -0,0 +1,132 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:38+00:00", + "name": "Factorio-ModUpdate", + "author": "tueye@tuworld.de", + "description": "The vanilla Factorio server. With automatic Mod Updates after ReInstall.\r\n\r\nhttps://www.factorio.com/", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin/x64/factorio --port {{SERVER_PORT}} --server-settings data/server-settings.json --start-server {{SAVE_NAME}}.zip", + "config": { + "files": "{\r\n \"data/server-settings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"description\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"max_players\": \"{{server.build.env.MAX_SLOTS}}\",\r\n \"username\": \"{{server.build.env.SERVER_USERNAME}}\",\r\n \"token\": \"{{server.build.env.SERVER_TOKEN}}\",\r\n \"autosave_interval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"autosave_slots\": \"{{server.build.env.SAVE_SLOTS}}\",\r\n \"afk_autokick_interval\": \"{{server.build.env.AFK_KICK}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Hosting game at\"\r\n}", + "stop": "/quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update \r\napt install -y curl tar xz-utils python3 python3-requests jq\r\n\r\nlatest_ModUpdate=$(curl --silent \"https://api.github.com/repos/pdemonaco/factorio-mod-updater/tags\" | jq -r '.[0].name')\r\n\r\nVERSION_JSON=$(curl -sSL https://factorio.com/api/latest-releases)\r\n\r\nlatest_stable=$(echo $VERSION_JSON | jq -r '.stable.headless')\r\nlatest_experimental=$(echo $VERSION_JSON | jq -r '.experimental.headless')\r\n\r\nif [ -z \"${FACTORIO_VERSION}\" ] || [ \"${FACTORIO_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_stable\r\nelif [ \"${FACTORIO_VERSION}\" == \"experimental\" ]; then\r\n DL_VERSION=$latest_experimental\r\nelse\r\n DL_VERSION=${FACTORIO_VERSION}\r\nfi\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho -e \"\\n running 'curl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}' \\n\"\r\n\r\ncurl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}\r\n\r\ntar -xf factorio-${DL_VERSION} --strip-components=1 -C /mnt/server\r\n\r\nrm factorio-${DL_VERSION}\r\n\r\nif [ -e data/map-gen-settings.json ]; then\r\n echo \"map-gen exists\"\r\nelse\r\n echo \"copying map-gen default settings\"\r\n mv data/map-gen-settings.example.json data/map-gen-settings.json\r\nfi\r\n\r\nif [ -e data/server-settings.json ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"copying server default settings\"\r\n mv data/server-settings.example.json data/server-settings.json\r\nfi\r\n\r\nif [ -e map-settings.json ]; then\r\n echo \"map settings exists\"\r\nelse\r\n echo \"copying map default settings\"\r\n mv data/map-settings.example.json data/map-settings.json\r\nfi\r\n\r\nif [ -e ${SAVE_NAME}.zip ]; then\r\n echo \"save file exists\"\r\nelse\r\n ./bin/x64/factorio --create ${SAVE_NAME}\r\n chmod o+w ${SAVE_NAME}.zip\r\nfi\r\n\r\n# Download Mod Updater\r\necho -e \"\\n running 'curl -sL https://github.com/pdemonaco/factorio-mod-updater/archive/${latest_ModUpdate}.tar.gz -o factorio-MU-${latest_ModUpdate}' \\n\"\r\n\r\ncurl -sL https://github.com/pdemonaco/factorio-mod-updater/archive/${latest_ModUpdate}.tar.gz -o factorio-MU-${latest_ModUpdate}\r\n\r\ntar -xf factorio-MU-${latest_ModUpdate} -C /mnt/server\r\n\r\nrm factorio-MU-${latest_ModUpdate}\r\n\r\n# Run Mod Updater\r\n./factorio-mod-updater-${latest_ModUpdate}/mod_updater.py -s /mnt/server/data/server-settings.json -m /mnt/server/mods --fact-path /mnt/server/bin/x64/factorio --update\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Factorio Version", + "description": "Which version of Factorio to install and use.", + "env_variable": "FACTORIO_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,12", + "field_type": "text" + }, + { + "name": "Maximum Slots", + "description": "Total number of slots to allow on the server.", + "env_variable": "MAX_SLOTS", + "default_value": "20", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Save Name", + "description": "The save name for the server.", + "env_variable": "SAVE_NAME", + "default_value": "gamesave", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_dash|between:1,100", + "field_type": "text" + }, + { + "name": "Server Token", + "description": "Your factorio.com token, it is required for your server to be visible in the public server list.", + "env_variable": "SERVER_TOKEN", + "default_value": "undefined", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_num|max:100", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the game as it will appear in the game listing", + "env_variable": "SERVER_NAME", + "default_value": "Factorio Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:100", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Description of the game that will appear in the listing.", + "env_variable": "SERVER_DESC", + "default_value": "Description", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200", + "field_type": "text" + }, + { + "name": "Server Username", + "description": "Username used for the server", + "env_variable": "SERVER_USERNAME", + "default_value": "unnamed", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:40", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Time between auto saves specified in minutes", + "env_variable": "SAVE_INTERVAL", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Auto Save Slots", + "description": "The number of auto saves to keep.", + "env_variable": "SAVE_SLOTS", + "default_value": "5", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "AFK Kick", + "description": "Time specified in minutes to kick AFK players.\r\n0 is off", + "env_variable": "AFK_KICK", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/factorio/factorio/egg-pterodactyl-factorio-a-r-m64.json b/factorio/factorio/egg-pterodactyl-factorio-a-r-m64.json new file mode 100644 index 00000000..089de542 --- /dev/null +++ b/factorio/factorio/egg-pterodactyl-factorio-a-r-m64.json @@ -0,0 +1,192 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:39+00:00", + "name": "Factorio ARM64", + "author": "parker@parkervcp.com", + "description": "The vanilla Factorio server.\r\n\r\nhttps://www.factorio.com/", + "features": null, + "docker_images": { + "Box64": "ghcr.io/parkervcp/yolks:box64" + }, + "file_denylist": [], + "startup": "if [ ! -f \"./saves/{{SAVE_NAME}}.zip\" ]; then box64 ./bin/x64/factorio --create ./saves/{{SAVE_NAME}}.zip --map-gen-settings data/map-gen-settings.json --map-settings data/map-settings.json; fi;\r\nbox64 ./bin/x64/factorio --port {{SERVER_PORT}} --server-settings data/server-settings.json --start-server saves/{{SAVE_NAME}}.zip", + "config": { + "files": "{\r\n \"data/server-settings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"description\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"max_players\": \"{{server.build.env.MAX_SLOTS}}\",\r\n \"username\": \"{{server.build.env.SERVER_USERNAME}}\",\r\n \"token\": \"{{server.build.env.SERVER_TOKEN}}\",\r\n \"autosave_interval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"autosave_slots\": \"{{server.build.env.SAVE_SLOTS}}\",\r\n \"afk_autokick_interval\": \"{{server.build.env.AFK_KICK}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Hosting game at\"\r\n}", + "stop": "/quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update \r\napt install -y curl tar xz-utils jq\r\n\r\nVERSION_JSON=$(curl -sSL https://factorio.com/api/latest-releases)\r\n\r\nlatest_stable=$(echo $VERSION_JSON | jq -r '.stable.headless')\r\nlatest_experimental=$(echo $VERSION_JSON | jq -r '.experimental.headless')\r\n\r\nif [ -z \"${FACTORIO_VERSION}\" ] || [ \"${FACTORIO_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_stable\r\nelif [ \"${FACTORIO_VERSION}\" == \"experimental\" ]; then\r\n DL_VERSION=$latest_experimental\r\nelse\r\n DL_VERSION=${FACTORIO_VERSION}\r\nfi\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho -e \"\\n running 'curl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}' \\n\"\r\n\r\ncurl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}\r\n\r\ntar -xf factorio-${DL_VERSION} --strip-components=1 -C /mnt/server\r\n\r\nrm factorio-${DL_VERSION}\r\n\r\nif [ -e data/map-gen-settings.json ]; then\r\n echo \"map-gen exists\"\r\nelse\r\n echo \"copying map-gen default settings\"\r\n mv data/map-gen-settings.example.json data/map-gen-settings.json\r\nfi\r\n\r\nif [ -e data/server-settings.json ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"copying server default settings\"\r\n mv data/server-settings.example.json data/server-settings.json\r\nfi\r\n\r\nif [ -e map-settings.json ]; then\r\n echo \"map settings exists\"\r\nelse\r\n echo \"copying map default settings\"\r\n mv data/map-settings.example.json data/map-settings.json\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Factorio Version", + "description": "Which version of Factorio to install and use.", + "env_variable": "FACTORIO_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,12", + "field_type": "text" + }, + { + "name": "Maximum Slots", + "description": "Total number of slots to allow on the server.", + "env_variable": "MAX_SLOTS", + "default_value": "20", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Save Name", + "description": "The save name for the server.", + "env_variable": "SAVE_NAME", + "default_value": "gamesave", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_dash|between:1,100", + "field_type": "text" + }, + { + "name": "Server Token", + "description": "Your factorio.com token, it is required for your server to be visible in the public server list.", + "env_variable": "SERVER_TOKEN", + "default_value": "undefined", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_num|max:100", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the game as it will appear in the game listing", + "env_variable": "SERVER_NAME", + "default_value": "Factorio Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:100", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Description of the game that will appear in the listing.", + "env_variable": "SERVER_DESC", + "default_value": "Description", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200", + "field_type": "text" + }, + { + "name": "Server Username", + "description": "Username used for the server", + "env_variable": "SERVER_USERNAME", + "default_value": "unnamed", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:40", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Time between auto saves specified in minutes", + "env_variable": "SAVE_INTERVAL", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Auto Save Slots", + "description": "The number of auto saves to keep.", + "env_variable": "SAVE_SLOTS", + "default_value": "5", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "AFK Kick", + "description": "Time specified in minutes to kick AFK players.\r\n0 is off", + "env_variable": "AFK_KICK", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_SAFEFLAGS", + "description": "", + "env_variable": "BOX64_DYNAREC_SAFEFLAGS", + "default_value": "0", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:0", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_BIGBLOCK", + "description": "", + "env_variable": "BOX64_DYNAREC_BIGBLOCK", + "default_value": "2", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:2", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_FORWARD", + "description": "", + "env_variable": "BOX64_DYNAREC_FORWARD", + "default_value": "1024", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:1024", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_CALLRET", + "description": "", + "env_variable": "BOX64_DYNAREC_CALLRET", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:1", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_FASTROUND", + "description": "", + "env_variable": "BOX64_DYNAREC_FASTROUND", + "default_value": "0", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:0", + "field_type": "text" + }, + { + "name": "BOX64_DYNAREC_ALIGNED_ATOMICS", + "description": "", + "env_variable": "BOX64_DYNAREC_ALIGNED_ATOMICS", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|in:1", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/factorio/factorio/egg-pterodactyl-factorio.json b/factorio/factorio/egg-pterodactyl-factorio.json new file mode 100644 index 00000000..9a609da0 --- /dev/null +++ b/factorio/factorio/egg-pterodactyl-factorio.json @@ -0,0 +1,132 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:37+00:00", + "name": "Factorio", + "author": "parker@parkervcp.com", + "description": "The vanilla Factorio server.\r\n\r\nhttps://www.factorio.com/", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "if [ ! -f \"./saves/{{SAVE_NAME}}.zip\" ]; then ./bin/x64/factorio --create ./saves/{{SAVE_NAME}}.zip --map-gen-settings data/map-gen-settings.json --map-settings data/map-settings.json; fi; ./bin/x64/factorio --port {{SERVER_PORT}} --server-settings data/server-settings.json --start-server saves/{{SAVE_NAME}}.zip", + "config": { + "files": "{\r\n \"data/server-settings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"description\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"max_players\": \"{{server.build.env.MAX_SLOTS}}\",\r\n \"username\": \"{{server.build.env.SERVER_USERNAME}}\",\r\n \"token\": \"{{server.build.env.SERVER_TOKEN}}\",\r\n \"autosave_interval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"autosave_slots\": \"{{server.build.env.SAVE_SLOTS}}\",\r\n \"afk_autokick_interval\": \"{{server.build.env.AFK_KICK}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Hosting game at\"\r\n}", + "stop": "/quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update \r\napt install -y curl tar xz-utils jq\r\n\r\nVERSION_JSON=$(curl -sSL https://factorio.com/api/latest-releases)\r\n\r\nlatest_stable=$(echo $VERSION_JSON | jq -r '.stable.headless')\r\nlatest_experimental=$(echo $VERSION_JSON | jq -r '.experimental.headless')\r\n\r\nif [ -z \"${FACTORIO_VERSION}\" ] || [ \"${FACTORIO_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_stable\r\nelif [ \"${FACTORIO_VERSION}\" == \"experimental\" ]; then\r\n DL_VERSION=$latest_experimental\r\nelse\r\n DL_VERSION=${FACTORIO_VERSION}\r\nfi\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho -e \"\\n running 'curl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}' \\n\"\r\n\r\ncurl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}\r\n\r\ntar -xf factorio-${DL_VERSION} --strip-components=1 -C /mnt/server\r\n\r\nrm factorio-${DL_VERSION}\r\n\r\nif [ -e data/map-gen-settings.json ]; then\r\n echo \"map-gen exists\"\r\nelse\r\n echo \"copying map-gen default settings\"\r\n mv data/map-gen-settings.example.json data/map-gen-settings.json\r\nfi\r\n\r\nif [ -e data/server-settings.json ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"copying server default settings\"\r\n mv data/server-settings.example.json data/server-settings.json\r\nfi\r\n\r\nif [ -e map-settings.json ]; then\r\n echo \"map settings exists\"\r\nelse\r\n echo \"copying map default settings\"\r\n mv data/map-settings.example.json data/map-settings.json\r\nfi\r\n\r\nif [ -e ./saves/${SAVE_NAME}.zip ]; then\r\n echo \"save file exists\"\r\nelse\r\n ./bin/x64/factorio --create ./saves/${SAVE_NAME} --map-gen-settings data/map-gen-settings.json --map-settings data/map-settings.json\r\n chmod o+w ./saves/${SAVE_NAME}.zip\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Factorio Version", + "description": "Which version of Factorio to install and use.", + "env_variable": "FACTORIO_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,12", + "field_type": "text" + }, + { + "name": "Maximum Slots", + "description": "Total number of slots to allow on the server.", + "env_variable": "MAX_SLOTS", + "default_value": "20", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Save Name", + "description": "The save name for the server.", + "env_variable": "SAVE_NAME", + "default_value": "gamesave", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_dash|between:1,100", + "field_type": "text" + }, + { + "name": "Server Token", + "description": "Your factorio.com token, it is required for your server to be visible in the public server list.", + "env_variable": "SERVER_TOKEN", + "default_value": "undefined", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_num|max:100", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the game as it will appear in the game listing", + "env_variable": "SERVER_NAME", + "default_value": "Factorio Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:100", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Description of the game that will appear in the listing.", + "env_variable": "SERVER_DESC", + "default_value": "Description", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200", + "field_type": "text" + }, + { + "name": "Server Username", + "description": "Username used for the server", + "env_variable": "SERVER_USERNAME", + "default_value": "unnamed", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:40", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Time between auto saves specified in minutes", + "env_variable": "SAVE_INTERVAL", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "Auto Save Slots", + "description": "The number of auto saves to keep.", + "env_variable": "SAVE_SLOTS", + "default_value": "5", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "AFK Kick", + "description": "Time specified in minutes to kick AFK players.\r\n0 is off", + "env_variable": "AFK_KICK", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/foundry_vtt/egg-pterodactyl-foundry-v-t-t.json b/foundry_vtt/egg-pterodactyl-foundry-v-t-t.json new file mode 100644 index 00000000..7ad32f72 --- /dev/null +++ b/foundry_vtt/egg-pterodactyl-foundry-v-t-t.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:48+00:00", + "name": "Foundry VTT", + "author": "pterodactyl@demi.cloud", + "description": "Foundry VTT is a standalone application built for experiencing multiplayer tabletop RPGs using a feature-rich and modern self-hosted application where your players connect directly through the browser.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_18": "ghcr.io/parkervcp/yolks:nodejs_18" + }, + "file_denylist": [], + "startup": "node ./app/resources/app/main.js --dataPath=\"/home/container/data\"", + "config": { + "files": "{\r\n \"data/Config/options.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"language\": \"{{server.build.env.FOUNDRY_LANGUAGE}}\",\r\n \"updateChannel\": \"{{server.build.env.UPDATE_CHANNEL}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started and listening on port\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# FoundryVTT install script\r\n#\r\n# Server Files: /mnt/server\r\ndeclare -r DIR_ROOT=\"/mnt/server\"\r\ndeclare -r DIR_APP=\"${DIR_ROOT}/app\"\r\ndeclare -r DIR_DATA=\"${DIR_ROOT}/data\"\r\ndeclare -r ZIP_FILE_NAME=\"foundryvtt.zip\"\r\n\r\nmain() {\r\n apt update\r\n apt install -y unzip\r\n\r\n printf \"\\nBuilding directory structure...\\n\"\r\n mkdir -p \"${DIR_ROOT}/data/Config\"\r\n mkdir -p \"${DIR_ROOT}/app\"\r\n # shellcheck disable=SC2164\r\n cd \"${DIR_APP}\"\r\n printf \"\\nDownloading FoundryVTT files...\\n\"\r\n wget \"${TIMED_URL}\" -O \"${ZIP_FILE_NAME}\"\r\n printf \"\\nunzipping FoundryVTT files...\\n\"\r\n unzip \"${ZIP_FILE_NAME}\" -d \"${DIR_APP}\"\r\n #rm \"${ZIP_FILE_NAME}\"\r\n\r\n printf \"\\nGenerating default configuration...\\n\"\r\n cat \u003c\u003cEOF \u003e\"${DIR_DATA}/Config/options.json\"\r\n{\r\n \"port\": 30000,\r\n \"upnp\": false,\r\n \"fullscreen\": false,\r\n \"hostname\": null,\r\n \"localHostname\": null,\r\n \"routePrefix\": null,\r\n \"sslCert\": null,\r\n \"sslKey\": null,\r\n \"awsConfig\": null,\r\n \"dataPath\": \"/home/container/data\",\r\n \"passwordSalt\": null,\r\n \"proxySSL\": false,\r\n \"proxyPort\": null,\r\n \"minifyStaticFiles\": true,\r\n \"updateChannel\": \"release\",\r\n \"language\": \"en.core\",\r\n \"upnpLeaseDuration\": null,\r\n \"world\": null\r\n} \r\nEOF\r\n printf \"Installation Done.\\n\"\r\n}\r\nmain \"@\"" + } + }, + "variables": [ + { + "name": "Timed URL", + "description": "This is required to download the foundry files. Available in your https://foundryvtt.com/ profile after you've purchased a license. This link generally lasts for about 5 minutes.", + "env_variable": "TIMED_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|url", + "field_type": "text" + }, + { + "name": "Language", + "description": "As may be expected, this setting configures the localization of the program and can be leveraged by localization modules to ensure that the interface is translated to the language of your choosing wherever possible.", + "env_variable": "FOUNDRY_LANGUAGE", + "default_value": "en.core", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "Update Channel", + "description": "Select what channel you want to use for automatic updates", + "env_variable": "UPDATE_CHANNEL", + "default_value": "release", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:256", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ftl_tachyon/egg-pterodactyl-tachyon.json b/ftl_tachyon/egg-pterodactyl-tachyon.json new file mode 100644 index 00000000..8a999481 --- /dev/null +++ b/ftl_tachyon/egg-pterodactyl-tachyon.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:11+00:00", + "name": "Tachyon", + "author": "alex.chang-lam@protonmail.com", + "description": "A multiplayer version of FTL.", + "features": null, + "docker_images": { + "Java_11": "ghcr.io/pterodactyl/yolks:java_11" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar TachyonsCEServer.jar", + "config": { + "files": "{\r\n \"config.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"SERVER_PORT=\": \"SERVER_PORT={{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"[Server] SERVER STARTED.\"\r\n}", + "stop": "/exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt install -y curl jq file unzip\r\n\r\nif [ ! -d /mnt/server/ ]; then\r\n mkdir -p /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.github.com/repos/Dav-Edward/TachyonsCE/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/Dav-Edward/TachyonsCE/releases\")\r\nMATCH=TachyonsCE\r\n\r\nif [ \"$(echo ${LATEST_JSON} | jq -r '.message')\" != \"Not Found\" ] \u0026\u0026 [[ -z \"${VERSION}\" || \"${VERSION}\" == \"latest\" ]]; then\r\n echo -e \"grabbing latest version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelif [ \"$(echo ${LATEST_JSON} | jq -r '.message')\" == \"Not Found\" ]; then\r\n ## emergency fallback if latest isn't found\r\n ## grabs the latest release even it it's a pre-release\r\n echo -e \"grabbing latest pre-release\"\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r '.[0].assets[].browser_download_url' | grep -i ${MATCH})\r\nelse\r\n echo -e \"grabbing version $VERSION\"\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\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl --progress-bar -sSL -o ${DOWNLOAD_URL##*/} ${DOWNLOAD_URL}\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\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n echo -e \"unknown filetype. Exeting\"\r\n exit 2 \r\nfi\r\n\r\n#move all server files out\r\nmv ./server/* ./\r\n\r\n#remove zip and unneeded client-side and dev files\r\nrm -rf server/ JRE/ client/ *.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/altv/egg-pterodactyl-alt--v.json b/gta/altv/egg-pterodactyl-alt--v.json new file mode 100644 index 00000000..46c6498b --- /dev/null +++ b/gta/altv/egg-pterodactyl-alt--v.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:23+00:00", + "name": "alt:V", + "author": "parker@parkervcp.com", + "description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V", + "features": null, + "docker_images": { + "ALT:V": "ghcr.io/parkervcp/games:altv" + }, + "file_denylist": [], + "startup": "./altv-server", + "config": { + "files": "{\r\n \"server.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"host:\": \"host: 0.0.0.0\",\r\n \"port:\": \"port: {{server.build.default.port}}\",\r\n \"password:\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"description:\": \"description: {{server.build.env.SERVER_DESC}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n#\r\n\r\napt update\r\napt install -y wget jq curl \r\n\r\ncd /mnt/server\r\nNEWVERSION=$(curl -sSL https://cdn.alt-mp.com/server/${BUILD}/x64_linux/update.json | jq -r .version)\r\n\r\n\r\nif [ -f \"/mnt/server/altv-server\" ]; then\r\n CURRENTVERSION=$(cat update.json | jq -r .version)\r\n if [[ \"${CURRENTVERSION}\" == \"${NEWVERSION}\" ]]; then\r\n echo \"No update found\"\r\n exit 0\r\n fi\r\n echo \"Backing up version ${CURRENTVERSION}\"\r\n mkdir -p /mnt/server/backup/${CURRENTVERSION}/data\r\n mv altv-server /mnt/server/backup/${CURRENTVERSION}/\r\n cd /mnt/server/data\r\n mv clothes.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n mv vehmodels.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n mv vehmods.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n mv pedmodels.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n mv weaponmodels.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n mv rpfdata.bin /mnt/server/backup/${CURRENTVERSION}/data\r\n rm /mnt/server/update.json\r\nfi\r\n\r\n\r\ncd /mnt/server\r\n\r\n\r\necho \"Installing version: ${NEWVERSION}\"\r\nwget -q https://cdn.alt-mp.com/server/${BUILD}/x64_linux/altv-server\r\nwget -q https://cdn.alt-mp.com/server/${BUILD}/x64_linux/update.json\r\nchmod +x ./altv-server\r\n\r\n\r\nmkdir -p /mnt/server/data\r\ncd /mnt/server/data\r\n\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/vehmodels.bin\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/vehmods.bin\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/clothes.bin\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/pedmodels.bin\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/weaponmodels.bin\r\nwget -q https://cdn.alt-mp.com/data/${BUILD}/data/rpfdata.bin\r\n\r\n\r\n\r\n\r\ncd /mnt/server\r\nif [ ! -f \"/mnt/server/server.toml\" ]; then\r\ncat \u003c\u003c EOF \u003e\u003e server.toml\r\nname = 'alt:V Server'\r\nhost = '0.0.0.0'\r\nport = ${SERVER_PORT}\r\nplayers = 128\r\npassword = '${PASSWORD}'\r\nannounce = false\r\ntoken = 'YOUR_TOKEN'\r\ngamemode = 'Freeroam'\r\nwebsite = 'example.com'\r\nlanguage = 'en'\r\ndescription = '${SERVER_DESC}'\r\nmodules = []\r\nresources = []\r\nEOF\r\nfi\r\n\r\nmkdir -p resources/\r\n\r\necho -e \"install complete\"" + } + }, + "variables": [ + { + "name": "ld lib path", + "description": "Needed to load modules correctly. Best left at default.", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Release Branch", + "description": "The supported versions are release, rc, dev (default: release).\r\nIf you don't know what you are doing leave it on release", + "env_variable": "BUILD", + "default_value": "release", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:release,rc,dev", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "The password to join the server", + "env_variable": "PASSWORD", + "default_value": "ChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|min:6", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Description for the server.", + "env_variable": "SERVER_DESC", + "default_value": "A Pterodactyl Hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/fivem/egg-pterodactyl-five-m.json b/gta/fivem/egg-pterodactyl-five-m.json new file mode 100644 index 00000000..3cd3cd0d --- /dev/null +++ b/gta/fivem/egg-pterodactyl-five-m.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:40+00:00", + "name": "FiveM", + "author": "parker@parkervcp.com", + "description": "A new FiveM egg for the latest builds due to recent changes in FiveM", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "$(pwd)/alpine/opt/cfx-server/ld-musl-x86_64.so.1 --library-path \"$(pwd)/alpine/usr/lib/v8/:$(pwd)/alpine/lib/:$(pwd)/alpine/usr/lib/\" -- $(pwd)/alpine/opt/cfx-server/FXServer +set citizen_dir $(pwd)/alpine/opt/cfx-server/citizen/ +set sv_licenseKey {{FIVEM_LICENSE}} +set steam_webApiKey {{STEAM_WEBAPIKEY}} +set sv_maxplayers {{MAX_PLAYERS}} +set serverProfile default +set txAdminPort {{TXADMIN_PORT}} $( [ \"$TXADMIN_ENABLE\" == \"1\" ] || printf %s '+exec server.cfg' )", + "config": { + "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"endpoint_add_tcp\": \"endpoint_add_tcp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"endpoint_add_udp\": \"endpoint_add_udp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_HOSTNAME}}\\\"\",\r\n \"set sv_licenseKey\": \"set sv_licenseKey {{server.build.env.FIVEM_LICENSE}}\",\r\n \"set steam_webApiKey\": \"set steam_webApiKey {{server.build.env.STEAM_WEBAPIKEY}}\",\r\n \"sv_maxclients\": \"sv_maxclients {{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"succeeded. Welcome!\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# FiveM Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p /mnt/server/resources\r\n\r\ncd /mnt/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https://github.com/citizenfx/cfx-server-data.git /tmp\r\ncp -Rf /tmp/resources/* resources/\r\n\r\nRELEASE_PAGE=$(curl -sSL https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/)\r\nCHANGELOGS_PAGE=$(curl -sSL https://changelogs-live.fivem.net/api/changelog/versions/linux/server)\r\n\r\nif [[ \"${FIVEM_VERSION}\" == \"recommended\" ]] || [[ -z ${FIVEM_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${FIVEM_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*/*.tar.xz\"' | grep -Eo '\".*/*.tar.xz\"' | sed 's/\\\"//g' | sed 's/\\.\\///1' | grep -i \"${FIVEM_VERSION}\" | grep -o =.* | tr -d '=')\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\necho \"Extracting fivem files\"\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 ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"Skipping downloading default server config file as one already exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/gta/fivem/server.cfg \u003e\u003eserver.cfg\r\nfi\r\n\r\nmkdir -p logs/\r\n\r\necho \"install complete\"" + } + }, + "variables": [ + { + "name": "fivem license", + "description": "Required to start the service. Get your keys at https://keymaster.fivem.net/", + "env_variable": "FIVEM_LICENSE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:33", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Set the fivem max play count", + "env_variable": "MAX_PLAYERS", + "default_value": "48", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1,48", + "field_type": "text" + }, + { + "name": "Server Hostname", + "description": "The name that shows up in the server browser", + "env_variable": "SERVER_HOSTNAME", + "default_value": "My new FXServer!", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "fivem version", + "description": "The fivem version that is to be installed. Invalid versions will default to recommended.\r\n\r\nAn example is `6013-d8ae399d15680da569022f57ab7f2474d307c821`\r\n\r\nYou can get the latest version from here - https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/", + "env_variable": "FIVEM_VERSION", + "default_value": "recommended", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Download Link", + "description": "This is the link to download fivem from. This is only used in the install script.\r\n\r\nThe file you link to needs to be an fx.tar.zx file.\r\n\r\nExample:\r\nhttps://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/6013-d8ae399d15680da569022f57ab7f2474d307c821/fx.tar.xz", + "env_variable": "DOWNLOAD_URL", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Steam Web Api Key", + "description": "Use your Steam WebApiKey or set to 'none'. Get your key at https://steamcommunity.com/dev/apikey/", + "env_variable": "STEAM_WEBAPIKEY", + "default_value": "none", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "txAdmin Port", + "description": "The port for the txAdmin panel", + "env_variable": "TXADMIN_PORT", + "default_value": "40120", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Enable txadmin", + "description": "Enables txadmin.\r\n\r\nset to 1 to enable. (default is 0 for false)", + "env_variable": "TXADMIN_ENABLE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/gtac/egg-pterodactyl-grand-theft-auto-connected.json b/gta/gtac/egg-pterodactyl-grand-theft-auto-connected.json new file mode 100644 index 00000000..96ad8aa0 --- /dev/null +++ b/gta/gtac/egg-pterodactyl-grand-theft-auto-connected.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:47+00:00", + "name": "Grand Theft Auto Connected", + "author": "admin@softwarenoob.com", + "description": "Grand Theft Auto Connected is a custom scriptable multiplayer modification for multiple Grand Theft Auto games.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./Server", + "config": { + "files": "{\r\n \"server.xml\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"server.servername\": \"{{server.build.env.SERVERNAME}}\",\r\n \"server.port\": \"{{server.build.default.port}}\",\r\n \"server.httpport\": \"{{server.build.default.port}}\",\r\n \"server.game\": \"{{server.build.env.GAMETYPE}}\",\r\n \"server.serverbrowser\": \"{{server.build.env.SERVERBROWSER}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Successfully added server\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\ncd /mnt/server\r\n\r\n\r\nif [ \"${DL_VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=https://gtaconnected.com/downloads/server/latest/linux\r\nelse\r\n DOWNLOAD_LINK=https://gtaconnected.com/downloads/GTAC-Server-Linux-${DL_VERSION}.tar.gz\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output /dev/null --silent --head --fail --location ${DOWNLOAD_LINK}; then\r\n echo -e \"Chosen server version is valid.\"\r\n else\r\n echo -e \"Chosen server version is invalid, tried $DOWNLOAD_LINK. Exiting installation\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link, stopping installation\"\r\n exit 3\r\nfi\r\n\r\necho -e \"Downloading ${DL_VERSION} version of the server\"\r\ncurl -sSL ${DOWNLOAD_LINK} -o GTAC.tar.gz\r\necho \"Extracting files\"\r\ntar -xf GTAC.tar.gz\r\n\r\nchmod +x Server\r\nrm GTAC.tar.gz\r\n\r\necho \"Install complete\"" + } + }, + "variables": [ + { + "name": "Game type", + "description": "Sets the game this server will support. Available options: gta:iii, gta:vc, gta:sa, gta:ug, gta:iv, gta:eflc", + "env_variable": "GAMETYPE", + "default_value": "gta:iv", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:gta:iii,gta:vc,gta:sa,gta:ug,gta:iv,gta:eflc", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name of the server, which appears in the server browser.", + "env_variable": "SERVERNAME", + "default_value": "Pterodactyl Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60", + "field_type": "text" + }, + { + "name": "serverbrowser", + "description": "Whether to show the server in the server browser, set to true or false", + "env_variable": "SERVERBROWSER", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Server Version", + "description": "The version of GATC to install such as 1.2.10, enter latest for the latest version.", + "env_variable": "DL_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/mtasa/egg-pterodactyl-multi-theft-auto.json b/gta/mtasa/egg-pterodactyl-multi-theft-auto.json new file mode 100644 index 00000000..23561725 --- /dev/null +++ b/gta/mtasa/egg-pterodactyl-multi-theft-auto.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:55+00:00", + "name": "Multi Theft Auto", + "author": "info@six-gaming.com", + "description": "What more could you want? Multi Theft Auto provides the best online Grand Theft Auto experience there is. Read on to find out more.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/games:mta": "ghcr.io/parkervcp/games:mta" + }, + "file_denylist": [], + "startup": "./mta-server64 --port {{SERVER_PORT}} --httpport {{SERVER_WEBPORT}} -n", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started and is ready to accept connections\"\r\n}", + "stop": "shutdown" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:ubuntu", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\ncd /tmp\r\ncurl -sSL -o multitheftauto_linux_x64.tar.gz https://linux.multitheftauto.com/dl/multitheftauto_linux_x64.tar.gz\r\ncurl -sSL -o mta-baseconfig.tar.gz https://linux.multitheftauto.com/dl/baseconfig.tar.gz\r\ncurl -sSL -o mtasa-resources-latest.zip https://mirror.multitheftauto.com/mtasa/resources/mtasa-resources-latest.zip\r\n\r\nmkdir -p /mnt/server\r\ntar -xvf multitheftauto_linux_x64.tar.gz\r\ncp -rf multitheftauto_linux_x64/* /mnt/server\r\n\r\nif [ ! -f /mnt/server/x64/libmysqlclient.so.16 ]; then\r\n curl -L http://nightly.mtasa.com/files/libmysqlclient.so.16 -o /mnt/server/x64/libmysqlclient.so.16\r\nfi\r\n\r\nmkdir -p /mnt/server/mods/deathmatch/resources\r\nunzip -o -d /mnt/server/mods/deathmatch/resources mtasa-resources-latest.zip\r\n\r\ntar -xvf mta-baseconfig.tar.gz\r\ncp -rf baseconfig/* /mnt/server/mods/deathmatch\r\n\r\nchown -R root:root /mnt\r\n\r\nexport HOME=/mnt/server\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "SERVER_WEBPORT", + "description": "The http port for web resource.\r\nThis Port needs to be the {{SERVER_PORT}}+3.", + "env_variable": "SERVER_WEBPORT", + "default_value": "22005", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/openmp/egg-pterodactyl-open-m-p.json b/gta/openmp/egg-pterodactyl-open-m-p.json new file mode 100644 index 00000000..d292218c --- /dev/null +++ b/gta/openmp/egg-pterodactyl-open-m-p.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:57+00:00", + "name": "OpenMP", + "author": "vedrancappone@gmail.com", + "description": "A multiplayer mod for Grand Theft Auto: San Andreas that is fully backwards compatible with San Andreas Multiplayer.", + "features": null, + "docker_images": { + "Samp": "ghcr.io/parkervcp/games:samp" + }, + "file_denylist": [], + "startup": "./omp-server", + "config": { + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"network.port\": \"{{server.build.default.port}}\",\r\n \"rcon.password\": \"{{server.build.env.RCON_PASSWORD}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"started on port\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt -y install curl git jq tar\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/openmultiplayer/open.mp/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/openmultiplayer/open.mp/releases\")\r\nMATCH=open.mp-linux-x86-dynssl\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 | grep -linux-x86 | head -1)\r\n fi\r\nfi\r\n\r\necho \"running: curl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\"\r\ncurl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\r\n\r\nmkdir -p /mnt/server\r\ntar -xzvf openmp.tar.gz --strip-components=1 -C /mnt/server/\r\n\r\ncd /mnt/server || exit\r\n\r\necho \"creating default config\"\r\n\r\nif [ -e config.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default OpenMp config\"\r\n curl https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/gta/openmp/config.json \u003e\u003e config.json\r\nfi\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "RCON Password", + "description": "The password for RCON", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version you want to install", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/ragecoop/egg-pterodactyl-rage-c-o-o-p.json b/gta/ragecoop/egg-pterodactyl-rage-c-o-o-p.json new file mode 100644 index 00000000..83685ca8 --- /dev/null +++ b/gta/ragecoop/egg-pterodactyl-rage-c-o-o-p.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:03+00:00", + "name": "RageCOOP", + "author": "josdekurk@gmail.com", + "description": "Drive around the interstate with your buddy, enjoy GTAs environment, make own missions and events or just chill in Grove Street! 🌐", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./RageCoop.Server", + "config": { + "files": "{\r\n \"Settings.xml\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"Settings.Port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listening for clients\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt -y install curl wget git zip unzip jq\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/RAGECOOP/RAGECOOP-V/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/RAGECOOP/RAGECOOP-V/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 RageCoop.Server-linux-x64.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_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i RageCoop.Server-linux-x64.zip)\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 | grep -i RageCoop.Server-linux-x64.zip)\r\n fi\r\nfi\r\n\r\necho ${DOWNLOAD_URL}\r\nwget ${DOWNLOAD_URL} -O RageCoop.Server-linux.zip\r\nRageCoop.Server-linux.zip\r\n\r\nunzip RageCoop.Server-linux.zip\r\n\r\nrm RageCoop.Server-linux.zip\r\n\r\nchmod +x RageCoop.Server\r\n\r\ncat \u003c\u003cEOF \u003e Settings.xml\r\n\u003cSettings xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\u003e\r\n\t\u003cPort\u003e4499\u003c/Port\u003e\r\n\t\u003cMaxPlayers\u003e32\u003c/MaxPlayers\u003e\r\n\t\u003cMaxLatency\u003e500\u003c/MaxLatency\u003e\r\n\t\u003cName\u003eRAGECOOP server\u003c/Name\u003e\r\n\t\u003cWebsite\u003ehttps://ragecoop.online/\u003c/Website\u003e\r\n\t\u003cDescription\u003eRAGECOOP server\u003c/Description\u003e\r\n\t\u003cGameMode\u003eFreeRoam\u003c/GameMode\u003e\r\n\t\u003cLanguage\u003eEnglish\u003c/Language\u003e\r\n\t\u003cWelcomeMessage\u003eWelcome on this server :)\u003c/WelcomeMessage\u003e\r\n\t\u003cAnnounceSelf\u003efalse\u003c/AnnounceSelf\u003e\r\n\t\u003cMasterServer\u003ehttps://masterserver.ragecoop.online/\u003c/MasterServer\u003e\r\n\t\u003cLogLevel\u003e0\u003c/LogLevel\u003e\r\n\t\u003cNpcStreamingDistance\u003e500\u003c/NpcStreamingDistance\u003e\r\n\t\u003cPlayerStreamingDistance\u003e-1\u003c/PlayerStreamingDistance\u003e\r\n\t\u003cWeatherTimeSync\u003etrue\u003c/WeatherTimeSync\u003e\r\n\t\u003cAllowedUsernameChars\u003eABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_\u003c/AllowedUsernameChars\u003e\r\n\t\u003cUseP2P\u003efalse\u003c/UseP2P\u003e\r\n\t\u003cUseZeroTier\u003efalse\u003c/UseZeroTier\u003e\r\n\t\u003cUseVoice\u003efalse\u003c/UseVoice\u003e\r\n\t\u003cZeroTierNetworkID\u003e8056c2e21c000001\u003c/ZeroTierNetworkID\u003e\r\n\t\u003cAutoUpdate\u003efalse\u003c/AutoUpdate\u003e\r\n\t\u003cKickGodMode\u003efalse\u003c/KickGodMode\u003e\r\n\t\u003cKickSpamming\u003etrue\u003c/KickSpamming\u003e\r\n\u003c/Settings\u003e\r\nEOF\r\n\r\necho \"done\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "The version you want of RAGECOOP-V\r\n\r\nExample: latest, nightly , 1.5.3", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/ragemp/egg-pterodactyl-rage--m-p.json b/gta/ragemp/egg-pterodactyl-rage--m-p.json new file mode 100644 index 00000000..203a19d2 --- /dev/null +++ b/gta/ragemp/egg-pterodactyl-rage--m-p.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:04+00:00", + "name": "Rage.MP", + "author": "noreply.waypointhosting@gmail.com", + "description": "https://rage.mp/\r\n\r\nModified to work with the latest version of RAGE:MP\r\nWill automatically install linux bridge.\r\n**This server requires 2 ports to be added for the server. the main port and the next (port+1) as ports for the server.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./ragemp-server", + "config": { + "files": "{\r\n \"conf.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"bind\":\"0.0.0.0\",\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"The server is ready to accept connections\"\r\n}", + "stop": "^X" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nmkdir -p /mnt/server/tmp\r\ncd /mnt/server\r\n\r\nrm -rf bin/\r\nrm -rf dotnet/\r\nrm ragemp-server\r\n\r\ncd /mnt/server/tmp\r\necho \"Downloading rage.mp\"\r\ncurl -sSL -o linux_x64.tar.gz https://cdn.rage.mp/updater/prerelease/server-files/linux_x64.tar.gz\r\ntar -xzvf linux_x64.tar.gz\r\nrm linux_x64.tar.gz\r\ncd /mnt/server/tmp/ragemp-srv/\r\nmv * /mnt/server\r\n\r\ncd /mnt/server\r\nchmod +x ./ragemp-server\r\nrm -rf /mnt/server/tmp\r\n\r\nif [ -e conf.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default rage.mp config\"\r\n curl https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/gta/ragemp/conf.json \u003e\u003e conf.json\r\nfi\r\n\r\necho \"install complete\"\r\n\r\nexit 0" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "Server name that will be displayed to the master server. (64 Char max)", + "env_variable": "SERVER_NAME", + "default_value": "RAGE:MP Unofficial server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players your server will hold. (Max 100)", + "env_variable": "MAX_PLAYERS", + "default_value": "50", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1,100", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gta/samp/egg-pterodactyl-s-a--m-p.json b/gta/samp/egg-pterodactyl-s-a--m-p.json new file mode 100644 index 00000000..7123db4e --- /dev/null +++ b/gta/samp/egg-pterodactyl-s-a--m-p.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:08+00:00", + "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).", + "features": null, + "docker_images": { + "Samp": "ghcr.io/parkervcp/games:samp" + }, + "file_denylist": [], + "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 \"rcon_password\": \"rcon_password {{server.build.env.RCON_PASS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Started server on \"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n# Check if VERSION is set and starts with an uppercase \"R\"\r\nif [[ -n \"$VERSION\" \u0026\u0026 \"$VERSION\" == R* ]]; then\r\n VERSION=\"0.3.7\"\r\n echo \"Updated VERSION: $VERSION\"\r\nfi\r\n\r\ncd /tmp || exit\r\necho \"running: curl -sSL -o samp.tar.gz https://sampcenter.com/download/server/linux/${VERSION}.tar.gz\"\r\ncurl -sSL -o samp.tar.gz https://sampcenter.com/download/server/linux/${VERSION}.tar.gz\r\n\r\nmkdir -p /mnt/server\r\ntar -xzvf samp.tar.gz --strip-components=1 -C /mnt/server/\r\n\r\ncd /mnt/server || exit\r\n\r\nsed -i '3d' /mnt/server/server.cfg\r\necho \"rcon_password ${RCON_PASS}\" \u003e\u003e /mnt/server/server.cfg\r\n\r\nchown -R root:root /mnt\r\n\r\nexport HOME=/mnt/server\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "Example: if the download url is https://sampcenter.com/download/server/linux/0.3.7.tar.gz then the variable should be: `0.3.7`", + "env_variable": "Version", + "default_value": "0.3.7", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Rcon password", + "description": "The password used for rcon", + "env_variable": "RCON_PASS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/hogwarp/egg-pterodactyl-hogwarp.json b/hogwarp/egg-pterodactyl-hogwarp.json new file mode 100644 index 00000000..b4074d52 --- /dev/null +++ b/hogwarp/egg-pterodactyl-hogwarp.json @@ -0,0 +1,122 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:49+00:00", + "name": "Hogwarp", + "author": "imkringle@proton.me", + "description": "A Pterodactyl egg for the Hogwarts Legacy mod Hogwarp - For more info see their Nexus: https://www.nexusmods.com/hogwartslegacy/mods/1378", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:wine_staging": "ghcr.io/parkervcp/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine HogWarpServer.exe", + "config": { + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ApiKey\": \"{{env.API_KEY}}\",\r\n \"Name\": \"{{env.SERV_NAME}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"Description\": \"{{env.SERV_DESC}}\",\r\n \"MaxPlayer\": \"{{env.MAX_PLAYERS}}\",\r\n \"IconUrl\": \"{{env.SERV_ICON}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started on port \"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#Hogwarp Install\r\napt update -y\r\napt install -y curl file unzip\r\n\r\nif [ ! -d /mnt/server ]; then\r\n mkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server/\r\n\r\n# Validate link\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\n# Unpack Server zip\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*/} | cut -d',' -f2 | cut -d' ' -f2)\r\n\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2 \r\nfi\r\n\r\ncd /mnt/server/\r\n\r\n#Create the Plugins folder\r\nmkdir plugins/\r\n\r\n# Check for a config.json, if it is missing; create it\r\nTARGET_FILE=\"config.json\"\r\n\r\nif test -f \"$TARGET_FILE\"; then\r\n echo \"$TARGET_FILE exists. Skipping config install\"\r\nelse\r\n echo \"$TARGET_FILE does not exist. Installing!\"\r\n curl -sSL -o config.json https://pteropaste.com/hy2d48dbhtdd/\r\n echo \"$TARGET_FILE has been installed\"\r\nfi\r\n\r\n\r\n## Install End\r\necho \"-----------------------------------------\"\r\necho \"Hogwarp Is Installed!\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Wine Tricks", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "dotnet7", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Hogwarp API Key", + "description": "A API required to boot - https://presence.hogwarp.com/login\r\n- If not set on install it will fail. Set API Key then Reinstall Files", + "env_variable": "API_KEY", + "default_value": "CHANGEME", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "A name that displays on the Hogwarp list", + "env_variable": "SERV_NAME", + "default_value": "Ptero Hogwarp Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "WineARCH", + "description": "Arch type for Wine", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Max players for a server, this depends on your Patreon level for Hogwarp\r\nhttps://www.patreon.com/tiltedphoques - ( 4, 8, 16, No Limit ) In that order.", + "env_variable": "MAX_PLAYERS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "Server Icon URL", + "description": "The icon that displays on Hogwarps multiplayer listing", + "env_variable": "SERV_ICON", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "The description that shows on the Multiplayer list", + "env_variable": "SERV_DESC", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Download URL", + "description": "URL to pull the files from\r\n- Files can be found in their Discord (https://discord.com/invite/hogwarp). Default URL will pull from there as well\r\n- These files can be outdated! Be sure to check for an update in the event it has a version mismatch with the client.", + "env_variable": "DOWNLOAD_URL", + "default_value": "https://cdn.discordapp.com/attachments/1076580539751993444/1118295980597575810/Server.zip", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "nullable", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ksp/egg-pterodactyl-k-s-p-d-m-p.json b/ksp/egg-pterodactyl-k-s-p-d-m-p.json new file mode 100644 index 00000000..a5fc0f01 --- /dev/null +++ b/ksp/egg-pterodactyl-k-s-p-d-m-p.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:51+00:00", + "name": "KSP DMP", + "author": "rufanyin29@gmail.com", + "description": "Dark Multiplayer mod server for Kerbal Space Program", + "features": null, + "docker_images": { + "Mono": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "mono DMPServer.exe", + "config": { + "files": "{\r\n \"Config/Settings.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"modpackMode\": \"{{server.build.env.MODPACKMODE}}\",\r\n \"warpMode\": \"{{server.build.env.WARPMODE}}\",\r\n \"gameMode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"gameDifficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"whitelisted\": \"{{server.build.env.WHITELIST}}\",\r\n \"serverName\": \"{{server.build.env.SERVERNAME}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Ready!\"\r\n}", + "stop": "/exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nV=$(curl -s https://d-mp.org/downloads | grep \"DMP Server\" | awk -F 'href=\"' 'NR==2 {print $2}' | awk -F '\"' '{print $1}') # /builds/release/v0.3.8.3/DMPServer.zip\r\n\r\necho \"Download link: https://d-mp.org${V}\"\r\ncurl -sSL -o DMPServer.zip https://d-mp.org${V}\r\n\r\nunzip -o DMPServer.zip\r\nmv DMPServer/* ./\r\n\r\nrm -rf DMPServer\r\nrm DMPServer.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Mod Pack Mode", + "description": "Specify the modpack type.", + "env_variable": "MODPACKMODE", + "default_value": "NONE", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:NONE,CKAN,GAMEDATA", + "field_type": "text" + }, + { + "name": "Warp Mode", + "description": "Specify the warp type.", + "env_variable": "WARPMODE", + "default_value": "SUBSPACE", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:MCW_FORCE,MCW_VOTE,MCW_LOWEST,SUBSPACE_SIMPLE,SUBSPACE,NONE", + "field_type": "text" + }, + { + "name": "Game Mode", + "description": "Specify the game type.", + "env_variable": "GAMEMODE", + "default_value": "SANDBOX", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:SANDBOX,CAREER,SCIENCE", + "field_type": "text" + }, + { + "name": "Game Difficulty", + "description": "Specify the gameplay difficulty of the server.", + "env_variable": "DIFFICULTY", + "default_value": "NORMAL", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:EASY,NORMAL,MODERATE,HARD,CUSTOM", + "field_type": "text" + }, + { + "name": "Whitelisted", + "description": "Enable white-listing.", + "env_variable": "WHITELIST", + "default_value": "False", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:True,False", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server.", + "env_variable": "SERVERNAME", + "default_value": "DMP Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:48", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/leaguesandbox/egg-pterodactyl-league-sandbox.json b/leaguesandbox/egg-pterodactyl-league-sandbox.json new file mode 100644 index 00000000..a30667ea --- /dev/null +++ b/leaguesandbox/egg-pterodactyl-league-sandbox.json @@ -0,0 +1,31 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:21+00:00", + "name": "LeagueSandbox", + "author": "domi@imagine.team", + "description": "A simple egg to run LeagueSandbox server in pterodactyl", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:dotnet_6": "ghcr.io/parkervcp/yolks:dotnet_6" + }, + "file_denylist": [], + "startup": "./GameServerConsole --port {{SERVER_PORT}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Game is ready.\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "bitnami/dotnet-sdk:6-debian-11", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt install -y zip unzip jq curl wget git\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\ngit clone https://github.com/LeagueSandbox/GameServer.git\r\nrm .git -rf\r\n\r\ncd GameServer/\r\n\r\ngit submodule init\r\ngit submodule update\r\n\r\ndotnet build .\r\ncp -r GameServerConsole/bin/Debug/net6.0/* /mnt/server/\r\ncp -r Content /mnt/server/Content\r\necho \"done\"" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/losangelescrimes/egg-pterodactyl-l-a-c--online-public-server.json b/losangelescrimes/egg-pterodactyl-l-a-c--online-public-server.json new file mode 100644 index 00000000..4d69c77d --- /dev/null +++ b/losangelescrimes/egg-pterodactyl-l-a-c--online-public-server.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:51+00:00", + "name": "LAC-Online Public Server", + "author": "jastinlt16@gmail.com", + "description": "To make the Los Angeles Crimes public server. Los Angeles Crimes lets you play, create, and discover a variety of immersive worlds created by a global community!", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./LAC_Linux_v{{VER}}.x86_64", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Done!\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\ncd /mnt/server\r\n\r\n# delete the previous file (if it is in the file manager)\r\nrm -f LAC_Linux_v${VER}.x86_64 \u0026\u0026 rm -rf LAC_Linux_v${VER}_Data\r\n\r\n# Using another version still under development!\r\n#echo \"checking the given version file and download it... v${VER}.\"\r\n#wget https://dl.lacrimesonline.com/builds/LAC_v${VER}/LAC_Linux_Server_v${VER}.zip -O LAC_Linux_Server_v${VER}.zip || echo \"VERSION v${VER} IS NOT FOUND! Use v1.6 instead...\" \u0026\u0026 exit 1\r\n\r\nwget https://dl.lacrimesonline.com/builds/LAC_Linux_v${VER}.zip -O LAC_Linux_Server_v${VER}.zip\r\necho \"successfully downloaded v${VER} files.!\" \u0026\u0026\r\n\r\n# Extracting \u0026 remove the zip file\r\nunzip ./LAC_Linux_Server_v${VER}.zip\r\nrm -f ./LAC_Linux_Server_v${VER}.zip\r\n\r\n# Make the main file executable....\r\nchmod +x LAC_Linux_v${VER}.x86_64\r\n\r\necho \"INSTALATION COMPLETE!\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "The build version is available at https://dl.lacrimesonline.com/builds/. Just write a numeric version like 1.6, don't use any other characters than numbers and periods. If the entered version is incorrect/non-existent it will use version 1.6 (for now). After replacing it, then reinstall this server. [ THIS FEATURE IS STILL IN DEVELOPMENT ]", + "env_variable": "VER", + "default_value": "1.6.2", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/mindustry/egg-pterodactyl-mindustry.json b/mindustry/egg-pterodactyl-mindustry.json new file mode 100644 index 00000000..5c4cb222 --- /dev/null +++ b/mindustry/egg-pterodactyl-mindustry.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:53+00:00", + "name": "Mindustry", + "author": "sir3lit@gmail.com", + "description": "Mindustry is a hybrid tower-defense sandbox factory game. Create elaborate supply chains of conveyor belts to feed ammo into your turrets, produce materials to use for building, and defend your structures from waves of enemies.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar server-release.jar config port {{SERVER_PORT}},config name {{SERVER_NAME}},host {{MAPNAME}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server loaded. \"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nGITHUB_PACKAGE=Anuken/Mindustry\r\nMATCH=server-release.jar\r\n\r\ncd /mnt/server\r\n\r\nif [ -z ${DOWNLOAD_LINK} ]; then\r\n if [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\n else\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\n fi\r\n\r\n ## get release info and download links\r\n LATEST_JSON=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\n RELEASES=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n\r\n if [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq -r '.assets | .[].browser_download_url' | grep -i ${MATCH})\r\n else\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\n fi\r\nelse\r\n echo -e \"Checking supplied 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 else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running: wget ${DOWNLOAD_LINK}\"\r\nwget ${DOWNLOAD_LINK}\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "The version to download. Example \"v96\" NOT \"4.0v96\" (default is latest)\r\n\r\nThis would also be the github tag for the release", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The server name that shows up in the server list\r\n\r\n(Default: Pterodactyl Testing Server)", + "env_variable": "SERVER_NAME", + "default_value": "A Pterodactyl Hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Map Name", + "description": "Default Maps Available: Ancient Caldera, Fork, Fortress, Glacier, Islands, Labyrinth, Maze, Shattered, Tendrils, Triad, Veins, Wasteland.\r\n\r\n(Default: Tendrils)", + "env_variable": "MAPNAME", + "default_value": "Tendrils", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/minetest/egg-pterodactyl-minetest.json b/minetest/egg-pterodactyl-minetest.json new file mode 100644 index 00000000..c933edea --- /dev/null +++ b/minetest/egg-pterodactyl-minetest.json @@ -0,0 +1,192 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:53+00:00", + "name": "Minetest", + "author": "support@pterodactyl.io", + "description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.", + "features": null, + "docker_images": { + "Minetest": "ghcr.io/parkervcp/games:minetest" + }, + "file_denylist": [], + "startup": "minetest --server --port {{SERVER_PORT}} --gameid {{DEFAULT_GAME}} --world /home/container/.minetest/worlds/{{WORLD_NAME}} --terminal --config /home/container/.minetest/minetest.conf --logfile /home/container/server.log", + "config": { + "files": "{\r\n \".minetest/minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}", + "stop": "/shutdown" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Minetest Installation Script\r\nmkdir -p /mnt/server/.minetest\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\n# Create server.log\r\nLOG_FILE=/mnt/server/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\n# Create minetest.conf\r\nCONFIG_FILE=/mnt/server/.minetest/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o /mnt/server/.minetest/minetest.conf.example https://raw.githubusercontent.com/minetest/minetest/master/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" \u003e\u003e \"$CONFIG_FILE\"\r\nfi\r\n\r\n# Create games folder\r\nGAMES_FOLDER=/mnt/server/.minetest/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\n# Create mods folder\r\nMOD_FOLDER=/mnt/server/.minetest/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"/mods_here.txt https://raw.githubusercontent.com/minetest/minetest/master/mods/mods_here.txt\r\nfi\r\n\r\n# Install Gamemode\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if ! [ -z \"$COMMUNITY_GAME_NAME\" ]; then\r\n\t\t if ! [ -z \"$COMMUNITY_GAME_AUTOR\" ]; then\r\n\t\t \techo \"Download $COMMUNITY_GAME_NAME\"\r\n\t\t\t\tD_URL=$(curl -s https://content.minetest.net/packages/$COMMUNITY_GAME_AUTOR/$COMMUNITY_GAME_NAME/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n\t\t\t\tcurl -sSL -o /mnt/server/.minetest/games.zip https://content.minetest.net/$D_URL \u003e/dev/null 2\u003e\u00261\r\n\t\t\t\tunzip -o /mnt/server/.minetest/games.zip -d /mnt/server/.minetest/games \u003e/dev/null 2\u003e\u00261\r\n\t\t\t\trm /mnt/server/.minetest/games.zip\r\n\t\t else\r\n\t\t echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n\t\t fi\r\n else\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n fi\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"" + } + }, + "variables": [ + { + "name": "Name of the admin player.", + "description": "When running a server, clients connecting with this name are admins.", + "env_variable": "SERVER_ADMIN_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Server name", + "description": "Name of the server, to be displayed when players join and in the serverlist.", + "env_variable": "SERVER_NAME", + "default_value": "Minetest server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Description of the server", + "description": "Description of server, to be displayed when players join and in the serverlist.", + "env_variable": "SERVER_DESC", + "default_value": "mine here", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Domain name of the server", + "description": "Domain name of server, to be displayed in the serverlist.", + "env_variable": "SERVER_DOMAIN", + "default_value": "game.minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Server url", + "description": "Homepage of server, to be displayed in the serverlist.", + "env_variable": "SERVER_URL", + "default_value": "https://minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Show in server list", + "description": "Automatically report to the serverlist.", + "env_variable": "SERVER_ANNOUNCE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "string|in:true,false", + "field_type": "text" + }, + { + "name": "Announce serverlist", + "description": "Announce to this serverlist.", + "env_variable": "SERVER_LIST_URL", + "default_value": "servers.minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "message of the day", + "description": "Message of the day displayed to players connecting.", + "env_variable": "SERVER_MOTD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players that can be connected simultaneously.", + "env_variable": "SERVER_MAX_USERS", + "default_value": "15", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|min:0|max:65535", + "field_type": "text" + }, + { + "name": "Server password", + "description": "New users need to input this password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "World name", + "description": "The name of the world", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Game name", + "description": "Default game when creating a new world. Only change if you have already uploaded the game!", + "env_variable": "DEFAULT_GAME", + "default_value": "minetest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Community download", + "description": "Download a community game.\r\nNeeds COMMUNITY_GAME_NAME and COMMUNITY_GAME_AUTOR", + "env_variable": "COMMUNITY_DOWNLOAD", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Community game name", + "description": "Case sensitive!\r\nExample: https://content.minetest.net/packages/Wuzzy/mineclone2/\r\nthen this should be mineclone2", + "env_variable": "COMMUNITY_GAME_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Community game author", + "description": "Case-sensitive!\r\nExample: https://content.minetest.net/packages/Wuzzy/mineclone2/\r\nthen this should be Wuzzy", + "env_variable": "COMMUNITY_GAME_AUTOR", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Game PATH", + "description": "", + "env_variable": "MINETEST_SUBGAME_PATH", + "default_value": "/home/container/.minetest/games", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/mohaa/egg-pterodactyl-mohaa.json b/mohaa/egg-pterodactyl-mohaa.json new file mode 100644 index 00000000..9347ca5d --- /dev/null +++ b/mohaa/egg-pterodactyl-mohaa.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:54+00:00", + "name": "mohaa", + "author": "th3dilli@gmx.at", + "description": "Medal of Honor: Allied Assault", + "features": null, + "docker_images": { + "Mohaa": "ghcr.io/parkervcp/games:mohaa" + }, + "file_denylist": [], + "startup": "./mohaa_lnxded +set sv_punkbuster 0 +set fs_basepath {{BASE_PATH}} +set fs_outputpath {{LOG_DIR}} +set dedicated 2 +set sv_maxclients {{SERVER_MAXCLIENTS}} +set net_ip 0.0.0.0 +set net_port {{SERVER_PORT}} +exec server.cfg", + "config": { + "files": "{\r\n \"main/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"seta sv_hostname\": \"seta sv_hostname \\\"{{env.SERVER_NAME}}\\\"\",\r\n \"seta sv_maxClients\": \"seta sv_maxClients \\\"{{env.SERVER_MAXCLIENTS}}\\\"\",\r\n \"seta rconPassword\": \"seta rconPassword \\\"{{env.RCON_PASSWORD}}\\\"\",\r\n \"seta g_password\": \"seta g_password \\\"{{env.SERVER_PASSWORD}}\\\"\",\r\n \"Map\": \"Map {{env.SERVER_MAP}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n\r\napk --no-cache add curl\r\n\r\nif [[ ! -d /mnt/server/ ]]; then\r\n mkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server/\r\n\r\nDOWNLOAD_URL=http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main/server.cfg\r\n\r\necho -e \"running 'chmod +x ./mohaa_lnxded'\"\r\nchmod +x ./mohaa_lnxded\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Max clients", + "description": "", + "env_variable": "SERVER_MAXCLIENTS", + "default_value": "14", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "Config URL", + "description": "URL from where to get the initial server.cfg", + "env_variable": "CONFIG_URL", + "default_value": "https://raw.githubusercontent.com/parkervcp/eggs/mohaa/game_eggs/mohaa/server.cfg", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_NAME", + "default_value": "MOHAA Server running on Pterodactyl", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Rcon password", + "description": "Admin password for rcon", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server map", + "description": "Select the map", + "env_variable": "SERVER_MAP", + "default_value": "dm/mohdm7", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:obj/obj_team2,dm/mohdm7,dm/mohdm1,dm/mohdm3,dm/mohdm2,dm/mohdm6", + "field_type": "text" + }, + { + "name": "Logs dir", + "description": "", + "env_variable": "LOG_DIR", + "default_value": "/home/container/Logs", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Base PATH", + "description": "", + "env_variable": "BASE_PATH", + "default_value": "/home/container", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server password", + "description": "", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/neverwinter_nights_ee/egg-pterodactyl-neverwinter-nights--enhanced-edition.json b/neverwinter_nights_ee/egg-pterodactyl-neverwinter-nights--enhanced-edition.json new file mode 100644 index 00000000..530dbcd5 --- /dev/null +++ b/neverwinter_nights_ee/egg-pterodactyl-neverwinter-nights--enhanced-edition.json @@ -0,0 +1,232 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:56+00:00", + "name": "Neverwinter Nights: Enhanced Edition", + "author": "git@robsti.dev", + "description": "Return to the Forgotten Realms in this bestselling Dungeons \u0026 Dragons roleplaying game. Combines all the content of Neverwinter Nights Diamond Edition with all-new enhanced features. Includes 100+ hours of award-winning adventures and the tools to create your own!", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "cd bin/linux-x86 \u0026\u0026 ./nwserver-linux -port $SERVER_PORT -userdirectory '/home/container/user' -servername \"${SERVER_NAME}\" -module \"${MODULE_NAME}\" -publicserver \"${IS_PUBLIC}\" -maxclients \"${MAX_CLIENTS}\" -minlevel \"${MIN_LEVEL}\" -maxlevel \"${MAX_LEVEL}\" -pauseandplay \"${PAUSE_AND_PLAY}\" -pvp \"${PVP}\" -servervault \"${SERVER_VAULT}\" -elc \"${ELC}\" -ilr \"${ILR}\" -gametype \"${GAME_TYPE}\" -oneparty \"${ONE_PARTY}\" -difficulty \"${DIFFICULTY}\" -autosaveinterval \"${AUTO_SAVE_INTERVAL}\" -playerpassword \"${PLAYER_PASSWORD}\" -dmpassword \"${DM_PASSWORD}\" -reloadwhenempty \"${RELOAD_WHEN_EMPTY}\"", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server: Module loaded\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Neverwinter Nights Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\n# Download the latest version from the Beamdog website\r\nif [ -z \"$NWN_VERSION\" ] || [ \"$NWN_VERSION\" == \"latest\" ]; then\r\n NWN_VERSION=$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/beamdog/nwserver/tags' | jq -r '[.\"results\"[][\"name\"] | select(test(\"\\\\d*\\\\.\\\\d*$\"))][0]')\r\nfi\r\n\r\ncd /mnt/server\r\ncurl -o nwnee.zip -L https://nwn.beamdog.net/downloads/nwnee-dedicated-${NWN_VERSION}.zip\r\nunzip -u nwnee.zip -d .\r\n\r\n# Run the server once to generate default files and directories\r\ncd bin/linux-x86 \u0026\u0026 ./nwserver-linux\r\n\r\n# Copy generated files into the volume and update relevant paths\r\nmv /root/.local/share/Neverwinter\\ Nights /mnt/server/user\r\nsed -i 's/\\/root\\/.local\\/share\\/Neverwinter Nights/\\/home\\/container\\/user/g' /mnt/server/user/nwn.ini\r\nsed -i 's/\\/root\\/.local\\/share\\/Neverwinter Nights/\\/home\\/container\\/user/g' /mnt/server/user/nwnplayer.ini\r\nsed -i 's/\\/root\\/.local\\/share\\/Neverwinter Nights/\\/home\\/container\\/user/g' /mnt/server/user/settings.tml\r\n\r\necho \"Installation complete.\"" + } + }, + "variables": [ + { + "name": "Game Version", + "description": "Version of the game to install", + "env_variable": "NWN_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Module Name", + "description": "Name of the module we want to load. Official modules are stored in `~/data` and custom modules need to be stored in `~/user`. Must match the file name exactly without the extension.", + "env_variable": "MODULE_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Load Slot #", + "description": "Save game slot number to load on boot.", + "env_variable": "SAVE_SLOT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|numeric", + "field_type": "text" + }, + { + "name": "Max Number Of Clients", + "description": "Maximum number of connections to the game server.", + "env_variable": "MAX_CLIENTS", + "default_value": "96", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|min:1", + "field_type": "text" + }, + { + "name": "Minimum Level", + "description": "Minimum character level required to access the game server.", + "env_variable": "MIN_LEVEL", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Maximum Level", + "description": "Maximum character level required to access the game server.", + "env_variable": "MAX_LEVEL", + "default_value": "100", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Pause And Play", + "description": "Toggle game pausing permissions.\r\n0 = game can only be paused by DM\r\n1 = game can by paused by players", + "env_variable": "PAUSE_AND_PLAY", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "PvP Mode", + "description": "The mode of PvP enabled.\r\n0 = none\r\n1 = party\r\n2 = full", + "env_variable": "PVP", + "default_value": "2", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:0,1,2", + "field_type": "text" + }, + { + "name": "Server Vault Mode", + "description": "0 = local characters only\r\n1 = server characters only", + "env_variable": "SERVER_VAULT", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:0,1", + "field_type": "text" + }, + { + "name": "Enforce Legal Characters", + "description": "Toggle enforcement of legal characters.", + "env_variable": "ELC", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Enforce Item Level Restrictions", + "description": "Toggle enforcement of item level restrictions.", + "env_variable": "ILR", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Game Type", + "description": "Set which game room to post the game to. This only applies if the game is public.", + "env_variable": "GAME_TYPE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Toggle Single Parties", + "description": "Toggle if multiple parties are allowed.", + "env_variable": "ONE_PARTY", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Game difficulty selection.\r\n1 = easy\r\n2 = normal\r\n3 = D\u0026D hardcore\r\n4 = very difficult", + "env_variable": "DIFFICULTY", + "default_value": "3", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:1,2,3,4", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Interval between autosaves in minutes.", + "env_variable": "AUTO_SAVE_INTERVAL", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|min:0", + "field_type": "text" + }, + { + "name": "Player Password", + "description": "Password needed to join the server as a player.", + "env_variable": "PLAYER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "DM Password", + "description": "Password needed to join the server as a DM.", + "env_variable": "DM_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server as shown on the server browser.", + "env_variable": "SERVER_NAME", + "default_value": "A Pterodactyl hosted server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Is Public Game", + "description": "Toggle indicating if this is a public or private game.", + "env_variable": "IS_PUBLIC", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Reload When Empty", + "description": "Determines if the module state is persistent when the server is empty.", + "env_variable": "RELOAD_WHEN_EMPTY", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openarena/egg-pterodactyl-open-arena.json b/openarena/egg-pterodactyl-open-arena.json new file mode 100644 index 00000000..bf7295c6 --- /dev/null +++ b/openarena/egg-pterodactyl-open-arena.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:55+00:00", + "name": "OpenArena", + "author": "parker@parkervcp.com", + "description": "OpenArena is a community-produced deathmatch FPS based on GPL idTech3 technology.\r\n\r\nhttp://www.openarena.ws/", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./oa_ded.x86_64 +set net_port {{SERVER_PORT}} +map {{GAME_MAP}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"AAS initialized\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# dirty install script for openarena\r\n# will get updated more later\r\n\r\nif [ ! -d /mnt/server/ ]; then\r\n\tmkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server/\r\n\r\nwget http://www.openarena.ws/request.php?4 -O openarena.zip\r\n\r\nunzip -o openarena.zip openarena-*/oa_ded.x86_64 openarena-*/missionpack/* openarena-*/baseoa/*\r\n\r\nmv -f openarena-*/* /mnt/server/\r\n\r\nrm -rf openarena-*/ openarena.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Game Map", + "description": "The map to load when the server starts.\r\nSee here for all maps available by default - https://openarena.fandom.com/wiki/Maps", + "env_variable": "GAME_MAP", + "default_value": "aggressor", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openra/openra_dune2000/egg-pterodactyl-open-r-a--dune2000.json b/openra/openra_dune2000/egg-pterodactyl-open-r-a--dune2000.json new file mode 100644 index 00000000..9e467135 --- /dev/null +++ b/openra/openra_dune2000/egg-pterodactyl-open-r-a--dune2000.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:00+00:00", + "name": "OpenRA - Dune2000", + "author": "patz.michael@gmail.com", + "description": "OpenRA is a project that recreates and modernizes the classic Command \u0026 Conquer real time strategy games. We have developed a flexible open source game engine (the OpenRA engine) that provides a common platform for rebuilding and reimagining classic 2D and 2.5D RTS games (the OpenRA mods).", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:mono_latest": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "./squashfs-root/AppRun --server Server.Name=\"{{SERVER_NAME}}\" Server.ListenPort={{SERVER_PORT}} Server.AdvertiseOnline={{PUBLIC}} Server.EnableSingleplayer={{SINGLEPLAYER}} Server.Password=\"{{PASSWORD}}\" Server.EnableGeoIP={{GEOIP}} Server.ShareAnonymizedIPs={{ANONYMOUS}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Master server communication established.\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Vanilla 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 wget file jq\r\n\r\ncd /mnt/server/\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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/OpenRA/OpenRA/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/OpenRA/OpenRA/releases\")\r\nMATCH=OpenRA-Dune-2000-x86_64.AppImage\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\nwget $DOWNLOAD_LINK\r\n\r\n#wget https://github.com/OpenRA/OpenRA/releases/download/release-20200503/OpenRA-Red-Alert-x86_64.AppImage\r\nchmod +x $MATCH\r\n./$MATCH --appimage-extract\r\nrm $MATCH\r\nrm *.zsync\r\ncd squashfs-root\r\nchmod +x AppRun\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The Name of the Server", + "env_variable": "SERVER_NAME", + "default_value": "OpenRAServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Public Server", + "description": "Shall this server be public", + "env_variable": "PUBLIC", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Enable Singleplayer", + "description": "Enable Singleplayer ?", + "env_variable": "SINGLEPLAYER", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Require Authentification", + "description": "Enable Authentification", + "env_variable": "AUTH", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "PASSWORD", + "description": "Server Password", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable:string", + "field_type": "text" + }, + { + "name": "GEOIP", + "description": "Enable GEOIP", + "env_variable": "GEOIP", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "Anonymized IPs", + "description": "Hide IPs", + "env_variable": "ANONYMOUS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "VERSION", + "description": "VERSION", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openra/openra_red_alert/egg-pterodactyl-open-r-a.json b/openra/openra_red_alert/egg-pterodactyl-open-r-a.json new file mode 100644 index 00000000..423186ee --- /dev/null +++ b/openra/openra_red_alert/egg-pterodactyl-open-r-a.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:16:59+00:00", + "name": "OpenRA", + "author": "patz.michael@gmail.com", + "description": "OpenRA is a project that recreates and modernizes the classic Command \u0026 Conquer real time strategy games. We have developed a flexible open source game engine (the OpenRA engine) that provides a common platform for rebuilding and reimagining classic 2D and 2.5D RTS games (the OpenRA mods).", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:mono_latest": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "./squashfs-root/AppRun --server Server.Name=\"{{SERVER_NAME}}\" Server.ListenPort={{SERVER_PORT}} Server.AdvertiseOnline={{PUBLIC}} Server.EnableSingleplayer={{SINGLEPLAYER}} Server.Password=\"{{PASSWORD}}\" Server.EnableGeoIP={{GEOIP}} Server.ShareAnonymizedIPs={{ANONYMOUS}}", + "config": { + "files": "{}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \"Master server communication established.\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Vanilla 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 wget file jq\r\n\r\ncd /mnt/server/\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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/OpenRA/OpenRA/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/OpenRA/OpenRA/releases\")\r\nMATCH=OpenRA-Red-Alert-x86_64.AppImage\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\nwget $DOWNLOAD_LINK\r\n\r\n#wget https://github.com/OpenRA/OpenRA/releases/download/release-20200503/OpenRA-Red-Alert-x86_64.AppImage\r\nchmod +x $MATCH\r\n./$MATCH --appimage-extract\r\nrm $MATCH\r\nrm *.zsync\r\ncd squashfs-root\r\nchmod +x AppRun\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The Name of the Server", + "env_variable": "SERVER_NAME", + "default_value": "OpenRAServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Public Server", + "description": "Shall this server be public", + "env_variable": "PUBLIC", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Enable Singleplayer", + "description": "Enable Singleplayer ?", + "env_variable": "SINGLEPLAYER", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Require Authentification", + "description": "Enable Authentification", + "env_variable": "AUTH", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "PASSWORD", + "description": "Server Password", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable:string", + "field_type": "text" + }, + { + "name": "GEOIP", + "description": "Enable GEOIP", + "env_variable": "GEOIP", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "Anonymized IPs", + "description": "Hide IPs", + "env_variable": "ANONYMOUS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "VERSION", + "description": "VERSION", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openra/openra_tiberian_dawn/egg-pterodactyl-open-r-a--tiberian-dawn.json b/openra/openra_tiberian_dawn/egg-pterodactyl-open-r-a--tiberian-dawn.json new file mode 100644 index 00000000..4df19ff0 --- /dev/null +++ b/openra/openra_tiberian_dawn/egg-pterodactyl-open-r-a--tiberian-dawn.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:00+00:00", + "name": "OpenRA - Tiberian Dawn", + "author": "patz.michael@gmail.com", + "description": "OpenRA is a project that recreates and modernizes the classic Command \u0026 Conquer real time strategy games. We have developed a flexible open source game engine (the OpenRA engine) that provides a common platform for rebuilding and reimagining classic 2D and 2.5D RTS games (the OpenRA mods).", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:mono_latest": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "./squashfs-root/AppRun --server Server.Name=\"{{SERVER_NAME}}\" Server.ListenPort={{SERVER_PORT}} Server.AdvertiseOnline={{PUBLIC}} Server.EnableSingleplayer={{SINGLEPLAYER}} Server.Password=\"{{PASSWORD}}\" Server.EnableGeoIP={{GEOIP}} Server.ShareAnonymizedIPs={{ANONYMOUS}}", + "config": { + "files": "{}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \"Master server communication established.\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Vanilla 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 wget file jq\r\n\r\ncd /mnt/server/\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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/OpenRA/OpenRA/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/OpenRA/OpenRA/releases\")\r\nMATCH=OpenRA-Tiberian-Dawn-x86_64.AppImage\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\nwget $DOWNLOAD_LINK\r\n\r\n#wget https://github.com/OpenRA/OpenRA/releases/download/release-20200503/OpenRA-Red-Alert-x86_64.AppImage\r\nchmod +x $MATCH\r\n./$MATCH --appimage-extract\r\nrm $MATCH\r\nrm *.zsync\r\ncd squashfs-root\r\nchmod +x AppRun\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The Name of the Server", + "env_variable": "SERVER_NAME", + "default_value": "OpenRAServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Public Server", + "description": "Shall this server be public", + "env_variable": "PUBLIC", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Enable Singleplayer", + "description": "Enable Singleplayer ?", + "env_variable": "SINGLEPLAYER", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Require Authentification", + "description": "Enable Authentification", + "env_variable": "AUTH", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "PASSWORD", + "description": "Server Password", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable:string", + "field_type": "text" + }, + { + "name": "GEOIP", + "description": "Enable GEOIP", + "env_variable": "GEOIP", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "Anonymized IPs", + "description": "Hide IPs", + "env_variable": "ANONYMOUS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + }, + { + "name": "VERSION", + "description": "VERSION", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openrct2/egg-pterodactyl-open-r-c-t2.json b/openrct2/egg-pterodactyl-open-r-c-t2.json new file mode 100644 index 00000000..33a2d043 --- /dev/null +++ b/openrct2/egg-pterodactyl-open-r-c-t2.json @@ -0,0 +1,222 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:01+00:00", + "name": "OpenRCT2", + "author": "rehlmgaming@gmail.com", + "description": "OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 (RCT2), expanding the game with new features, fixing bugs and raising game limits.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./OpenRCT2/openrct2-cli --version \u0026\u0026 ./OpenRCT2/openrct2-cli host $(if {{LOAD_AUTOSAVE}} \u0026\u0026 [ -d ServerData/save/autosave/ ]; then find ServerData/save/autosave/ | sort -r | head -1; else echo \"{{SAVE_URI}}\"; fi) --port {{SERVER_PORT}} --user-data-path /home/container/ServerData/", + "config": { + "files": "{\r\n \"ServerData/config.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"general.autosave\": \"{{server.build.env.AUTOSAVE_INTERVAL}}\",\r\n \"general.autosave_amount\": \"{{server.build.env.AUTOSAVE_AMOUNT}}\",\r\n \"network.player_name\": \"\\\"{{server.build.env.SERVER_PLAYER_NAME}}\\\"\",\r\n \"network.default_port\": \"{{server.build.default.port}}\",\r\n \"network.default_password\": \"\\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"network.advertise\": \"{{server.build.env.SERVER_ADVERTISE}}\",\r\n \"network.maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"network.server_name\": \"\\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"network.server_description\": \"\\\"{{server.build.env.SERVER_DESCRIPTION}}\\\"\",\r\n \"network.server_greeting\": \"\\\"{{server.build.env.SERVER_GREETING}}\\\"\",\r\n \"network.provider_name\": \"\\\"{{server.build.env.PROVIDER_NAME}}\\\"\",\r\n \"network.provider_email\": \"\\\"{{server.build.env.PROVIDER_EMAIL}}\\\"\",\r\n \"network.provider_website\": \"\\\"{{server.build.env.PROVIDER_WEBSITE}}\\\"\",\r\n \"network.log_chat\": \"{{server.build.env.LOG_CHAT}}\",\r\n \"network.log_server_actions\": \"{{server.build.env.LOG_SERVER_ACTIONS}}\",\r\n \"network.pause_server_if_no_clients\": \"{{server.build.env.PAUSE_NO_CLIENTS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listening for clients on\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "debian:bullseye-slim", + "entrypoint": "/bin/bash", + "script": "#!/bin/bash\r\n\r\n## File: Pterodactyl OpenRCT2 Egg - egg-openrct2.json\r\n## Authors: David Wolfe (Red-Thirten), parkervcp\r\n## Date: 2022/06/28\r\n## License: MIT License\r\n\r\nGITHUB_PACKAGE=\"OpenRCT2/OpenRCT2\"\r\nMATCH=\"linux-x86_64.AppImage\"\r\nDEFAULT_SAVE=\"https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/tycoon_games/openrct2/save.park\"\r\n\r\n## OpenRCT2 Install\r\napt -y update\r\n[ ! -d /mnt/server ] \u0026\u0026 mkdir /mnt/server\r\ncd /mnt/server\r\n# Remove existing installation if present\r\n[ -d OpenRCT2 ] \u0026\u0026 rm -rf OpenRCT2\r\n# Setup OpenRCT2 directory\r\nmkdir -p OpenRCT2/data\r\n# Setup temp directory for building and move to it\r\n[ -d temp ] \u0026\u0026 rm -rf temp\r\nmkdir temp \u0026\u0026 cd temp\r\n\r\n# Determine if installing from source or from release\r\nif [ \"${VERSION}\" == \"develop\" ]; then\r\n # Get required packages\r\n apt -y install curl git make cmake gcc build-essential libicu-dev pkg-config libcurl4-openssl-dev libcrypto++-dev libpng-dev libssl-dev libzip-dev duktape-dev nlohmann-json3-dev\r\n echo -e \"\\nInstalling/Updating OpenRCT2 from source...\\n\"\r\n \r\n # Clone the branch and check if successful\r\n git clone --branch \"${VERSION}\" https://github.com/${GITHUB_PACKAGE}\r\n if [ ! -d OpenRCT2 ]; then\r\n echo -e \"\\nFailed to clone \\\"${VERSION}\\\" branch from https://github.com/${GITHUB_PACKAGE}\\n\"\r\n exit 1\r\n fi\r\n \r\n cd OpenRCT2\r\n mkdir build \u0026\u0026 cd build\r\n # Prepare CMake files for a lightweight and CLI-only build of OpenRCT2, using the appropriate flags\r\n cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DPORTABLE=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_FLAGS=\"-g -gz\" -DDISABLE_TTF=ON -DDISABLE_GOOGLE_BENCHMARK=ON -DDISABLE_DISCORD_RPC=ON -DDISABLE_GUI=ON\r\n echo -e \"\\nBuilding OpenRCT2 package from source...\\n\\tThis process can take quite some time. Grab a coffee :)\\n\"\r\n # Build OpenRCT2\r\n DESTDIR=. make install\r\n # Check if build was successful\r\n if [ ! -d usr/local ]; then\r\n echo -e \"\\nFailed to successfully build OpenRCT2!\\n\"\r\n exit 1\r\n fi\r\n \r\n # Make executable-ready package by moving compiled files to the correct locations\r\n cd usr/local\r\n mv bin/* /mnt/server/OpenRCT2/\r\n mv share/openrct2/* share/openrct2-cli/* /mnt/server/OpenRCT2/data/\r\n mv share/doc /mnt/server/OpenRCT2/\r\n echo -e \"\\nBuild of OpenRCT2 package complete!\"\r\nelse\r\n # Get required packages\r\n apt install -y curl jq\r\n echo -e \"\\nInstalling/Updating OpenRCT2 from release tag \\\"${VERSION}\\\"...\\n\"\r\n \r\n # This is a simple script to use the GitHub API for release versions.\r\n # This requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (MATCH is to match the filename in some way).\r\n # Get release info and download links\r\n LATEST_JSON=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\n RELEASES=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n if [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n else\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 DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\n fi\r\n # Download the release and check if successful\r\n curl -L ${DOWNLOAD_URL} -o OpenRCT2.AppImage\r\n if [ ! -f OpenRCT2.AppImage ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\n fi\r\n \r\n chmod +x OpenRCT2.AppImage\r\n # Extract AppImage and check if successful\r\n echo -e \"Extracting AppImage files...\"\r\n ./OpenRCT2.AppImage --appimage-extract\r\n if [ ! -d squashfs-root/usr ]; then\r\n echo -e \"\\nFailed to extract AppImage!\\n\\t(Is the `MATCH` variable set to download an AppImage?)\\n\"\r\n exit 1\r\n fi\r\n \r\n # Move needed files to correct directories\r\n cd squashfs-root/usr\r\n mv lib bin/openrct2-cli /mnt/server/OpenRCT2/\r\n mv share/openrct2/* /mnt/server/OpenRCT2/data/\r\n mkdir /mnt/server/OpenRCT2/doc \u0026\u0026 mv share/doc/openrct2 $_\r\n echo -e \"\\nDownload/Update of OpenRCT2 release successful!\"\r\nfi\r\n\r\ncd /mnt/server\r\nrm -rf temp # Clean up temp building directory\r\n\r\n## OpenRCT2 Setup\r\n# Setup ServerData/save directory\r\n[ ! -d ServerData/save ] \u0026\u0026 mkdir -p ServerData/save\r\ncd ServerData/save\r\n# Download default save.park if missing\r\nif [ ! -f save.park ]; then\r\n echo -e \"Downloading default save.park file from ${DEFAULT_SAVE}\"\r\n curl -sSLO ${DEFAULT_SAVE}\r\nfi\r\n\r\necho -e \"\\nOpenRCT2 Successfully Installed!\"" + } + }, + "variables": [ + { + "name": "Save File", + "description": "Save file (.sv4 / .sv6 / .park) to load. Can be a file path or can be a webhosted file URL. An existing save file must be specified; the server cannot generate a new scenario/save from scratch.", + "env_variable": "SAVE_URI", + "default_value": "ServerData/save/save.park", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:4", + "field_type": "text" + }, + { + "name": "Load Latest Autosave", + "description": "Will load the latest autosave (assuming one is present) *instead* of the Save File when the server is started. Useful for loading the latest progress of a park after a reboot. Set to \"false\" to \"lock\" progress of the park, and always load the original Save File on start up.", + "env_variable": "LOAD_AUTOSAVE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Autosave Interval", + "description": "0 = Every 1 min, 1 = Every 5 min, 2 = Every 15 min, 3 = Every 30 min, 4 = Every hour, 5 = Never", + "env_variable": "AUTOSAVE_INTERVAL", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,5", + "field_type": "text" + }, + { + "name": "Autosaves To Keep", + "description": "Number of autosaves to keep before rolling over and deleting the oldest one. Set to 0 to disable autosaving.", + "env_variable": "AUTOSAVE_AMOUNT", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum players allowed to connect to the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "Password requested by the server for clients to connect. Admins do not have to enter password to join. Leave empty for no password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Advertise Server", + "description": "If set to \"false\", the server will not be advertised in the master server list, and clients must manually connect.", + "env_variable": "SERVER_ADVERTISE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Pause Server If No Clients", + "description": "Set to \"true\" to have the server pause simulation if no clients are on the server.", + "env_variable": "PAUSE_NO_CLIENTS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server that appears in the server list.", + "env_variable": "SERVER_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Description of the server that appears when hovering over the server in the server list.", + "env_variable": "SERVER_DESCRIPTION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Server Player Name", + "description": "The server appears as a player in the player list. This is the name it will have.", + "env_variable": "SERVER_PLAYER_NAME", + "default_value": "Server", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Server Greeting", + "description": "The \"Message of the Day\" that gets sent to all clients who join.", + "env_variable": "SERVER_GREETING", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Provider Name", + "description": "Server provider name that appears in server information window.", + "env_variable": "PROVIDER_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Server Provider E-Mail", + "description": "Server provider e-mail that appears in server information window.", + "env_variable": "PROVIDER_EMAIL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Server Provider Website", + "description": "Server provider website that appears in server information window.", + "env_variable": "PROVIDER_WEBSITE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Log Chat", + "description": "Set to \"true\" if you would like in-game chat logged to file in Data/chatlogs.", + "env_variable": "LOG_CHAT", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Log Server Actions", + "description": "Set to \"true\" if you would like in-game actions logged to file in Data/serverlogs.", + "env_variable": "LOG_SERVER_ACTIONS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "OpenRCT2 Version", + "description": "The release tag (version) of OpenRCT2 to download and install from their official Github (ie. \"v0.3.5.1\"). Use \"latest\" to download the latest release, or \"develop\" to build from the latest source (takes longer to install but is the most up to date).", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:1", + "field_type": "text" + }, + { + "name": "[Advanced] Library Path", + "description": "What path to load libraries from for release binaries. Rarely needs to be changed.", + "env_variable": "LD_LIBRARY_PATH", + "default_value": "./OpenRCT2/lib", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/openttd/egg-pterodactyl-open-t-t-d-server.json b/openttd/egg-pterodactyl-open-t-t-d-server.json new file mode 100644 index 00000000..cdbcd358 --- /dev/null +++ b/openttd/egg-pterodactyl-open-t-t-d-server.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:01+00:00", + "name": "OpenTTD Server", + "author": "admin@justmyrandomstuff.com", + "description": "OpenTTD is an open source simulation game based upon the popular Microprose game \"Transport Tycoon Deluxe\", written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.\r\n\r\nOpenTTD is modelled after the original Transport Tycoon game by Chris Sawyer and enhances the game experience dramatically. Many features were inspired by TTDPatch while others are original.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./openttd -D", + "config": { + "files": "{\r\n \"openttd.cfg\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"network.server_port\": \"{{server.build.default.port}}\",\r\n \"network.server_name\": \"{{server.build.env.srv_name}}\",\r\n \"network.lan_internet\": 0,\r\n \"network.server_advertise\": \"{{server.build.env.srv_advertise}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"[net] Map generated, starting game\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "alpine:latest", + "entrypoint": "ash", + "script": "#!/bin/ash\r\napk add --no-cache xz curl tar unzip\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho -e \"\\ncurl -SsL -o openttd-linux.tar.xz https://cdn.openttd.org/openttd-releases/${OPENTTD_VERSION}/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz\"\r\ncurl -SsL -o openttd-linux.tar.xz https://cdn.openttd.org/openttd-releases/${OPENTTD_VERSION}/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz \r\n\r\necho -e \"\\nUnpacking tar\"\r\ntar -xf openttd-linux.tar.xz --strip-components=1\r\nrm openttd-linux.tar.xz\r\nchmod +x openttd\r\n\r\necho -e \"\\nRunning curl -sSL -o opengfx.zip https://cdn.openttd.org/opengfx-releases/${OPENGFX_VERSION}/opengfx-${OPENGFX_VERSION}-all.zip\"\r\ncurl -sSL -o opengfx.zip https://cdn.openttd.org/opengfx-releases/${OPENGFX_VERSION}/opengfx-${OPENGFX_VERSION}-all.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz\r\n\r\n[ -f /home/container/openttd.cfg ] || curl https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/tycoon_games/openttd/openttd.cfg \u003e openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The name shown in the serverlist", + "env_variable": "srv_name", + "default_value": "OpenTTD Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Show in masterlist?", + "description": "Show the server in the serverlist on the client, true or false", + "env_variable": "srv_advertise", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "OpenTTD Version", + "description": "The version of OpenTTD i.e. 12.2", + "env_variable": "OPENTTD_VERSION", + "default_value": "13.0-RC2", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "OpenGFX Version", + "description": "The OpenGFX Version i.e. 7.1", + "env_variable": "OPENGFX_VERSION", + "default_value": "7.1", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/path_of_titans/egg-pterodactyl-path-of-titans.json b/path_of_titans/egg-pterodactyl-path-of-titans.json new file mode 100644 index 00000000..6aff1725 --- /dev/null +++ b/path_of_titans/egg-pterodactyl-path-of-titans.json @@ -0,0 +1,122 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:02+00:00", + "name": "Path Of Titans", + "author": "danielivanvladimir.revin@gmail.com", + "description": "Path of Titans is a multiplayer dinosaur survival video game. Survive as a dinosaur in a rich ecosystem filled with intelligent AI creatures and up to 200 other players.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./AlderonGamesCmd-Linux --game path-of-titans --server true --beta-branch {{BETA_BRANCH}} --auth-token {{AG_AUTH_TOKEN}} --install-dir ./server/ \u0026\u0026 ./server/PathOfTitansServer.sh {{SERVER_MAP}}?listen?MaxPlayers={{SERVER_MAX_PLAYERS}} -RconPort={{RCON_PORT}} -nullRHI -ServerName={{SERVER_NAME}} -ServerGUID={{SERVER_GUID}} -BranchKey={{BETA_BRANCH}} -Database={{SERVER_DB}} -log", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{QUERY_PORT}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server ready\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\napt-get update \u0026\u0026 apt-get install -y --no-install-recommends apt-utils apt-transport-https ca-certificates libunwind8 icu-devtools openssl libkrb5-3 zlib1g libuuid1 dos2unix gnupg gnupg2 debian-archive-keyring gcc g++ lib32gcc-s1 lib32z1 lib32stdc++6 iproute2 gdb libsdl1.2debian libfontconfig libcurl4\r\napt-get autoremove --purge -y\r\nmkdir -p /mnt/server\r\ncd /mnt/server \u0026\u0026 curl -o AlderonGamesCmd-Linux https://launcher-cdn.alderongames.com/AlderonGamesCmd-Linux-x64\r\nchmod +x /mnt/server/AlderonGamesCmd-Linux\r\nchown -R root:root /mnt\r\nexport HOME=/mnt/server" + } + }, + "variables": [ + { + "name": "Server Map", + "description": "", + "env_variable": "SERVER_MAP", + "default_value": "Island", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "", + "env_variable": "SERVER_MAX_PLAYERS", + "default_value": "100", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:200", + "field_type": "text" + }, + { + "name": "Server name", + "description": "", + "env_variable": "SERVER_NAME", + "default_value": "YoutServerName", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:25", + "field_type": "text" + }, + { + "name": "GUID", + "description": "Use https://guidgenerator.com/", + "env_variable": "SERVER_GUID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:40", + "field_type": "text" + }, + { + "name": "Branch", + "description": "Choose between production or demo-public-test", + "env_variable": "BETA_BRANCH", + "default_value": "production", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:15", + "field_type": "text" + }, + { + "name": "Database mode", + "description": "Server can use a Local or Remote Database. Specified using Local or Remote. We recommend using a Local Database unless you plan on connecting shared character data between servers.", + "env_variable": "SERVER_DB", + "default_value": "Local", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + }, + { + "name": "Auth Token", + "description": "Get your AUTH token there https://alderongames.com/oauth/hosting-token !!YOU NEED TO OWN THE GAME!!", + "env_variable": "AG_AUTH_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:1500", + "field_type": "text" + }, + { + "name": "Query port", + "description": "", + "env_variable": "QUERY_PORT", + "default_value": "7778", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|max:8", + "field_type": "text" + }, + { + "name": "Rcon port", + "description": "", + "env_variable": "RCON_PORT", + "default_value": "7779", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|max:8", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/rdr/redm/egg-pterodactyl-red-m.json b/rdr/redm/egg-pterodactyl-red-m.json new file mode 100644 index 00000000..8a5b0eeb --- /dev/null +++ b/rdr/redm/egg-pterodactyl-red-m.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:04+00:00", + "name": "RedM", + "author": "parker@parkervcp.com", + "description": "A new RedM egg for the latest builds due to recent changes in RedM", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "$(pwd)/alpine/opt/cfx-server/ld-musl-x86_64.so.1 --library-path \"$(pwd)/alpine/usr/lib/v8/:$(pwd)/alpine/lib/:$(pwd)/alpine/usr/lib/\" -- $(pwd)/alpine/opt/cfx-server/FXServer +set citizen_dir $(pwd)/alpine/opt/cfx-server/citizen/ +set sv_licenseKey {{CFX_LICENSE}} +set steam_webApiKey {{STEAM_WEBAPIKEY}} +set sv_maxplayers {{MAX_PLAYERS}} +exec server.cfg +set gamename rdr3", + "config": { + "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"endpoint_add_tcp\": \"endpoint_add_tcp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"endpoint_add_udp\": \"endpoint_add_udp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_HOSTNAME}}\\\"\",\r\n \"sv_maxclients\": \"sv_maxclients {{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"succeeded. Welcome!\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p /mnt/server/resources /mnt/server/logs/\r\n\r\ncd /mnt/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https://github.com/citizenfx/cfx-server-data.git /tmp\r\ncp -Rf /tmp/resources/* resources/\r\n\r\nRELEASE_PAGE=$(curl -sSL https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/)\r\nCHANGELOGS_PAGE=$(curl -sSL https://changelogs-live.fivem.net/api/changelog/versions/linux/server)\r\n\r\nif [[ \"${CFX_VERSION}\" == \"recommended\" ]] || [[ -z ${CFX_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${CFX_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*/*.tar.xz\"' | grep -Po '(?\u003c=href=\")[^\"]*' | sed 's/\\\"//g' | sed 's/\\.\\///1' | grep ${CFX_VERSION})\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\necho \"Extracting fivem files\"\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 ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/gta/fivem/server.cfg \u003e\u003eserver.cfg\r\nfi\r\n\r\necho \"install complete\"" + } + }, + "variables": [ + { + "name": "CFX license", + "description": "Required to start the service. Get your keys at https://keymaster.fivem.net/", + "env_variable": "CFX_LICENSE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Set the fivem max play count", + "env_variable": "MAX_PLAYERS", + "default_value": "32", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1,32", + "field_type": "text" + }, + { + "name": "Server Hostname", + "description": "The name that shows up in the server browser", + "env_variable": "SERVER_HOSTNAME", + "default_value": "My new FXServer!", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "CFX version", + "description": "The CFX Server version that is to be installed. Invalid versions will default to latest.\r\n\r\nan example is `1383-e5ea040353ce1b8bc86e37982bf5d888938e3096`\r\n\r\nYou can the latest version from here - https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/", + "env_variable": "CFX_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Download Link", + "description": "This is the link to download redm from. This is only used in the install script.\r\n\r\nThe file you link to needs to be an fx.tar.zx file.\r\n\r\nExample:\r\nhttps://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/1626-8c06e8bc3ed7e6690c6c2d9e0b90e29df65b3ea6/fx.tar.xz", + "env_variable": "DOWNLOAD_URL", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Steam Web Api Key", + "description": "Use your Steam WebApiKey or set to 'none'. Get your key at https://steamcommunity.com/dev/apikey/", + "env_variable": "STEAM_WEBAPIKEY", + "default_value": "none", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/rimworld/open_world/egg-pterodactyl-rimworld--open-world.json b/rimworld/open_world/egg-pterodactyl-rimworld--open-world.json new file mode 100644 index 00000000..adcf9eae --- /dev/null +++ b/rimworld/open_world/egg-pterodactyl-rimworld--open-world.json @@ -0,0 +1,113 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:08+00:00", + "name": "Rimworld: Open World", + "author": "kyle@williquette.us", + "description": "The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!\r\n\r\nhttps://github.com/D12-Dev/OpenWorld", + "features": null, + "docker_images": { + "Dotnet 3.1": "ghcr.io/parkervcp/yolks:dotnet_3.1", + "Dotnet 6": "ghcr.io/parkervcp/yolks:dotnet_6" + }, + "file_denylist": [], + "startup": "./OpenWorldServer", + "config": { + "files": "{\r\n \"Data/Config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"EnforceMods\": \"{{server.build.env.ENFORCE_MODS}}\",\r\n \"UseModBlacklist\": \"{{server.build.env.USE_MOD_BLACKLIST}}\",\r\n \"UseCustomDifficulty\": \"{{server.build.env.USE_CUSTOM_DIFF}}\",\r\n \"UseWhitelist\": \"{{server.build.env.WHITELIST}}\",\r\n \"AllowCustomScenarios\": \"{{server.build.env.CUSTOM_SCEN}}\",\r\n \"PlayerVersion\": \"{{server.build.env.PLAYER_VERSION}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \" Server Launched\"\r\n}", + "stop": "shutdown" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n#Create the server directory\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\napt update\r\napt -y install curl jq unzip git\r\n\r\n\r\n#Check for latest release \u0026 download URLs\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/D12-Dev/OpenWorld/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/D12-Dev/OpenWorld/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-x64\" || echo \"linux-arm64\")\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 ${ARCH} | head -1)\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 ${ARCH} | head -1)\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 | grep -i ${ARCH}| head -1)\r\n fi\r\nfi\r\n\r\n\r\n#Download the Rimworld Open World server\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\"\r\ncurl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\r\necho -e \"Unzipping ${ARCH}.zip\"\r\nunzip -o ${ARCH}.zip\r\nmv ${ARCH}/* /mnt/server\r\nchmod +x \"OpenWorldServer\"\r\nrm -rf ${ARCH}.zip ${ARCH}/\r\n\r\n\r\n\r\ncd /mnt/server\r\nFILE=/mnt/server/Data/Config.json\r\nif [ -f \"$FILE\" ]; then\r\n echo \"config already exists.\"\r\nelse \r\n echo \"Config does not exist, making one\"\r\n mkdir -p /mnt/server/Data\r\n cd /mnt/server/Data\r\ncat \u003c\u003c EOF \u003e \"Config.json\"\r\n{\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": 25555,\r\n \"MaxPlayers\": 10,\r\n \"PlayerVersion\": \"1.2\",\r\n \"EnforceMods\": false,\r\n \"UseModBlacklist\": false,\r\n \"UseCustomDifficulty\": false,\r\n \"UseWhitelist\": false,\r\n \"AllowCustomScenarios\": false\r\n}\r\nEOF\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Open World Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "sets the maximum number of players allowed to connect at once.", + "env_variable": "MAX_PLAYERS", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Enforce Mods", + "description": "This forces players to use the mods listed in the the \"Mods Enforced\" folder, with this disabled it will allow players to join with any mods they would like", + "env_variable": "ENFORCE_MODS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Mod Blacklist", + "description": "enabled you to blacklist mods from being used, usually used when enforced mods are disabled.", + "env_variable": "USE_MOD_BLACKLIST", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Custom Difficulty", + "description": "forces all players to use the difficulty setting set in the \"Difficulty\" file. MAKE SURE YOU GIVE A VALUE TO EVERYTHING OR IT WILL BE AT 0%", + "env_variable": "USE_CUSTOM_DIFF", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Whitelist", + "description": "allows only the usernames listed in the \"Whitelist\" file to join the server.", + "env_variable": "WHITELIST", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Allow Custom Scenarios", + "description": "allows people to create custom scenarios when creating their save on the server.", + "env_variable": "CUSTOM_SCEN", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Player Version", + "description": "version the server will accept clients joining in with.\r\n\r\nTO see the latest:\r\nhttps://discord.com/channels/992806266109964319/992881103071354890\r\n\r\nfor example for v1.12 you would write 1.12", + "env_variable": "PLAYER_VERSION", + "default_value": "1.2", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/rimworld/together/egg-pterodactyl-rimworld-together.json b/rimworld/together/egg-pterodactyl-rimworld-together.json new file mode 100644 index 00000000..ee86f205 --- /dev/null +++ b/rimworld/together/egg-pterodactyl-rimworld-together.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:07+00:00", + "name": "Rimworld Together", + "author": "josdekurk@gmail.com", + "description": "A community driven multiplayer mod, for Rimworld.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:dotnet_7": "ghcr.io/parkervcp/yolks:dotnet_7" + }, + "file_denylist": [], + "startup": "./GameServer", + "config": { + "files": "{\r\n \"Core/ServerConfig.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"IP\": \"0.0.0.0\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"verboseLogs\": \"{{server.build.env.VERBOSE}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server launched\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl -L --silent \"https://api.github.com/repos/RimworldTogether/Rimworld-Together/releases/latest\")\r\nRELEASES=$(curl -L --silent \"https://api.github.com/repos/RimworldTogether/Rimworld-Together/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"Linux-x64 \" || echo \"Linux-ARM-x64\")\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\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\ncurl -sSL -o server.zip ${DOWNLOAD_URL}\r\nunzip -o server.zip\r\nrm server.zip\r\nchmod +x GameServer\r\n\r\n\r\nif [ -f \"/mnt/server/Core/ServerConfig.json\" ]; then\r\n echo \"Config file exits\"\r\nelse \r\n mkdir -p /mnt/server/Core\r\n echo \"{\\\"IP\\\":\\\"0.0.0.0\\\",\\\"Port\\\":$SERVER_PORT,\\\"MaxPlayers\\\":$MAX_PLAYERS,\\\"verboseLogs\\\":$VERBOSE}\" | jq . \u003e /mnt/server/Core/ServerConfig.json\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum amount of players that can join. Default: 100", + "env_variable": "MAX_PLAYERS", + "default_value": "100", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:1,150", + "field_type": "text" + }, + { + "name": "Verbose", + "description": "If the console output should be verbose or not.", + "env_variable": "VERBOSE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:false,true", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/spacestation_14/egg-pterodactyl-spacestation14.json b/spacestation_14/egg-pterodactyl-spacestation14.json new file mode 100644 index 00000000..e43b0d91 --- /dev/null +++ b/spacestation_14/egg-pterodactyl-spacestation14.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:09+00:00", + "name": "Spacestation 14", + "author": "josdekurk@gmail.com", + "description": "Space Station 14 tells the story of an ordinary shift on a space station gone wrong. Immerse yourself into your role, tinker with detailed systems, and survive the chaos in this round-based multiplayer role playing game.", + "features": null, + "docker_images": { + "Dotnet 8": "ghcr.io/parkervcp/yolks:dotnet_8" + }, + "file_denylist": [], + "startup": "./Robust.Server", + "config": { + "files": "{\r\n \"server_config.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port = {{server.build.default.port}}\",\r\n \"hostname\": \"hostname = \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"tickrate\": \"tickrate = {{server.build.env.SERVER_TICK}}\",\r\n \"max_connections\": \"max_connections = {{server.build.env.SERVER_MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server Version\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nV=$(curl -sSL https://central.spacestation14.io/builds/wizards/builds.html | grep \"The version is\" | sed -n 's/.*\u003cspan class=\"versionNumber\"\u003e\\([^\u003c]*\\)\u003c\\/span\u003e.*/\\1/p')\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho \"Running: curl -sSL -o server_linux.zip https://cdn.centcomm.spacestation14.com/builds/wizards/builds/${V}/SS14.Server_${ARCH}.zip\"\r\ncurl -sSL -o server_linux.zip \"https://cdn.centcomm.spacestation14.com/builds/wizards/builds/${V}/SS14.Server_${ARCH}.zip\"\r\nunzip -o server_linux.zip\r\nrm server_linux.zip\r\n\r\nchmod +x Robust.Server\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server name", + "description": "The server hostname", + "env_variable": "SERVER_NAME", + "default_value": "MyServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:48", + "field_type": "text" + }, + { + "name": "Server tickrate", + "description": "The tickrate of the server. Default is 60", + "env_variable": "SERVER_TICK", + "default_value": "60", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:1,80", + "field_type": "text" + }, + { + "name": "Max players", + "description": "", + "env_variable": "SERVER_MAX_PLAYERS", + "default_value": "256", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|between:1,256", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/starmade/egg-pterodactyl-starmade.json b/starmade/egg-pterodactyl-starmade.json new file mode 100644 index 00000000..78983314 --- /dev/null +++ b/starmade/egg-pterodactyl-starmade.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:11+00:00", + "name": "starmade", + "author": "contact@hunters-tavern.de", + "description": "starmade", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16" + }, + "file_denylist": [], + "startup": "java -Xms128m -Xmx{{SERVER_MEMORY}}m -jar {{SERVER_JARFILE}} -server -port:{{SERVER_PORT}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"SenableGameState(1)\"\r\n}", + "stop": "/shutdown 0" + }, + "scripts": { + "installation": { + "container": "eclipse-temurin:16-jdk-focal", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# starmade Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt -y install curl\r\n\r\ncd /mnt/server\r\n\r\nwget -O starter.jar http://files.star-made.org/StarMade-Starter.jar\r\n\r\njava -jar starter.jar -nogui\r\n\r\nmv ./StarMade/* ./\r\nrm -r ./StarMade\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Jarfile", + "description": "", + "env_variable": "SERVER_JARFILE", + "default_value": "StarMade.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/teeworlds/egg-pterodactyl-teeworlds.json b/teeworlds/egg-pterodactyl-teeworlds.json new file mode 100644 index 00000000..077333f1 --- /dev/null +++ b/teeworlds/egg-pterodactyl-teeworlds.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:13+00:00", + "name": "Teeworlds", + "author": "parker@parkervcp.com", + "description": "Teeworlds is a free online multiplayer game, available for all major operating systems. Battle with up to 16 players in a variety of game modes, including Team Deathmatch and Capture The Flag. You can even design your own maps!", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./teeworlds_srv", + "config": { + "files": "{\r\n \"autoexec.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"bindaddr\": \"bindaddr 0.0.0.0\",\r\n \"sv_port\": \"sv_port {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name {{server.build.env.SERVER_NAME}}\",\r\n \"sv_motd\": \"sv_motd {{server.build.env.SERVER_MOTD}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"as master, sending heartbeats\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "## teeworlds pterodactyl installer\r\napt update\r\napt upgrade -y\r\napt install -y curl jq file\r\n\r\nGITHUB_PACKAGE=\"teeworlds/teeworlds\"\r\nMATCH=\"linux_x86_64\"\r\n\r\nif [ ! -d /mnt/server ]; then\r\n mkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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 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\nif [ ! -z \"${DOWNLOAD_URL}\"]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\n## setting variable names for later\r\nFILE_NAME=${DOWNLOAD_LINK##*/}\r\nFOLDER_NAME=${FILE_NAME%.tar.gz}\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o ${FILE_NAME}'\"\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${FILE_NAME}\r\n\r\nFILETYPE=$(file -F ',' ${FILE_NAME} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${FILE_NAME}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${FILE_NAME}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${FILE_NAME}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n # exit 2 \r\nfi\r\n\r\n## cleanup old files\r\nmv ${FOLDER_NAME}/* ./\r\n\r\nrm -rf ${FILE_NAME} ${FOLDER_NAME}\r\n\r\n## download default config\r\nif [ ! -f /mnt/server/autoexec.cfg ]; then\r\n curl -sSL https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/teeworlds/autoexec.cfg \u003e /mnt/server/autoexec.cfg\r\nfi\r\n\r\n## download safe storage file\r\n## overwrites any that exists.\r\ncurl -sSL https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/teeworlds/storage.cfg \u003e /mnt/server/storage.cfg\r\n\r\necho -e \"Install complete.\"" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "The Display Name for the server", + "env_variable": "SERVER_NAME", + "default_value": "A Pterodactyl Hosted Teeworlds Server", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Server MotD", + "description": "Server Message of the Day displayed to all users.", + "env_variable": "SERVER_MOTD", + "default_value": "A Pterodactyl Hosted Teeworlds Server", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/terraria/tmodloader/egg-pterodactyl-t-modloader.json b/terraria/tmodloader/egg-pterodactyl-t-modloader.json new file mode 100644 index 00000000..ef1c8aae --- /dev/null +++ b/terraria/tmodloader/egg-pterodactyl-t-modloader.json @@ -0,0 +1,133 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:14+00: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, + "docker_images": { + "Dotnet 6": "ghcr.io/parkervcp/yolks:dotnet_6", + "Dotnet 8": "ghcr.io/parkervcp/yolks:dotnet_8" + }, + "file_denylist": [], + "startup": "./tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~/saves/Worlds/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -config serverconfig.txt -savedirectory ~/ -tmlsavedirectory ~/saves -modpath ~/mods", + "config": { + "files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"difficulty\": \"difficulty={{server.build.env.DIFFICULTY}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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 file \r\n\r\nif [ -z \"$GITHUB_USER\" ] \u0026\u0026 [ -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 '.[]' | head -1)\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/tmodloader/tmodloader/releases\" | jq '.[]')\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 tmodloader.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 if [[ \"$VERSION\" == v0* ]]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '. | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i linux | grep -i zip)\r\n else\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '. | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i tmodloader.zip)\r\n fi\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 tmodloader.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 || exit 5\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\nif [[ \"$VERSION\" == v0* ]]; then\r\n chmod +x tModLoaderServer.bin.x86_64\r\n chmod +x tModLoaderServer\r\nelse\r\n #tiny startup script for backward compatibility\r\n echo 'dotnet tModLoader.dll -server \"$@\"' \u003e tModLoaderServer\r\n chmod +x tModLoaderServer\r\nfi\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf terraria-server-*.zip rm ${DOWNLOAD_LINK##*/}\r\nif [[ \"$VERSION\" != v0* ]]; then\r\n rm -rf DedicatedServerUtils LaunchUtils PlatformVariantLibs tModPorter RecentGitHubCommits.txt *.bat *.sh\r\nfi\r\n\r\n## using config for difficulty as the startup parameter does not work -\u003e config parser\r\nmv /mnt/server/serverconfig.txt /mnt/server/config.txt\r\nsed 's/#difficulty/difficulty/' /mnt/server/config.txt \u003e /mnt/server/serverconfig.txt\r\nrm /mnt/server/config.txt\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "World Name", + "description": "The name for the world file.", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum number of players a server will hold.", + "env_variable": "MAX_PLAYERS", + "default_value": "8", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "World Size", + "description": "Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).", + "env_variable": "WORLD_SIZE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:1,2,3", + "field_type": "text" + }, + { + "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", + "field_type": "text" + }, + { + "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.", + "env_variable": "GITHUB_USER", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "GitHub OAuth Token", + "description": "This can be either an OAuth or a Personal Access Token.\r\n\r\nThis is required for the install is you set a user.", + "env_variable": "GITHUB_OAUTH_TOKEN", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Sets the difficulty of the world when using auto-create. Options: 0(normal), 1(expert), 2(master), 3(journey)", + "env_variable": "DIFFICULTY", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,1,2,3", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "Server password for users to connect to your server.\r\nCan be empty for no password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "MOTD", + "description": "Message of the Day for the server", + "env_variable": "MOTD", + "default_value": "Please don’t cut the purple trees!", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:40", + "field_type": "text" + }, + { + "name": "Language", + "description": "Sets the server language \r\n1:English, \r\n2:German, \r\n3:Italian, \r\n4:French, \r\n5:Spanish", + "env_variable": "LANGUAGE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:1,2,3,4,5", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/terraria/tshock/egg-pterodactyl-tshock-legacy.json b/terraria/tshock/egg-pterodactyl-tshock-legacy.json new file mode 100644 index 00000000..9a27ba16 --- /dev/null +++ b/terraria/tshock/egg-pterodactyl-tshock-legacy.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:19+00:00", + "name": "tshock legacy", + "author": "parker@parkervcp.com", + "description": "The t-shock modded terraria server.\r\n\r\nhttps://tshock.co/", + "features": null, + "docker_images": { + "mono": "ghcr.io/parkervcp/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "mono TerrariaServer.exe -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -world {{WORLD_NAME}}.wld -autocreate {{WORLD_SIZE}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "/bin/bash", + "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 wget jq file unzip\r\n\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/Pryaxis/TShock/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/Pryaxis/TShock/releases\")\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url)\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url')\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\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: wget $DOWNLOAD_LINK\"\r\nwget $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. Exeting\"\r\n exit 2 \r\nfi\r\n\r\necho -e \"install complete\"" + } + }, + "variables": [ + { + "name": "Max Players", + "description": "The maximum number of players a server will hold.", + "env_variable": "MAX_PLAYERS", + "default_value": "8", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "World Size", + "description": "Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).", + "env_variable": "WORLD_SIZE", + "default_value": "1", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "World Name", + "description": "The name for the world file.", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Tshock Version", + "description": "The version on tshock that will be installed. \r\n\r\nLatest available is: v4.5.18!", + "env_variable": "TSHOCK_VERSION", + "default_value": "v4.5.18", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/terraria/tshock/egg-pterodactyl-tshock.json b/terraria/tshock/egg-pterodactyl-tshock.json new file mode 100644 index 00000000..82a969dd --- /dev/null +++ b/terraria/tshock/egg-pterodactyl-tshock.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:15+00:00", + "name": "tshock", + "author": "parker@parkervcp.com", + "description": "The t-shock modded terraria server.\r\n\r\nhttps://tshock.co/", + "features": null, + "docker_images": { + "Dotnet 6": "ghcr.io/parkervcp/yolks:dotnet_6" + }, + "file_denylist": [], + "startup": "./TShock.Server -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -world {{WORLD_NAME}}.wld -autocreate {{WORLD_SIZE}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "/bin/bash", + "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 wget jq file unzip\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/Pryaxis/TShock/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/Pryaxis/TShock/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\necho ${MATCH}\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH} | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH} | head -1 )\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 ${MATCH} | head -1)\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: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK -O TShock.zip\r\n\r\nunzip -o TShock.zip\r\n\r\ntar xvf TShock-*.tar\r\n\r\nrm TShock.zip TShock-*.tar\r\n\r\nchmod +x TShock.Server\r\n\r\necho -e \"install complete\"" + } + }, + "variables": [ + { + "name": "Max Players", + "description": "The maximum number of players a server will hold.", + "env_variable": "MAX_PLAYERS", + "default_value": "8", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "World Size", + "description": "Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).", + "env_variable": "WORLD_SIZE", + "default_value": "1", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|digits_between:1,3", + "field_type": "text" + }, + { + "name": "World Name", + "description": "The name for the world file.", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Tshock Version", + "description": "The version on tshock that will be installed. default is latest non-pre-release", + "env_variable": "TSHOCK_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/terraria/vanilla/egg-pterodactyl-terraria-vanilla.json b/terraria/vanilla/egg-pterodactyl-terraria-vanilla.json new file mode 100644 index 00000000..b6664568 --- /dev/null +++ b/terraria/vanilla/egg-pterodactyl-terraria-vanilla.json @@ -0,0 +1,122 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:13+00:00", + "name": "Terraria Vanilla", + "author": "iamkubi@gmail.com", + "description": "Dig, fight, explore, build! Nothing is impossible in this action-packed adventure game.", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./TerrariaServer.bin.x86_64 -config serverconfig.txt", + "config": { + "files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"worldpath\": \"/home/container/saves/Worlds\",\r\n \"worldname\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"world\": \"/home/container/saves/Worlds/{{server.build.env.WORLD_NAME}}.wld\",\r\n \"difficulty\": \"{{server.build.env.WORLD_DIFFICULTY}}\",\r\n \"autocreate\": \"{{server.build.env.WORLD_SIZE}}\",\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.SERVER_MOTD}}\",\r\n \"seed\": \"{{server.build.env.WORLD_SEED}}\",\r\n \"password\": \"{{server.build.env.PASSWORD}}\",\r\n \"npcstream\": \"{{server.build.env.NPCSTREAM}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}", + "stop": "exit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Vanilla 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 wget file unzip jq\r\n\r\nDOWNLOAD_LINK=invalid\r\n\r\nmkdir -p /mnt/server/\r\ncd /mnt/server/\r\n\r\nif [ \"${TERRARIA_VERSION}\" == \"latest\" ] || [ \"${TERRARIA_VERSION}\" == \"\" ] ; then\r\n V=$(curl -sSL https://terraria.org/api/get/dedicated-servers-names | jq -r .[] | head -1)\r\n DOWNLOAD_LINK=\"https://terraria.org/api/download/pc-dedicated-server/${V}\"\r\nelse\r\n CLEAN_VERSION=$(echo ${TERRARIA_VERSION} | sed 's/\\.//g')\r\n echo -e \"Downloading terraria server files\"\r\n DOWNLOAD_LINK=$(curl -sSL https://terraria.wiki.gg/wiki/Server#Downloads | grep '\u003eTerraria Server ' | grep -Eoi '\u003ca [^\u003e]+\u003e' | grep -Eo 'href=\\\"[^\\\\\\\"]+\\\"' | grep -Eo '(http|https):\\/\\/[^\\\"]+' | grep \"${CLEAN_VERSION}\" | cut -d'?' -f1)\r\nfi \r\n\r\n## this is a simple script to validate a download url actaully exists\r\necho ${DOWNLOAD_LINK}\r\n\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid.\"\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nCLEAN_VERSION=$(echo ${DOWNLOAD_LINK##*/} | cut -d'-' -f3 | cut -d'.' -f1)\r\n\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\necho -e \"Unpacking server files\"\r\nunzip ${DOWNLOAD_LINK##*/}\r\n\r\necho -e \"\"\r\ncp -R ${CLEAN_VERSION}/Linux/* ./\r\nchmod +x TerrariaServer.bin.x86_64\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf ${CLEAN_VERSION}\r\n\r\necho -e \"Generating config file\"\r\ncat \u003c\u003cEOF \u003e serverconfig.txt\r\nworldpath=/home/container/saves/Worlds\r\nworldname=default\r\nworld=/home/container/saves/Worlds/default.wld\r\ndifficulty=3\r\nautocreate=1\r\nport=7777\r\nmaxplayers=8\r\nEOF\r\n\r\nmkdir -p /mnt/server/saves/Worlds\r\n\r\necho -e \"Install complete\"" + } + }, + "variables": [ + { + "name": "Terraria version", + "description": "the version of Terraria that is to be used.\r\n\r\nYou can use the full version number or the file number. (ex. 1.3.5.3 or 1353)\r\n\r\nGet version numbers here - https://terraria.wiki.gg/wiki/Server#Downloads", + "env_variable": "TERRARIA_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "World Name", + "description": "The name for the world file.", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum number of players a server will hold.", + "env_variable": "MAX_PLAYERS", + "default_value": "8", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:255", + "field_type": "text" + }, + { + "name": "World Size", + "description": "Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).", + "env_variable": "WORLD_SIZE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:1,2,3", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "World Difficulty\r\n\r\nOptions: 0(normal), 1(expert), 2(master), 3(journey)", + "env_variable": "WORLD_DIFFICULTY", + "default_value": "3", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:0,1,2,3", + "field_type": "text" + }, + { + "name": "MOTD", + "description": "Server MOTD", + "env_variable": "SERVER_MOTD", + "default_value": "Welcome!", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "World Seed", + "description": "The Seed to use when creating the World", + "env_variable": "WORLD_SEED", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Password", + "description": "The password which should be used.", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "NPCStream", + "description": "Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off.", + "env_variable": "NPCSTREAM", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|int|between:0,60", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/urbanterror/egg-pterodactyl-urban-terror.json b/urbanterror/egg-pterodactyl-urban-terror.json new file mode 100644 index 00000000..b9b4d086 --- /dev/null +++ b/urbanterror/egg-pterodactyl-urban-terror.json @@ -0,0 +1,152 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:16+00:00", + "name": "Urban Terror", + "author": "Juli199696@web.de", + "description": "Urban Terror started as a realism based \"total conversion\" mod for Quake III Arena. Nowadays, Urban Terror is played using the free, stand-alone, ioquake3 engine modified, which doesn't require Quake III Arena, in addition to being an add-on to id Software's Quake III Arena.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./Quake3-UrT-Ded.{{EXE}} +exec \"server.cfg\" +set fs_game \"q3ut4\" +set fs_basepath \"/home/container\" +set fs_homepath \"/home/container\" +set dedicated \"2\" +set com_hunkmegs \"{{HUNKMEGS}}\" +set net_port \"{{SERVER_PORT}}\"", + "config": { + "files": "{\r\n \"q3ut4/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"set sv_hostname\": \"set sv_hostname \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"set sv_joinmessage\": \"set sv_joinmessage \\\"{{server.build.env.JOIN_MESSAGE}}\\\"\",\r\n \"set sv_maxclients\": \"set sv_maxclients \\\"{{server.build.env.SERVER_MAXCLIENTS}}\\\"\",\r\n \"set rconpassword\": \"set rconpassword \\\"{{server.build.env.RCON_PASSWORD}}\\\"\",\r\n \"set g_password\": \"set g_password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"set g_friendlyfire\": \"set g_friendlyfire \\\"{{server.build.env.SERVER_FRIENDLYFIRE}}\\\"\",\r\n \"set g_gametype\": \"set g_gametype \\\"{{server.build.env.SERVER_GAMETYPE}}\\\"\",\r\n \"set timelimit\": \"set timelimit \\\"{{server.build.env.SERVER_TIMELIMIT}}\\\"\",\r\n \"set bot_enable\": \"set bot_enable 1\",\r\n \"set bot_minplayers\": \"set bot_minplayers \\\"{{server.build.env.BOT_MINPLAYERS}}\\\"\",\r\n \"map ut4_casa\": \"map \\\"{{server.build.env.SERVER_MAP}}\\\"\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"------- Game Initialization -------\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\napt update\r\napt -y install libxml2-utils sed #Install needed dependencies for the official Urban Terror Updater (Not for the Gameserver itself)\r\n\r\necho \"Downloading Urban Terror\"\r\ncurl -sSL -o UrTUpdater-Ded.sh https://github.com/FrozenSand/UrTUpdater/releases/download/v4.0.3-RC1/UrTUpdater-v4.0.3-Ded.sh \r\n#Download from Github because the Webpage does not allow \"direct Downloads\"\r\n\r\necho \"Updating Urban Terror\" #Accept the EULA and input the needed variables to download the latest version of the Serverfiles (4.3.4 for now)\r\nbash /mnt/server/UrTUpdater-Ded.sh \u003c\u003c EOF\r\ny\r\n1\r\n1\r\n1\r\nn\r\ny\r\nn\r\nEOF\r\n\r\n# Set up default configs\r\nmv /mnt/server/q3ut4/server_example.cfg /mnt/server/q3ut4/server.cfg\r\nmv /mnt/server/q3ut4/mapcycle_example.txt /mnt/server/q3ut4/mapcycle.txt\r\n\r\nchmod +x /mnt/server/Quake3-UrT-Ded.x86_64\r\nchmod +x /mnt/server/Quake3-UrT-Ded.i386\r\n\r\n# Use sed to insert extra config options as many people ask for Bots ingame\r\nsed -i '/\\/\\/pb_sv_enable/a\\set bot_enable 1\\nset bot_minplayers 0' /mnt/server/q3ut4/server.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "32bit / 64bit server version. it is recommended to use the 64bit server, unless you are experiencing issues.", + "env_variable": "EXE", + "default_value": "x86_64", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:x86_64,i386", + "field_type": "text" + }, + { + "name": "Hunkmegs", + "description": "How much memory is allocated during server start up.\r\n\r\nAvailable options: 128, 160, 192, 256 MB", + "env_variable": "HUNKMEGS", + "default_value": "128", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:128,160,192,256", + "field_type": "text" + }, + { + "name": "Server Hostname", + "description": "Put your Servername into here.", + "env_variable": "SERVER_NAME", + "default_value": "My Awesome Pterodactyl Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:55", + "field_type": "text" + }, + { + "name": "Join Message", + "description": "The message the player will receive when joining the server.", + "env_variable": "JOIN_MESSAGE", + "default_value": "Welcome to this Server, have fun!", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum players that can connect to the server.", + "env_variable": "SERVER_MAXCLIENTS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:1,32", + "field_type": "text" + }, + { + "name": "RCON Password", + "description": "Set the Rcon Password for Admin commands.\r\nCan be empty to disable RCON.", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "If you want to set a password to connect on the server set this here.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Map", + "description": "Choose the initial Map the server should start with. \r\n(ONLY CHANGE IF YOU KNOW THE MAP IS EXISTING) Server wont start without it!", + "env_variable": "SERVER_MAP", + "default_value": "ut4_casa", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Gametype / Gamemode", + "description": "Sets the Gamemode you want to play. \r\n1 = Last Man Standing, \r\n2 = Free For All, \r\n3 = Team DeathMatch, \r\n4 = Team Survivor, \r\n5 = Follow The Leader, \r\n6 = Capture And Hold, \r\n7 = Capture The Flag, \r\n8 = Bomb Mode, \r\n9 = Jump, \r\n10 = Freeze Tag, \r\n11 = Gun Game", + "env_variable": "SERVER_GAMETYPE", + "default_value": "3", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|in:1,2,3,4,5,6,7,8,9,10,11", + "field_type": "text" + }, + { + "name": "Bots", + "description": "Want to have bots in your game select how many you want. \r\n(More than 16 bots tend to crash the server or add lag, use with caution!)\r\nDisclaimer: \"Bots are not officialy supported by FS!!!\"", + "env_variable": "BOT_MINPLAYERS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:16", + "field_type": "text" + }, + { + "name": "Map Timelimit", + "description": "Time in minutes before map is over. (0 = never)", + "env_variable": "SERVER_TIMELIMIT", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:999", + "field_type": "text" + }, + { + "name": "Friendlyfire", + "description": "Sets if friendlyfire is on or off. (Teamkill your teammates is bad hmmkay?)", + "env_variable": "SERVER_FRIENDLYFIRE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:1", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/veloren/egg-pterodactyl-veloren.json b/veloren/egg-pterodactyl-veloren.json new file mode 100644 index 00000000..46abf3a4 --- /dev/null +++ b/veloren/egg-pterodactyl-veloren.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:20+00:00", + "name": "Veloren", + "author": "parker@parkervcp.com", + "description": "Veloren is a multiplayer voxel RPG written in Rust. It is inspired by games such as Cube World, Legend of Zelda: Breath of the Wild, Dwarf Fortress and Minecraft.", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./veloren-server-cli", + "config": { + "files": "{\r\n \"userdata/server/server_config/settings.ron\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" metrics_address\": \" metrics_address: \\\"0.0.0.0:{{server.build.env.METRICS_PORT}}\\\",\",\r\n \" server_name\": \" server_name: \\\"{{server.build.env.SERVER_NAME}}\\\",\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server is ready to accept connections\"\r\n}", + "stop": "shutdown graceful 10" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt install -y curl wget unzip git jq\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"x86_64\" || echo \"aarch64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"weekly\" ]; then\r\n echo -e \"weekly\"\r\n DOWNLOAD_URL=https://download.veloren.net/latest/linux/${ARCH}/weekly\r\nelif [ \"${VERSION}\" == \"nightly\" ]; then\r\n echo -e \"nightly\"\r\n DOWNLOAD_URL=https://download.veloren.net/latest/linux/${ARCH}/nightly\r\nelse\r\n echo -e \"something went wrong\"\r\nfi\r\n\r\necho -e \"download url: ${DOWNLOAD_URL}\"\r\nwget ${DOWNLOAD_URL} -O files.zip\r\n\r\nunzip -o files.zip\r\nrm files.zip\r\n\r\nchmod +x veloren-server-cli\r\n\r\n## generate config because there is no better way to get it.\r\nmkdir -p /mnt/server/userdata/server/server_config/\r\nif [ ! -f /mnt/server/userdata/server/server_config/settings.ron ]; then\r\n wget https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/veloren/settings.ron -O /tmp/settings.ron\r\n sed \"s/14004/${SERVER_PORT}/g\" /tmp/settings.ron \u003e /mnt/server/userdata/server/server_config/settings.ron\r\n rm /tmp/settings.ron\r\n echo \"config file pulled\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "weekly = download the latest weekly build.\r\nnightly = download the latest nightly build.", + "env_variable": "VERSION", + "default_value": "weekly", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:weekly,nightly", + "field_type": "text" + }, + { + "name": "Server name", + "description": "The name your server will be displaying", + "env_variable": "SERVER_NAME", + "default_value": "A pterodactyl hosted server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Metrics port", + "description": "Game port +1", + "env_variable": "METRICS_PORT", + "default_value": "14005", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/vintage_story/egg-pterodactyl-vintage-story.json b/vintage_story/egg-pterodactyl-vintage-story.json new file mode 100644 index 00000000..9936f587 --- /dev/null +++ b/vintage_story/egg-pterodactyl-vintage-story.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:19+00:00", + "name": "Vintage Story", + "author": "mail@wuffy.eu", + "description": "Vintage Story is an uncompromising wilderness survival sandbox game inspired by lovecraftian horror themes. Find yourself in a ruined world reclaimed by nature and permeated by unnerving temporal disturbances. Relive the advent of human civilization, or take your own path.", + "features": null, + "docker_images": { + "Dotnet 7": "ghcr.io/parkervcp/yolks:dotnet_7" + }, + "file_denylist": [], + "startup": "./VintagestoryServer --dataPath ./data --port={{SERVER_PORT}} --maxclients={{MAX_CLIENTS}} {{OPTIONS}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Dedicated Server now running on Port \"\r\n}", + "stop": "/stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Vintage Story Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt -y install curl jq\r\n\r\ndeclare -A API_URLS=(\r\n [\"stable\"]=\"http://api.vintagestory.at/stable.json\"\r\n [\"unstable\"]=\"http://api.vintagestory.at/unstable.json\"\r\n)\r\n\r\ndeclare -A DOWNLOAD_URLS=(\r\n [\"stable\"]=\"https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_${RELEASE_VERSION}.tar.gz\"\r\n [\"unstable\"]=\"https://cdn.vintagestory.at/gamefiles/unstable/vs_server_linux-x64_${RELEASE_VERSION}.tar.gz\"\r\n [\"pre\"]=\"https://cdn.vintagestory.at/gamefiles/pre/vs_server_linux-x64_${RELEASE_VERSION}.tar.gz\"\r\n)\r\n\r\nBRANCH=\"${FILES_BRANCH}\"\r\n\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ] \u0026\u0026 [ \"${BRANCH}\" == \"pre\" ]; then\r\n echo \"-----------------------------------------\"\r\n echo \"Installation failed...\"\r\n echo \"Please specify the version when using RELEASE BRANCH: pre\"\r\n echo \"-----------------------------------------\" \r\n exit\r\nfi\r\n\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n API_URL=\"${API_URLS[$BRANCH]}\"\r\n echo \"API URL: $API_URL\"\r\n DOWNLOAD_URL=$(curl -SsL \"$API_URL\" | jq -r 'if ([.[]] | .[0].linuxserver.urls.cdn) != null then [.[]] | .[0].linuxserver.urls.cdn else [.[]] | .[0].linuxserver.urls.local end')\r\nelse\r\n DOWNLOAD_URL=\"${DOWNLOAD_URLS[$BRANCH]}\"\r\nfi\r\n\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\ncd /mnt/server/ || exit\r\n\r\n# make sure to cleanup the prior installation else this might cause issue with old asset files that do not exist in the new version\r\nif [ -d \"assets\" ]; then\r\n echo \"Removing old installation files\"\r\n rm -rf assets/\r\n rm -rf Lib/\r\nfi\r\ncurl -o vs_server.tar.gz \"${DOWNLOAD_URL}\"\r\ntar -xzf vs_server.tar.gz\r\n\r\nif [ $? -ne 0 ]; then\r\n echo \"-----------------------------------------\"\r\n echo \"Installation failed...\"\r\n echo \"Please make sure the specified version exists: $RELEASE_VERSION\"\r\n echo \"-----------------------------------------\"\r\n rm vs_server.tar.gz\r\n exit\r\nfi\r\n\r\nrm vs_server.tar.gz\r\nrm server.sh\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Start options", + "description": "", + "env_variable": "OPTIONS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:200", + "field_type": "text" + }, + { + "name": "Release branch", + "description": "", + "env_variable": "FILES_BRANCH", + "default_value": "stable", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:stable,unstable,pre", + "field_type": "text" + }, + { + "name": "Release version", + "description": "", + "env_variable": "RELEASE_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Max Clients", + "description": "", + "env_variable": "MAX_CLIENTS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:256", + "field_type": "text" + }, + { + "name": "Sqlite temporary files directory", + "description": "Defines the location for the temporary files in sqlite. This is needed for the \"/db vacuum\" command (added in 1.19) since else it will use the /tmp folder which by default only has 100MB and is in memory.", + "env_variable": "SQLITE_TMPDIR", + "default_value": "/home/container/data/Backups", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:40", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/wine/generic/egg-pterodactyl-wine-generic.json b/wine/generic/egg-pterodactyl-wine-generic.json new file mode 100644 index 00000000..1024cff0 --- /dev/null +++ b/wine/generic/egg-pterodactyl-wine-generic.json @@ -0,0 +1,64 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:21+00:00", + "name": "Wine Generic", + "author": "parker@parkervcp.com", + "description": "a generic egg to run servers with wine", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:wine_devel": "ghcr.io/parkervcp/yolks:wine_devel", + "ghcr.io/parkervcp/yolks:wine_latest": "ghcr.io/parkervcp/yolks:wine_latest", + "ghcr.io/parkervcp/yolks:wine_staging": "ghcr.io/parkervcp/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "wine {{SERVER_EXECUTABLE}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"change me\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# The wine generic server installer\r\n# This will just pull a download link and unpack it in directory if specified.\r\n\r\napt update -y\r\napt install -y curl file unzip\r\n\r\nif [ ! -d /mnt/server ]; then\r\n mkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server/\r\n\r\n# if an install dir is set then make it and change to it.\r\nif [ ! -z ${INSTALL_DIR} ]; then\r\n mkdir -p ${INSTALL_DIR}\r\n cd ${INSTALL_DIR}\r\nfi\r\n\r\n# validate server link\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\n# unpack servver files\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*/} | cut -d',' -f2 | cut -d' ' -f2)\r\n\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2 \r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Download URL", + "description": "URL to use to download a servers files.", + "env_variable": "DOWNLOAD_URL", + "default_value": "https://beamng-mp.com/server/BeamMP_Server.zip", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Executable", + "description": "The server executable to run.", + "env_variable": "SERVER_EXECUTABLE", + "default_value": "BeamMP-Server.exe", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "sub directory to install into", + "description": "for example is the server needs to get installed into /home/container/server/bin/\r\n\r\nuse server/bin/", + "env_variable": "INSTALL_DIR", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/wolfenstein_enemy_territory/etlegacy/egg-pterodactyl-e-t-legacy.json b/wolfenstein_enemy_territory/etlegacy/egg-pterodactyl-e-t-legacy.json new file mode 100644 index 00000000..38e82914 --- /dev/null +++ b/wolfenstein_enemy_territory/etlegacy/egg-pterodactyl-e-t-legacy.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:36+00:00", + "name": "ET Legacy", + "author": "parker@parkervcp.com", + "description": "Welcome to Enemy Territory: Legacy, an open source project that aims to create a fully compatible client and server for the popular online FPS game Wolfenstein: Enemy Territory - whose gameplay is still considered unmatched by many, despite its great age.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/steamcmd:debian": "ghcr.io/parkervcp/steamcmd:debian" + }, + "file_denylist": [], + "startup": "./etlded +set net_port {{SERVER_PORT}} +map {{MAP}} +set omnibot_enable {{OMNIBOT}} $(if [ \"${OMNIBOT}\" == \"1\" ]; then echo '+set omnibot_path \"./legacy/omni-bot\"'; fi) + exec etl_server.cfg", + "config": { + "files": "{\r\n \"etmain/etl_server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"//set net_ip \\\"\\\"\": \"set net_ip \\\"0.0.0.0\\\"\",\r\n \"//set net_port \\\"27960\\\"\": \"set net_port \\\"{{server.build.default.port}}\\\"\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Game Initialization completed in\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\ncd /mnt/server\r\n\r\necho \"Downloading $ET_VERSION bit ET Legacy version\"\r\n\r\nif [ $ET_VERSION == \"32\" ];then \r\n DOWNLOAD_URL=$(curl -s https://www.etlegacy.com/download | grep \"Linux 32-bit bin\" | grep -Eoi '\u003ca [^\u003e]+\u003e' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo '(http|https)://[^\"]+')\r\n EXTENTION=i386\r\nelse\r\n DOWNLOAD_URL=$(curl -s https://www.etlegacy.com/download | grep \"Linux 64-bit bin\" | grep -Eoi '\u003ca [^\u003e]+\u003e' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo '(http|https)://[^\"]+')\r\n EXTENTION=x86_64\r\nfi\r\n\r\necho \"Download URL: ${DOWNLOAD_URL}\"\r\ncurl -sSL -o etlegacy.tar.gz ${DOWNLOAD_URL}\r\n\r\necho \"Unpacking ET: Legacy\"\r\ntar xvf etlegacy.tar.gz --strip-components=1 \r\nrm etlegacy.tar.gz\r\n\r\n\r\nE_DOWNLOAD_URL=$(curl -s https://www.splashdamage.com/games/wolfenstein-enemy-territory/ | grep .x86_full | grep -Eoi '\u003ca [^\u003e]+\u003e' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo --color=never '(http|https)://[^\"]+')\r\n\r\necho \"Downloading latest enemy territory files from: ${E_DOWNLOAD_URL}\"\r\ncurl -sSL -o enemy_territory.zip ${E_DOWNLOAD_URL}\r\n\r\necho \"Unpacking enemy territory files\"\r\nunzip -o enemy_territory.zip\r\nrm enemy_territory.zip\r\n\r\necho \"Copying enemy territory assets\"\r\n./*.x86_keygen_V03.run --tar xvf ./etmain/\r\n#cp etmain/pak*.pk3 /mnt/server/etmain/\r\n\r\n# Create .etlegacy as the server doesn't correctly create it\r\nmkdir -p /mnt/server/.etlegacy\r\n\r\nrm *.run\r\n\r\nmv etlded.${EXTENTION} etlded\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "ET Legacy Version", + "description": "What version of the server to install. 32 or 64 bit version.", + "env_variable": "ET_VERSION", + "default_value": "32", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|in:32,64", + "field_type": "text" + }, + { + "name": "Default Map", + "description": "The default map to use when starting the server.", + "env_variable": "MAP", + "default_value": "oasis", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Enable Omnibot", + "description": "", + "env_variable": "OMNIBOT", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/xonotic/egg-pterodactyl-xonotic.json b/xonotic/egg-pterodactyl-xonotic.json new file mode 100644 index 00000000..e69415d0 --- /dev/null +++ b/xonotic/egg-pterodactyl-xonotic.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T00:17:20+00:00", + "name": "Xonotic", + "author": "parker@parkervcp.com", + "description": "This is for the default xonotic setup.", + "features": null, + "docker_images": { + "ghcr.io/pterodactyl/steamcmd:debian": "ghcr.io/pterodactyl/steamcmd:debian" + }, + "file_denylist": [], + "startup": "./xonotic-linux64-dedicated +log_file latest.log +net_address 0.0.0.0 +port {{SERVER_PORT}} +maxplayers {{MAX_PLAYERS}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server listening on address 0.0.0.0:\"\r\n}", + "stop": "quit" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Vanilla Xonotic Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napk add rsync --no-cache\r\n\r\nmkdir -p /mnt/server\r\n\r\ncd /mnt/server\r\n\r\nwget -O xonotic.zip http://dl.xonotic.org/xonotic-${VERSION}.zip\r\n\r\nunzip -o xonotic.zip\r\n\r\nmv Xonotic/* ./\r\n\r\n./misc/tools/rsync-updater/update-to-autobuild.sh\r\n\r\n# create initial folder structure to copy the default config to, because it only gets created on first startup\r\nmkdir -p .xonotic/data\r\ncp -n server/server.cfg .xonotic/data/server.cfg || true # do not overwrite existing config file\r\n\r\nrm -rf COPYING Makefile *glx* *glx *sdl* *sdl *linux32* *exe *.app *.sh bin* GPL* Docs/ gmqcc/ source/ misc/ Xonotic/ xonotic.zip\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Max Players", + "description": "Max players allowed on the server", + "env_variable": "MAX_PLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,2", + "field_type": "text" + }, + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "0.8.6", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file