diff --git a/README.md b/README.md index 5c144809..958cf356 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,11 @@ If you are reading this it looks like you are looking to add an egg to your serv [ET Legacy](/enemy_territory/etlegacy) -[Factorio](/factorio/factorio) +[FTL: Tachyon](/ftl/tachyon) + +[Factorio](/factorio) +* [Vanilla](/factorio/factorio) +* [ModUpdate](/factorio/factorio-modupdate) [Grand Theft Auto](/gta) * GTA V @@ -155,10 +159,12 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Hurtworld](/steamcmd_servers/hurtworld) * [Insurgency: Sandstorm](/steamcmd_servers/insurgency_sandstorm) * [Killing Floor 2](/steamcmd_servers/killing_floor_2) +* [Modiverse](/steamcmd_servers/modiverse) * [Mordhau](/steamcmd_servers/mordhau) * [Onset](/steamcmd_servers/onset) * [Pavlov VR](/steamcmd_servers/pavlov_vr) * [PixARK](/steamcmd_servers/pixark) +* [Post Scriptum](/steamcmd_servers/post_scriptum) * [Project Zomboid](/steamcmd_servers/project_zomboid) * [Quake Live](/steamcmd_servers/quake_live) * [Rising World](/steamcmd_servers/rising_world) @@ -169,14 +175,19 @@ If you are reading this it looks like you are looking to add an egg to your serv * [dedicated](/steamcmd_servers/scpsl/dedicated) * [multiadmin](/steamcmd_servers/scpsl/multiadmin) * [Soldat](/steamcmd_servers/soldat) +* [Space Engineers](/steamcmd_servers/space_engineers) * [Squad](/steamcmd_servers/squad) * [Starbound](/steamcmd_servers/starbound) * [Stationeers](/steamcmd_servers/stationeers) * [Stormworks: Build and Rescue](/steamcmd_servers/stormworks) +* [Subnautica: Nitrox Mod](/steamcmd_servers/subnautica_nitrox_mod) * [Sven Co-op](/steamcmd_servers/svencoop) * [The Forest](/steamcmd_servers/the_forest) * [Team Fortress 2 Classic](/steamcmd_servers/team_fortress_2_classic) * [Unturned](/steamcmd_servers/unturned) +* [Valheim](/steamcmd_servers/valheim) + * [Valheim Vanilla](/steamcmd_servers/valheim/valheim_vanilla) + * [Valheim Plus Mod](/steamcmd_servers/valheim/valheim_plus) [Teeworlds](/teeworlds) * [Teeworlds](/teeworlds/teeworlds) @@ -193,10 +204,16 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Tower Unite](/unreal_engine/tower_unite) * [Tower Unite](/steamcmd_servers/tower_unite) + + [Vintage Story](/vintage_story/vintage_story) [Xonotic](/xonotic/xonotic) ## [Storage](/storage/) ### S3 Storage -* [minio](/storage/minio) \ No newline at end of file +* [minio](/storage/minio) + +## [Software](/software/) +### Code Server +* [Code-Server](/software/code-server) \ No newline at end of file diff --git a/bots/discord/jmusicbot/egg-j-music-bot.json b/bots/discord/jmusicbot/egg-j-music-bot.json index 2b4c3744..83cce79d 100644 --- a/bots/discord/jmusicbot/egg-j-music-bot.json +++ b/bots/discord/jmusicbot/egg-j-music-bot.json @@ -1,18 +1,21 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-11-18T00:37:48+02:00", + "exported_at": "2021-01-29T22:41:09+02:00", "name": "JMusicBot", "author": "parker@parkervcp.com", "description": "A Discord music bot that's easy to set up and run yourself!", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-8-jre", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-8-jre" + ], "startup": "java -Djavax.accessibility.assistive_technologies=\" \" -Dnogui=true -jar JMusicBot.jar", "config": { "files": "{\r\n \"config.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"token =\": \"token = \\\"{{env.BOT_TOKEN}}\\\"\",\r\n \"prefix =\": \"prefix = \\\"{{env.BOT_PREFIX}}\\\"\",\r\n \"owner =\": \"owner = \\\"{{env.BOT_OWNER}}\\\"\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"\"\r\n}", + "startup": "{\r\n \"done\": \"Finished Loading\"\r\n}", "logs": "{}", "stop": "^C" }, @@ -26,7 +29,7 @@ "variables": [ { "name": "Discord Bot Token", - "description": "The token for your discord bot.\r\n\r\nhttps:\/\/discordapp.com\/developers\/applications\/", + "description": "The token for your discord bot.\r\n\r\nhttps:\/\/discord.com\/developers\/applications\/", "env_variable": "BOT_TOKEN", "default_value": "You need to get a token", "user_viewable": true, diff --git a/bots/discord/redbot/README.md b/bots/discord/redbot/README.md index 165b391e..6dfd2521 100644 --- a/bots/discord/redbot/README.md +++ b/bots/discord/redbot/README.md @@ -5,6 +5,8 @@ A multifunction Discord bot ### Server Ports No port are required to run Red. +if you want to use the internal Lavalink Server, you need to allocate port 2333 as primary + ### Additional Requirements When using the Audio Cog the bot will attempt to save files to /tmp resulting in a disk space error. To resolve this error you must increase the size of `tmpfs` using custom container policy. diff --git a/bots/twitch/phantombot/README.md b/bots/twitch/phantombot/README.md index b62d0ac6..de58899c 100644 --- a/bots/twitch/phantombot/README.md +++ b/bots/twitch/phantombot/README.md @@ -1,5 +1,5 @@ # PhantomBot -### Their [Site](https://phantombot.tv) +### Their [Site](https://phantombot.github.io/PhantomBot/) PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers. diff --git a/bots/twitch/phantombot/egg-phantom-bot.json b/bots/twitch/phantombot/egg-phantom-bot.json index a5e44ee3..e10dc43e 100644 --- a/bots/twitch/phantombot/egg-phantom-bot.json +++ b/bots/twitch/phantombot/egg-phantom-bot.json @@ -62,7 +62,7 @@ }, { "name": "Your OAuth Token", - "description": "Please note, this OAuth token needs to be generated while you're logged in into your caster account.\r\nIf you're not logged in as the caster, please go to https:\/\/twitch.tv\/ and login as the caster.\r\nGet the your OAuth token here: https:\/\/phantombot.tv\/oauth\/", + "description": "Please note, this OAuth token needs to be generated while you're logged in into your caster account.\r\nIf you're not logged in as the caster, please go to https:\/\/twitch.tv\/ and login as the caster.\r\nGet the your OAuth token here: https:\/\/phantombot.github.io\/PhantomBot\/oauth\/", "env_variable": "USER_OAUTH_TOKEN", "default_value": "", "user_viewable": true, @@ -115,4 +115,4 @@ "rules": "max:64" } ] -} \ No newline at end of file +} diff --git a/bots/twitch/sogebot/egg-soge-bot.json b/bots/twitch/sogebot/egg-soge-bot.json index bdb35456..be4093d2 100644 --- a/bots/twitch/sogebot/egg-soge-bot.json +++ b/bots/twitch/sogebot/egg-soge-bot.json @@ -1,14 +1,17 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-11-28T06:01:04+01:00", + "exported_at": "2021-02-08T16:56:23+01:00", "name": "SogeBot", "author": "info@goover.de", "description": "sogeBot - Free Twitch Bot built on Node.js https:\/\/sogebot.xyz\/", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_nodejs-14", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_nodejs-14" + ], "startup": "npm start", "config": { "files": "{\r\n \".env\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"PORT\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", @@ -18,7 +21,7 @@ }, "scripts": { "installation": { - "script": "#\/bin\/bash\r\napt -y update\r\napt -y upgrade\r\napt install -y curl unzip sqlite jq wget python3 build-essential\r\nexport NODE_OPTIONS=--max-old-space-size=8192\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\/${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\n#echo $DOWNLOAD_LINK\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH-*.zip\r\nrm -fR $MATCH-*.zip\r\n\r\necho \"Installing depencies...\"\r\n\/usr\/local\/bin\/npm ci 2>&1 | tee npmlog.txt\r\n\r\nexit 0", + "script": "#\/bin\/bash\r\napt -y update\r\napt -y upgrade\r\napt install -y curl unzip sqlite jq wget python3 build-essential\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\n\r\ncd \/mnt\/server\r\n\r\nrm -fR dest\r\nrm -fR public\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\n#echo $DOWNLOAD_LINK\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH-*.zip\r\nrm -fR $MATCH-*.zip\r\n\r\necho \"Installing depencies...\"\r\n\/usr\/local\/bin\/npm ci 2>&1 | tee npmlog.txt\r\n\r\nexit 0", "container": "node:14-buster-slim", "entrypoint": "bash" } @@ -52,4 +55,4 @@ "rules": "required|string|max:20" } ] -} \ No newline at end of file +} diff --git a/cryofall/cryofall/egg-cryo-fall.json b/cryofall/cryofall/egg-cryo-fall.json index 4f17f02e..8a912438 100644 --- a/cryofall/cryofall/egg-cryo-fall.json +++ b/cryofall/cryofall/egg-cryo-fall.json @@ -1,13 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-10-17T02:36:40+00:00", + "exported_at": "2021-01-22T16:39:06+01:00", "name": "CryoFall", "author": "contact@zennodes.dk", "description": "NOTE: For now you have to change SettingsServer.xml under CryoFall_Server_v(Version)_NetCore\/Data\/SettingsServer.xml\r\n\r\nCryoFall is a sci-fi multiplayer colony simulation survival game set on a forgotten planet in a distant future.\r\n\r\nJoin the vast world of CryoFall together with other survivors to rebuild your civilization from scratch. Start with primitive technology and simple tools and use them to progress towards modern industrial might and even beyond, eventually reaching space-age technology only seen in science fiction.\r\n\r\nCryoFall can be played either as a relaxed PvE experience with no competition or as a brutal and unforgiving PvP. Make your choice and join one of many available servers with different game modes or host your own and invite your friends to join you!\r\n\r\nBuild your house or a large base together with other players. Dig wells and create farms to sustain basic needs. Build vehicles to explore the world faster. Establish basics of science, all the way from medicine and chemistry to fuel creation and even lithium extraction to create electronic devices. Cook food or prepare drinks to sell them from vending machines in your store.\r\n\r\nBuild factories to produce on an industrial scale: Weapons and defense systems, bionic implants to augment yourself, even large war machines and artillery guns to use against the biggest of opponents", - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_dotnet", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_dotnet-5" + ], + "file_denylist": "", "startup": "dotnet Binaries\/Server\/CryoFall_Server.dll loadOrNew", "config": { "files": "{}", diff --git a/database/sql/postgres/egg-postgres.json b/database/sql/postgres/egg-postgres.json index c6a73413..638692e7 100644 --- a/database/sql/postgres/egg-postgres.json +++ b/database/sql/postgres/egg-postgres.json @@ -18,7 +18,7 @@ "scripts": { "installation": { "script": "#! \/bin\/ash\r\nadduser -D -h \/home\/container container\r\n\r\necho $POSTGRES_PASSWORD > .passwd\r\n\r\nchown -R container: \/mnt\/server\/\r\n\r\ncat .passwd\r\n\r\nsu container -c 'initdb -D \/mnt\/server\/postgres_db\/ -A md5 -U container --pwfile .passwd'\r\n\r\nmkdir -p \/mnt\/server\/postgres_db\/run\/\r\n\r\necho -e \"Done\"", - "container": "postgres:12.2-alpine", + "container": "postgres:13.1-alpine", "entrypoint": "ash" } }, diff --git a/factorio/README.md b/factorio/README.md index 34228fe6..714d66d2 100644 --- a/factorio/README.md +++ b/factorio/README.md @@ -1,7 +1,8 @@ # Factorio #### The Factorio Server -The server supports mods +The server supports mods. +The factorio-modupdate egg uses the factorio-mod-updater (https://github.com/pdemonaco/factorio-mod-updater) to update your mods when ReInstalling the Server. #### from the developers diff --git a/factorio/factorio-modupdate/egg-factorio-modupdate.json b/factorio/factorio-modupdate/egg-factorio-modupdate.json new file mode 100644 index 00000000..ea6f7d1a --- /dev/null +++ b/factorio/factorio-modupdate/egg-factorio-modupdate.json @@ -0,0 +1,121 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-01-15T16:32:57+01: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, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:base_debian" + ], + "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}", + "startup": "{\r\n \"done\": \"Hosting game at\",\r\n \"userInteraction\": []\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"factorio-current.log\"\r\n}", + "stop": "\/quit" + }, + "scripts": { + "installation": { + "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", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + }, + { + "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" + } + ] +} \ No newline at end of file diff --git a/ftl/tachyon/README.MD b/ftl/tachyon/README.MD new file mode 100644 index 00000000..c4c03499 --- /dev/null +++ b/ftl/tachyon/README.MD @@ -0,0 +1,15 @@ +# Tachyon + +Tachyon is a multiplayer FTL server and client. + +## Server Ports + +The Tachyon server requires a single port for access. + +| Port | default | +|-------|---------| +| Game | 30303 | + +## Server Specific + +Latest client and standalone server can be found at https://github.com/Dav-Edward/TachyonsCE/releases diff --git a/ftl/tachyon/egg-tachyon.json b/ftl/tachyon/egg-tachyon.json new file mode 100644 index 00000000..a2b299d5 --- /dev/null +++ b/ftl/tachyon/egg-tachyon.json @@ -0,0 +1,31 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-02-09T11:53:05-08:00", + "name": "Tachyon", + "author": "alex.chang-lam@protonmail.com", + "description": "A multiplayer version of FTL.", + "features": null, + "images": [ + "quay.io\/pterodactyl\/core:java-11" + ], + "file_denylist": "", + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar TachyonsCEServer.jar", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"[Server] SERVER STARTED.\",\r\n \"userInteraction\": []\r\n}", + "logs": "{}", + "stop": "\/exit" + }, + "scripts": { + "installation": { + "script": "#! \/bin\/bash\r\n\r\nGITHUB_PACKAGE=Dav-Edward\/TachyonsCE\r\nMATCH=TachyonsCE\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\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ \"$(echo ${LATEST_JSON} | jq -r '.message')\" != \"Not Found\" ] && [[ -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 VALIDATED_URL=${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 -o ${VALIDATED_URL##*\/} ${VALIDATED_URL}\r\n\r\nFILETYPE=$(file -F ',' ${VALIDATED_URL##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${VALIDATED_URL##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${VALIDATED_URL##*\/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${VALIDATED_URL##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n # exit 2 \r\nfi\r\n\r\n#pull version and format folder name for renaming\r\nFOLDER=$(echo ${LATEST_JSON} | jq .tag_name | tr -d 'v\"')\r\n\r\n#move all server files out\r\ncp -r .\/TachyonsCE_${FOLDER}\/server\/* \/mnt\/server\r\n\r\n#remove zip and unneeded client-side and dev files\r\nrm -rf TachyonsCE_${FOLDER}\r\nrm ${VALIDATED_URL##*\/}\r\n\r\nchmod +x TachyonsCEServer.jar", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/gta/altv/egg-alt--v.json b/gta/altv/egg-alt--v.json index d305748c..cd2acfca 100644 --- a/gta/altv/egg-alt--v.json +++ b/gta/altv/egg-alt--v.json @@ -1,23 +1,28 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-10-16T12:30:37+00:00", + "exported_at": "2021-01-31T13:27:52+00:00", "name": "alt:V", "author": "parker@parkervcp.com", "description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V", - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_dotnet", - "startup": "sleep 2 && .\/altv-server", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:game_altv" + ], + "file_denylist": "", + "startup": "chmod +x .\/altv-server && .\/altv-server", "config": { - "files": "{\r\n \"server.cfg\": {\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}", + "files": "{\r\n \"server.cfg\": {\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 \"update.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"branch\": \"{{server.build.env.BUILD}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Server started\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# AltV Install Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# BUILD=stable ## this should be an egg variable.\r\nBASE_URL=\"https:\/\/cdn.altv.mp\/\" ## Where the files are stored.\r\n\r\n## install required dependancies.\r\nfunction install_deps () {\r\n apt update\r\n apt install -y libatomic1 zip unzip jq curl wget\r\n echo -e \"deps installed\"\r\n echo -e\r\n}\r\n\r\n## check the has on files and compare to a remote source.\r\n## usage 'check_hash \"file\" \"remote_hash_source\"'\r\nfunction check_hash () {\r\n echo -e \"Checking for file ${1}\"\r\n echo -e \"running: curl -sSL ${2} | jq -r --arg FILENAME \\\"${3}\\\" '.hashList | .[\\$FILENAME]'\"\r\n hash=$(curl -sSL ${2} | jq -r --arg FILENAME ${3} '.hashList | .[$FILENAME]')\r\n echo -e \"hash: $hash\"\r\n\r\n if [ -f ${2} ]; then\r\n\r\n echo -e \"hash is $(sha1sum ${1} | awk '{ print $1 }')\"\r\n echo -e \"current has is ${hash}\"\r\n\r\n if [ \"$(sha1sum ${2} | awk '{ print $1 }')\" == \"${hash}\" ]; then\r\n echo -e \"Hash matched\"\r\n echo -e \"No need to download new file.\"\r\n return 0\r\n else\r\n echo -e \"Hash didn't match\"\r\n echo -e \"Need to download the correct version\"\r\n return 1\r\n fi\r\n else\r\n echo \"No file found\"\r\n return 1\r\n fi\r\n}\r\n\r\n## makes sure a download link is valid.\r\nfunction validate_download () {\r\n DOWNLOAD_URL=${1}\r\n\r\n echo -e \"Download url is ${DOWNLOAD_URL}\"\r\n\r\n if [ ! -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\n fi\r\n\r\n}\r\n\r\nfunction download_files () {\r\n ## validate download link and get files\r\n validate_download ${1}\r\n echo -e \"running wget ${DOWNLOAD_URL} -O ${2}\"\r\n wget ${DOWNLOAD_URL} -O ${2}\r\n}\r\n\r\n## This is a file array for files to get downloaded.\r\n## They are all comma separated lists.\r\n## remote folder (0), json file with hashes (1), file name in json file (2), file name (3), file folder (4), extra commands (5)\r\nfile_array=( \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"altv-server\",\"altv-server\",\/mnt\/server\/,execute \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"data\/vehmodels.bin\",\"vehmodels.bin\",\/mnt\/server\/data\/ \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"data\/vehmods.bin\",\"vehmods.bin\",\/mnt\/server\/data\/ \\\r\n\"others\/\",,\"server.cfg\",server.cfg,\/mnt\/server\/ \\\r\n\"js-module\/${BUILD}\/x64_linux\/\",\"update.json\",\"modules\/js-module\/libnode.so.72\",\"libnode.so.72\",\/mnt\/server\/ \\\r\n\"js-module\/${BUILD}\/x64_linux\/\",\"update.json\",\"modules\/js-module\/libjs-module.so\",\"libjs-module.so\",\/mnt\/server\/modules\/ \\\r\n\"coreclr-module\/${BUILD}\/x64_linux\/\",,\"AltV.Net.Host.dll\",\"AltV.Net.Host.dll\",\/mnt\/server\/ \\\r\n\"coreclr-module\/${BUILD}\/x64_linux\/\",,\"AltV.Net.Host.runtimeconfig.json\",\"AltV.Net.Host.runtimeconfig.json\",\/mnt\/server\/ \\\r\n\"coreclr-module\/stable\/x64_linux\/\",\"update.json\",\"modules\/libcsharp-module.so\",\"libcsharp-module.so\",\/mnt\/server\/modules\/ \\\r\n\"samples\/\",,\"resources.zip\",\"resources.zip\",\/mnt\/server\/,unzip \\\r\n)\r\n\r\ninstall_deps\r\n\r\n## this goes through each value in the array and then checks the hash\r\nfor EACH in ${file_array[@]}\r\ndo\r\n ## this needs to be here to break apart the arrays.\r\n IFS=',' read -r -a array <<< \"$EACH\"\r\n\r\n if [ ! -z \"${array[1]}\" ]; then\r\n ## check hash on 'folder\/file' with 'remote file base url\/remote folder\/ json file' 'json file name' \r\n if check_hash \"${array[4]}${array[3]}\" \"${BASE_URL}${array[0]}${array[1]}\" \"${array[2]}\"; then\r\n echo -e \"file up to date\"\r\n else\r\n echo -e \"downloading most recent file\"\r\n fi\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n else\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n fi\r\n\r\n ## run extra commands if needed.\r\n case ${array[5]} in\r\n unzip)\r\n cd ${array[4]}\r\n unzip -o ${array[3]}\r\n rm ${array[3]}\r\n ;;\r\n execute)\r\n chmod +x ${array[4]}${array[3]}\r\n ;;\r\n esac\r\n\r\n# echo -e \"HashFile: ${BASE_URL}${array[0]}${array[1]}\"\r\n# echo -e \"Download URL ${BASE_URL}${array[0]}${array[2]}\"\r\n# echo -e \"Filename ${array[3]}\"\r\n# echo -e \"File Folder ${array[4]}\"\r\n# echo -e \"commands to run ${array[5]}\"\r\n# echo -e\r\ndone\r\n\r\necho -e \"install complete\"", + "script": "#!\/bin\/bash\r\n#\r\n# Script Name: update.sh\r\n#\r\n# Author: Lhoerion\r\n#\r\n# Description: The following script compares SHA-1 hashes of remote and local alt:V files. If local file is missing or outdated, script automatically downloads it to script directory.\r\n# Old files are preserved as *.old. Script also keep track of current branch and build. Server start script gets created if missing.\r\n#\r\n# Run Information: This script is run manually.\r\n# Dependencies: coreutils, wget, >=jq_1.4, pcregrep\r\n#\r\n\r\napt update\r\napt install -y libatomic1 zip unzip jq curl wget libc-bin\r\ncd \/mnt\/server\r\n\r\nnoBackup=false\r\nnoLogFile=false\r\ndryRun=false\r\nsilent=false\r\nfor arg in \"$@\"\r\ndo\r\n if [ $arg = '--no-logfile' ]; then\r\n noLogFile=true\r\n elif [ $arg = '--no-backup' ]; then\r\n noBackup=true\r\n elif [ $arg = '--dry-run' ]; then\r\n dryRun=true\r\n elif [ $arg = '--silent' ]; then\r\n silent=true\r\n fi\r\ndone\r\nfiles=()\r\nprintAndLog() {\r\n if [[ \"$silent\" == false ]]; then\r\n outFd=1\r\n else\r\n exec {outFd}>\/dev\/null\r\n fi\r\n if [ \"$2\" = 'ERR' ]; then\r\n printf \"\\e[91m[$(date +%T)][Error] $1\\e[39m\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n elif [ \"$2\" = 'WARN' ]; then\r\n printf \"\\e[93m[$(date +%T)][Warning] $1\\e[39m\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n elif [ \"$2\" = 'APP' ]; then\r\n printf \"$1\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n else\r\n printf \"[$(date +%T)] $1\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n fi\r\n}\r\nsemVerCmp() {\r\n declare -r \"semVerRegex=^(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*))?\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$\"\r\n local matchA=(${1##v})\r\n local matchB=(${2##v})\r\n for i in {1..5}\r\n do\r\n matchA+=(`echo ${1##v} | pcregrep \"-o$i\" $semVerRegex`)\r\n matchB+=(`echo ${2##v} | pcregrep \"-o$i\" $semVerRegex`)\r\n done\r\n if [ ${1##v} == ${2##v} ]; then\r\n echo 0 && return 0\r\n fi\r\n if [ \\( -z $matchA[4] \\) -a \\( ! -z $matchB[4] \\) ]; then\r\n echo 1 && return 0\r\n elif [ \\( ! -z $matchA[4] \\) -a \\( -z $matchB[4] \\) ]; then\r\n echo -1 && return 0\r\n fi\r\n local i=0\r\n for a in ${matchA[@]}\r\n do\r\n local b=\"${matchB[$i]}\"\r\n if [ \\( $i -eq 2 \\) -a \\( \\( -z $a \\) -o \\( -z $b \\) \\) ]; then\r\n continue\r\n fi\r\n if [[ $a > $b ]]; then\r\n echo 1 && return 0\r\n elif [[ $a < $b ]]; then\r\n echo -1 && return 0\r\n fi\r\n i=$((i + 1))\r\n done\r\n echo 0 && return 0\r\n}\r\nfetchUpdateData() {\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/server\/$localBranch\/x64_linux\/update.json\" -A 'AltPublicAgent')\r\n echo $updateData | jq -e '.' >\/dev\/null 2>&1\r\n if [ $? -ne 0 ]; then\r\n printAndLog \"Failed to check for update, try again later\\n\" 'ERR'\r\n exit 1\r\n fi\r\n str='. | to_entries | map(if .key==\"hashList\" then {\"key\":.key} + {\"value\":(.value | to_entries | map(. + {\"value\":[.value, \"%s\"]}) | from_entries)} else . end) | from_entries'\r\n local updateTmp=($(mktemp '\/tmp\/update.sh.XXX'))\r\n echo '{}' > ${updateTmp[0]}\r\n echo $updateData | jq -c \"$(printf \"$str\" 'server')\" > ${updateTmp[0]}\r\n for (( i=0; i < ${#modules[@]}; i++ ))\r\n do\r\n if [[ \"${modules[$i]}\" == 'csharp-module' ]]; then\r\n modules[$i]='coreclr-module'\r\n fi\r\n local moduleName=${modules[$i]}\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/$moduleName\/$localBranch\/x64_linux\/update.json\" -A 'AltPublicAgent')\r\n echo $updateData | jq -e '.' >\/dev\/null 2>&1\r\n if [ $? -ne 0 ]; then\r\n printAndLog \"Failed to check for $moduleName update\\n\" 'WARN'\r\n else\r\n if [[ \"$moduleName\" == 'csharp-module' ]]; then\r\n if [[ $(echo $updateData | jq -c '.hashList | has(\"AltV.Net.Host.dll\")') == false ]]; then\r\n updateData=$(echo $updateData | jq '.hashList |= . + {\"AltV.Net.Host.dll\":\"'$(printf \"%0.s0\" {1..40})'\"}')\r\n updateData=$(echo $updateData | jq '.hashList |= . + {\"AltV.Net.Host.runtimeconfig.json\":\"'$(printf \"%0.s0\" {1..40})'\"}')\r\n fi\r\n if [[ $(echo $updateData | jq -c '.hashList | has(\"modules\/libcsharp-module.so\")') == false ]]; then\r\n updateData=$(echo $updateData | jq '.hashList |= . + {\"modules\/libcsharp-module.so\":\"'$(printf \"%0.s0\" {1..40})'\"}')\r\n fi\r\n fi\r\n updateTmp+=($(mktemp '\/tmp\/update.sh.XXX'))\r\n echo '{}' > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n echo $updateData | jq -c \"$(printf \"$str\" \"$moduleName\")\" > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n fi\r\n done\r\n updateData=$(jq -s '.[0].latestBuildNumber as $b | .[0].version as $c | reduce .[] as $x ({}; . * $x) | .latestBuildNumber=$b | .version=$c' ${updateTmp[@]})\r\n remoteBuild=\"$(echo \"$updateData\" | jq -r '.latestBuildNumber')\"\r\n [[ $remoteBuild -eq -1 ]] && remoteBuild=$(echo \"$updateData\" | jq -r '.version')\r\n}\r\nvalidateFiles() {\r\n files=()\r\n for file in $(echo $updateData | jq -r '.hashList | keys[]')\r\n do\r\n if [[ ! -e \"$file\" || $(sha1sum \"$file\" | awk '{print $1}') != \"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[0]\")\" ]]; then\r\n files+=(\"$file\")\r\n fi\r\n done\r\n if [ ! -e 'server.cfg' ]; then\r\n printAndLog \"Server file server.cfg not found, creating one . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n printf 'name: \"alt:V Server\"\\nhost: 0.0.0.0\\nport: 7788\\nplayers: 128\\n#password: ultra-password\\nannounce: false\\n#token: YOUR_TOKEN\\ngamemode: Freeroam\\nwebsite: example.com\\nlanguage: en\\ndescription: \"alt:V Sample Server\"\\nmodules: [\\n \\n]\\nresources: [\\n \\n]\\n' > 'server.cfg' && printAndLog 'done\\n' 'APP' || printAndLog 'failed\\n' 'APP'\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n fi\r\n if [[ ! $localBuild =~ ^[0-9]+$ || $localBuild -ge 1232 ]]; then\r\n local nodeExist=$([ -e 'libnode.so.72' ] && echo true || echo false)\r\n local moduleExist=$([ -e 'modules\/libnode-module.so' ] && echo true || echo false)\r\n if [[ \"$nodeExist\" == true || \"$moduleExist\" == true ]]; then\r\n printAndLog \"Found old node-module files, removing . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n local result1=true\r\n local result2=true\r\n if [[ \"$nodeExist\" == true ]]; then\r\n rm -f 'libnode.so.72'\r\n result1=$([[ \"$?\" -eq 0 ]] && echo true || echo false)\r\n fi\r\n if [[ \"$moduleExist\" == true ]]; then\r\n rm -f 'modules\/libnode-module.so'\r\n result2=$([[ \"$?\" -eq 0 ]] && echo true || echo false)\r\n fi\r\n if [[ \"$result1\" == true && \"$result2\" == true ]]; then\r\n printAndLog 'done\\n' 'APP'\r\n else\r\n printAndLog 'failed\\n' 'APP'\r\n fi\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n fi\r\n fi\r\n if [ $localBuild != $remoteBuild ]; then\r\n printAndLog \"Server files update is available\\n\"\r\n elif [ \"${#files[@]}\" -ne 0 ]; then\r\n printAndLog \"Server files are invalidated\/corrupted, ${#files[@]} in total\\n\"\r\n else\r\n printAndLog \"Server files are up-to-date, no action required\\n\"\r\n fi\r\n\r\n if [[ \"$dryRun\" == false ]]; then\r\n localBuild=$remoteBuild\r\n modulesTemp=\"\"\r\n for (( i=0; i < ${#modules[@]}; i++ ))\r\n do\r\n modulesTemp+=\"\\\"${modules[$i]}\\\"\"\r\n if [ $(($i + 1)) -ne ${#modules[@]} ]; then\r\n modulesTemp+=','\r\n fi\r\n done\r\n if [[ $localBuild =~ ^[0-9]+$ ]]; then\r\n printf '{\"branch\":\"%s\",\"build\":%d,\"modules\":[%s]}' $localBranch $localBuild $modulesTemp | jq '.' > 'update.cfg'\r\n else\r\n printf '{\"branch\":\"%s\",\"build\":\"%s\",\"modules\":[%s]}' $localBranch $localBuild $modulesTemp | jq '.' > 'update.cfg'\r\n fi\r\n fi\r\n }\r\n downloadFiles() {\r\n if [ \"${#files[@]}\" -eq 0 ]; then\r\n return\r\n fi\r\n for file in ${files[@]}\r\n do\r\n dlType=\"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[1]\")\"\r\n outDir=\"$(dirname $file)\"\r\n printAndLog \"Downloading file $file . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n if [[ \"$noBackup\" == false && -e \"$file\" ]]; then\r\n mv \"$file\" \"$file.old\"\r\n fi\r\n if [[ ! -e \"$outDir\/\" ]]; then\r\n mkdir -p \"$outDir\/\"\r\n fi\r\n wget \"https:\/\/cdn.altv.mp\/$dlType\/$localBranch\/x64_linux\/${file}?build=$localBuild\" -U 'AltPublicAgent' -O \"$file\" -N -q && printAndLog 'done\\n' 'APP' || printAndLog 'failed\\n' 'APP'\r\n if [ ! -e \"$file\" ]; then\r\n continue\r\n fi\r\n if [ -e \"$file.old\" ]; then\r\n chmod --reference=\"$file.old\" \"$file\" || printAndLog \"Failed to copy chmod to file $file\\n\" 'ERR'\r\n chmod -x \"$file.old\" || printAndLog \"Failed to remove execution permissions from file $file.old\\n\" 'ERR'\r\n else\r\n chmod +x \"$file\" || printAndLog \"Failed to add execution permissions to file $file\\n\" 'ERR'\r\n fi\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n done\r\n validateFiles\r\n }\r\n\r\n if [ $noLogFile != true ]; then\r\n truncate -s 0 'update.log'\r\n fi\r\n if [[ ( \"$dryRun\" == false ) && ( ! -e 'update.cfg' ) ]]; then\r\n printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.' > 'update.cfg'\r\n fi\r\n updateCfg=$([[ -e 'update.cfg' ]] && cat 'update.cfg' || printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.')\r\n localBranch=$(echo \"$updateCfg\" | jq -r '.branch')\r\n [[ ! -n \"$localBranch\" || \"$localBranch\" != 'release' && \"$localBranch\" != 'rc' && \"$localBranch\" != 'dev' ]] && localBranch='release'\r\n modules=($(echo \"$updateCfg\" | jq -r '.modules \/\/ \"\"' | tr -d '[],\"'))\r\n [[ ! -n \"$modules\" ]] && modules=('js-module')\r\n fetchUpdateData\r\n localBuild=\"$(echo \"$updateCfg\" | jq -r 'if .build == null then empty else .build end')\"\r\n [[ -z $localBuild || $localBuild == \"-1\" ]] && localBuild=$remoteBuild\r\n printAndLog \"Current version: $localBuild\\n\"\r\n printAndLog \"Latest version: $remoteBuild\\n\"\r\n validateFiles\r\n downloadFiles\r\nchmod +x .\/altv-server\r\necho -e \"install complete\"", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -25,7 +30,7 @@ "variables": [ { "name": "ld lib path", - "description": "Needed to load modules correctly.", + "description": "Needed to load modules correctly. Best left at default.", "env_variable": "LD_LIBRARY_PATH", "default_value": ".", "user_viewable": false, @@ -33,8 +38,8 @@ "rules": "required|string|max:20" }, { - "name": "Which alt:V build to download", - "description": "The supported versions are release, rc, dev (default: release).\r\n\r\nIf you don't know what you are doing leave it on stable", + "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, @@ -60,4 +65,4 @@ "rules": "required|string" } ] -} \ No newline at end of file +} diff --git a/minecraft/bedrock/nukkit/egg-nukkit.json b/minecraft/bedrock/nukkit/egg-nukkit.json index 436e6632..4cb299ad 100644 --- a/minecraft/bedrock/nukkit/egg-nukkit.json +++ b/minecraft/bedrock/nukkit/egg-nukkit.json @@ -17,7 +17,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl openssl\r\n\r\ncd \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n wget ${MODIFIED_DOWNLOAD} -O ${SERVER_JARFILE}\r\nelif [ -z \"${NUKKIT_VERSION}\" ] || [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https:\/\/ci.nukkitx.com\/job\/NukkitX\/job\/Nukkit\/job\/master\/lastSuccessfulBuild\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https:\/\/ci.nukkitx.com\/job\/NukkitX\/job\/Nukkit\/job\/master\/${NUKKIT_VERSION}\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/nukkit\/nukkit.yml\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/nukkit\/server.properties\r\nfi", + "script": "#!\/bin\/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl openssl\r\n\r\ncd \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n wget ${MODIFIED_DOWNLOAD} -O ${SERVER_JARFILE}\r\nelif [ -z \"${NUKKIT_VERSION}\" ] || [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https:\/\/ci.opencollab.dev\/job\/NukkitX\/job\/Nukkit\/job\/master\/lastSuccessfulBuild\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https:\/\/ci.opencollab.dev\/job\/NukkitX\/job\/Nukkit\/job\/master\/${NUKKIT_VERSION}\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/nukkit\/nukkit.yml\r\nfi\r\n\r\nif [ ! -f server.properties ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/nukkit\/server.properties\r\nfi", "container": "alpine:3.10", "entrypoint": "ash" } diff --git a/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index f9b0ee07..7971e12d 100644 --- a/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -1,14 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-12-24T13:08:36+01:00", + "exported_at": "2021-03-12T14:38:58+01:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:base_debian" + ], + "file_denylist": [], "startup": ".\/bin\/php7\/bin\/php .\/PocketMine-MP.phar --no-wizard --disable-ansi", "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\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", @@ -18,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"\\n downloading pocketmine MP build ${PMMP_VERSION}\"\r\nif [ -z \"$PMMP_VERSION\" ] || [ \"$PMMP_VERSION\" == \"latest\" ]; then\r\n curl -sSL -o PocketMine-MP.phar https:\/\/jenkins.pmmp.io\/job\/PocketMine-MP\/Stable\/artifact\/PocketMine-MP.phar\r\nelse \r\n curl -sSL -o PocketMine-MP.phar https:\/\/jenkins.pmmp.io\/job\/PocketMine-MP\/${PMMP_VERSION}\/artifact\/PocketMine-MP.phar\r\nfi\r\n\r\necho -e \"\\n downloading latest php7.4 build from pocketmine\"\r\ncurl -sSL -o php.binary.tar.gz https:\/\/jenkins.pmmp.io\/job\/PHP-7.4-Linux-x86_64\/lastSuccessfulBuild\/artifact\/PHP_Linux-x86_64.tar.gz\r\n\r\necho -e \"\\n getting default server.properties\"\r\ncurl -sSL https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/pocketmine_mp\/server.properties > server.properties\r\n\r\necho -e \"\\n unpacking php7 binaries\"\r\ntar -xzvf php.binary.tar.gz\r\n\r\necho -e \"\\n removing pvp7 packages\"\r\nrm -rf \/mnt\/server\/php.binary.tar.gz\r\n\r\necho -e \"\\n creating files and folders\"\r\ntouch banned-ips.txt banned-players.txt ops.txt white-list.txt server.log\r\nmkdir -p players worlds plugins resource_packs", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y curl jq\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\/${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\n## this is a simple script to validate a download url actaully exists\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 -sSL ${DOWNLOAD_LINK} > PocketMine-MP.phar\r\n\r\necho -e \"\\n downloading latest php7.4 build from pocketmine\"\r\ncurl -sSL -o php.binary.tar.gz https:\/\/jenkins.pmmp.io\/job\/PHP-7.4-Linux-x86_64\/lastSuccessfulBuild\/artifact\/PHP_Linux-x86_64.tar.gz\r\n\r\necho -e \"\\n getting default server.properties\"\r\ncurl -sSL https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/bedrock\/pocketmine_mp\/server.properties > server.properties\r\n\r\necho -e \"\\n unpacking php7 binaries\"\r\ntar -xzvf php.binary.tar.gz\r\n\r\necho -e \"\\n removing php7 packages\"\r\nrm -rf \/mnt\/server\/php.binary.tar.gz\r\n\r\necho -e \"\\n creating files and folders\"\r\ntouch banned-ips.txt banned-players.txt ops.txt white-list.txt server.log\r\nmkdir -p players worlds plugins resource_packs", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -26,12 +30,30 @@ "variables": [ { "name": "PocketmineMP Version", - "description": "The build to pull and install. (Ex. 1604)\r\n\r\nThis is the build number on https:\/\/jenkins.pmmp.io", - "env_variable": "PMMP_VERSION", + "description": "Version from Github", + "env_variable": "VERSION", "default_value": "latest", "user_viewable": true, "user_editable": true, "rules": "required|string|max:20" + }, + { + "name": "Github Package", + "description": "", + "env_variable": "GITHUB_PACKAGE", + "default_value": "pmmp\/PocketMine-MP", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20" + }, + { + "name": "Match", + "description": "", + "env_variable": "MATCH", + "default_value": "PocketMine-MP.phar", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20" } ] } \ No newline at end of file diff --git a/minecraft/java/fabric/egg-fabric.json b/minecraft/java/fabric/egg-fabric.json index d8ebf272..b3812a00 100644 --- a/minecraft/java/fabric/egg-fabric.json +++ b/minecraft/java/fabric/egg-fabric.json @@ -3,7 +3,7 @@ "meta": { "version": "PTDL_v1" }, - "exported_at": "2020-12-06T19:54:35-08:00", + "exported_at": "2021-02-17T10:45:06-05:00", "name": "Fabric", "author": "accounts@bofanodes.io", "description": "Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.", @@ -18,7 +18,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Fabric MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq unzip dos2unix wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nif [ -z \"$FABRIC_VERSION\" ] || [ \"$FABRIC_VERSION\" == \"latest\" ]; then\r\nFABRIC_VERSION=$(curl https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/ | grep -Po '(?<=href=\")[^\"]*' | sort -h | tail -1 | sed 's,\/,,g')\r\nwget https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\nelse\r\nwget https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\nfi\r\njava -jar fabric-installer-$FABRIC_VERSION.jar server -downloadMinecraft\r\necho -e \"Install Complete\"", + "script": "#!\/bin\/bash\r\n# Fabric MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq unzip dos2unix wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Enable snapshots\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$MC_VERSION\" == \"snapshot\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nif [ -z \"$FABRIC_VERSION\" ] || [ \"$FABRIC_VERSION\" == \"latest\" ]; then\r\n FABRIC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/installer | jq -r '.[0].version')\r\nfi\r\nwget -O fabric-installer.jar https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\njava -jar fabric-installer.jar server -mcversion $MC_VERSION -downloadMinecraft\r\necho -e \"Install Complete\"", "container": "openjdk:11-jdk-slim", "entrypoint": "bash" } @@ -33,6 +33,15 @@ "user_editable": true, "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" }, + { + "name": "Minecraft Version", + "description": "The version of Minecraft to install. Use \"latest\" to install the latest version, or use \"snapshot\" to install the latest snapshot.", + "env_variable": "MC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15" + }, { "name": "Fabric Version", "description": "The version of Fabric to install.", diff --git a/minecraft/java/forge/forge/egg-forge-enhanced.json b/minecraft/java/forge/forge/egg-forge-enhanced.json index f145f4e1..1386a760 100644 --- a/minecraft/java/forge/forge/egg-forge-enhanced.json +++ b/minecraft/java/forge/forge/egg-forge-enhanced.json @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq\r\n\r\n#Go into main direction\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nif [ ! -z ${FORGE_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/${FORGE_VERSION}\/forge-${FORGE_VERSION}\r\n FORGE_JAR=forge-${FORGE_VERSION}.jar\r\nelse\r\n JSON_DATA=$(curl -sSL https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/promotions_slim.json)\r\n\r\n if [ \"${MC_VERSION}\" == \"latest\" ] || [ \"${MC_VERSION}\" == \"\" ] ; then\r\n echo -e \"getting latest recommended version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"recommended\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n \tBUILD_TYPE=recommended\r\n fi\r\n\r\n if [ \"${BUILD_TYPE}\" != \"recommended\" ] && [ \"${BUILD_TYPE}\" != \"latest\" ]; then\r\n BUILD_TYPE=recommended\r\n fi\r\n\r\n echo -e \"minecraft version: ${MC_VERSION}\"\r\n echo -e \"build type: ${BUILD_TYPE}\"\r\n\r\n ## some variables for getting versions and things\r\n FILE_SITE=$(echo -e ${JSON_DATA} | jq -r '.homepage' | sed \"s\/http:\/https:\/g\")\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n ## locating the forge version\r\n if [ \"${VERSION_KEY}\" == \"\" ] && [ \"${BUILD_TYPE}\" == \"recommended\" ]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"recommended\"))')\r\n fi\r\n\r\n ## Error if the mc version set wasn't valid.\r\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\r\n \techo -e \"The install failed because there is no valid version of forge for the version on minecraft selected.\"\r\n \texit 1\r\n fi\r\n\r\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\n if [ \"${MC_VERSION}\" == \"1.7.10\" ] || [ \"${MC_VERSION}\" == \"1.8.9\" ]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\r\n if [ \"${MC_VERSION}\" == \"1.7.10\" ]; then\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\r\n fi\r\n else\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar\r\n fi\r\nfi\r\n\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link closing out\"\r\n exit 3\r\nfi\r\n\r\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/installer.jar ]; then\r\n echo \"!!! Error by downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n\r\nmv $FORGE_JAR $SERVER_JARFILE\r\n\r\n#Deleting installer.jar\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar", + "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq\r\n\r\n#Go into main direction\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nif [ ! -z ${FORGE_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/${FORGE_VERSION}\/forge-${FORGE_VERSION}\r\n FORGE_JAR=forge-${FORGE_VERSION}*.jar\r\nelse\r\n JSON_DATA=$(curl -sSL https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/promotions_slim.json)\r\n\r\n if [ \"${MC_VERSION}\" == \"latest\" ] || [ \"${MC_VERSION}\" == \"\" ] ; then\r\n echo -e \"getting latest recommended version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"recommended\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n \tBUILD_TYPE=recommended\r\n fi\r\n\r\n if [ \"${BUILD_TYPE}\" != \"recommended\" ] && [ \"${BUILD_TYPE}\" != \"latest\" ]; then\r\n BUILD_TYPE=recommended\r\n fi\r\n\r\n echo -e \"minecraft version: ${MC_VERSION}\"\r\n echo -e \"build type: ${BUILD_TYPE}\"\r\n\r\n ## some variables for getting versions and things\r\n FILE_SITE=$(echo -e ${JSON_DATA} | jq -r '.homepage' | sed \"s\/http:\/https:\/g\")\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n ## locating the forge version\r\n if [ \"${VERSION_KEY}\" == \"\" ] && [ \"${BUILD_TYPE}\" == \"recommended\" ]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"recommended\"))')\r\n fi\r\n\r\n ## Error if the mc version set wasn't valid.\r\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\r\n \techo -e \"The install failed because there is no valid version of forge for the version on minecraft selected.\"\r\n \texit 1\r\n fi\r\n\r\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\n if [ \"${MC_VERSION}\" == \"1.7.10\" ] || [ \"${MC_VERSION}\" == \"1.8.9\" ]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\r\n if [ \"${MC_VERSION}\" == \"1.7.10\" ]; then\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\r\n fi\r\n else\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar\r\n fi\r\nfi\r\n\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link closing out\"\r\n exit 3\r\nfi\r\n\r\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/installer.jar ]; then\r\n echo \"!!! Error by downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n\r\nmv $FORGE_JAR $SERVER_JARFILE\r\n\r\n#Deleting installer.jar\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } @@ -65,4 +65,4 @@ "rules": "nullable|string|max:20" } ] -} \ No newline at end of file +} diff --git a/minecraft/java/ftb/egg-ftb-modpacksch-server.json b/minecraft/java/ftb/egg-ftb-modpacksch-server.json index 48f6a86e..dfbbbc76 100644 --- a/minecraft/java/ftb/egg-ftb-modpacksch-server.json +++ b/minecraft/java/ftb/egg-ftb-modpacksch-server.json @@ -21,7 +21,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\n\r\n# Download needed software.\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq dos2unix\r\n}\r\n\r\n\r\nfunction get_download {\r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] && [ \"${FTB_SEARCH_TERM}\" != \"\" ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n \r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\n fi\r\n \r\n if [ -z ${FTB_MODPACK_VERSION_ID} ] && [ \"${FTB_VERSION_STRING}\" != \"\" ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\n fi\r\n \r\n echo -e \"ID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID}\"\r\n \r\n cd \/mnt\/server\r\n \r\n curl https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID}\/${FTB_MODPACK_VERSION_ID}\/server\/linux --output serversetup\r\n chmod +x .\/serversetup\r\n .\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} <<< 'y'\r\n}\r\n\r\nfunction cleanup {\r\n rm -rf serversetup\r\n mv forge-*.jar forge-server.jar\r\n}\r\n\r\ninstall_required\r\nget_download\r\ncleanup", + "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\n\r\n# Download needed software.\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq dos2unix\r\n}\r\n\r\n\r\nfunction get_download {\r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] && [ \"${FTB_SEARCH_TERM}\" != \"\" ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n \r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\n fi\r\n \r\n if [ -z ${FTB_MODPACK_VERSION_ID} ] && [ \"${FTB_VERSION_STRING}\" != \"\" ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\n fi\r\n \r\n echo -e \"ID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID}\"\r\n \r\n cd \/mnt\/server\r\n \r\n curl https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID}\/${FTB_MODPACK_VERSION_ID}\/server\/linux --output serversetup\r\n chmod +x .\/serversetup\r\n .\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto\r\n}\r\n\r\nfunction cleanup {\r\n rm -rf serversetup\r\n mv forge-*.jar forge-server.jar\r\n}\r\n\r\ninstall_required\r\nget_download\r\ncleanup", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } diff --git a/minecraft/java/magma/egg-magma.json b/minecraft/java/magma/egg-magma.json index c77aebdf..597260f6 100644 --- a/minecraft/java/magma/egg-magma.json +++ b/minecraft/java/magma/egg-magma.json @@ -1,17 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-03-28T14:53:55-04:00", + "exported_at": "2021-01-25T03:08:06-08:00", "name": "Magma", "author": "support@pterodactyl.io", "description": "Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability.", - "image": "quay.io\/pterodactyl\/core:java", + "features": null, "images": [ "quay.io\/pterodactyl\/core:java", "quay.io\/pterodactyl\/core:java-11" ], + "file_denylist": "", "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", @@ -21,9 +23,9 @@ }, "scripts": { "installation": { - "script": "## 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## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\n## get latest download link\r\necho -e \"Set to download the ${BUILD} build\"\r\nif [ \"${BUILD}\" == \"dev\" ]; then\r\n echo -e \"dev tag is ${tag}\"\r\nfi\r\n\r\ncase ${BUILD} in\r\n\r\n \"recommended\" | \"stable\" | \"latest\")\r\n DOWNLOAD_URL=\"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/${VANILLA_VERSION}\/stable\/latest\/download\"\r\n ;;\r\n\r\n \"dev\")\r\n DOWNLOAD_URL=\"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/${VANILLA_VERSION}\/dev\/${TAG}\/download\"\r\n ;;\r\n\r\n *)\r\n DOWNLOAD_URL=\"https:\/\/api.magmafoundation.org\/api\/resources\/magma\/${VANILLA_VERSION}\/stable\/latest\/download\"\r\n ;;\r\nesac\r\n\r\necho -e \"Download URL is ${DOWNLOAD_URL}\"\r\n\r\n## validate download 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\n# Adding '.jar' if it isn't part of the file name\r\nif [[ ${SERVER_JARFILE} == *\\.jar ]]; then\r\n echo -e \"adding.jar to server file name\"\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\n## mv old server files\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n echo -e \"moving old server.jar\"\r\n mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\n## download files\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\r\n\r\necho -e \"Install Complete\"", - "container": "alpine:3.10", - "entrypoint": "ash" + "script": "apt update\r\napt install -y curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -z ${MC_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/api.magmafoundation.org\/api\/resources\/magma\/${MC_VERSION}\/dev\/latest\/download\r\nelse\r\n DOWNLOAD_LINK=https:\/\/api.magmafoundation.org\/api\/resources\/magma\/1.12.2\/dev\/latest\/download\r\nfi\r\n\r\necho -e \"Download URL is ${DOWNLOAD_LINK}\"\r\n\r\n## validate download link\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. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${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\n## mv old server files\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n echo -e \"moving old server.jar\"\r\n mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\n## download files\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -s -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\n\r\necho -e \"Install Complete\"", + "container": "debian:buster-slim", + "entrypoint": "bash" } }, "variables": [ @@ -32,36 +34,18 @@ "description": "The name of the server jarfile to run the server with.", "env_variable": "SERVER_JARFILE", "default_value": "server.jar", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": false, + "user_editable": false, "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" }, { - "name": "Server Version", - "description": "The version of Minecraft Vanilla to install.\r\n\r\nOnly version currently supported is 1.12.2 as that is all there are builds for.", - "env_variable": "VANILLA_VERSION", - "default_value": "1.12.2", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|between:3,15" - }, - { - "name": "Magma Build", - "description": "What version of magma to download.\r\n\r\nrecommended, stable, latest = current stable\r\ndev = latest dev build", - "env_variable": "BUILD", - "default_value": "latest", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:20" - }, - { - "name": "Magma Dev Tag", - "description": "The dev tagged version to download. default is latest.", - "env_variable": "TAG", - "default_value": "latest", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:20" + "name": "Minecraft Version", + "description": "Optional.\r\n\r\nSpecify vanilla version other than default 1.12.2.", + "env_variable": "MC_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20" } ] } \ No newline at end of file diff --git a/minecraft/java/mohist/egg-mohist.json b/minecraft/java/mohist/egg-mohist.json index 947a2693..88b5dade 100644 --- a/minecraft/java/mohist/egg-mohist.json +++ b/minecraft/java/mohist/egg-mohist.json @@ -41,7 +41,7 @@ "name": "Minecraft Version", "description": "The version of Minecraft to download.", "env_variable": "MC_VERSION", - "default_value": "1.16.4", + "default_value": "1.16.5", "user_viewable": true, "user_editable": true, "rules": "required|string|max:20" @@ -65,4 +65,4 @@ "rules": "required|string|max:20" } ] -} \ No newline at end of file +} diff --git a/software/code-server/README.md b/software/code-server/README.md new file mode 100644 index 00000000..f1863224 --- /dev/null +++ b/software/code-server/README.md @@ -0,0 +1,13 @@ +# Code-Server + +### From the [Code-Server](https://github.com/cdr/code-server) GitHub + +Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and access it in the browser. + +### Server Ports + +Ports required to run the server in a table format. + +| Port | default | +| ---- | ------- | +| Game | 8080 | diff --git a/software/code-server/egg-code--server.json b/software/code-server/egg-code--server.json new file mode 100644 index 00000000..f9d01f4a --- /dev/null +++ b/software/code-server/egg-code--server.json @@ -0,0 +1,49 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-01-27T07:26:08+01:00", + "name": "Code-Server", + "author": "mario.franze@gmail.com", + "description": "Run VS Code on any machine anywhere and access it in the browser.", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_nodejs-14" + ], + "startup": "sh .local\/lib\/code-server-{{VERSION}}\/bin\/code-server", + "config": { + "files": "{\r\n \".config\/code-server\/config.yaml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"password\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"bind-addr\": \"bind-addr: 0.0.0.0:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"info HTTP server listening on\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "apt update\r\napt install curl -y\r\n\r\n# Create initial directories\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Create needed directories\r\nmkdir -p \/mnt\/server\/.local\/lib \/mnt\/server\/.local\/bin \/mnt\/server\/.config\/code-server \/mnt\/server\/projects\r\n\r\n# Change permission of projects directory so it can be accessed by code-server\r\nchmod 777 \/mnt\/server\/projects\r\ntouch \"\/mnt\/server\/projects\/PLACE YOUR PROJECTS HERE\"\r\n\r\n# Download the given Version and extract it\r\ncurl -fL https:\/\/github.com\/cdr\/code-server\/releases\/download\/v${VERSION}\/code-server-${VERSION}-linux-amd64.tar.gz \\\r\n | tar -C \/mnt\/server\/.local\/lib -xz\r\nmv \/mnt\/server\/.local\/lib\/code-server-${VERSION}-linux-amd64 \/mnt\/server\/.local\/lib\/code-server-${VERSION}\r\nPATH=\"\/mnt\/server\/.local\/bin:$PATH\"\r\necho \"password: changeme\r\nbind-addr: 0.0.0.0\r\nauth: password\r\ncert: false\" > \/mnt\/server\/.config\/code-server\/config.yaml", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Password", + "description": "Passwort to login to your Code-Server instance", + "env_variable": "PASSWORD", + "default_value": "changeme", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32" + }, + { + "name": "Version", + "description": "Version for (re)installation", + "env_variable": "VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + } + ] +} \ No newline at end of file diff --git a/steamcmd_servers/README.md b/steamcmd_servers/README.md index 87f9f1f8..5f8836e4 100644 --- a/steamcmd_servers/README.md +++ b/steamcmd_servers/README.md @@ -10,9 +10,9 @@ This is a collection of servers that use SteamCMD to install. ## Arma [Arma](arma) -* [Arma 3](arma/arma3) -* [Arma 3 64 Bit](arma/arma3_x64) -* [Arma 3 Headless Client](arma/arma3_headless_client) + * [Arma 3](arma/arma3) + * [Arma 3 64 Bit](arma/arma3_x64) + * [Arma 3 Headless Client](arma/arma3_headless_client) ## Avorion [Avorion](avorion) @@ -50,6 +50,9 @@ This is a collection of servers that use SteamCMD to install. ## Killing Floor 2 [Killing Floor 2](killing_floor_2) +## Modiverse +[Modiverse](modiverse) + ## Mordhau [Mordhau](mordhau) @@ -62,6 +65,9 @@ This is a collection of servers that use SteamCMD to install. ## Pavlov VR [Pavlov VR](pavlov_vr) +## Post Scriptum +[Post Scriptum](post_scriptum) + ## Project Zomboid [Project Zomboid](project_zomboid) @@ -84,6 +90,9 @@ This is a collection of servers that use SteamCMD to install. ## Soldat [Soldat](soldat) +## Space Engineers +[Space Engineers](space_engineers) + ## Squad [Squad](squad) @@ -96,6 +105,9 @@ This is a collection of servers that use SteamCMD to install. ## Stormworks: Build and Rescue [Stormworks: Build and Rescue](stormworks) +## Subnautica: Nitrox Mod +[Subnautica: Nitrox Mod](subnautica_nitrox_mod) + ## Sven coop [Sven Co-op](svencoop) @@ -109,4 +121,9 @@ This is a collection of servers that use SteamCMD to install. [Tower Unite](tower_unite) ## Unturned -[Unturned](unturned) \ No newline at end of file +[Unturned](unturned) + +## Valheim +[Valheim](/valheim) + * [Valheim Vanilla](valheim_vanilla) + * [Valheim Plus Mod](valheim_plus) \ No newline at end of file diff --git a/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json index 78614403..03305ffa 100644 --- a/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json +++ b/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json @@ -1,14 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-09-13T10:56:00-04:00", + "exported_at": "2021-03-04T06:38:31+02:00", "name": "Ark: Survival Evolved", "author": "dev@shepper.fr", "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK", - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_source", - "startup": "rmv() { echo -e \"stoppping server\"; rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c saveworld && rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c DoExit; }; trap rmv 15; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled={{ENABLE_RCON}}$( [ \"$BATTLE_EYE\" == \"0\" ] || printf %s '?-NoBattlEye' ) -server -log & until echo \"waiting for rcon connection...\"; rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD}; do sleep 5; done", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_source" + ], + "startup": "rmv() { echo -e \"stoppping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c saveworld && rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c DoExit; }; trap rmv 15; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled={{ENABLE_RCON}}$( [ \"$BATTLE_EYE\" == \"0\" ] || printf %s '?-NoBattlEye' ) -server -log & until echo \"waiting for rcon connection...\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD}; do sleep 5; done", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\",\r\n \"userInteraction\": []\r\n}", @@ -28,8 +32,8 @@ "description": "If specified, players must provide this password to join the server.", "env_variable": "ARK_PASSWORD", "default_value": "", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "nullable|alpha_dash|between:1,100" }, { @@ -37,8 +41,8 @@ "description": "If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.", "env_variable": "ARK_ADMIN_PASSWORD", "default_value": "PleaseChangeMe", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "nullable|alpha_dash|between:1,100" }, { @@ -46,8 +50,8 @@ "description": "Available Maps: TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction, Valguero_P, Genesis", "env_variable": "SERVER_MAP", "default_value": "TheIsland", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|string|max:20" }, { @@ -55,8 +59,8 @@ "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.", "env_variable": "SRCDS_APPID", "default_value": "376030", - "user_viewable": 1, - "user_editable": 0, + "user_viewable": true, + "user_editable": false, "rules": "nullable|numeric" }, { @@ -64,8 +68,8 @@ "description": "ARK server name", "env_variable": "SESSION_NAME", "default_value": "A Pterodactyl Hosted ARK Server", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|string|max:128" }, { @@ -73,8 +77,8 @@ "description": "Enable or disable rcon system. (true or false)\r\n\r\nDefault True for the console to work.", "env_variable": "ENABLE_RCON", "default_value": "True", - "user_viewable": 1, - "user_editable": 0, + "user_viewable": true, + "user_editable": false, "rules": "required|string|in:True,False" }, { @@ -82,8 +86,8 @@ "description": "ARK rcon port used by rcon tools.", "env_variable": "RCON_PORT", "default_value": "27020", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|numeric" }, { @@ -91,8 +95,8 @@ "description": "ARK query port used by steam server browser and ark client server browser.", "env_variable": "QUERY_PORT", "default_value": "27015", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|numeric" }, { @@ -100,8 +104,8 @@ "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 0. Set to 1 to update", "env_variable": "AUTO_UPDATE", "default_value": "0", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|boolean" }, { @@ -109,8 +113,8 @@ "description": "Enable BattleEye\r\n\r\n0 to disable\r\n1 to enable\r\n\r\ndefault=\"1\"", "env_variable": "BATTLE_EYE", "default_value": "1", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|boolean" } ] diff --git a/steamcmd_servers/arma/README.md b/steamcmd_servers/arma/README.md index 15e5389c..5598764f 100644 --- a/steamcmd_servers/arma/README.md +++ b/steamcmd_servers/arma/README.md @@ -4,5 +4,3 @@ ARMA is a series of first-person tactical military shooters, originally released ## Arma 3 * [Arma 3](arma3) -* [Arma 3 64 Bit](arma3_x64) -* [Arma 3 Headless Client](arma3_headless_client) \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3/README.md b/steamcmd_servers/arma/arma3/README.md index 15eb3296..968ee770 100644 --- a/steamcmd_servers/arma/arma3/README.md +++ b/steamcmd_servers/arma/arma3/README.md @@ -1,20 +1,38 @@ # Arma 3 ### From their [Site](https://arma3.com/) -Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. +Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. +### Egg Capabilities +- Configurable to run 32 or 64-bit versions of the server. +- Configurable to run Beta/Performance binaries of the server (if desired; advanced users only). +- Able to download server updates. +- Able to download Steam Workshop mods\* and move `.bikey`'s to the `/keys/` directory (\*see Installation Requirements). +- Configurable to run up to 5 Headless Clients in parallel with the main server (may require additional performance overhead). -### Additional settings +### Installation Requirements +- A valid, real Steam account, with **Steam Guard turned off**, is required to install the server (default "anonymous" login cannot be used). For security reasons it is [recommended](https://developer.valvesoftware.com/wiki/SteamCMD#With_a_Steam_account) that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3. +- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the server if desired. Hosts may feel free to delete the "Steam Workshop Mods to Download/Update" variable if they would not like to offer it's functionallity. + +### Minimum RAM Warning +This server requires about 2048 MB of RAM to run properly. If used, every Headless Client uses an additional 2048 MB of RAM as well. + +### CPU Usage Information +ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU alloted to it for AI processing seems to be limited as well. Therefore, a Headless Client ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used. + +### Additional Settings Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. +These can help you fine tune how the server will behave during runtime. + +*Note: The `-maxMem=` flag is currently known to cause an unknown segmentaion fault crash on startup. Other hardware related flags may cause similar behavior.* ### Server Ports -Ports required to run the server in a table format. +Default server ports. **All ports are required.** Ports after the Main port are relative to the main port (For example: The BattlEye port is always 4 ports higher than the main port). It is [recommended](https://community.bistudio.com/wiki/Arma_3:_Dedicated_Server#Port_Forwarding) that each server be 100 ports seperate from each other. -| Port | default | +| Port | Default | |---------|---------| -| Game | 2302-2306 | -| BattleEye | 2344-2345 | +| **Arma 3 Game & VON (Main)** | 2302 | +| Steam Query (+1) | 2303 | +| Steam Port (+2) | 2304 | +| BattleEye (+4) | 2306 | #### Mods/Plugins may require ports to be added to the server. diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg index 7b5a1c99..aa2c8aa4 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg +++ b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg @@ -1,32 +1,34 @@ // **************************************************************************** // * -// Arma 3 - basic.cfg * -// Version 060116 * +// ArmA 3 Basic Network Config File - basic.cfg * +// * +// More info about parameters: * +// https://community.bistudio.com/wiki/basic.cfg * // * // **************************************************************************** -// Defines network tuning parameters +// Defines network tuning parameters. // -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings +// This file is to be passed to the -cfg parameter on the command line for the server. +// The following settings are the suggested settings. +// Some settings are disabled (commented out) by default. Remove the // behind a setting to activate it. // BANDWIDTH SETTINGS // Bandwidth the server is guaranteed to have (in bps) // General guideline is NumberOfPlayers * 256kb // Default: 131072 -MinBandwidth=5120000; +//MinBandwidth=5120000; // Bandwidth the server can never go above (in bps) // For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; +//MaxBandwidth=10240000; // PACKET SETTINGS // Maximum number of packets per frame. // Increasing the value potentially decreases lag, but increases desync // Default: 128 -MaxMsgSend=2048; +//MaxMsgSend=2048; // Maximum payload of guaranteed packet (in b) // Small messages are packed to larger packets // Guaranteed packets are used for non-repetitive events, like shooting @@ -42,42 +44,16 @@ MaxSizeNonguaranteed=256; // Maximal size of a packet sent over the network // Only necessary if ISP forces lower packet size and there are connectivity issues // Default: 1400 -// class sockets{maxPacketSize=1400}; +//class sockets{maxPacketSize=1400}; // SMOOTHNESS SETTINGS // Minimal error required to send network updates for far units // Smaller values will make for smoother movement at long ranges, but will increase network traffic // Default: 0.003 -MinErrorToSend=0.01; +//MinErrorToSend=0.01; // Minimal error required to send network updates for near units // Using larger value can reduce traffic sent for near units // Also controls client to server traffic // Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=65536; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file +//MinErrorToSendNear=0.02; diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg index 2615bf70..20c439a2 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg +++ b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg @@ -1,17 +1,16 @@ // **************************************************************************** // * -// Arma 3 - server.cfg * -// Version 060117 * +// ArmA 3 Server Config File - server.cfg * +// * +// More info about parameters: * +// https://community.bistudio.com/wiki/server.cfg * // * // **************************************************************************** -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg +// Some settings are not listed here; see link above for extensive list. +// Some settings are disabled (commented out). Remove the // to enable them. - -// GENERAL SETTINGS +// === GLOBAL SETTINGS === // Hostname for server. hostname = "Arma 3 Server"; @@ -22,45 +21,16 @@ hostname = "Arma 3 Server"; // Admin Password //passwordAdmin = "ADMINPASSWORD"; -// Auto-admin -admins[] = {""}; +// Whitelisted Admins - Clients that do not need a password to login. +//admins[] = { "UID OR steamID64", "0123456789", "9876543210" }; -// Server Slots -maxPlayers = 32; +// Server Command Password - for scripting and certain mods. +//serverCommandPassword = "COMMANDPASSWORD"; -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -class Missions -{ - class Mission1 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission2 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission3 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission4 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; -}; +// Log File +logFile = "server_console.log"; +// RPT File Timestamp Format - none | short | full +timeStampFormat = "short"; // Message of the Day (MOTD) motd[] = { @@ -68,91 +38,129 @@ motd[] = { "TS3 Server: teamspeak.somewhere.com", "Web: www.example.com" }; +// MOTD Interval - Seconds between each message. +motdInterval = 5; -// MOTD Interval (Seconds) -motdInterval = 30; +// Missions Cycle +class Missions +{ + class Mission1 + { + template = MP_ZGM_m11.Altis; + difficulty = "Regular"; + class Params {}; + }; + class Mission2 + { + template = MP_ZGM_m12.Stratis; + difficulty = "Recruit"; + class Params {}; + }; +}; +// Whitelisted Missions - Only these missions can be selected on the mission select screen. +//missionWhitelist[] = { "MP_ZGM_m11.Altis", "MP_ZGM_m12.Stratis" }; -// VOTING +// === JOINING RULES === -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; +// Server Slots +maxPlayers = 32; -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; +// Enable BattlEye +BattlEye = 1; -// INGAME SETTINGS +// Addon Signature Verification - Verifies .pbos against .bisign files - 0 = Disabled | 2 = Enabled (v2) +verifySignatures = 2; -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. +// Kick Duplicate Player IDs - 0 = No | 1 = Yes +kickDuplicate = 1; +// Allow File Patching - 0 = No Clients | 1 = Headless Clients only | 2 = All Clients +allowedFilePatching = 0; +// Minimum Required Client Version +//requiredBuild = 999999999; +// LAN Mode +loopback = 0; +// UPNP Router Mode +upnp = 0; + +// Headless Client IP Whitelists +headlessClients[] = { "127.0.0.1" }; +localClient[] = { "127.0.0.1" }; + + +// === INGAME SETTINGS === + +// Advanced Flight Model Enforcement - 0 = Up to player | 1 = Advanced model enforced | 2 = Simple model enforced +forceRotorLibSimulation = 0; + +// Disable In-Game Voice Chat (Voice over Network) disableVoN = 0; - +// VoN Codec - 0 = older SPEEX codec | 1 = newer IETF standard OPUS codec +vonCodec = 1; // VoN Codec Quality // 0-10 = 8kHz (narrowband). // 11-20 = 16kHz (wideband). // 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; +vonCodecQuality = 10; -// Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; +// Persistent Mission - Keeps mission running when all players disconnect. +persistent = 0; -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; +// Allow Drawing in Map +drawingInMap = 1; -// Server Statistics -// Set this to 0 to opt-out! More info: https://community.bistudio.com/wiki/Arma_3_Analytics -statisticsEnabled = 1; +// Enforce Difficulty - Use "Custom" for ServerProfile-defined custom difficulty +forcedDifficulty = "regular"; -// SERVER SECURITY/ANTI HACK -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; +// === VOTING === -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; +// Allowed Vote Commands - Un-comment this to prevent voted commands (like vote-kick) +//allowedVoteCmds[] = {}; -// Kick Duplicate Player IDs -kickDuplicate = 1; +// Start mission-voting when X number of players connect. +voteMissionPlayers = 1; -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; +// Vote Threshold - Percentage of votes needed to confirm a vote. +voteThreshold = 0.33; -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; -// SCRIPTING ISSUES +// === CLIENT NETWORK HEALTH === + +// Seconds to wait before disconnecting a user which temporarily lost connection. +disconnectTimeout = 90; +// Max Desync Value +maxdesync = 150; +// Max Ping (ms) +maxping = 200; +// Max Packet Loss +maxpacketloss = 50; + +// Action to Take on Slow Network (defined above) +// Defines if {, , , } will be logged (0) or kicked (1) +kickClientsOnSlowNetwork[] = { 1, 1, 0, 1 }; + +// Kick Duration (temp-ban) on Network Kick +// Options {, , , } -- Timeout {>0 seconds; -1 until missionEnd; -2 until serverRestart} +kickTimeout[] = { {0, -1},{1, 1},{2, 5},{3, 1} }; + + +// === SERVER SIDE SCRIPTING === +// See https://community.bistudio.com/wiki/ArmA:_Server_Side_Scripting + onUserConnected = ""; onUserDisconnected = ""; doubleIdDetected = ""; -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) onUnsignedData = "kick (_this select 0)"; onHackedData = "kick (_this select 0)"; onDifferentData = ""; -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -headlessClients[] = {"127.0.0.1", "172.18.0.1"}; -localClient[] = {"127.0.0.1", "172.18.0.1"}; - -// BattlEye Anti-Cheat License -// 0 = decline -// 1 = accept -battleyeLicense = 1; +// Only allow files with these extensions to be loaded via loadFile command +allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; +// Only allow files with these extensions to be loaded via preprocessFile/preprocessFileLineNumber commands +allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; +// Only allow files with these extensions to be loaded via HTMLLoad command +allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; +// Leave commented to let missions/campaigns/addons decide what URIs are supported. Un-comment to define server-level restrictions for URIs +//allowedHTMLLoadURIs = {}; diff --git a/steamcmd_servers/arma/arma3/egg-arma3.json b/steamcmd_servers/arma/arma3/egg-arma3.json index 66496d91..43013c5b 100644 --- a/steamcmd_servers/arma/arma3/egg-arma3.json +++ b/steamcmd_servers/arma/arma3/egg-arma3.json @@ -1,108 +1,166 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2019-12-26T15:50:38-05:00", + "exported_at": "2021-01-30T22:22:39+00:00", "name": "Arma 3", - "author": "daave@aaathats3as.com", + "author": "rehlmgaming@gmail.com", "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", - "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3", - "startup": ".\/arma3server -ip=0.0.0.0 -port={{SERVER_PORT}} -cfg={{BASIC}} -config={{CONFIG}} {{CUSTOM}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:game_arma3" + ], + "startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=\\\"{{BASIC}}\\\" -config=\\\"{{CONFIG}}\\\" -mod=\\\"{{MODIFICATIONS}}\\\" -serverMod=\\\"{{SERVERMODS}}\\\" {{STARTUP_PARAMS}}", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"Connected to Steam servers\",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"Host identity created.\",\r\n \"userInteraction\": []\r\n}", "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg", + "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} +force_install_dir \/mnt\/server +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg\r\nchmod 755 basic.cfg server.cfg", "container": "debian:buster-slim", "entrypoint": "bash" } }, "variables": [ { - "name": "Game App ID", - "description": "Steam CMD App ID.", - "env_variable": "SRCDS_APPID", + "name": "Arma 3 Dedicated Server App ID", + "description": "Used for installation and updates.", + "env_variable": "STEAMCMD_APPID", "default_value": "233780", - "user_viewable": 1, - "user_editable": 0, - "rules": "required|alpha_dash|between:1,100" + "user_viewable": false, + "user_editable": false, + "rules": "required|integer" }, { - "name": "Config", - "description": "Server config", - "env_variable": "CONFIG", - "default_value": "server.cfg", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Custom Command Line Option.", - "description": "Put -autoinit or related things in here :)", - "env_variable": "CUSTOM", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "SERVERMODS", - "description": "This is where you put the files that go along with the -serverMods startup option.", - "env_variable": "SERVERMODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Mods", - "description": "This is where you put mods that go along with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Steam User", - "description": "A Steam username with Arma3 on the account.", + "name": "Steam Username", + "description": "Used for installation and updates. Account does not need to own Arma 3, but must be a valid Steam account (anonymous login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. *This info is not visible to the server owner.*", "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": 0, - "user_editable": 0, + "default_value": "your_steam_username", + "user_viewable": false, + "user_editable": false, "rules": "required|string" }, { "name": "Steam Password", - "description": "Steam User Password", + "description": "Used for installation and updates. Steam Guard must be TURNED OFF for install to complete successfully. *This info is not visible to the server owner.*", "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": 0, - "user_editable": 0, - "rules": "nullable|string" + "default_value": "your_steam_password", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" }, { - "name": "Basic", - "description": "Basic network config", - "env_variable": "BASIC", - "default_value": "basic.cfg", - "user_viewable": 1, - "user_editable": 1, + "name": "Server Binary", + "description": "Server binary to call on server start. (32-bit: arma3server | 64-bit: arma3server_x64)", + "env_variable": "SERVER_BINARY", + "default_value": "arma3server_x64", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:arma3server,arma3server_x64,arma3serverprofiling,arma3serverprofiling_x64" + }, + { + "name": "Extra Startup Parameters", + "description": "See https:\/\/community.bistudio.com\/wiki\/Arma_3_Startup_Parameters for more info.", + "env_variable": "STARTUP_PARAMS", + "default_value": "-noLogs", + "user_viewable": true, + "user_editable": true, "rules": "string|nullable" }, { - "name": "Steam Auth Code", - "description": "Steam Auth Code only when you're using Steam Auth", - "env_variable": "STEAM_AUTH", + "name": "Server Configuration File", + "description": "See https:\/\/community.bistudio.com\/wiki\/server.cfg for more info.", + "env_variable": "CONFIG", + "default_value": "server.cfg", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable" + }, + { + "name": "Basic Network Configuration", + "description": "See https:\/\/community.bistudio.com\/wiki\/basic.cfg for more info.", + "env_variable": "BASIC", + "default_value": "basic.cfg", + "user_viewable": true, + "user_editable": true, + "rules": "required|string" + }, + { + "name": "Mods", + "description": "Mod folders to be used with the -mods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)", + "env_variable": "MODIFICATIONS", "default_value": "", - "user_viewable": 0, - "user_editable": 0, + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Server Mods", + "description": "Server-side only mod folders to be used with the -serverMods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)", + "env_variable": "SERVERMODS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Check for Server Updates", + "description": "Check for server updates on server start. (1 True | 0 False)", + "env_variable": "UPDATE_SERVER", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" + }, + { + "name": "Steam Workshop Mods to Download\/Update", + "description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format \"@ModIdNumber\". NOTE: Particularly large mods (ie. RHS, CUP, typically anything over 3 GB) may not download properly due to limitations of SteamCMD.", + "env_variable": "UPDATE_WORKSHOP", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable" + }, + { + "name": "Set Mods to Lowercase", + "description": "On server start, goes through all the mod folders listed in \"Mods\" & \"Server Mods\", and makes sure every folder and file is lowercase (to prevent errors). This is particularly useful to run ONCE after copying a mod from a Windows machine to the server, or if mods seem to not be loading.", + "env_variable": "MODS_LOWERCASE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "boolean" + }, + { + "name": "[Advanced] Extra Flags for SteamCMD", + "description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", + "env_variable": "STEAMCMD_EXTRA_FLAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "[Advanced] Headless Clients (HC)", + "description": "Number of Headless Clients (0 - 5) to launch parallel with the server. Be sure to set the following \"HC Connect Password\" variable if your server is password locked. PLEASE NOTE: Using a headless client is only recommended for advanced users, adds extra overhead to your permitted server resources, and is only beneficial if a properly written, HC compliant mission file is provided. See https:\/\/community.bistudio.com\/wiki\/Arma_3:_Headless_Client for more info.", + "env_variable": "HC_NUM", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,5" + }, + { + "name": "[Advanced] HC Connect Password", + "description": "If Headless Clients are used, this is the password used to connect to the server if the server is password locked.", + "env_variable": "HC_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" } ] -} \ No newline at end of file +} diff --git a/steamcmd_servers/arma/arma3_headless_client/README.md b/steamcmd_servers/arma/arma3_headless_client/README.md deleted file mode 100644 index c674f030..00000000 --- a/steamcmd_servers/arma/arma3_headless_client/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Arma 3 Headless Client -### From their [Site](https://community.bistudio.com/wiki/Arma_3_Headless_Client) -What is a Headless Client (HC) used for? -* Headless Client is used to offload AI calculations from the server -* Headless Client is integrated into game client and dedicated server executable (WIndows and Linux, use -client parameter) -* The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs in the server.cfg, - -### But why? -If you host an Arma 3 Server with lots of AI in it, the Server FPS will drop fast. -Since the server files are only 32 Bit you will need some kind of magical assistant to prevent slow AI. - -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. - -### Additional settings -Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. -If you want to know how to implement, take a look at the Wiki [here](https://community.bistudio.com/wiki/Arma_3_Headless_Client#Spawning_the_AI) or at a guide in the A3 Forums [here](https://forums.bohemia.net/forums/topic/178434-arma3-headless-client-guide/). - -### Server Ports -Since this is basically a client, this Egg does not need a port. \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json deleted file mode 100644 index 775b722a..00000000 --- a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v1" - }, - "exported_at": "2019-12-26T15:50:34-05:00", - "name": "Arma 3 Headless Client", - "author": "brainp4in@blueberry-hood-clan.de", - "description": "Headless Clients are used to offload AI calculations from the Arma 3 Server.", - "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3", - "startup": ".\/arma3server -client -connect={{SERVERIP}} -port={{SERVERPORT}} {{CUSTOM}} -mod=\"{{MODS}}\"", - "config": { - "files": "{}", - "startup": "{\r\n \"done\": \"Client connected\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg", - "container": "ubuntu:18.04", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Game App ID", - "description": "Steam CMD App ID.", - "env_variable": "SRCDS_APPID", - "default_value": "233780", - "user_viewable": 1, - "user_editable": 0, - "rules": "required|alpha_dash|between:1,100" - }, - { - "name": "Server IP", - "description": "IP address of the Arma 3 server that should be supported by the Headless Client.", - "env_variable": "SERVERIP", - "default_value": "127.0.0.1", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:30" - }, - { - "name": "Server Port", - "description": "Port of the Arma 3 server that should be supported by the Headless Client.", - "env_variable": "SERVERPORT", - "default_value": "2302", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:5" - }, - { - "name": "Custom Command Line Option.", - "description": "Put -autoinit or related things in here :)", - "env_variable": "CUSTOM", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Mods", - "description": "This is where you put mods that go along with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, - "rules": "string|nullable" - }, - { - "name": "Steam User", - "description": "A Steam username with Arma3 on the account.", - "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": 0, - "user_editable": 0, - "rules": "required|string" - }, - { - "name": "Steam Password", - "description": "Steam User Password", - "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": 0, - "user_editable": 0, - "rules": "nullable|string" - }, - { - "name": "Steam Auth Code", - "description": "Steam Auth Code only when you're using Steam Auth", - "env_variable": "STEAM_AUTH", - "default_value": "", - "user_viewable": 0, - "user_editable": 0, - "rules": "nullable|string" - } - ] -} \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_x64/README.md b/steamcmd_servers/arma/arma3_x64/README.md deleted file mode 100644 index 15eb3296..00000000 --- a/steamcmd_servers/arma/arma3_x64/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Arma 3 -### From their [Site](https://arma3.com/) -Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war. - -### Minimum RAM warning -This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though. - -### Additional settings -Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters). -This can help is you see the server using to many cores/threads on the server. - -### Server Ports -Ports required to run the server in a table format. - -| Port | default | -|---------|---------| -| Game | 2302-2306 | -| BattleEye | 2344-2345 | - -#### Mods/Plugins may require ports to be added to the server. diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json b/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json deleted file mode 100644 index a31e703d..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-64-bit.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v1" - }, - "exported_at": "2020-11-18T10:58:51-05:00", - "name": "Arma 3 (64-bit)", - "author": "brycea@terrahost.cloud", - "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.", - "features": null, - "image": "quay.io\/terrahost\/pterodactyl-images:game_arma3_x64", - "startup": ".\/arma3server_x64 -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/profiles -bepath=.\/battleye -cfg={{BASIC}} -config={{CONFIG}} {{CUSTOM}} -mod={{MODS}} -serverMod={{SERVERMODS}}", - "config": { - "files": "{}", - "startup": "{\r\n \"done\": \"Connected to Steam servers\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n## install required packages to install arma\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates\r\n## install steamcmd\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\n## needs to be used for steamcmd to operate correctly\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install arma\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n# 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\nchmod +x \/mnt\/server\/arma3server_x64\r\n# doesn't actually work with current 64 bit wrapper\r\nchmod +x \/mnt\/server\/arma3server", - "container": "ubuntu:20.04", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Game AppID", - "description": "", - "env_variable": "SRCDS_APPID", - "default_value": "233780", - "user_viewable": true, - "user_editable": false, - "rules": "required|numeric" - }, - { - "name": "Steam Username", - "description": "Used for installation", - "env_variable": "STEAM_USER", - "default_value": "anonymous", - "user_viewable": true, - "user_editable": false, - "rules": "required|string" - }, - { - "name": "Steam Password", - "description": "", - "env_variable": "STEAM_PASS", - "default_value": "!xNfMpAN*Lr3iMsJ", - "user_viewable": true, - "user_editable": false, - "rules": "nullable|string" - }, - { - "name": "Server Configuration File", - "description": "https:\/\/community.bistudio.com\/wiki\/server.cfg", - "env_variable": "CONFIG", - "default_value": "server.cfg", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable" - }, - { - "name": "Basic Network Config", - "description": "Network Configuration", - "env_variable": "BASIC", - "default_value": "basic.cfg", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable" - }, - { - "name": "Check for Updates", - "description": "Check for updates on server start.\r\n1 True | 0 False", - "env_variable": "UPDATE", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|numeric" - }, - { - "name": "Mods", - "description": "Client mods with the -mods startup option", - "env_variable": "MODS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "Server Mods", - "description": "Server-sided mods with the -serverMods startup option.", - "env_variable": "SERVERMODS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "Extra Flags for SteamCMD", - "description": "Typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3", - "env_variable": "EXTRA_FLAGS", - "default_value": "", - "user_viewable": true, - "user_editable": false, - "rules": "nullable|string" - } - ] -} \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg b/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg deleted file mode 100644 index 7b5a1c99..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/basic.cfg +++ /dev/null @@ -1,83 +0,0 @@ -// **************************************************************************** -// * -// Arma 3 - basic.cfg * -// Version 060116 * -// * -// **************************************************************************** - -// Defines network tuning parameters -// -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings - -// BANDWIDTH SETTINGS - -// Bandwidth the server is guaranteed to have (in bps) -// General guideline is NumberOfPlayers * 256kb -// Default: 131072 -MinBandwidth=5120000; -// Bandwidth the server can never go above (in bps) -// For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; - -// PACKET SETTINGS - -// Maximum number of packets per frame. -// Increasing the value potentially decreases lag, but increases desync -// Default: 128 -MaxMsgSend=2048; -// Maximum payload of guaranteed packet (in b) -// Small messages are packed to larger packets -// Guaranteed packets are used for non-repetitive events, like shooting -// Lower value means more packets are sent, so less events will get combined -// Default: 512 -MaxSizeGuaranteed=512; -// Maximum payload of non-guaranteed packet (in b) -// Increasing this value may improve bandwidth requirement, but may also increase lag -// Largest factor in desync -// Guidance is half of MaxSizeGuaranteed -// Default: 256 -MaxSizeNonguaranteed=256; -// Maximal size of a packet sent over the network -// Only necessary if ISP forces lower packet size and there are connectivity issues -// Default: 1400 -// class sockets{maxPacketSize=1400}; - -// SMOOTHNESS SETTINGS - -// Minimal error required to send network updates for far units -// Smaller values will make for smoother movement at long ranges, but will increase network traffic -// Default: 0.003 -MinErrorToSend=0.01; -// Minimal error required to send network updates for near units -// Using larger value can reduce traffic sent for near units -// Also controls client to server traffic -// Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=65536; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file diff --git a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg b/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg deleted file mode 100644 index 2615bf70..00000000 --- a/steamcmd_servers/arma/arma3_x64/egg-arma3-config/server.cfg +++ /dev/null @@ -1,158 +0,0 @@ -// **************************************************************************** -// * -// Arma 3 - server.cfg * -// Version 060117 * -// * -// **************************************************************************** - -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg - - -// GENERAL SETTINGS - -// Hostname for server. -hostname = "Arma 3 Server"; - -// Server password - for private servers. -//password = "arma3pass"; - -// Admin Password -//passwordAdmin = "ADMINPASSWORD"; - -// Auto-admin -admins[] = {""}; - -// Server Slots -maxPlayers = 32; - -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -class Missions -{ - class Mission1 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission2 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission3 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; - class Mission4 - { - template = ; - difficulty = "Regular"; - class Params {}; - }; -}; - -// Message of the Day (MOTD) -motd[] = { - "Welcome to My Arma 3 Server", - "TS3 Server: teamspeak.somewhere.com", - "Web: www.example.com" -}; - -// MOTD Interval (Seconds) -motdInterval = 30; - - -// VOTING - -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; - -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; - -// INGAME SETTINGS - -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. -disableVoN = 0; - -// VoN Codec Quality -// 0-10 = 8kHz (narrowband). -// 11-20 = 16kHz (wideband). -// 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; - -// Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; - -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; - -// Server Statistics -// Set this to 0 to opt-out! More info: https://community.bistudio.com/wiki/Arma_3_Analytics -statisticsEnabled = 1; - -// SERVER SECURITY/ANTI HACK - -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; - -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; - -// Kick Duplicate Player IDs -kickDuplicate = 1; - -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; - -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; - -// SCRIPTING ISSUES -onUserConnected = ""; -onUserDisconnected = ""; -doubleIdDetected = ""; - -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) -onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; -onDifferentData = ""; - -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -headlessClients[] = {"127.0.0.1", "172.18.0.1"}; -localClient[] = {"127.0.0.1", "172.18.0.1"}; - -// BattlEye Anti-Cheat License -// 0 = decline -// 1 = accept -battleyeLicense = 1; diff --git a/steamcmd_servers/dont_starve/README.md b/steamcmd_servers/dont_starve/README.md index 37c701d3..7d8d6e36 100644 --- a/steamcmd_servers/dont_starve/README.md +++ b/steamcmd_servers/dont_starve/README.md @@ -11,7 +11,7 @@ Minimum required memory to run the server is around 512mb for a single user.. ### Server Ports -Don't Starve Together only requires a single port to run. The default is 7777 +Don't Starve Together only requires a single port to run. The default is 10999 | Port | default | |---------|---------| diff --git a/steamcmd_servers/eco/egg-eco.json b/steamcmd_servers/eco/egg-eco.json index 4b57f7b8..c879c81c 100644 --- a/steamcmd_servers/eco/egg-eco.json +++ b/steamcmd_servers/eco/egg-eco.json @@ -3,7 +3,7 @@ "meta": { "version": "PTDL_v1" }, - "exported_at": "2020-11-30T16:56:23+01:00", + "exported_at": "2021-02-08T10:56:34-06:00", "name": "Eco", "author": "info@goover.de", "description": "Eco is an online world from Strange Loop Games where players must build civilization using resources from an ecosystem that can be damaged and destroyed. The world of Eco is an incredibly reactive one, and whatever any player does in the world affects the underlying ecosystem.", @@ -12,7 +12,7 @@ "startup": "export DOTNET_BUNDLE_EXTRACT_BASE_DIR=.\/dotnet-bundle && .\/EcoServer", "config": { "files": "{\r\n \"Configs\/Network.eco\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"GameServerPort\": \"{{server.build.default.port}}\",\r\n \"WebServerPort\": \"{{server.build.env.WEB_PORT}}\",\r\n \"PublicServer\": \"{{server.build.env.PUB_SRV}}\",\r\n \"Password\": \"{{server.build.env.SRV_PWD}}\",\r\n \"UPnPEnabled\": \"{{server.build.env.UPNP}}\",\r\n \"Description\": \"{{server.build.env.SRV_DES}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"[Server Initialization]... \",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"Web Server now listening on\",\r\n \"userInteraction\": []\r\n}", "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}", "stop": "exit" }, @@ -79,4 +79,4 @@ "rules": "required|string|max:20" } ] -} \ No newline at end of file +} diff --git a/steamcmd_servers/holdfast/README.md b/steamcmd_servers/holdfast/README.md index d97a4082..73b47c7e 100644 --- a/steamcmd_servers/holdfast/README.md +++ b/steamcmd_servers/holdfast/README.md @@ -16,4 +16,8 @@ Fight on multiple fronts in Holdfast: Nations At War - A competitive multiplayer > If you want a new nest you need to create it before importing the egg. 6. Restart the daemon on your node before creating a server using the new egg(s). +server_port 20100 +steam_communications_port 8700 +steam_query_port 27000 + # You must restart your daemon after importing an egg diff --git a/steamcmd_servers/modiverse/README.md b/steamcmd_servers/modiverse/README.md new file mode 100644 index 00000000..f61dfa0e --- /dev/null +++ b/steamcmd_servers/modiverse/README.md @@ -0,0 +1,14 @@ +# Modiverse + +Modiverse provides a sandbox environment with the ability to create and play mods such as TTT, Deathrun, FortWars, RP, and more! Use the many sandbox tools to build complex worlds with props, lights, thrusters, wheels, and much much more! + +### Information +Default ServerConfiguration.json is provided to start the server, you must modify it with your own mods to customize the server. The game is currently in beta and as such the console is filled with debug spam, developers have noted that this will be removed when the game releases. + +## Server Ports + + +| Port | default | +|-------------|---------| +| Game | 7777 | +| Query | 27015 | \ No newline at end of file diff --git a/steamcmd_servers/modiverse/ServerConfiguration.json b/steamcmd_servers/modiverse/ServerConfiguration.json new file mode 100644 index 00000000..04f73490 --- /dev/null +++ b/steamcmd_servers/modiverse/ServerConfiguration.json @@ -0,0 +1,11 @@ +{ + "version": 1, + "pin": "0000", + "motdURL": "http://test.com/motd.html", + "motdDelay": 5, + "rconPassword" : "cHangeRC0nPasswOrD", + "mapCycle": + [ + {"gameMode":"2285067974","comment":"Deathrun, Deathrun Example Map, ","map":"2286680373","assets":["2229481041"],"duration":1800} + ] +} \ No newline at end of file diff --git a/steamcmd_servers/modiverse/egg-modiverse.json b/steamcmd_servers/modiverse/egg-modiverse.json new file mode 100644 index 00000000..2c74f9cc --- /dev/null +++ b/steamcmd_servers/modiverse/egg-modiverse.json @@ -0,0 +1,67 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-03-02T23:42:26+02:00", + "name": "Modiverse", + "author": "admin@softwarenoob.com", + "description": "Modiverse provides a sandbox environment with the ability to create and play mods such as TTT, Deathrun, FortWars, RP, and more! Use the many sandbox tools to build complex worlds with props, lights, thrusters, wheels, and much much more!", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source" + ], + "startup": ".\/KJMod\/Binaries\/Linux\/KJModServer -port={{SERVER_PORT}} -queryport={{QUERY_PORT}} -SteamServerName=\\\"{{HOSTNAME}}\\\" -KJModBaseUGCFolder=ServerData -DoNotRestartOnEmpty -InitUGCs -maxplayers={{MAX_PLAYERS}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"listening on port\"\r\n}", + "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Modiverse install\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\nAPP_ID=1549820\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"Downloading the game as Steam user ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${APP_ID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# Server Configuration \r\nif [ -f \/mnt\/server\/KJModServer.sh ]; then\r\n rm \/mnt\/server\/KJModServer.sh\r\n echo \"Removing default script\"\r\nfi\r\nif [ ! -d \"\/mnt\/server\/KJMod\/Binaries\/Linux\/ServerData\" ]; then\r\n echo \"ServerData folder missing....Creating ServerData Folder\"\r\n mkdir -p \/mnt\/server\/KJMod\/Binaries\/Linux\/ServerData\r\n fi\r\n if [ -f \/mnt\/server\/KJMod\/Binaries\/Linux\/ServerData\/ServerConfiguration.json ]; then\r\n echo \"Config file exists already, skipping config file download\"\r\n else\r\n echo \"Config file missing...Downloading default ServerConfiguration file\"\r\n cd \/mnt\/server\/KJMod\/Binaries\/Linux\/ServerData || exit\r\n curl -sS -o ServerConfiguration.json https:\/\/github.com\/\/parkervcp\/eggs\/raw\/master\/steamcmd_servers\/modiverse\/ServerConfiguration.json\r\nfi\r\nchmod +x \/mnt\/server\/KJMod\/Binaries\/Linux\/KJModServer\r\necho \"\"\r\necho \"Installation completed, have fun!\"", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "Server name as shown to players in the various server browsing windows", + "env_variable": "HOSTNAME", + "default_value": "Pterodactyl Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32" + }, + { + "name": "Query Port", + "description": "Query Port", + "env_variable": "QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric" + }, + { + "name": "Max Players", + "description": "The maximum amount of player slots, the value should be between 2 and 128.", + "env_variable": "MAX_PLAYERS", + "default_value": "128", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:2,128" + }, + { + "name": "Auto Update", + "description": "Auto-update the game each time server is started, enter value 0 to disable.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean" + } + ] +} diff --git a/steamcmd_servers/pixark/egg-pix-a-r-k.json b/steamcmd_servers/pixark/egg-pix-a-r-k.json index ef5cc6e1..d6aa04e8 100644 --- a/steamcmd_servers/pixark/egg-pix-a-r-k.json +++ b/steamcmd_servers/pixark/egg-pix-a-r-k.json @@ -1,15 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2021-01-01T18:31:11+02:00", + "exported_at": "2021-01-01T19:35:46+01:00", "name": "PixARK", "author": "hello@venatus.digital", "description": "A simple Docker container with Wine to run PixARK using Pterodactyl Panel", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_wine-source", - "startup": "wine64 .\/ShooterGame\/Binaries\/Win64\/PixARKServer.exe CubeWorld_Light?listen?MaxPlayers={{MAX_PLAYERS}}?Port={{SERVER_PORT}}?QueryPort={{QPORT}}?RCONPort={{RCPORT}}?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?CULTUREFORCOOKING=en -NoBattlEye -CubePort={{CUBEPORT}} -cubeworld=world -nosteamclient -NoHangDetection -game -server -log", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:ubuntu_wine-source" + ], + "startup": "wine64 .\/ShooterGame\/Binaries\/Win64\/PixARKServer.exe CubeWorld_Light?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SRV_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QPORT}}?RCONPort={{RCPORT}}?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?CULTUREFORCOOKING=en -NoBattlEye -CubePort={{CUBEPORT}} -cubeworld=world -nosteamclient -NoHangDetection -game -server -log", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Full Startup:\",\r\n \"userInteraction\": []\r\n}", @@ -18,8 +21,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# PixARK: Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit", - "container": "ubuntu:latest", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", + "container": "debian:buster-slim", "entrypoint": "bash" } }, @@ -86,6 +89,24 @@ "user_viewable": false, "user_editable": false, "rules": "required|numeric" + }, + { + "name": "WINDOWS_INSTALL", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20" + }, + { + "name": "Server Name", + "description": "Name of the Server !!!! NO SPACES ALLOWED !!!!", + "env_variable": "SRV_NAME", + "default_value": "PteroPixARKServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30" } ] -} +} \ No newline at end of file diff --git a/steamcmd_servers/post_scriptum/README.md b/steamcmd_servers/post_scriptum/README.md new file mode 100644 index 00000000..7c963a86 --- /dev/null +++ b/steamcmd_servers/post_scriptum/README.md @@ -0,0 +1,14 @@ +# Post Scriptum + +Post Scriptum is a WW2-themed first-person tactical shooter that provides an authentic WWII combat experience. Focusing on historical accuracy, large-scale battles, and a challenging battlefield demands an intense need for cohesion, communication, and teamwork. + +## Server Ports + +Post Scriptum requires Game and Query port to function, while RCON port is only required if you want to use RCON. + + +| Port | default | +|-------------|---------| +| Game | 10027 | +| Query | 10037 | +| RCON (optional) | 21114 | diff --git a/steamcmd_servers/post_scriptum/egg-post-scriptum.json b/steamcmd_servers/post_scriptum/egg-post-scriptum.json new file mode 100644 index 00000000..c31662aa --- /dev/null +++ b/steamcmd_servers/post_scriptum/egg-post-scriptum.json @@ -0,0 +1,148 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-02-22T13:23:01+04:00", + "name": "Post Scriptum", + "author": "admin@softwarenoob.com", + "description": "Post Scriptum is a WW2-themed first-person tactical shooter that provides an authentic WWII combat experience. Focusing on historical accuracy, large-scale battles, and a challenging battlefield demands an intense need for cohesion, communication, and teamwork.", + "features": null, + "images": [ + "quay.io\/pterodactyl\/core:source" + ], + "startup": ".\/PostScriptumServer.sh Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -RCONPORT={{RCON_PORT}} -RCONPASSWORD={{RCON_PASSWORD}} -fullcrashdump -log", + "config": { + "files": "{\r\n \"PostScriptum\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName={{server.build.env.hostname}}\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.team_change}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambalance}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.demo_recording}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Engine Initialization\",\r\n \"userInteraction\": []\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\napt update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 746200 ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Query Port", + "description": "Server Query port", + "env_variable": "QUERY_PORT", + "default_value": "10037", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric" + }, + { + "name": "RCON Port", + "description": "Port used for RCON connections", + "env_variable": "RCON_PORT", + "default_value": "21114", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric" + }, + { + "name": "RCON Password", + "description": "Password for RCON connections, leave empty to disable.", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|regex:\/^[a-zA-Z0-9]*$\/" + }, + { + "name": "Auto Update", + "description": "Auto-update the game each time server is started, enter value 0 to disable.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean" + }, + { + "name": "Server Name", + "description": "The name that will be displayed in the server browser list", + "env_variable": "hostname", + "default_value": "Pterodactyl Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32" + }, + { + "name": "Max Players", + "description": "Sets the maximum number of players.", + "env_variable": "maxplayers", + "default_value": "80", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric" + }, + { + "name": "Allow Team Change", + "description": "Allow players to change teams (true\/false)", + "env_variable": "allowteamchange", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Advertise Server", + "description": "Display the server in the public server browser list (true\/false)", + "env_variable": "advertise", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Reserved Slots", + "description": "The number of reserved slots", + "env_variable": "reservedslots", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:80" + }, + { + "name": "Prevent team change", + "description": "This will prevent players from changing teams when teams are not balanced (true\/false)", + "env_variable": "team_change", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Enforce Team Balance", + "description": "This will force team balance if the teams are uneven, by default 3 player difference. (true\/false)", + "env_variable": "teambalance", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Record Demos", + "description": "This will record demos of the players (true\/false)", + "env_variable": "demo_recording", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "ld lib path", + "description": "This is required, do not touch it", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + } + ] +} diff --git a/steamcmd_servers/rising_world/egg-rising-world.json b/steamcmd_servers/rising_world/egg-rising-world.json index b98cb3fc..a347d7fe 100644 --- a/steamcmd_servers/rising_world/egg-rising-world.json +++ b/steamcmd_servers/rising_world/egg-rising-world.json @@ -1,13 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-10-11T07:16:29+02:00", + "exported_at": "2021-03-11T16:01:09+01:00", "name": "Rising World", "author": "info@goover.de", "description": "Rising World is a voxel based open-world sandbox game, featuring a procedurally generated world, playable in single and multi-player.", - "image": "quay.io\/pterodactyl\/core:java", + "features": null, + "images": [ + "quay.io\/pterodactyl\/core:java" + ], + "file_denylist": [], "startup": "java -Xmx{{SERVER_MEMORY}}M -jar server.jar +maxplayer={{MAX_PLAYERS}} +serverport={{SERVER_PORT}} +servername=\\\"{{SERVER_NAME}}\\\" +rconport {{RCON_PORT}}", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"rcon_enabled\": \"true\",\r\n \"rcon_password\": \"{{server.build.env.RCON_PASSWORD}}\",\r\n \"server_password\": \"{{server.build.env.SERVER_PASSWORD}}\"\r\n }\r\n }\r\n}", @@ -63,7 +68,7 @@ "name": "LD Library Path", "description": "", "env_variable": "LD_LIBRARY_PATH", - "default_value": "..\/linux64", + "default_value": ".\/linux64", "user_viewable": false, "user_editable": false, "rules": "required|string|max:20" diff --git a/steamcmd_servers/rust/rust_staging/egg-rust-staging.json b/steamcmd_servers/rust/rust_staging/egg-rust-staging.json index 7e6bc806..fb2a13c7 100644 --- a/steamcmd_servers/rust/rust_staging/egg-rust-staging.json +++ b/steamcmd_servers/rust/rust_staging/egg-rust-staging.json @@ -1,13 +1,17 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2018-01-21T16:58:36-06:00", + "exported_at": "2021-02-25T22:11:15+02:00", "name": "Rust Staging", "author": "root@smc.li", "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", - "image": "quay.io\/pterodactyl\/core:rust", + "features": null, + "images": [ + "quay.io\/pterodactyl\/core:rust" + ], "startup": ".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"{{WORLD_SEED}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}", "config": { "files": "{}", @@ -17,8 +21,8 @@ }, "scripts": { "installation": { - "script": "apt update\r\napt -y --no-install-recommends install curl unzip lib32gcc1 ca-certificates\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 258550 -beta staging +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so", - "container": "ubuntu:16.04", + "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"Downloading the game as Steam user ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update 258550 -beta ${BRANCH} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", + "container": "debian:buster-slim", "entrypoint": "bash" } }, @@ -28,8 +32,8 @@ "description": "The name of your server in the public server list.", "env_variable": "HOSTNAME", "default_value": "A Rust Staging Server", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|string|max:40" }, { @@ -37,8 +41,8 @@ "description": "The world file for Rust to use.", "env_variable": "LEVEL", "default_value": "Procedural Map", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|string|max:20" }, { @@ -46,8 +50,8 @@ "description": "The description under your server title. Commonly used for rules & info. Use \\n for newlines.", "env_variable": "DESCRIPTION", "default_value": "Powered by Pterodactyl", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|string" }, { @@ -55,8 +59,8 @@ "description": "The URL for your server. This is what comes up when clicking the \"Visit Website\" button.", "env_variable": "SERVER_URL", "default_value": "http:\/\/pterodactyl.io", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "nullable|url" }, { @@ -64,8 +68,8 @@ "description": "The world size for a procedural map.", "env_variable": "WORLD_SIZE", "default_value": "3000", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|integer" }, { @@ -73,8 +77,8 @@ "description": "The seed for a procedural map.", "env_variable": "WORLD_SEED", "default_value": "", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" }, { @@ -82,8 +86,8 @@ "description": "The maximum amount of players allowed in the server at once.", "env_variable": "MAX_PLAYERS", "default_value": "50", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|integer" }, { @@ -91,8 +95,8 @@ "description": "The header image for the top of your server listing.", "env_variable": "SERVER_IMG", "default_value": "", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "nullable|url" }, { @@ -100,8 +104,8 @@ "description": "Port for RCON connections.", "env_variable": "RCON_PORT", "default_value": "28016", - "user_viewable": 1, - "user_editable": 0, + "user_viewable": true, + "user_editable": false, "rules": "required|integer" }, { @@ -109,27 +113,45 @@ "description": "RCON access password.", "env_variable": "RCON_PASS", "default_value": "CHANGEME", - "user_viewable": 1, - "user_editable": 1, - "rules": "required|string|max:64" + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^[\\w.-]*$\/|max:64" }, { "name": "Save Interval", - "description": "Sets the server’s auto-save interval in seconds.", + "description": "Sets the server\u2019s auto-save interval in seconds.", "env_variable": "SAVEINTERVAL", "default_value": "60", - "user_viewable": 1, - "user_editable": 1, + "user_viewable": true, + "user_editable": true, "rules": "required|integer" }, { - "name": "Additional Arguments", - "description": "Add additional startup parameters to the server.", - "env_variable": "ADDITIONAL_ARGS", - "default_value": "", - "user_viewable": 1, - "user_editable": 1, + "name": "Branch", + "description": "Select the branch to install, such as staging or workcart", + "env_variable": "BRANCH", + "default_value": "staging", + "user_viewable": true, + "user_editable": true, "rules": "nullable|string" + }, + { + "name": "App Port", + "description": "Port for the Rust+ App. -1 to disable.", + "env_variable": "APP_PORT", + "default_value": "28082", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer" + }, + { + "name": "Server Logo", + "description": "The circular server logo for the Rust+ app.", + "env_variable": "SERVER_LOGO", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|url" } ] } diff --git a/steamcmd_servers/scpsl/dedicated/egg-scpsl.json b/steamcmd_servers/scpsl/dedicated/egg-scpsl.json index 2f135fe5..07e48723 100644 --- a/steamcmd_servers/scpsl/dedicated/egg-scpsl.json +++ b/steamcmd_servers/scpsl/dedicated/egg-scpsl.json @@ -1,23 +1,27 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-11-05T01:08:38+01:00", + "exported_at": "2021-01-08T14:18:35+01:00", "name": "SCP:SL", "author": "info@goover.de", "description": "Egg for SCP: Secret Laboratory Dedicated Linux Server", - "image": "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5-complete", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5-complete" + ], "startup": ".\/LocalAdmin {{SERVER_PORT}}", "config": { - "files": "{\r\n \"config_gameplay.txt\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"server_ip\": \"0.0.0.0\",\r\n \"forward_ports\": \"false\"\r\n }\r\n }\r\n}", + "files": "{}", "startup": "{\r\n \"done\": \"Waiting for players..\",\r\n \"userInteraction\": []\r\n}", "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n#echo 'gamedir_for_configs: true' >> \/mnt\/server\/hoster_policy.txt\r\n#chmod +x \/mnt\/server\/hoster_policy.txt\r\n\r\n#URL=$(curl https:\/\/api.github.com\/repos\/Grover-c13\/MultiAdmin\/releases\/latest | grep browser_download_url | cut -d '\"' -f 4)\r\n#wget -P \/mnt\/server\/ $URL\r\n#chmod +x \/mnt\/server\/MultiAdmin.exe\r\n\r\n#SmodVersion=$(curl https:\/\/api.github.com\/repos\/Grover-c13\/Smod2\/releases\/latest | grep tag_name | cut -d '\"' -f 4)\r\n#AssemblyURL=\"https:\/\/github.com\/Grover-c13\/Smod2\/releases\/download\/${SmodVersion}\/Assembly-CSharp.dll\"\r\n#SmodURL=\"https:\/\/github.com\/Grover-c13\/Smod2\/releases\/download\/${SmodVersion}\/Smod2.dll\"\r\n#wget -O \/mnt\/server\/SCPSL_Data\/Managed\/Smod2.dll $SmodURL\r\n#wget -O \/mnt\/server\/SCPSL_Data\/Managed\/Assembly-CSharp.dll $AssemblyURL\r\n#chmod +x \/mnt\/server\/SCPSL_Data\/Managed\/Smod2.dll\r\n#chmod +x \/mnt\/server\/SCPSL_Data\/Managed\/Assembly-CSharp.dll", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nmkdir -p $HOME\/.config", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -42,4 +46,4 @@ "rules": "required|string" } ] -} +} \ No newline at end of file diff --git a/steamcmd_servers/space_engineers/README.md b/steamcmd_servers/space_engineers/README.md new file mode 100644 index 00000000..61ebb364 --- /dev/null +++ b/steamcmd_servers/space_engineers/README.md @@ -0,0 +1,27 @@ +# Space Engineers +Space Engineers is a voxel-based sandbox game set in space and on planets. + +Many parts of this egg are based on the work of [mmmaxwwwell](https://github.com/mmmaxwwwell/space-engineers-dedicated-docker-linux). A thank you therefore goes to him. + +**NOTE** +Because of the winetricks installation, the install process could take some time. Likewise, the first start of the server takes its time. + +When installed, the Server loads a base World and config from this repo. New world must be generated with the Windows Dedicated Server and then uploaded to the /config/Saves folder. +Everything which is not defined in a variable could be edited directy in the config file /config/SpaceEngineers-Dedicated.cfg. + +## Minumum server settings +### RAM +This server requires about 6GB. + +Based on the information provided by the developer: [See here](https://www.spaceengineersgame.com/dedicated-servers/) + +### Disk +This server uses about 7GB of diskspace. + +## Server Ports + +| Port | default | +|-------|---------| +| Game | 27016 | +| Steam | 8766 | +| API | 8081 | diff --git a/steamcmd_servers/space_engineers/SpaceEngineers-Dedicated.cfg b/steamcmd_servers/space_engineers/SpaceEngineers-Dedicated.cfg new file mode 100644 index 00000000..1679bc81 --- /dev/null +++ b/steamcmd_servers/space_engineers/SpaceEngineers-Dedicated.cfg @@ -0,0 +1,167 @@ + + + + Survival + 3 + 1 + 3 + 3 + 3 + PUBLIC + 4 + 56 + 5 + 0 + 0 + 100000 + 50000 + 0 + GLOBALLY + true + SAFE + true + false + true + true + true + true + false + 0 + false + false + 2 + 2 + false + 0.33 + false + 5 + true + false + true + 0 + 0.35 + 0 + true + false + 15000 + true + 4 + true + true + true + true + true + false + true + true + false + false + false + 8 + 119.999992 + true + true + false + true + 5 + true + false + false + 1 + false + 50 + + + + false + 5 + 20 + false + false + 3000 + false + true + true + 0 + true + 15 + 1562 + 0 + 20 + 500 + 0 + 0 + 15 + false + 5000 + 5000 + 24 + true + true + 16000 + true + true + false + false + 2 + 30 + true + 1 + 15 + 10000000 + 10000000 + 30000000 + 1200 + false + + true + true + false + true + false + 99 + false + true + + C:\Users\USERNAME\AppData\Roaming\SpaceEngineersDedicated\Saves\World + 0.0.0.0 + 8766 + 27016 + 0 + + + 0 + + World + false + false + + + true + 0 + true + false + 10 + 15 + + + false + + + + O+61kcmfFdESpxZr3sQdYQ== + + false + fw8j74YGyC9HnbVWwuyRSA== + 8080 + + 30 + 0.05 + 5 + Server will be shut down in {0} min(s). + true + false + steam + false + + \ No newline at end of file diff --git a/steamcmd_servers/space_engineers/World.zip b/steamcmd_servers/space_engineers/World.zip new file mode 100644 index 00000000..4925919a Binary files /dev/null and b/steamcmd_servers/space_engineers/World.zip differ diff --git a/steamcmd_servers/space_engineers/egg-space-engineers.json b/steamcmd_servers/space_engineers/egg-space-engineers.json new file mode 100644 index 00000000..44498f22 --- /dev/null +++ b/steamcmd_servers/space_engineers/egg-space-engineers.json @@ -0,0 +1,158 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-03-17T23:07:02+01:00", + "name": "Space Engineers", + "author": "tueye@tuworld.de", + "description": "Space Engineers is a voxel-based sandbox game set in space and on planets.", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_wine-5" + ], + "file_denylist": [], + "startup": "cd \/home\/container\/spaceengineers\/DedicatedServer64\/; wine \/home\/container\/spaceengineers\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession", + "config": { + "files": "{\r\n \"config\/SpaceEngineers-Dedicated.cfg\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyConfigDedicated.SessionSettings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyConfigDedicated.SessionSettings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyConfigDedicated.SessionSettings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyConfigDedicated.LoadWorld\": \"Z:\\\\home\\\\container\\\\config\\\\Saves\\\\{{server.build.env.WORLD_NAME}}\\\\Sandbox.sbc\",\r\n \"MyConfigDedicated.ServerPort\": \"{{server.build.default.port}}\",\r\n \"MyConfigDedicated.SteamPort\": \"{{server.build.env.STEAM_PORT}}\",\r\n \"MyConfigDedicated.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"MyConfigDedicated.WorldName\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"MyConfigDedicated.ServerDescription\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"MyConfigDedicated.RemoteApiEnabled\": \"{{server.build.env.REMOTEAPI_ENABLE}}\",\r\n \"MyConfigDedicated.RemoteApiPort\": \"{{server.build.env.REMOTEAPI_PORT}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Game ready...\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n## Define variables\r\ndlurl=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/space_engineers\"\r\nexport HOME=\/mnt\/server\r\n\r\n## Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates libsdl2-2.0-0:i386 cabextract\r\napt install -y --install-recommends wine wine64 xvfb\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\n\r\n## Install game using steamcmd\r\nmkdir $HOME\/spaceengineers\r\n.\/steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/spaceengineers +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Create world and config\r\nmkdir -p $HOME\/config\/Saves\r\nif [ ! -d $HOME\/config\/Saves\/World ]\r\nthen\r\n curl $dlurl\/World.zip -o \/tmp\/World.zip\r\n unzip \/tmp\/World.zip -d $HOME\/config\/Saves\/\r\nfi\r\nif [ ! -f $HOME\/config\/SpaceEngineers-Dedicated.cfg ]; then curl $dlurl\/SpaceEngineers-Dedicated.cfg -o $HOME\/config\/SpaceEngineers-Dedicated.cfg; fi\r\n\r\n## Install WineTricks\r\nexport DISPLAY=:0.0\r\nexport WINEPREFIX=$HOME\/.wine\r\nrm -r $HOME\/.wine\r\nrm -r $HOME\/.cache\r\nmkdir -p $HOME\/.wine\r\nmkdir \/tmp\/winetricks\r\ncurl https:\/\/raw.githubusercontent.com\/Winetricks\/winetricks\/master\/src\/winetricks -o \/tmp\/winetricks\/winetricks\r\nchmod +x \/tmp\/winetricks\/winetricks\r\nXvfb :0 -screen 0 1024x768x16 &\r\nenv WINEDLLOVERRIDES=\"mscoree=d;mshtml=d\" wineboot --init --force \/nogui\r\nenv \/tmp\/winetricks\/winetricks -q vcrun2017 \r\nenv \/tmp\/winetricks\/winetricks -q vcrun2013 \r\nenv \/tmp\/winetricks\/winetricks -q sound=disabled \r\nenv \/tmp\/winetricks\/winetricks -q corefonts\r\nenv \/tmp\/winetricks\/winetricks -q --force dotnet48", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "APP ID", + "description": "The ID corresponding to the game to download.", + "env_variable": "APPID", + "default_value": "298740", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|digits_between:1,6" + }, + { + "name": "Server Name", + "description": "Name of the server, appears in Steam browser.", + "env_variable": "SERVER_NAME", + "default_value": "Pterodactyl Space Engineer Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64" + }, + { + "name": "World Name", + "description": "Name of your world (and of your save folder)", + "env_variable": "WORLD_NAME", + "default_value": "World", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "Server Description", + "description": "Description of the game", + "env_variable": "SERVER_DESC", + "default_value": "Pterodactyl Space Engineer Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200" + }, + { + "name": "Game Mode", + "description": "Game Mode setting: Survival, Creative", + "env_variable": "SERVER_MODE", + "default_value": "Survival", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:Survival,Creative" + }, + { + "name": "Maximum Players", + "description": "", + "env_variable": "MAX_PLAYERS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3" + }, + { + "name": "Enable Saving", + "description": "", + "env_variable": "SAVE_ENABLED", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Auto Save Interval", + "description": "Time between auto saves specified in minutes", + "env_variable": "SAVE_INTERVAL", + "default_value": "5", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:1,3" + }, + { + "name": "Steam Port", + "description": "Steam Port", + "env_variable": "STEAM_PORT", + "default_value": "8766", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:65535" + }, + { + "name": "Enable Remote Api", + "description": "Enable Remote Api", + "env_variable": "REMOTEAPI_ENABLE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false" + }, + { + "name": "Remote Api Port", + "description": "Remote Api Port", + "env_variable": "REMOTEAPI_PORT", + "default_value": "8081", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:65535" + }, + { + "name": "WINEARCH", + "description": "WINEARCH. win32 or win64", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:win32,win64" + }, + { + "name": "WINEPREFIX", + "description": "WINEPREFIX", + "env_variable": "WINEPREFIX", + "default_value": "\/home\/container\/.wine", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:64" + }, + { + "name": "WINEDEBUG", + "description": "WINEDEBUG: Debug Level of wine", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:20" + } + ] +} \ No newline at end of file diff --git a/steamcmd_servers/subnautica_nitrox_mod/README.md b/steamcmd_servers/subnautica_nitrox_mod/README.md new file mode 100644 index 00000000..bdb077f8 --- /dev/null +++ b/steamcmd_servers/subnautica_nitrox_mod/README.md @@ -0,0 +1,22 @@ +## Subnautica: Nitrox Mod +Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. +In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface. +The multiplayer function is provided by the mod "Nitrox". This mod is still in alpha version and therefore not yet fully stable. + + + +**NOTE** +To download the base game, you will need to authenticate against Steam. +Because of the normally active Steamgaurd protection, it is important to enter the Steamgaurd code. +Once the initial installation is complete, you will need to enter the Steamguard code that will be emailed to you and then reinstall the server. + +This will only work if you receive Steamguard codes via mail. The Authenticator app is not supported. + +## Server Ports +The nitrox server requires only the default Server port. + + +| Port | default | +|---------|---------| +| Server | any | + diff --git a/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json b/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json new file mode 100644 index 00000000..24bf59f3 --- /dev/null +++ b/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json @@ -0,0 +1,130 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-02-28T17:37:13+01:00", + "name": "Subnautica", + "author": "tueye@tuworld.de", + "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.", + "features": null, + "images": [ + "quay.io\/pterodactyl\/core:mono" + ], + "startup": ".\/start.sh", + "config": { + "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"SaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"DisableAutoSave\": \"{{server.build.env.SAVE_DISABLE}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"ServerPassword\": \"{{server.build.env.SUBNAUTICA_PASSWORD}}\",\r\n \"AdminPassword\": \"{{server.build.env.SUBNAUTICA_ADMIN_PASSWORD}}\",\r\n \"GameMode\": \"{{server.build.env.SERVER_MODE}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Server is waiting for players!\"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates nuget git\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\nmkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## Install Nitrox using git\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\ngit clone --recursive https:\/\/github.com\/SubnauticaNitrox\/Nitrox.git --branch ${NITROX_VERSION} $HOME\/nitrox\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n\r\n## Prepare building Nitrox\r\ncd $HOME\/nitrox\r\nnuget restore\r\n\r\n\r\n## Create path files to Subnautica Install-Dir\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\ncp $HOME\/nitrox\/DevVars.targets.example $HOME\/nitrox\/DevVars.targets\r\nsed -i 's#C:\\\\Program Files\\\\Epic Games\\\\Subnautica<\/SubnauticaDir>#\/mnt\/server\/subnautica<\/SubnauticaDir>#' $HOME\/nitrox\/DevVars.targets\r\n\r\n\r\n## Build Nitrox\r\nmsbuild\r\n\r\n\r\n## Configure server startup config\r\necho \"#!\/bin\/sh\r\nexport MONO_PATH=$MONO_PATH:\/home\/container\/nitrox\/NitroxModel-Subnautica\/bin\/Debug\/\r\nmono .\/nitrox\/NitroxServer-Subnautica\/bin\/Debug\/NitroxServer-Subnautica.exe\" > \/mnt\/server\/start.sh\r\nchmod +x \/mnt\/server\/start.sh\r\n\r\n\r\n## Create Config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n MaxConnections=100\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=PROTOBUF\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\nEOT\r\nfi", + "container": "mono:latest", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "APP ID", + "description": "The ID corresponding to the game to download.", + "env_variable": "APPID", + "default_value": "264710", + "user_viewable": false, + "user_editable": false, + "rules": "required|numeric|digits_between:1,6" + }, + { + "name": "Steam-Username", + "description": "Your Steam-Account SUername", + "env_variable": "STEAM_USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64" + }, + { + "name": "Steam-Password", + "description": "Your Steam Account Password", + "env_variable": "STEAM_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64" + }, + { + "name": "Steam-GuardCode", + "description": "Yout Steam Guard Code", + "env_variable": "STEAM_GUARDCODE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:6" + }, + { + "name": "Nitrox Version", + "description": "Which version of Nitrox to install and use. Enter Github tags or branch name.", + "env_variable": "NITROX_VERSION", + "default_value": "1.4.0.0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,12" + }, + { + "name": "Auto Save Interval", + "description": "Time between auto saves specified in milliseconds", + "env_variable": "SAVE_INTERVAL", + "default_value": "120000", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|digits_between:6,7" + }, + { + "name": "Disable Auto Save", + "description": "Disables Auto Save: False \/ True", + "env_variable": "SAVE_DISABLE", + "default_value": "False", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:True,False" + }, + { + "name": "Save Name", + "description": "The save name for the server.", + "env_variable": "SAVE_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "alpha_dash|between:1,100" + }, + { + "name": "Server Password", + "description": "Password neccessary for connecting to the Server", + "env_variable": "SUBNAUTICA_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|between:3,12" + }, + { + "name": "Admin Password", + "description": "If specified, players must provide this password to gain access to administrator commands on the server.", + "env_variable": "SUBNAUTICA_ADMIN_PASSWORD", + "default_value": "PleaseChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|between:3,12" + }, + { + "name": "Game Mode", + "description": "Game Mode setting: SURVIVAL, FREEDOM, HARDCORE, CREATIVE", + "env_variable": "SERVER_MODE", + "default_value": "SURVIVAL", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE" + } + ] +} \ No newline at end of file diff --git a/steamcmd_servers/valheim/valheim_plus/README.md b/steamcmd_servers/valheim/valheim_plus/README.md new file mode 100644 index 00000000..1db81152 --- /dev/null +++ b/steamcmd_servers/valheim/valheim_plus/README.md @@ -0,0 +1,22 @@ +# Valheim Plus Mod + +##Valheim +A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture. Battle, build, and conquer your way to a saga worthy of Odin’s patronage! +https://store.steampowered.com/app/892970/Valheim/ + +##Plus Mod +A HarmonyX Mod aimed at improving the gameplay quality of Valheim. The mod includes several different main features including modifiers to ingame stats of players, buildings and entities and a sophisticated system to build and place objects with high precision and a system to modify already placed objects with high precision. The general goal is to provide V+ as a base modification for your gameplay to increase quality of life, change difficulty or have a better experience in general. The mod also comes with a version and configuration control system for servers and users, allowing servers to make sure that only people with the same configuration are able to join their servers. +Support: https://github.com/valheimPlus/ValheimPlus +Discord: https://discord.gg/AmH6Va97GT + +***!!! ATTENTION !!!*** + +***All (Server + Clients) need to have a installed Valheim Plus Mod !!!!*** + + +## Server Ports + +| Port | default | +|-------|---------| +| Game | 2456 | +| Query | 2457 | \ No newline at end of file diff --git a/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json b/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json new file mode 100644 index 00000000..dd2290b5 --- /dev/null +++ b/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json @@ -0,0 +1,140 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-03-08T17:51:46+01:00", + "name": "Valheim Plus Mod", + "author": "info@goover.de", + "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_source" + ], + "file_denylist": [], + "startup": "export templdpath=$LD_LIBRARY_PATH; export DOORSTOP_ENABLE=TRUE; export DOORSTOP_INVOKE_DLL_PATH=.\/BepInEx\/core\/BepInEx.Preloader.dll; export DOORSTOP_CORLIB_OVERRIDE_PATH=.\/unstripped_corlib; export LD_LIBRARY_PATH=.\/doorstop_libs:$LD_LIBRARY_PATH; export LD_PRELOAD=libdoorstop_x64.so:$LD_PRELOAD; export LD_LIBRARY_PATH=.\/linux64:$LD_LIBRARY_PATH; export SteamAppId=892970; .\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" -public ${PUBLIC} > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"DungeonDB Start\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc1 ca-certificates unzip jq wget\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\ncd \/mnt\/server\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH\r\nrm -fR $MATCH\r\n\r\nchmod u+x start_server_bepinex.sh", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "Name that appears in server browser.", + "env_variable": "SERVER_NAME", + "default_value": "My Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60" + }, + { + "name": "Server Password", + "description": "Server password.", + "env_variable": "PASSWORD", + "default_value": "secret", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:5|max:20" + }, + { + "name": "World Name", + "description": "Name to load if switching between multiple saved worlds.", + "env_variable": "WORLD", + "default_value": "Dedicated", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "App ID", + "description": "Valheim steam app id for auto updates.", + "env_variable": "SRCDS_APPID", + "default_value": "896660", + "user_viewable": true, + "user_editable": false, + "rules": "nullable|numeric" + }, + { + "name": "LD Library Path", + "description": "Required to load server libraries.", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".\/linux64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "GITHUB_PACKAGE", + "description": "", + "env_variable": "GITHUB_PACKAGE", + "default_value": "valheimPlus\/ValheimPlus", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:40" + }, + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "MATCH", + "description": "", + "env_variable": "MATCH", + "default_value": "UnixServer.zip", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20" + }, + { + "name": "Public Server", + "description": "", + "env_variable": "PUBLIC", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "Filter", + "description": "", + "env_variable": "FILTER", + "default_value": "\/^\\(Filename:.*Line:[[:space:]]+[[:digit:]]+\\)$\/d; \/^([[:space:]]+)?$\/d", + "user_viewable": false, + "user_editable": false, + "rules": "string" + }, + { + "name": "Shutdown Command", + "description": "", + "env_variable": "STOP", + "default_value": "kill -2 $!; wait;", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + } + ] +} \ No newline at end of file diff --git a/steamcmd_servers/valheim/valheim_vanilla/README.md b/steamcmd_servers/valheim/valheim_vanilla/README.md new file mode 100644 index 00000000..d6cbac74 --- /dev/null +++ b/steamcmd_servers/valheim/valheim_vanilla/README.md @@ -0,0 +1,11 @@ +# Valheim Server +A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture. Battle, build, and conquer your way to a saga worthy of Odin’s patronage! + +https://store.steampowered.com/app/892970/Valheim/ + +## Server Ports + +| Port | default | +|-------|---------| +| Game | 2456 | +| Query | 2457 | \ No newline at end of file diff --git a/steamcmd_servers/valheim/valheim_vanilla/egg-valheim.json b/steamcmd_servers/valheim/valheim_vanilla/egg-valheim.json new file mode 100644 index 00000000..d6162120 --- /dev/null +++ b/steamcmd_servers/valheim/valheim_vanilla/egg-valheim.json @@ -0,0 +1,103 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v1", + "update_url": null + }, + "exported_at": "2021-02-17T16:43:58+01:00", + "name": "Valheim", + "author": "magi1053@outlook.com", + "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:debian_source" + ], + "startup": ".\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"DungeonDB Start\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "Name that appears in server browser.", + "env_variable": "SERVER_NAME", + "default_value": "My Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60" + }, + { + "name": "Server Password", + "description": "Server password.", + "env_variable": "PASSWORD", + "default_value": "secret", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:5|max:20" + }, + { + "name": "World Name", + "description": "Name to load if switching between multiple saved worlds.", + "env_variable": "WORLD", + "default_value": "Dedicated", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + }, + { + "name": "App ID", + "description": "Valheim steam app id for auto updates.", + "env_variable": "SRCDS_APPID", + "default_value": "896660", + "user_viewable": true, + "user_editable": false, + "rules": "nullable|numeric" + }, + { + "name": "LD Library Path", + "description": "Required to load server libraries.", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".\/linux64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + }, + { + "name": "Console Filter", + "description": "Remove spam from the console output.", + "env_variable": "FILTER", + "default_value": "\/^\\(Filename:.*Line:[[:space:]]+[[:digit:]]+\\)$\/d; \/^([[:space:]]+)?$\/d", + "user_viewable": false, + "user_editable": false, + "rules": "string" + }, + { + "name": "Shutdown Command", + "description": "Commands to trigger a server shutdown.", + "env_variable": "STOP", + "default_value": "kill -2 $!; wait;", + "user_viewable": false, + "user_editable": false, + "rules": "required|string" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20" + } + ] +} \ No newline at end of file diff --git a/stock-eggs/source-engine/README.md b/stock-eggs/source-engine/README.md index a4deb544..e74aa6b6 100644 --- a/stock-eggs/source-engine/README.md +++ b/stock-eggs/source-engine/README.md @@ -35,7 +35,7 @@ Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gam This is a generic one size fit's all egg that supports srcds game servers. -This is not for games like Counter Strike 1.6 which is an HLDS title. See [HLDS server](/source_servers/hlds_server) +This is not for games like Counter Strike 1.6 which is an HLDS title. See [HLDS server](/steamcmd_servers/hlds_server) ### Port Requirements | Port | default | @@ -67,4 +67,4 @@ Nine distinct classes provide a broad range of tactical abilities and personalit ### Port Requirements | Port | default | |----------|---------| -| Game | 27015 | \ No newline at end of file +| Game | 27015 | diff --git a/stock-eggs/voice-servers/egg-teamspeak3-server.json b/stock-eggs/voice-servers/egg-teamspeak3-server.json index 63c8a535..d612040e 100644 --- a/stock-eggs/voice-servers/egg-teamspeak3-server.json +++ b/stock-eggs/voice-servers/egg-teamspeak3-server.json @@ -1,14 +1,18 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-10-23T22:27:50+00:00", + "exported_at": "2021-01-13T22:27:35+00:00", "name": "Teamspeak3 Server", "author": "support@pterodactyl.io", "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.", - "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian", - "startup": ".\/ts3server default_voice_port={{SERVER_PORT}} query_port={{SERVER_PORT}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} license_accepted=1", + "features": null, + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:base_debian" + ], + "startup": ".\/ts3server default_voice_port={{SERVER_PORT}} query_port={{SERVER_QUERY}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} license_accepted=1", "config": { "files": "{}", "startup": "{\r\n \"done\": \"listening on 0.0.0.0:\",\r\n \"userInteraction\": []\r\n}", @@ -17,7 +21,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# TS3 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y tar curl jq bzip2\r\n\r\nif [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then\r\n TS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/server.json -s | jq -r '.linux.x86_64.version')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n\r\necho -e \"getting files from http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\"\r\ncurl http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar xj --strip-components=1", + "script": "#!\/bin\/bash\r\n# TS3 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y tar curl jq bzip2\r\n\r\nif [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then\r\n TS_VERSION=$(curl -sSL https:\/\/teamspeak.com\/versions\/server.json | jq -r '.linux.x86_64.version')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting files from http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\" \r\ncurl -L http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar -xvj --strip-components=1\r\n\r\nrm teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -40,6 +44,15 @@ "user_viewable": true, "user_editable": false, "rules": "required|integer|between:1,65535" + }, + { + "name": "Server Query Port", + "description": "Teamspeak's Server Query Port", + "env_variable": "SERVER_QUERY", + "default_value": "10011", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1,65535" } ] } diff --git a/storage/minio/README.md b/storage/minio/README.md index da88976a..73fcc597 100644 --- a/storage/minio/README.md +++ b/storage/minio/README.md @@ -3,6 +3,8 @@ ## Features Auto generate keys on server creation bypassing default minio keys +## Update +Auto update minio to latest version using "update" startup feature Automatic Key rotation using "rotate" startup feature diff --git a/storage/minio/egg-minio-s3.json b/storage/minio/egg-minio-s3.json index 9c48eb32..9ef0e0cf 100644 --- a/storage/minio/egg-minio-s3.json +++ b/storage/minio/egg-minio-s3.json @@ -1,14 +1,17 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v1", + "update_url": null }, - "exported_at": "2020-12-14T05:29:26+02:00", + "exported_at": "2021-01-11T15:35:14-05:00", "name": "Minio S3", "author": "accounts@bofanodes.io", "description": "MinIO is a cloud storage server compatible with Amazon S3, released under Apache License v2. As an object store, MinIO can store unstructured data such as photos, videos, log files, backups and container images. The maximum size of an object is 5TB.", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu", + "images": [ + "quay.io\/parkervcp\/pterodactyl-images:ubuntu" + ], "startup": ".\/minio.sh", "config": { "files": "{}", @@ -26,12 +29,12 @@ "variables": [ { "name": "Startup Type", - "description": "normal or rotate", + "description": "normal,rotate,update", "env_variable": "STARTUP_TYPE", "default_value": "normal", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:normal,rotate" + "rules": "required|string|in:normal,rotate,update" } ] -} \ No newline at end of file +} diff --git a/storage/minio/minio.sh b/storage/minio/minio.sh index 48b5818e..777e5abb 100644 --- a/storage/minio/minio.sh +++ b/storage/minio/minio.sh @@ -1,39 +1,51 @@ #!/bin/bash ################################## -echo Starting up.... -echo "Startup Type: $STARTUP_TYPE" +echo "$(tput setaf 2)Starting up...." +echo "Startup Type: $(tput setaf 2)$STARTUP_TYPE" if [ -f "keys/key.txt" ]; then -echo "Key file detected..." +echo "$(tput setaf 2)Key file detected..." export MINIO_ACCESS_KEY=`cat keys/key.txt` else echo minioadmin > keys/key.txt -echo "No key file detected...Preparing First Time Boot" +echo "$(tput setaf 3)No key file detected...Preparing First Time Boot" fi if [ -f "keys/secret.txt" ]; then -echo "Secret file detected..." +echo "$(tput setaf 2)Secret file detected..." export MINIO_SECRET_KEY=`cat keys/secret.txt` else echo minioadmin > keys/secret.txt echo "No secret file detected...Preparing First Time Boot" fi if [ -f "keys/oldsecret.txt" ]; then -echo "Old secret file detected..." +echo "$(tput setaf 1)Old secret file detected..." export MINIO_SECRET_KEY_OLD=`cat keys/oldsecret.txt` fi if [ -f "keys/oldkey.txt" ]; then -echo "Old key file detected..." +echo "$(tput setaf 1)Old key file detected..." export MINIO_ACCESS_KEY_OLD=`cat keys/oldkey.txt` fi if [ -f "keys/justrotated.txt" ]; then -echo "Previous key rotation detected...." -echo "Clearing the Lanes...." +echo "$(tput setaf 3)Previous key rotation detected...." +echo "$(tput setaf 3)Clearing the Lanes...." unset MINIO_ACCESS_KEY_OLD unset MINIO_SECRET_KEY_OLD +echo "$(tput setaf 2)Lanes Cleared!" STARTUP_TYPE=normal rm keys/justrotated.txt rm keys/oldsecret.txt rm keys/oldkey.txt fi + +########################################## +if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "update" ]; then +echo "$(tput setaf 3)Performing update...." +echo "$(tput setaf 1)Removing old minio version" +rm minio +echo "$(tput setaf 3)Downloading new minio version" +wget https://dl.min.io/server/minio/release/linux-amd64/minio +chmod +x minio +echo "$(tput setaf 2)Update Complete" +fi ########################################## if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "rotate" ]; then touch keys/justrotated.txt @@ -45,12 +57,13 @@ export MINIO_ACCESS_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | h echo $MINIO_ACCESS_KEY > keys/key.txt export MINIO_SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) echo $MINIO_SECRET_KEY > keys/secret.txt -echo Your New Access Key is: $MINIO_ACCESS_KEY -echo Your New Secret Key is: $MINIO_SECRET_KEY -echo Your Old Access Key is: $MINIO_ACCESS_KEY_OLD -echo Your Old Access Key is: $MINIO_SECRET_KEY_OLD -echo Booting... +echo "Your New Access Key is: $(tput setaf 2)$MINIO_ACCESS_KEY" +echo "Your New Secret Key is: $(tput setaf 2)$MINIO_SECRET_KEY" +echo "Your Old Access Key is: $(tput setaf 3)$MINIO_ACCESS_KEY_OLD" +echo "Your Old Access Key is: $(tput setaf 3)$MINIO_SECRET_KEY_OLD" +echo "$(tput setaf 2)Booting..." ./minio server data --address 0.0.0.0:$SERVER_PORT else +echo "$(tput setaf 2)Booting..." ./minio server data --address 0.0.0.0:$SERVER_PORT fi