diff --git a/.gitignore b/.gitignore
index 74893bfd..5cc91bae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.DS_Store
node_modules/
.vuepress/*
-.vscode
\ No newline at end of file
+.vscode
+.idea
\ No newline at end of file
diff --git a/README.md b/README.md
index bb06e669..a417e0e5 100644
--- a/README.md
+++ b/README.md
@@ -33,10 +33,13 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [CorpBot](/bots/discord/corpbot) Python
* [Dynamica](/bots/discord/dynamica) Node JS
* [fragbot](/bots/discord/fragbot) Golang
+* [Game Server Watcher](/bots/discord/game-server-watcher) Node JS
* [JMusicBot](/bots/discord/jmusicbot) Java
+* [Muse](/bots/discord/muse) Node JS
* [parkertron](/bots/discord/parkertron) Golang
* [pixel-bot](/bots/discord/pixelbot) Python
* [Redbot](/bots/discord/redbot) Python
+* [Ree6](/bots/discord/ree6) Java
* [SinusBot](/bots/discord/sinusbot)
[Other](/bots/other)
@@ -54,12 +57,15 @@ If you are reading this it looks like you are looking to add an egg to your serv
## [Generic Languages](/generic)
+* [C#](/generic/c%23/)
+* [elixir](/generic/elixir/)
* [dart](/generic/dart/)
* [deno](/generic/deno/)
* [golang](/generic/golang/)
* [java](/generic/java/)
* [lua](/generic/lua/)
* [nodejs](/generic/nodejs/)
+* [bun](/generic/bun/)
* [nodemon](/generic/nodemon/)
* [python](/generic/python/)
* [rust](/generic/rust/)
@@ -108,6 +114,17 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [MCGalaxy](game_eggs/classicube/mcgalaxy)
+[Clone Hero](game_eggs/clone_hero)
+
+[CS2D](game_eggs/cs2d)
+
+[Cube Engine](cubeengine)
+
+* [AssaultCube](cubeengine/assaultcube)
+* [Cube 2: Sauerbraten](cubeengine/cube2)
+
+[DDRaceNetwork](game_eggs/ddracenetwork)
+
[Doom](game_eggs/doom)
* [Zandronum](game_eggs/doom/zandronum)
@@ -132,10 +149,13 @@ If you are reading this it looks like you are looking to add an egg to your serv
* GTA SA
* [Multi Theft Auto](game_eggs/gta/mtasa)
* [SA-MP](game_eggs/gta/samp)
+ * [OpenMp](game_eggs/gta/openmp)
* GTA
* [GTAC](game_eggs/gta/gtac)
+[Kerbal Space Program](game_eggs/ksp)
+
[League Sandbox](game_eggs/leaguesandbox)
[Los Angeles Crimes](game_eggs/losangelescrimes)
@@ -150,24 +170,29 @@ If you are reading this it looks like you are looking to add an egg to your serv
[Minecraft](game_eggs/minecraft)
-* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows 10, mobile, console)
+* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows, mobile, console)
* [Bedrock](game_eggs/minecraft/bedrock/bedrock)
* [gomint](game_eggs/minecraft/bedrock/gomint)
* [LiteLoaderBDS](game_eggs/bedrock/LiteLoader-bedrock)
* [Nukkit](game_eggs/minecraft/bedrock/nukkit)
* [PocketMine MP](game_eggs/minecraft/bedrock/pocketmine_mp)
+ * [PowerNukkitX](game_eggs/minecraft/bedrock/PowerNukkitX)
* [Java](game_eggs/minecraft/java) Servers for Java Minecraft
+ * [CurseForge](game_eggs/minecraft/java/curseforge)
* [Cuberite](game_eggs/minecraft/java/cuberite)
* [Fabric](game_eggs/minecraft/java/fabric)
* [Feather](game_eggs/minecraft/java/feather)
* [Feed The Beast](game_eggs/minecraft/java/ftb)
* [Forge](game_eggs/minecraft/java/forge)
* [Glowstone](game_eggs/minecraft/java/glowstone)
+ * [Limbo](game_eggs/minecraft/java/limbo)
* [Magma](game_eggs/minecraft/java/magma)
+ * [Modrinth](game_eggs/minecraft/java/modrinth)
* [Mohist](game_eggs/minecraft/java/mohist)
* [NanoLimbo](game_eggs/minecraft/java/nanolimbo)
* [Paper](game_eggs/minecraft/java/paper)
+ * [Folia](game_eggs/minecraft/java/folia)
* [Purpur](game_eggs/minecraft/java/purpur)
* [Spigot](game_eggs/minecraft/java/spigot)
* [SpongeForge](game_eggs/minecraft/java/spongeforge)
@@ -203,22 +228,33 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [RedM](game_eggs/rdr/redm)
+[Spacestation 14](game_eggs/spacestation_14)
+
+[Rimworld](game_eggs/rimworld)
+
+* [Open World](game_eggs/rimworld/open_world)
+
[SteamCMD Servers](game_eggs/steamcmd_servers) These eggs use SteamCMD to install
* [7 Days to Die](game_eggs/steamcmd_servers/7_days_to_die)
+* [ARK: Survival Ascended](game_eggs/steamcmd_servers/ark_survival_ascended)
* [ARK: Survival Evolved](game_eggs/steamcmd_servers/ark_survival_evolved)
* [Arma](game_eggs/steamcmd_servers/arma)
* [Arma 3](game_eggs/steamcmd_servers/arma/arma3)
* [Arma Reforger](game_eggs/steamcmd_servers/arma/arma_reforger)
* [Assetto Corsa](game_eggs/steamcmd_servers/assetto_corsa)
* [Assetto Corsa Competizione](game_eggs/steamcmd_servers/assetto_corsa_competizione)
+* [Astro Colony](game_eggs/steamcmd_servers/astro_colony)
* [Astroneer](game_eggs/steamcmd_servers/astroneer)
* [Avorion](game_eggs/steamcmd_servers/avorion)
* [Barotrauma](game_eggs/steamcmd_servers/barotrauma)
+* [BATTALION: Legacy](game_eggs/steamcmd_servers/battalion_legacy)
* [Black Mesa](game_eggs/steamcmd_servers/black_mesa)
* [Citadel: Forged with Fire](game_eggs/steamcmd_servers/citadel)
* [Conan Exiles](game_eggs/steamcmd_servers/conan_exiles)
* [Core Keeper](game_eggs/steamcmd_servers/core_keeper)
+* [Counter-Strike](game_eggs/steamcmd_servers/counter_strike/)
+ * [Counter-Strike: Source](game_eggs/steamcmd_servers/counter_strike/counter_strike_source/)
* [Craftopia](game_eggs/steamcmd_servers/craftopia)
* [Cryofall](game_eggs/steamcmd_servers/cryofall)
* [DayZ (Experimental)](game_eggs/steamcmd_servers/dayz-experimental)
@@ -227,6 +263,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Empyrion - Galactic Survival](game_eggs/steamcmd_servers/empyrion)
* [Fistful of Frags](game_eggs/steamcmd_servers/fof)
* [Frozen Flame](game_eggs/steamcmd_servers/frozen_flame)
+* [Ground Branch](game_eggs/steamcmd_servers/ground_branch)
* [HLDS Server](game_eggs/steamcmd_servers/hlds_server)
* [HLDS Vanilla](game_eggs/steamcmd_servers/hlds_server/vanilla)
* [ReHLDS](game_eggs/steamcmd_servers/hlds_server/rehlds)
@@ -240,15 +277,20 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Left 4 Dead 2](game_eggs/steamcmd_servers/left4dead_2)
* [Modiverse](game_eggs/steamcmd_servers/modiverse)
* [Mordhau](game_eggs/steamcmd_servers/mordhau)
+* [Mount & Blade II: Bannerlord](game_eggs/steamcmd_servers/mount_blade_II_bannerlord)
+* [Neos VR](game_eggs/steamcmd_servers/neosvr)
* [No More Room in Hell](game_eggs/steamcmd_servers/nmrih)
+* [No One Survived](game_eggs/steamcmd_servers/no_one_survived)
* [Onset](game_eggs/steamcmd_servers/onset)
* [Open Fortress](game_eggs/steamcmd_servers/open_fortress)
+* [Operation Harsh Doorstop](game_eggs/steamcmd_servers/operation_harsh_doorstop)
* [Pavlov VR](game_eggs/steamcmd_servers/pavlov_vr)
* [PixARK](game_eggs/steamcmd_servers/pixark)
* [Portal Knights](game_eggs/steamcmd_servers/portal_knights)
* [Post Scriptum](game_eggs/steamcmd_servers/post_scriptum)
* [Project Zomboid](game_eggs/steamcmd_servers/project_zomboid)
* [Quake Live](game_eggs/steamcmd_servers/quake_live)
+* [Resonite](game_eggs/steamcmd_servers/resonite)
* [Rising World](game_eggs/steamcmd_servers/rising_world)
* [Risk Of Rain 2](game_eggs/steamcmd_servers/risk_of_rain_2)
* [Rust](game_eggs/steamcmd_servers/rust)
@@ -261,6 +303,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [exiled](game_eggs/steamcmd_servers/scpsl/exiled)
* [multiadmin](game_eggs/steamcmd_servers/scpsl/multiadmin)
* [Soldat](game_eggs/steamcmd_servers/soldat)
+* [Sons of the Forest](game_eggs/steamcmd_servers/sonsoftheforest)
* [Space Engineers](game_eggs/steamcmd_servers/space_engineers)
* [default](game_eggs/steamcmd_servers/space_engineers/default)
* [torch](game_eggs/steamcmd_servers/space_engineers/torch)
@@ -270,7 +313,9 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Stormworks: Build and Rescue](game_eggs/steamcmd_servers/stormworks)
* [Subnautica: Nitrox Mod](game_eggs/steamcmd_servers/subnautica_nitrox_mod)
* [Sven Co-op](game_eggs/steamcmd_servers/svencoop)
+* [Swords 'n Magic and Stuff](game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff)
* [The Forest](game_eggs/steamcmd_servers/the_forest)
+* [The Front](game_eggs/steamcmd_servers/thefront)
* [The Isle](game_eggs/steamcmd_servers/the_isle)
* [Evrima](game_eggs/steamcmd_servers/the_isle/evrima)
* [Team Fortress 2 Classic](game_eggs/steamcmd_servers/team_fortress_2_classic)
@@ -345,6 +390,10 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Elasticsearch](/software/elasticsearch)
+### Folding@Home
+
+* [Folding@Home](/software/foldingathome)
+
### Gitea
* [Gitea](/software/gitea)
@@ -361,6 +410,10 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [languagetool](/software/languagetool)
+### Meilisearch
+
+* [Meilisearch](/software/meilisearch)
+
### Owncast
* [owncast](/software/owncast)
diff --git a/bots/discord/README.md b/bots/discord/README.md
index 4974190a..070b5148 100644
--- a/bots/discord/README.md
+++ b/bots/discord/README.md
@@ -22,11 +22,21 @@ A very clumsy python bot for discord
[fragforce/fragbot](https://github.com/fragforce/fragbot)
The bot that runs as the fragforce `@Fragbot` offering looking-for-group services for now
+### [Game Server Watcher](game-server-watcher)
+
+[a-sync/game-server-watcher](https://github.com/a-sync/game-server-watcher)
+A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎
+
### [JMusicBot](jmusicbot)
[jagrosh/MusicBot](https://github.com/jagrosh/MusicBot)
A Discord music bot that's easy to set up and run yourself!
+### [Muse](muse)
+
+[codetheweb/muse](https://github.com/codetheweb/muse)
+🎧 a self-hosted midwestern Discord music bot that doesn't suck
+
### [parkertron](parkertron)
[parkervcp/parkertron](https://github.com/parkervcp/parkertron)
@@ -43,6 +53,11 @@ Was used to test python services.
[Cog-Creators/Red-DiscordBot](https://github.com/Cog-Creators/Red-DiscordBot)
A multifunction Discord bot
+### [Ree6](ree6)
+
+[Ree6-Applications](https://github.com/Ree6-Applications/Ree6)
+All-in-one, open source and 100% free Discord Bot!
+
### [SinusBot](sinusbot)
[SinusBot](https://www.sinusbot.com/)
diff --git a/bots/discord/bastion/README.md b/bots/discord/bastion/README.md
index 2156a2fb..963bf474 100644
--- a/bots/discord/bastion/README.md
+++ b/bots/discord/bastion/README.md
@@ -4,9 +4,6 @@
Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities.
-## Install notes
-
-There will be a tar error on first install. You can safly ignore this.
## Running the bot
diff --git a/bots/discord/bastion/egg-bastion.json b/bots/discord/bastion/egg-bastion.json
index 0ad33578..038d1707 100644
--- a/bots/discord/bastion/egg-bastion.json
+++ b/bots/discord/bastion/egg-bastion.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-12-15T16:23:16+01:00",
+ "exported_at": "2023-03-29T10:33:50+02:00",
"name": "Bastion",
"author": "parker@parkervcp.com",
"description": "Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python git tar\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ntar -czf mongodb_back.tar.gz mongodb\/\r\nmv mongodb_back.tar.gz \/tmp\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm bastion.cmd .env.example bastion.sh\r\n\r\n\r\nmkdir mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python3 git tar\r\n\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"updating npm\"\r\nnpm install -g npm@latest\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm -rf bastion.cmd .env.example bastion.sh scrips\/\r\n\r\n\r\nmkdir -p mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "node:18-bullseye",
"entrypoint": "bash"
}
@@ -31,7 +31,7 @@
{
"name": "Bot Token",
"description": "The Bot Token you get from https:\/\/discordapp.com\/developers\/applications\/",
- "env_variable": "TESSERACT_BOT_TOKEN",
+ "env_variable": "BOT_TOKEN",
"default_value": "GETABOTTOKEN",
"user_viewable": true,
"user_editable": true,
@@ -41,7 +41,7 @@
{
"name": "Bot Client ID",
"description": "The Bot ID you get from https:\/\/discordapp.com\/developers\/applications\/",
- "env_variable": "TESSERACT_BOT_ID",
+ "env_variable": "BOT_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
@@ -51,7 +51,7 @@
{
"name": "Mongo URL",
"description": "use `mongodb:\/\/127.0.0.1:27017\/bastion` for using the build in mongodb server",
- "env_variable": "TESSERACT_MONGO_URI",
+ "env_variable": "MONGO_URI",
"default_value": "mongodb:\/\/127.0.0.1:27017\/bastion",
"user_viewable": true,
"user_editable": true,
@@ -81,7 +81,7 @@
{
"name": "Safe Mode",
"description": "When enabled, this disables usage of unsafe commands like `exec` and `eval`.",
- "env_variable": "TESSERACT_UNSAFE_MODE",
+ "env_variable": "UNSAFE_MODE",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
@@ -119,4 +119,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/bots/discord/dynamica/README.md b/bots/discord/dynamica/README.md
index ef2e45e4..377918ac 100644
--- a/bots/discord/dynamica/README.md
+++ b/bots/discord/dynamica/README.md
@@ -1,5 +1,8 @@
# Dynamica
-### Their [Github](https://github.com/dynamicabot/dynamica)
+## Their [Github](https://github.com/dynamicabot/dynamica-v2)
-This is a discord bot for dynamically managing voice channels.
+An easy-to-use dynamic voice channel bot.
+
+## Port
+You will manual have to change the web port in the src/main.ts on line 24.
\ No newline at end of file
diff --git a/bots/discord/dynamica/egg-dynamica.json b/bots/discord/dynamica/egg-dynamica.json
index 185beb40..063b1bdb 100644
--- a/bots/discord/dynamica/egg-dynamica.json
+++ b/bots/discord/dynamica/egg-dynamica.json
@@ -1,29 +1,29 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-13T10:34:52+11:00",
+ "exported_at": "2023-08-18T17:01:43+02:00",
"name": "Dynamica",
"author": "sebastian.pietschner@gmail.com",
- "description": "The dynamica discord bot",
+ "description": "An easy-to-use dynamic voice channel bot.",
"features": null,
- "images": [
- "ghcr.io\/parkervcp\/yolks:nodejs_16"
- ],
+ "docker_images": {
+ "Nodejs 18": "ghcr.io\/parkervcp\/yolks:nodejs_18"
+ },
"file_denylist": [],
- "startup": "yarn deploy && yarn prisma migrate deploy && yarn start",
+ "startup": "npx prisma migrate deploy && yarn start",
"config": {
"files": "{}",
- "startup": "{\r\n \"done\": \"Ready! Logged in as \"\r\n}",
+ "startup": "{\r\n \"done\": \"Bot logged in as \"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "apt-get update\r\napt-get install openssl git -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/dynamicabot\/dynamica.git .;\r\nfi;\r\nyarn install --frozen-lockfile",
- "container": "node:lts-buster-slim",
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install tar curl jq git\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nGITHUB_PACKAGE=\"DynamicaBot\/Dynamica-V2\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\ncurl -sSL -o dynamica.tar.gz ${DOWNLOAD_URL}\r\ntar xvf dynamica.tar.gz --strip-components=1\r\nrm dynamica.tar.gz\r\n\r\n#curl -sSL -o tsconfig.json https:\/\/pteropaste.com\/xqhjja443pbm\r\n\r\nyarn add tsup --dev\r\nyarn install --frozen-lockfile\r\n\r\nyarn generate\r\nyarn build\r\n\r\nrm -rf .github\/ .vscode\/ Dockerfile partial.Dockerfile entrypoint.sh dynamica-egg.json\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "node:18-bullseye-slim",
"entrypoint": "bash"
}
},
@@ -35,7 +35,8 @@
"default_value": "file:\/home\/container\/dynamica\/db.sqlite",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "Token",
@@ -44,16 +45,58 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "Client ID",
- "description": "The client ID of your discord bot.",
- "env_variable": "CLIENT_ID",
+ "name": "Guild ID",
+ "description": "Add only if using the bot in a single guild.",
+ "env_variable": "GUILD_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|size:18"
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "Sentry DSN",
+ "description": "The DSN for Sentry.",
+ "env_variable": "SENTRY_DSN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "MQTT URL",
+ "description": "The URL for the MQTT broker.",
+ "env_variable": "MQTT_URL",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "MQTT Username",
+ "description": "The username for the MQTT broker.",
+ "env_variable": "MQTT_USER",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "MQTT Password",
+ "description": "The password for the MQTT broker.",
+ "env_variable": "MQTT_PASS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|nullable",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/bots/discord/game-server-watcher/README.md b/bots/discord/game-server-watcher/README.md
new file mode 100644
index 00000000..5134102b
--- /dev/null
+++ b/bots/discord/game-server-watcher/README.md
@@ -0,0 +1,22 @@
+# Game Server Watcher
+
+## From [Github](https://github.com/a-sync/game-server-watcher#readme)
+A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎
+
+## Screenshots
+
+
+## Running the bot
+Refer to the wiki on how to acquire tokens for:
+ * [steam](https://github.com/a-sync/game-server-watcher/wiki/Steam-Web-API-key)
+ * [discord](https://github.com/a-sync/game-server-watcher/wiki/Discord-bot-token)
+ * [telegram](https://github.com/a-sync/game-server-watcher/wiki/Telegram-bot-token)
+ * [slack](https://github.com/a-sync/game-server-watcher/wiki/Slack-bot-token)
+
+## Server Ports
+GSW Control Panel requires one port for http traffic.
+(It can be any port.)
+
+| Port | default |
+|---------|---------|
+| Web | 8081 |
diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json
new file mode 100644
index 00000000..47cbaee8
--- /dev/null
+++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json
@@ -0,0 +1,122 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-10-24T16:33:47+00:00",
+ "name": "Game Server Watcher",
+ "author": "a-sync@devs.space",
+ "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. \ud83d\ude0e",
+ "features": null,
+ "docker_images": {
+ "Node.js 20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
+ },
+ "file_denylist": [],
+ "startup": "env PORT={{SERVER_PORT}} \/usr\/local\/bin\/node \/home\/container\/dist\/server.js",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"starting loop...\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\napt-get update && apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\ngit clone https:\/\/github.com\/a-sync\/game-server-watcher.git . || git pull\r\nnpm install && npm run build\r\nnpm prune --omit=dev",
+ "container": "node:20-bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "SECRET",
+ "description": "Admin secret",
+ "env_variable": "SECRET",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|min:8|max:255",
+ "field_type": "text"
+ },
+ {
+ "name": "DATA_PATH",
+ "description": "Writable folder for data storage",
+ "env_variable": "DATA_PATH",
+ "default_value": ".\/data\/",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|min:1|max:255",
+ "field_type": "text"
+ },
+ {
+ "name": "REFRESH_TIME_MINUTES",
+ "description": "Game server info refresh interval in minutes",
+ "env_variable": "REFRESH_TIME_MINUTES",
+ "default_value": "2",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|min:1",
+ "field_type": "text"
+ },
+ {
+ "name": "DISCORD_BOT_TOKEN",
+ "description": "Discord bot token",
+ "env_variable": "DISCORD_BOT_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "TELEGRAM_BOT_TOKEN",
+ "description": "Telegram bot token",
+ "env_variable": "TELEGRAM_BOT_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "STEAM_WEB_API_KEY",
+ "description": "Steam web API key",
+ "env_variable": "STEAM_WEB_API_KEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Debug Mode",
+ "description": "Enable or disable debug mode.",
+ "env_variable": "DBG",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|in:0,1",
+ "field_type": "text"
+ },
+ {
+ "name": "SLACK_BOT_TOKEN",
+ "description": "Slack bot token",
+ "env_variable": "SLACK_BOT_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "SLACK_APP_TOKEN",
+ "description": "Slack app token",
+ "env_variable": "SLACK_APP_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ }
+ ]
+}
\ 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 31f440c7..8a640fd6 100644
--- a/bots/discord/jmusicbot/egg-j-music-bot.json
+++ b/bots/discord/jmusicbot/egg-j-music-bot.json
@@ -1,16 +1,17 @@
{
- "_comment": "Pterodactyl JMusicBot Egg ~ parkervcp, Software-Noob, Proxymiity, and Red-Thirten ~ 2021-11-29",
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
+ "exported_at": "2023-09-20T21:17:10+02:00",
"name": "JMusicBot",
"author": "parker@parkervcp.com",
"description": "A Discord music bot that's easy to set up and run yourself!",
"features": null,
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_16"
- ],
+ "docker_images": {
+ "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ },
"file_denylist": [],
"startup": "java -Dnogui=true -jar JMusicBot.jar",
"config": {
@@ -21,8 +22,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE and VERSION\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\napt update\r\napt install -y jq curl\r\n\r\nGITHUB_PACKAGE=\"jagrosh\/MusicBot\"\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/config.txt\"\r\nPLAYLIST_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/example_playlist.txt\"\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"No Github user set. Using anonymous API call...\"\r\nelse\r\n echo -e \"User and OAuth token set.\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n# get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\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 config)\r\n else\r\n echo -e \"Defaulting to the 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## JMusicBot Setup\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_LINK}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] && mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\"",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/config.txt\"\r\nPLAYLIST_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/example_playlist.txt\"\r\n\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\")\r\nMATCH=JMusicBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n## JMusicBot Setup\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] && mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "\/bin\/bash"
}
},
@@ -31,10 +32,11 @@
"name": "[REQUIRED] Discord Bot Token",
"description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https:\/\/jmusicbot.com\/getting-a-bot-token\/",
"env_variable": "BOT_TOKEN",
- "default_value": "You need to get a token",
+ "default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "[REQUIRED] Bot Owner ID",
@@ -43,7 +45,8 @@
"default_value": "Change This To Your Discord User ID",
"user_viewable": true,
"user_editable": true,
- "rules": "required|digits:18"
+ "rules": "required|digits_between:17,18",
+ "field_type": "text"
},
{
"name": "Bot Prefix",
@@ -52,7 +55,8 @@
"default_value": "@mention",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
},
{
"name": "Bot Alternate Prefix",
@@ -61,7 +65,8 @@
"default_value": "NONE",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Bot Default Game",
@@ -70,7 +75,8 @@
"default_value": "DEFAULT",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
},
{
"name": "Bot Default Status",
@@ -79,7 +85,8 @@
"default_value": "ONLINE",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:ONLINE,IDLE,DND,INVISIBLE"
+ "rules": "required|string|in:ONLINE,IDLE,DND,INVISIBLE",
+ "field_type": "text"
},
{
"name": "Bot Show Song in Status",
@@ -88,7 +95,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Bot Show Images for \"Now Playing\"",
@@ -97,7 +105,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Bot Stay In Channel",
@@ -106,7 +115,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Bot Alone Time Until Disconnect",
@@ -115,7 +125,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer"
+ "rules": "required|integer",
+ "field_type": "text"
},
{
"name": "Bot Max Song Length",
@@ -124,7 +135,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer"
+ "rules": "required|integer",
+ "field_type": "text"
}
]
}
diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md
new file mode 100644
index 00000000..0ffa88ed
--- /dev/null
+++ b/bots/discord/muse/README.md
@@ -0,0 +1,43 @@
+# Muse
+
+### Authors / Contributors
+
+
+
+
+
+
+## Their [Github](https://github.com/codetheweb/muse)
+
+Muse is a highly-opinionated midwestern self-hosted Discord music bot that doesn't suck.
+
+## Server Ports
+
+There are no ports required for the Muse bot
diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json
new file mode 100644
index 00000000..bcb0554c
--- /dev/null
+++ b/bots/discord/muse/egg-muse.json
@@ -0,0 +1,92 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-09-20T20:25:51+02:00",
+ "name": "Muse",
+ "author": "hello@apollo.moe",
+ "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16"
+ },
+ "file_denylist": [],
+ "startup": "npm start",
+ "config": {
+ "files": "{\r\n \".env\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISCORD_TOKEN\": \"DISCORD_TOKEN={{env.discord_token}}\",\r\n \"DATA_DIR\": \"DATA_DIR={{env.data_dir}}\",\r\n \"YOUTUBE_API_KEY\": \"YOUTUBE_API_KEY={{env.api_key}}\",\r\n \"SPOTIFY_CLIENT_ID\": \"SPOTIFY_CLIENT_ID={{env.client_id}}\",\r\n \"SPOTIFY_CLIENT_SECRET\": \"SPOTIFY_CLIENT_SECRET={{env.client_secret}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Running version \"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install git curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"",
+ "container": "node:lts-bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "TOKEN",
+ "description": "Discord Bot Token",
+ "env_variable": "discord_token",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Data directory",
+ "description": "Default: .\/data",
+ "env_variable": "data_dir",
+ "default_value": ".\/data",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "YouTube API Key",
+ "description": "You can get it here: https:\/\/console.developers.google.com\/",
+ "env_variable": "api_key",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Spotify Client ID",
+ "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications",
+ "env_variable": "client_id",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Spotify Client Secret",
+ "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications",
+ "env_variable": "client_secret",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Version",
+ "description": "Specify a version, for example: \"v2.4.1\"\r\nFor the latest version, type \"latest\"",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/bots/discord/redbot/egg-red.json b/bots/discord/redbot/egg-red.json
index 953a179b..cc75b41e 100644
--- a/bots/discord/redbot/egg-red.json
+++ b/bots/discord/redbot/egg-red.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-06T11:14:23+01:00",
+ "exported_at": "2023-08-05T10:50:21+02:00",
"name": "Red",
"author": "parker@parkervcp.com",
"description": "A multifunction Discord bot \r\n\r\nhttps:\/\/github.com\/Cog-Creators\/Red-DiscordBot",
@@ -22,8 +22,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-11-jre\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\n\r\necho -e \"install finished\"",
- "container": "python:3.8-slim",
+ "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-17-jre-headless\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\npip install --upgrade pip\r\nsu - container -c 'pip install -U pip wheel'\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"",
+ "container": "python:3.11-slim",
"entrypoint": "bash"
}
},
@@ -47,6 +47,16 @@
"user_editable": true,
"rules": "required|string",
"field_type": "text"
+ },
+ {
+ "name": "Owner",
+ "description": "Owner of the Bot to use special commands",
+ "env_variable": "OWNER",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:30",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/bots/discord/ree6/README.md b/bots/discord/ree6/README.md
new file mode 100644
index 00000000..6b4a3a0e
--- /dev/null
+++ b/bots/discord/ree6/README.md
@@ -0,0 +1,73 @@
+# Ree6
+
+___
+
+## Authors / Contributors
+
+
+
+
+
+
+
+___
+
+## Bot Description & Features
+
+From the developer's [Github](https://github.com/Ree6-Applications/Ree6):
+> Ree6 is an all-in-one Discord Bot maintained by Presti, which started as an alternative of Mee6 to provide a lot of features that are hidden behind a paywall or subscription.
+
+- Contains almost every feature Mee6 has.
+- Has a open Source Webinterface.
+- Provides advanced Audit-Logging.
+- Has built in post notifications (Twitter, Instagram, YouTube, Reddit and Twitch).
+- Built-in simple Ticket System.
+- And more!
+___
+
+## Configuration
+
+- You will need to modify the config.yml to even start the bot.
+
+___
+
+## Server Ports
+
+There are no ports required for Ree6.
+___
+
+## Updating
+
+Re-Installing the server via the panel will do the following:
+
+1. Update the bot to the latest version.
+
+
+## API keys
+This bot uses a lot of api keys. It will print some errors to the console if you don't have some filled in but the bot should still function as normal with the api keys you entered.
\ No newline at end of file
diff --git a/bots/discord/ree6/config.yml b/bots/discord/ree6/config.yml
new file mode 100644
index 00000000..ba2240d5
--- /dev/null
+++ b/bots/discord/ree6/config.yml
@@ -0,0 +1,128 @@
+# ################################
+# # #
+# # Ree6 Config File #
+# # by Presti #
+# # #
+# ################################
+#
+
+# Do not change this!
+config:
+ version: 3.0.0
+ creation: 1686731674683
+
+# HikariCP Configuration
+hikari:
+
+ # SQL Configuration
+ sql:
+ user: root
+ db: root
+ pw: yourpw
+ host: localhost
+ port: 3306
+
+ # Misc Configuration
+ misc:
+ storage: sqlite # Possible entries: sqlite, mariadb, postgresql, h2, h2-server
+ storageFile: storage/Ree6.db
+ createEmbeddedServer: false # Should an instance of an embedded Server be created? Only used for H2-Server.
+ poolSize: 10
+
+# Discord Application and overall Bot Configuration, used for OAuth, Bot Authentication and customization.
+bot:
+ tokens:
+ release: ReleaseTokenhere # Token used when set to release build.
+ beta: BetaTokenhere # Token used when set to beta build.
+ dev: DevTokenhere # Token used when set to dev build.
+
+ # Configuration for the Bot itself.
+ misc:
+ status: ree6.de | %guilds% Servers. (%shard%) # The Status of the Bot.
+ feedbackChannelId: 0 # The Channel used for Feedback.
+ ownerId: # The ID of the Bot Owner. Change this to yours!
+ predefineInformation: | # Predefined Information for the AI.
+ You are Ree6 a Discord bot.
+ invite: https://invite.ree6.de # The Invite Link of the Bot.
+ support: https://support.ree6.de # The Support Server Link of the Bot.
+ github: https://github.ree6.de # The GitHub Link of the Bot.
+ website: https://ree6.de # The Website Link of the Bot.
+ webinterface: https://cp.ree6.de # The Webinterface Link of the Bot.
+ recording: https://cp.ree6.de/external/recording # The Recording Link of the Bot.
+ twitchAuth: https://cp.ree6.de/external/twitch # The Twitch Authentication Link of the Bot.
+ advertisement: powered by Tube-hosting # The Advertisement in Embed Footers and the rest.
+ name: Ree6 # The Name of the Bot.
+ shards: 1 # The shard amount of the Bot. Check out https://anidiots.guide/understanding/sharding/#sharding for more information.
+
+ # Customize the active modules in Ree6.
+ modules:
+ moderation: true # Enable the moderation module.
+ music: true # Enable the music module.
+ fun: true # Enable the fun commands.
+ community: true # Enable the community commands.
+ economy: true # Enable the economy commands.
+ level: true # Enable the level module.
+ nsfw: true # Enable the nsfw module.
+ info: true # Enable the info commands.
+ hidden: true # Enable the hidden commands.
+ logging: true # Enable the logging module.
+ notifier: true # Enable the notifier module.
+ streamtools: true # Enable the Stream-tools module.
+ temporalvoice: true # Enable the Temporal-voice module.
+ tickets: true # Enable the Tickets module.
+ suggestions: true # Enable the suggestions module.
+ customcommands: true # Enable the custom Commands module.
+ customevents: true # Enable the custom Events module.
+ ai: true # Enable the AI module.
+ addons: false # Enable the Addons module.
+ news: true # Enable the news command/module.
+ games: true # Enable the Games module.
+ reactionroles: true # Enable the reaction-roles module.
+ slashcommands: true # Enable the slash-commands support.
+ messagecommands: true # Enable the message-commands support.
+
+# Heartbeat Configuration, for status reporting
+heartbeat:
+ url: none # The URL to the Heartbeat-Server
+ interval: 60
+
+dagpi:
+ apitoken: DAGPI.xyz API-Token # Your Dagpi.xyz API-Token, for tweet image generation!
+
+amari:
+ apitoken: Amari API-Token # Your Amari API-Token, for Amari Level imports!
+
+openai:
+ apiToken: OpenAI API-Token # Your OpenAI API-Token, for ChatGPT!
+ apiUrl: https://api.openai.com/v1/chat/completions # The URL to the OpenAI API.
+ model: gpt-3.5-turbo-0301 # The Model used for the OpenAI API.
+
+sentry:
+ dsn: yourSentryDSNHere # Your Sentry DSN, for error reporting!
+
+# Spotify Application Configuration, used to parse Spotify Tracks/Playlists to YouTube search queries.
+spotify:
+ client:
+ id: yourspotifyclientid
+ secret: yourspotifyclientsecret
+
+# Twitch Application Configuration, used for the StreamTools and Twitch Notifications.
+twitch:
+ client:
+ id: yourtwitchclientidhere
+ secret: yourtwitchclientsecrethere
+
+# Twitter Application Configuration, used for the Twitter Notifications.
+twitter:
+ bearer: yourTwitterBearerToken
+
+# Reddit Application Configuration, used for the Reddit Notification.
+reddit:
+ client:
+ id: yourredditclientid
+ secret: yourredditclientsecret
+
+# Instagram Application Configuration, used for the Instagram Notification.
+instagram:
+ username: yourInstagramUsername
+ password: yourInstagramPassword
diff --git a/bots/discord/ree6/egg-ree6.json b/bots/discord/ree6/egg-ree6.json
new file mode 100644
index 00000000..4f713d01
--- /dev/null
+++ b/bots/discord/ree6/egg-ree6.json
@@ -0,0 +1,422 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-06-14T13:03:27+02:00",
+ "name": "Ree6",
+ "author": "presti@presti.me",
+ "description": "All-in-one, open source and 100% free Discord Bot!",
+ "features": null,
+ "docker_images": {
+ "Java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ },
+ "file_denylist": [],
+ "startup": "java -Dnogui=true -jar Ree6.jar",
+ "config": {
+ "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"hikari.sql.user\": \"{{server.build.env.DATABASE_USER}}\",\r\n \"hikari.sql.db\": \"{{server.build.env.DATABASE_DB}}\",\r\n \"hikari.sql.pw\": \"{{server.build.env.DATABASE_PW}}\",\r\n \"hikari.sql.host\": \"{{server.build.env.DATABASE_HOST}}\",\r\n \"hikari.sql.port\": \"{{server.build.env.DATABASE_PORT}}\",\r\n \"hikari.misc.storage\": \"{{server.build.env.DATABASE_TYP}}\",\r\n \"hikari.misc.storageFile\": \"{{server.build.env.DATABASE_FILE}}\",\r\n \"hikari.misc.poolSize\": \"{{server.build.env.DATABASE_POOL}}\",\r\n \"hikari.misc.createEmbeddedServer\": \"{{server.build.env.DATABASE_EMBEDDED}}\",\r\n \"heartbeat.url\": \"{{server.build.env.HEARTBEAT_URL}}\",\r\n \"heartbeat.interval\": \"{{server.build.env.HEARTBEAT_INTERVAL}}\",\r\n \"dagpi.apitoken\": \"{{server.build.env.DAGPI_TOKEN}}\",\r\n \"amari.apitoken\": \"{{server.build.env.AMARI_TOKEN}}\",\r\n \"sentry.dsn\": \"{{server.build.env.SENTRY_DSN}}\",\r\n \"spotify.client.id\": \"{{server.build.env.SPOTIFY_CLIENT_ID}}\",\r\n \"spotify.client.secret\": \"{{server.build.env.SPOTIFY_CLIENT_SECRET}}\",\r\n \"twitch.client.id\": \"{{server.build.env.TWITCH_CLIENT_ID}}\",\r\n \"twitch.client.secret\": \"{{server.build.env.TWITCH_CLIENT_SECRET}}\",\r\n \"twitter.consumer.key\": \"{{server.build.env.TWITTER_CONSUMER_ID}}\",\r\n \"twitter.consumer.secret\": \"{{server.build.env.TWITTER_CONSUMER_SECRET}}\",\r\n \"twitter.access.key\": \"{{server.build.env.TWITTER_ACCESS_ID}}\",\r\n \"twitter.access.secret\": \"{{server.build.env.TWITTER_ACCESS_SECRET}}\",\r\n \"reddit.client.id\": \"{{server.build.env.REDDIT_CLIENT_ID}}\",\r\n \"reddit.client.secret\": \"{{server.build.env.REDDIT_CLIENT_SECRET}}\",\r\n \"instagram.username\": \"{{server.build.env.INSTAGRAM_USERNAME}}\",\r\n \"instagram.password\": \"{{server.build.env.INSTAGRAM_PASSWORD}}\",\r\n \"bot.tokens.release\": \"{{server.build.env.BOT_TOKEN}}\",\r\n \"openai.apiToken\": \"{{server.build.env.AI_TOKEN}}\",\r\n \"openai.apiUrl\": \"{{server.build.env.AI_URL}}\",\r\n \"openai.model\": \"{{server.build.env.AI_MODEL}}\",\r\n \"bot.misc.status\": \"{{server.build.env.MISC_STATUS}}\",\r\n \"bot.misc.feedbackChannelId\": \"{{server.build.env.MISC_FEEDBACK}}\",\r\n \"bot.misc.ownerId\": \"{{server.build.env.MISC_OWNER}}\",\r\n \"bot.misc.predefineInformation\": \"{{server.build.env.MISC_PREDEF}}\",\r\n \"bot.misc.invite\": \"{{server.build.env.MISC_INVITE}}\",\r\n \"bot.misc.support\": \"{{server.build.env.MISC_SUPPORT}}\",\r\n \"bot.misc.website\": \"{{server.build.env.MISC_WEB}}\",\r\n \"bot.misc.webinterface\": \"{{server.build.env.MISC_INTERFACE}}\",\r\n \"bot.misc.record\": \"{{server.build.env.MISC_RECORD}}\",\r\n \"bot.misc.twitchAuth\": \"{{server.build.env.MISC_TWITCH}}\",\r\n \"bot.misc.advertisement\": \"{{server.build.env.MISC_ADV}}\",\r\n \"bot.misc.name\": \"{{server.build.env.MISC_NAME}}\",\r\n \"bot.misc.shards\": \"{{server.build.env.MISC_SHARD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Finished Loading\"\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE and VERSION\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\napt update\r\napt install -y jq curl\r\n\r\n\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/ree6\/config.yml\"\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Ree6-Applications\/Ree6\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Ree6-Applications\/Ree6\/releases\")\r\nMATCH=jar-with-dependencies.jar\r\n\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i *.jar)\r\n fi\r\nfi\r\n\r\n## Ree6 Setup\r\n[ ! -d \/mnt\/server ] && mkdir -p \/mnt\/server\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\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating Ree6...\\n\"\r\n\r\nif [ -f Ree6.jar ]; then\r\n echo -e \"Updating Ree6.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"Ree6.jar-old\")'\r\n mv -f Ree6.jar Ree6.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\\n\"\r\ncurl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.yml ]; then\r\n echo -e \"Updating config.yml to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.yml-old\")'\r\n mv -f config.yml config.yml-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o config.yml ${CONFIG_LINK}\\n\"\r\ncurl -sSL -o config.yml ${CONFIG_LINK}\r\n \r\n\r\necho -e \"\\nRee6 Successfully Installed!\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "[REQUIRED] Discord Bot Token",
+ "description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https:\/\/jmusicbot.com\/getting-a-bot-token\/",
+ "env_variable": "BOT_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Dagpi token",
+ "description": "Your Dagpi.xyz API-Token, for tweet image generation!",
+ "env_variable": "DAGPI_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Sentry DSN",
+ "description": "Your Sentry DSN, for error reporting!",
+ "env_variable": "SENTRY_DSN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Spotify Client Id",
+ "description": "Spotify Application Configuration, used to parse Spotify Tracks\/Playlists to YouTube search queries.",
+ "env_variable": "SPOTIFY_CLIENT_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Spotify Client Secret",
+ "description": "Spotify Application Configuration, used to parse Spotify Tracks\/Playlists to YouTube search queries.",
+ "env_variable": "SPOTIFY_CLIENT_SECRET",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Heartbeat Url",
+ "description": "The URL to the Heartbeat-Server",
+ "env_variable": "HEARTBEAT_URL",
+ "default_value": "none",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string",
+ "field_type": "text"
+ },
+ {
+ "name": "Heartbeat Interval",
+ "description": "The interval between the heartbeats.",
+ "env_variable": "HEARTBEAT_INTERVAL",
+ "default_value": "60",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "integer",
+ "field_type": "text"
+ },
+ {
+ "name": "Amari Token",
+ "description": "Your Amari API-Token, for Amari Level imports!",
+ "env_variable": "AMARI_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Twitch Client Id",
+ "description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.",
+ "env_variable": "TWITCH_CLIENT_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Twitch Client Secret",
+ "description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.",
+ "env_variable": "TWITCH_CLIENT_SECRET",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Twitter Bearer Key",
+ "description": "Twitter Application Configuration, used for the Twitter Notifications.",
+ "env_variable": "TWITTER_BEARER",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Reddit Client Id",
+ "description": "Reddit Application Configuration, used for the Reddit Notification.",
+ "env_variable": "REDDIT_CLIENT_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Reddit Client Secret",
+ "description": "Reddit Application Configuration, used for the Reddit Notification.",
+ "env_variable": "REDDIT_CLIENT_SECRET",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Instagram Username",
+ "description": "Instagram Application Configuration, used for the Instagram Notification.",
+ "env_variable": "INSTAGRAM_USERNAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Instagram Password",
+ "description": "Instagram Application Configuration, used for the Instagram Notification.",
+ "env_variable": "INSTAGRAM_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "SQL Username",
+ "description": "Username for the SQL connection.",
+ "env_variable": "DATABASE_USER",
+ "default_value": "root",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "SQL Database",
+ "description": "Database for the SQL Connection",
+ "env_variable": "DATABASE_DB",
+ "default_value": "root",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "SQL Password",
+ "description": "Password for the SQL connection.",
+ "env_variable": "DATABASE_PW",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "SQL Port",
+ "description": "Port for the SQL connection.",
+ "env_variable": "DATABASE_PORT",
+ "default_value": "3306",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "integer",
+ "field_type": "text"
+ },
+ {
+ "name": "Database Typ",
+ "description": "The Typ of the Database Ree6 should use!\r\nPossible typs:\r\n- mariadb\r\n- sqlite\r\n- h2\r\n- postgres",
+ "env_variable": "DATABASE_TYP",
+ "default_value": "sqlite",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:mariadb,sqlite,postgres,postregsql,h2",
+ "field_type": "text"
+ },
+ {
+ "name": "Database Storagefile",
+ "description": "The location of the storagefile if sqlite is being used.",
+ "env_variable": "DATABASE_FILE",
+ "default_value": "storage\/Ree6.db",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "[DEVELOPER-STUFF] Database Poolsize",
+ "description": "The Database connection pool size!",
+ "env_variable": "DATABASE_POOL",
+ "default_value": "10",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer",
+ "field_type": "text"
+ },
+ {
+ "name": "Database host",
+ "description": "The Host address of the Database connection.",
+ "env_variable": "DATABASE_HOST",
+ "default_value": "localhost",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "OpenAI Token",
+ "description": "Your Authentication token that should be used in the AI API calls.",
+ "env_variable": "AI_TOKEN",
+ "default_value": "OpenAI API-Token",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "OpenAI Url",
+ "description": "The URL that should receive the API calls.",
+ "env_variable": "AI_URL",
+ "default_value": "https:\/\/api.openai.com\/v1\/chat\/completions",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "OpenAI Model",
+ "description": "The AI model that should be used in the API calls.",
+ "env_variable": "AI_MODEL",
+ "default_value": "gpt-3.5-turbo-0301",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Activity Status",
+ "description": "The Activity status of the Bot that will be shown.",
+ "env_variable": "MISC_STATUS",
+ "default_value": "ree6.de | %guilds% Servers. (%shard%)",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Feedback Channel",
+ "description": "The Channel Id of the Feedback channel.",
+ "env_variable": "MISC_FEEDBACK",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "integer",
+ "field_type": "text"
+ },
+ {
+ "name": "[DEVELOPER-STUFF] Bot Owner Id",
+ "description": "The ID of the Bot Owner, this will be used internally on some checks.",
+ "env_variable": "MISC_OWNER",
+ "default_value": "321580743488831490",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer",
+ "field_type": "text"
+ },
+ {
+ "name": "Invite Link",
+ "description": "The Invite link to invite the Bot.",
+ "env_variable": "MISC_INVITE",
+ "default_value": "https:\/\/invite.ree6.de",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Predefined Information for AI",
+ "description": "The Information for the AI.",
+ "env_variable": "MISC_PREDEF",
+ "default_value": "You are Ree6 a Discord bot.",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Support Link",
+ "description": "The Url link for users to receive support.",
+ "env_variable": "MISC_SUPPORT",
+ "default_value": "https:\/\/support.ree6.de",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Website",
+ "description": "The Url to the Website of the Bot.",
+ "env_variable": "MISC_WEB",
+ "default_value": "https:\/\/ree6.de",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Webinterface",
+ "description": "The Url to the Webinterface.",
+ "env_variable": "MISC_INTERFACE",
+ "default_value": "https:\/\/cp.ree6.de",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Record Url",
+ "description": "The Url that uses can access to get their recording.",
+ "env_variable": "MISC_RECORD",
+ "default_value": "https:\/\/cp.ree6.de\/external\/recording",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Twitch Url",
+ "description": "The Url used to connect a Twitch Account with the Ree6 System.",
+ "env_variable": "MISC_TWITCH",
+ "default_value": "https:\/\/cp.ree6.de\/external\/twitch",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Advertisment",
+ "description": "The Advertisement in Embed Footers and the rest.",
+ "env_variable": "MISC_ADV",
+ "default_value": "powered by Tube-hosting",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Name",
+ "description": "The Name of the Bot.",
+ "env_variable": "MISC_NAME",
+ "default_value": "Ree6",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Shards",
+ "description": "The amount of shards that should be created.",
+ "env_variable": "MISC_SHARD",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/bots/discord/sinusbot/egg-sinusbot.json b/bots/discord/sinusbot/egg-sinusbot.json
index 00e5f239..7ddb20f3 100644
--- a/bots/discord/sinusbot/egg-sinusbot.json
+++ b/bots/discord/sinusbot/egg-sinusbot.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-04T12:46:17+01:00",
+ "exported_at": "2023-08-14T15:15:05+02:00",
"name": "Sinusbot",
"author": "support@pterodactyl.io",
"description": "Musicbot for Discord and Teamspeak.",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\n\r\nif [ \"${PRE_RELEASE}\" == \"1\" ]; then\r\necho \"pre\"\r\nDOWNLOAD_URL=$(curl -sSL https:\/\/forum.sinusbot.com\/threads\/upcoming-changes.8659\/ | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | sort -u | grep pre\/)\r\nwget -qO - ${DOWNLOAD_URL} | tar xj \r\nelse\r\necho \"release\"\r\nwget -qO - https:\/\/www.sinusbot.com\/dl\/sinusbot.current.tar.bz2 | tar xj\r\nfi\r\n\r\n#Download Latest TeamSpeak Client\r\nTS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.version')\r\nTS_DL_LINK=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n.\/TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64\/xcbglintegrations\/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"\/home\/container\/TeamSpeak3-Client-linux_amd64\/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"\/home\/container\/youtube-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\nwget -qO - https:\/\/www.sinusbot.com\/dl\/sinusbot.current.tar.bz2 | tar xj\r\n\r\n\r\n#Download Latest TeamSpeak Client\r\n#TS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.version')\r\n#TS_DL_LINK=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\n# Sinusbot is not yet updated...\r\nTS_VERSION=3.5.6\r\nTS_DL_LINK=https:\/\/files.teamspeak-services.com\/releases\/client\/3.5.6\/TeamSpeak3-Client-linux_amd64-3.5.6.run\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n.\/TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64\/xcbglintegrations\/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"\/home\/container\/TeamSpeak3-Client-linux_amd64\/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"\/home\/container\/youtube-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
@@ -37,16 +37,6 @@
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
- },
- {
- "name": "Pre release",
- "description": "Download the pre-release version?",
- "env_variable": "PRE_RELEASE",
- "default_value": "0",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|boolean",
- "field_type": "text"
}
]
}
diff --git a/bots/twitch/phantombot/egg-phantom-bot.json b/bots/twitch/phantombot/egg-phantom-bot.json
index ede55fc3..5acd461b 100644
--- a/bots/twitch/phantombot/egg-phantom-bot.json
+++ b/bots/twitch/phantombot/egg-phantom-bot.json
@@ -4,13 +4,14 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-10-02T18:28:42+02:00",
+ "exported_at": "2023-09-02T23:24:58+00:00",
"name": "PhantomBot",
"author": "mail@wuffy.eu",
"description": "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.",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:java_11": "ghcr.io\/parkervcp\/yolks:java_11"
+ "Java 16 [DEPRECATED]": "ghcr.io\/parkervcp\/yolks:java_16",
+ "Java 19": "ghcr.io\/parkervcp\/yolks:java_19"
},
"file_denylist": [],
"startup": "java --add-opens java.base\/java.lang=ALL-UNNAMED -Djava.security.policy=config\/security -Dinteractive -Xms1m -Dfile.encoding=UTF-8 -jar PhantomBot.jar",
@@ -30,7 +31,7 @@
"variables": [
{
"name": "Version",
- "description": "latest = Latest Stable\r\nmaster = latest Github",
+ "description": "latest = Latest Stable\r\nmaster = latest Github\r\n3.9.0.7 = Latest known working with Java 16",
"env_variable": "RELEASE_VERSION",
"default_value": "latest",
"user_viewable": true,
@@ -109,4 +110,4 @@
"field_type": "text"
}
]
-}
\ 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 8a989269..2cd2c32f 100644
--- a/bots/twitch/sogebot/egg-soge-bot.json
+++ b/bots/twitch/sogebot/egg-soge-bot.json
@@ -1,17 +1,17 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-13T15:19:16+01:00",
+ "exported_at": "2023-04-23T18:47:53+02:00",
"name": "SogeBot",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "sogeBot - Free Twitch Bot built on Node.js https:\/\/sogebot.xyz\/",
"features": null,
- "images": [
- "ghcr.io\/parkervcp\/yolks:nodejs_16"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:nodejs_18": "ghcr.io\/parkervcp\/yolks:nodejs_18"
+ },
"file_denylist": [],
"startup": "npm start",
"config": {
@@ -22,8 +22,8 @@
},
"scripts": {
"installation": {
- "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: info@goover.de\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip sqlite3 jq wget python3 build-essential ca-certificates\r\n\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\nMATCH=sogeBot\r\ncd \/mnt\/server\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/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\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH-*.zip\r\nrm -fR $MATCH-*.zip\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm ci 2>&1 | tee npmlog.txt\r\n\r\necho -e \"install completed\"\r\nexit 0",
- "container": "node:16-bullseye-slim",
+ "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: eggs@goover.dev\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip jq python3 build-essential ca-certificates\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\")\r\nMATCH=sogeBot\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\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\ncurl -sSL -o sogeBot.zip ${DOWNLOAD_LINK}\r\n\r\nunzip -o sogeBot.zip\r\nrm -rf sogeBot.zip\r\n\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm install -g npm@8\r\n\r\nnpm install --verbose --force\r\n\r\necho -e \"install completed\"\r\nexit 0",
+ "container": "node:18-bullseye-slim",
"entrypoint": "bash"
}
},
@@ -35,7 +35,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/example/README.md b/example/README.md
index 5b9852aa..2052e637 100644
--- a/example/README.md
+++ b/example/README.md
@@ -18,17 +18,15 @@ The description of the server usually provided by the game/server maker.
Due to rate limiting the console on the panel, it cannot keep up with the game console and the build will complete before the panel console may show it. Reloading the console will load it to the latest part of the log.
-## Minimum RAM warning
-
-Minimum required memory to run the server.
-
-
-## Minumim Sorage warning
-
-Minimum required storage to run the server.
-
-
-
+## Installation/System Requirements
+
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | *Main info (32/64 bit or ARM support)* | *More info about egg's preferred processor* |
+| RAM | *Minimum amount of RAM (in MiB/GiB)* | *Recommended amount of RAM (in MiB/GiB)* |
+| Storage | *Minimum amount of Storage (in MiB/GiB)* | *Recommended amount of Storage (in MiB/GiB)* |
+| Network | *Minimum network speed (in Mbit/s)* | *Recommended network speed (in Mbit/s)* |
+| Game Ownership | *Can the server start without it?* | *Is it needed for any other features?* |
## Server Ports
diff --git a/game_eggs/README.md b/game_eggs/README.md
index 7408ceac..54ab8c99 100644
--- a/game_eggs/README.md
+++ b/game_eggs/README.md
@@ -14,6 +14,16 @@
* [MCGalaxy](classicube/mcgalaxy)
+[Clone Hero](clone_hero)
+
+[CS2D](cs2d)
+
+[Cube Engine](cubeengine)
+* [AssaultCube](cubeengine/assaultcube)
+* [Cube 2: Sauerbraten](cubeengine/cube2)
+
+[DDRaceNetwork](ddracenetwork/)
+
[Doom](doom)
* [Zandronum](doom/zandronum)
@@ -38,10 +48,13 @@
* GTA SA
* [Multi Theft Auto](gta/mtasa)
* [SA-MP](gta/samp)
+ * [OpenMp](gta/openmp)
* GTA
* [GTAC](gta/gtac)
+[Kerbal Space Program](ksp)
+
[Los Angeles Crimes](losangelescrimes)
[League Sandbox](leaguesandbox)
@@ -58,16 +71,19 @@
* [PocketMine MP](minecraft/bedrock/pocketmine_mp)
* [Java](minecraft/java) Servers for Java Minecraft
+ * [CurseForge](minecraft/java/curseforge)
* [Cuberite](minecraft/java/cuberite)
* [Fabric](minecraft/java/fabric)
* [Feather](minecraft/java/feather)
* [Feed The Beast](minecraft/java/ftb)
* [Forge](minecraft/java/forge)
* [Glowstone](minecraft/java/glowstone)
+ * [Limbo](minecraft/java/limbo)
* [Magma](minecraft/java/magma)
* [Mohist](minecraft/java/mohist)
* [NanoLimbo](minecraft/java/nanolimbo)
* [Paper](minecraft/java/paper)
+ * [Folia](minecraft/java/folia)
* [Purpur](minecraft/java/purpur)
* [Spigot](minecraft/java/spigot)
* [SpongeForge](minecraft/java/spongeforge)
@@ -103,30 +119,44 @@
* [RedM](rdr/redm)
+[Spacestation 14](spacestation_14)
+
+[Rimworld](rimworld)
+
+* [Open World](rimworld/open_world)
+
[Starmade](starmade)
[SteamCMD Servers](steamcmd_servers) These eggs use SteamCMD to install
* [7 Days to Die](steamcmd_servers/7_days_to_die)
+* [ARK: Survival Ascended](steamcmd_servers/ark_survival_ascended)
* [ARK: Survival Evolved](steamcmd_servers/ark_survival_evolved)
* [Arma](steamcmd_servers/arma)
* [Arma 3](steamcmd_servers/arma/arma3)
* [Arma Reforger](steamcmd_servers/arma/arma_reforger)
* [Assetto Corsa](steamcmd_servers/assetto_corsa)
* [Assetto Corsa Competizione](steamcmd_servers/assetto_corsa_competizione)
+* [Astro Colony](steamcmd_servers/astro_colony)
* [Astroneer](steamcmd_servers/astroneer)
* [Avorion](steamcmd_servers/avorion)
* [Barotrauma](steamcmd_servers/barotrauma)
+* [BATTALION: Legacy](steamcmd_servers/battalion_legacy)
* [Black Mesa](steamcmd_servers/black_mesa)
* [Citadel: Forged with Fire](steamcmd_servers/citadel)
* [Conan Exiles](steamcmd_servers/conan_exiles)
* [Core Keeper](steamcmd_servers/core_keeper)
+* [Counter-Strike](steamcmd_servers/counter_strike/)
+ * [Counter-Strike: Source](steamcmd_servers/counter_strike/counter_strike_source/)
+* [Craftopia](game_eggs/steamcmd_servers/craftopia)
* [CryoFall](steamcmd_servers/cryofall)
* [DayZ (Experimental)](steamcmd_servers/dayz-experimental)
* [Don't Starve Together](steamcmd_servers/dont_starve)
* [ECO](steamcmd_servers/eco)
* [Empyrion - Galactic Survival](steamcmd_servers/empyrion)
* [Fistful of Frags](steamcmd_servers/fof)
+* [Frozen Flame](steamcmd_servers/frozen_flame)
+* [Ground Branch](steamcmd_servers/ground_branch)
* [HLDS Server](steamcmd_servers/hlds_server)
* [HLDS Vanilla](steamcmd_servers/hlds_server/vanilla)
* [ReHLDS](steamcmd_servers/hlds_server/rehlds)
@@ -140,15 +170,20 @@
* [Left 4 Dead 2](steamcmd_servers/left4dead_2)
* [Modiverse](steamcmd_servers/modiverse)
* [Mordhau](steamcmd_servers/mordhau)
+* [Mount & Blade II: Bannerlord](steamcmd_servers/mount_blade_II_bannerlord)
+* [Neos VR](steamcmd_servers/neosvr)
* [No More Room in Hell](steamcmd_servers/nmrih)
+* [No One Survived](steamcmd_servers/no_one_survived)
* [Onset](steamcmd_servers/onset)
* [Open Fortress](steamcmd_servers/open_fortress)
+* [Operation Harsh Doorstop](steamcmd_servers/operation_harsh_doorstop)
* [Pavlov VR](steamcmd_servers/pavlov_vr)
* [PixARK](steamcmd_servers/pixark)
* [Portal Knights](steamcmd_servers/portal_knights)
* [Post Scriptum](steamcmd_servers/post_scriptum)
* [Project Zomboid](steamcmd_servers/project_zomboid)
* [Quake Live](steamcmd_servers/quake_live)
+* [Resonite](steamcmd_servers/resonite)
* [Rising World](steamcmd_servers/rising_world)
* [Legacy Java](steamcmd_servers/rising_world/legacy)
* [Unity](steamcmd_servers/rising_world/unity)
@@ -163,6 +198,7 @@
* [Exiled](steamcmd_servers/scpsl/exiled)
* [Multiadmin](steamcmd_servers/scpsl/multiadmin)
* [Soldat](steamcmd_servers/soldat)
+* [Sons of the Forest](steamcmd_servers/sonsoftheforest)
* [Space Engineers](steamcmd_servers/space_engineers)
* [default](steamcmd_servers/space_engineers/default)
* [torch](steamcmd_servers/space_engineers/torch)
@@ -172,8 +208,10 @@
* [Stormworks: Build and Rescue](steamcmd_servers/stormworks)
* [Subnautica: Nitrox Mod](steamcmd_servers/subnautica_nitrox_mod)
* [Sven Co-op](steamcmd_servers/svencoop)
+* [Swords 'n Magic and Stuff](steamcmd_servers/swords_'n_Magic_and_Stuff)
* [Team Fortress 2 Classic](steamcmd_servers/team_fortress_2_classic)
* [The Forest](steamcmd_servers/the_forest)
+* [The Front](steamcmd_servers/thefront)
* [The Isle](steamcmd_servers/the_isle)
* [Evrima](steamcmd_servers/the_isle/evrima)
* [Tower Unite](steamcmd_servers/tower_unite)
diff --git a/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json b/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json
index ba3d3b54..c93e5617 100644
--- a/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json
+++ b/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json
@@ -6,7 +6,7 @@
},
"exported_at": "2023-03-04T15:04:21+01:00",
"name": "Among Us - Impostor Server",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Impostor is one of the first Among Us private servers, written in C#.\r\n\r\nThere are no special features at this moment, the goal is aiming to be as close as possible to the real server, for now. In a later stage, making modifications to game logic by modifying GameData packets can be looked at.",
"features": null,
"docker_images": {
diff --git a/game_eggs/beamng/beammp/egg-beam-m-p-servers.json b/game_eggs/beamng/beammp/egg-beam-m-p-server.json
similarity index 81%
rename from game_eggs/beamng/beammp/egg-beam-m-p-servers.json
rename to game_eggs/beamng/beammp/egg-beam-m-p-server.json
index 220812c5..4d61e0ec 100644
--- a/game_eggs/beamng/beammp/egg-beam-m-p-servers.json
+++ b/game_eggs/beamng/beammp/egg-beam-m-p-server.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-07T17:26:47+01:00",
+ "exported_at": "2023-05-14T18:49:02+02:00",
"name": "BeamMP Servers",
"author": "noah@noahserver.online",
"description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point through which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.",
@@ -15,14 +15,14 @@
"file_denylist": [],
"startup": ".\/BeamMP-Server",
"config": {
- "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.NAME}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.DESCRIPTION}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\",\r\n \"LogChat =\": \"LogChat = \\\"{{env.LOGCHAT}}\\\"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"[INFO] Vehicle data network online\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "exit"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux | head -1)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"[HTTP]\r\n# Recommended to keep enabled. With SSL the server will serve https and requires valid key and cert files\r\nUseSSL = true\r\n# Enables the internal HTTP server\r\nHTTPServerEnabled = false\r\nSSLKeyPath = \\\".\/.ssl\/HttpServer\/key.pem\\\"\r\nHTTPServerPort = 8080\r\nSSLCertPath = \\\".\/.ssl\/HttpServer\/cert.pem\\\"\r\n\r\n[General]\r\n# If SendErrors is `true`, the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to `false`\r\nSendErrorsShowMessage = true\r\nName = \\\"BeamMP Server\\\"\r\nPort = 30814\r\nResourceFolder = \\\"Resources\\\"\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = \\\"\\\"\r\nPrivate = true\r\nMaxPlayers = 10\r\nDebug = false\r\nDescription = \\\"BeamMP Default Description\\\"\r\nMaxCars = 1\r\nMap = \\\"\/levels\/gridmap_v2\/info.json\\\"\r\n# You can turn on\/off the SendErrors message you get on startup here\r\nSendErrors = true\" > ServerConfig.toml\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux | head -1)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"[HTTP]\r\n# Recommended to keep enabled. With SSL the server will serve https and requires valid key and cert files\r\nUseSSL = true\r\n# Enables the internal HTTP server\r\nHTTPServerEnabled = false\r\nSSLKeyPath = \\\".\/.ssl\/HttpServer\/key.pem\\\"\r\nHTTPServerPort = 8080\r\nSSLCertPath = \\\".\/.ssl\/HttpServer\/cert.pem\\\"\r\n\r\n[General]\r\n# If SendErrors is `true`, the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to `false`\r\nSendErrorsShowMessage = true\r\nName = \\\"BeamMP Server\\\"\r\nPort = 30814\r\nResourceFolder = \\\"Resources\\\"\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = \\\"\\\"\r\nPrivate = true\r\nMaxPlayers = 10\r\nDebug = false\r\nLogChat = true\r\nDescription = \\\"BeamMP Default Description\\\"\r\nMaxCars = 1\r\nMap = \\\"\/levels\/gridmap_v2\/info.json\\\"\r\n# You can turn on\/off the SendErrors message you get on startup here\r\nSendErrors = true\" > ServerConfig.toml\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -35,7 +35,17 @@
"default_value": "BeamMP Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:64",
+ "rules": "required|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Description",
+ "description": "Sets the server description",
+ "env_variable": "DESCRIPTION",
+ "default_value": "BeamMP Default Description",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:128",
"field_type": "text"
},
{
@@ -75,7 +85,7 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string",
+ "rules": "required|string|in:true,false",
"field_type": "text"
},
{
@@ -85,7 +95,7 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer|max:4",
+ "rules": "required|integer|max:10",
"field_type": "text"
},
{
@@ -98,6 +108,16 @@
"rules": "required|string|max:64",
"field_type": "text"
},
+ {
+ "name": "Chat logging",
+ "description": "Enable chat logging by the server",
+ "env_variable": "LOGCHAT",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
{
"name": "Match",
"description": "The match we have to do on there github package.\r\n\r\nCurrently, they have a special build for debian 11, what is the docker image we use.\r\nGo to https:\/\/github.com\/BeamMP\/BeamMP-Server\/releases if the version you want has an asset \"debian\" then select \"Server-debian\" if not then \"Server-linux\"",
@@ -109,4 +129,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/clone_hero/README.md b/game_eggs/clone_hero/README.md
new file mode 100644
index 00000000..1778313d
--- /dev/null
+++ b/game_eggs/clone_hero/README.md
@@ -0,0 +1,31 @@
+# Clone Hero
+
+## From their [Site](https://clonehero.net/)
+
+## [Documentation](https://wiki.clonehero.net/books/guides-and-tutorials/page/online-multiplayer#bkmrk-hosting-a-standalone)
+
+
+## Minimum RAM warning
+
+Minimum required memory to run the server.
+80MiB is recommended. 2GB+ is preferred
+
+## Minumim Sorage warning
+
+Minimum required storage to run the server.
+100MiB is recommended. 2GiB+ is preferred
+
+
+## Server Ports
+
+Ports required to run the server.
+
+| Port | default |
+|---------|---------|
+| Game | 14242 |
+
+### Notes
+
+
+14242 is the default port, but any port can be used.
+
diff --git a/game_eggs/clone_hero/egg-clone-hero.json b/game_eggs/clone_hero/egg-clone-hero.json
new file mode 100644
index 00000000..aaa9fce1
--- /dev/null
+++ b/game_eggs/clone_hero/egg-clone-hero.json
@@ -0,0 +1,62 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-03T16:24:37+02:00",
+ "name": "Clone Hero",
+ "author": "josdekurk@gmail.com",
+ "description": "Clone Hero is a classic instrument based rhythm game for Windows, Mac, Linux, and Android. It's playable with any 5 or 6 fret guitar controller, any midi drum kit, any game controller and even your keyboard! Jam out with Drums, 5-fret Guitar, or 6-fret Guitar online or local!",
+ "features": null,
+ "docker_images": {
+ "Debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/Server -l {{LOG_LEVEL}} -n \"{{SERVER_DISPLAY_NAME}}\" -p {{SERVER_PORT}} -a 0.0.0.0 $([[ -z \"{{SERVER_PASSWORD}}\" ]] && echo -np || echo \"-ps {{SERVER_PASSWORD}}\")",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Server running...\"\r\n}",
+ "logs": "{}",
+ "stop": "^SIGKILL"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -s https:\/\/clonehero.net\/ | grep -i \"Latest version\" | grep -oP '(?<=).+?(?=<\\\/b>)' | sed -e 's\/^[[:space:]]*\/\/' -e 's\/[[:space:]]*$\/\/') #v1.0.0.4080\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o ChStandaloneServer.zip https:\/\/pubdl.clonehero.net\/chserver\/ChStandaloneServer-${V}-final.zip\"\r\ncurl -sSL -o ChStandaloneServer.zip https:\/\/pubdl.clonehero.net\/chserver\/ChStandaloneServer-${V}-final.zip\r\n\r\nunzip -o ChStandaloneServer.zip\r\nrm ChStandaloneServer.zip\r\nmv ChStandaloneServer-${V}-final\/${ARCH}\/* .\r\nrm -rf ChStandaloneServer-${V}-final\/\r\n\r\nchmod +x Server\r\n\r\n\r\nif [ ! -f \/mnt\/server\/settings.ini ]\r\nthen\r\n\tcurl -sSL -o settings.ini https:\/\/pastebin.com\/raw\/rhcv0hvi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server name",
+ "description": "The name of the server",
+ "env_variable": "SERVER_DISPLAY_NAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:80",
+ "field_type": "text"
+ },
+ {
+ "name": "Server password",
+ "description": "The password of the server",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|regex:\/^[a-zA-Z0-9_]+$\/",
+ "field_type": "text"
+ },
+ {
+ "name": "Log level",
+ "description": "Set max logging level",
+ "env_variable": "LOG_LEVEL",
+ "default_value": "4",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:0,1,2,3,4",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/cs2d/README.md b/game_eggs/cs2d/README.md
new file mode 100644
index 00000000..4a53fc87
--- /dev/null
+++ b/game_eggs/cs2d/README.md
@@ -0,0 +1,35 @@
+# CS2D
+
+
+## From their [Site](https://www.cs2d.com/index.php)
+
+
+## [Documentation](https://www.cs2d.com/serverhosting.php)
+
+
+## Install notes
+
+This egg only supports downloading the latest releases
+
+## Minimum RAM warning
+
+Minimum required memory to run the server.
+1GB is recommended. 2GB+ is preferred
+
+## Minumim Sorage warning
+
+Minimum required storage to run the server.
+600Mib is recommended. 2GB+ is preferred
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 36963 |
+
+### Notes
+
+
+36963 is the default port, but any port can be used.
\ No newline at end of file
diff --git a/game_eggs/cs2d/egg-c-s2-d.json b/game_eggs/cs2d/egg-c-s2-d.json
new file mode 100644
index 00000000..1987ba17
--- /dev/null
+++ b/game_eggs/cs2d/egg-c-s2-d.json
@@ -0,0 +1,62 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-06-20T12:12:15+02:00",
+ "name": "CS2D",
+ "author": "josdekurk@gmail.com",
+ "description": "Plant and defuse bombs, rescue hostages or accomplish new missions like capture the flag or domination! Use a huge arsenal of weapons and equipment including crazy stuff like portal guns, lasers, RPGs, turrets and much more! You can even build things!",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
+ },
+ "file_denylist": [],
+ "startup": ".\/cs2d_dedicated",
+ "config": {
+ "files": "{\r\n \"sys\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_hostport \": \"sv_hostport {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name {{server.build.env.SERVER_NAME}}\",\r\n \"sv_password\": \"sv_password {{server.build.env.SERVER_PASSWORD}}\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.SERVER_PLAYERS}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"----- Server started -----\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nv=$(curl -s https:\/\/www.cs2d.com\/download.php | grep -Eo \"https?:\/\/\\S+?\\\"\" | grep -i \"get.php?get=cs2d_\" | grep -i \"linux\") # https:\/\/www.unrealsoftware.de\/get.php?get=cs2d_1013_linux.zip\"\r\nn=$(echo ${v#*=} | sed 's\/\"\/\/' ) # cs2d_1013_linux.zip\r\n\r\nc=$(curl -s https:\/\/www.unrealsoftware.de\/get.php?get=${n} | grep -o '' | cut -f2 -d \"<\" | awk '{print $3}' | grep -o '\"[^\"]*\"') # \"get.php?get=cs2d_1013_linux.zip&p=1&cid=15745\"\r\ncid=$(echo ${c\/\/\\\"\/} | cut -f4 -d '=') #15745\r\n\r\nDOWNLOAD_URL=\"https:\/\/www.unrealsoftware.de\/get.php?get=${n}&p=1&cid=${cid}\"\r\n\r\necho \"${DOWNLOAD_URL}\"\r\n\r\ncurl -sSL -o client.zip \"${DOWNLOAD_URL}\"\r\n\r\nunzip -o client.zip\r\nrm client.zip\r\n\r\ncurl -sSL -o dedicated.zip \"https:\/\/www.unrealsoftware.de\/files_pub\/cs2d_dedicated_linux.zip\"\r\nunzip -o dedicated.zip\r\nrm dedicated.zip\r\n\r\nchmod +x cs2d_dedicated\r\n\r\necho \"install finished\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Name",
+ "description": "",
+ "env_variable": "SERVER_NAME",
+ "default_value": "CS2D Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Password",
+ "description": "",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "",
+ "env_variable": "SERVER_PLAYERS",
+ "default_value": "12",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/cubeengine/assaultcube/README.md b/game_eggs/cubeengine/assaultcube/README.md
new file mode 100644
index 00000000..fcf5d50a
--- /dev/null
+++ b/game_eggs/cubeengine/assaultcube/README.md
@@ -0,0 +1,30 @@
+# AssaultCube
+[assault.cubers.net](https://assault.cubers.net/)
+
+AssaultCube is a FREE, multiplayer, first-person shooter game, based on the CUBE engine.
+
+Taking place in realistic environments, with fast, arcade gameplay, it's addictive and fun!
+
+With efficient bandwidth usage, it's low-latency and can even run over a 56 Kbps connection.
+It's tiny too, weighing in at a lightweight about 50 MB package available for Windows, Mac and Linux.
+On the correct settings, it can even run on old hardware (Pentium III and above).
+
+---
+
+## Server Ports
+
+Ports required to run the server.
+
+| Port | default |
+|---------|---------|
+| Game | 28763 |
+| Game +1 | 28764 |
+
+The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.)
+
+**Must be Game +1!**
+
+### Notes
+
+
+28763 & 28764 is the default ports, but any port can be used.
diff --git a/game_eggs/cubeengine/assaultcube/egg-assault-cube.json b/game_eggs/cubeengine/assaultcube/egg-assault-cube.json
new file mode 100644
index 00000000..f9dad6b4
--- /dev/null
+++ b/game_eggs/cubeengine/assaultcube/egg-assault-cube.json
@@ -0,0 +1,112 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-30T10:56:35+02:00",
+ "name": "AssaultCube",
+ "author": "holeintheseat@gmail.com",
+ "description": "AssaultCube is a FREE, multiplayer, first-person shooter game, based on the CUBE engine.\r\n\r\nTaking place in realistic environments, with fast, arcade gameplay, it's addictive and fun!",
+ "features": null,
+ "docker_images": {
+ "Debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/bin_unix\/linux_64_server -Y{{ASSAULT_SERVER_KEY}} -n\"{{ASSAULT_SERVER_DESCRIPTION}}\" -o\"{{ASSAULT_SERVER_MOTD}}\" -c{{ASSAULT_SERVER_MAXPLAYERS}} -x{{ASSAULT_SERVER_ADMINPASSWORD}} -f{{SERVER_PORT}} -p{{ASSAULT_SERVER_PLAYERPASSWORD}} -m{{ASSAULT_SERVER_MASTERSERVER}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) <|-|> (https:\/\/assault.cubers.net\/)\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n#######-|Dependencies|-#######\r\napt update\r\napt -y install tar make bzip2 build-essential clang libclang-dev libclang1 llvm llvm-dev clang-tools libz-dev curl jq\r\n\r\n#######-|Downloading files|-#######\r\ncd \/mnt\/server\r\n## get release info and download links\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/assaultcube\/AC\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/assaultcube\/AC\/releases\")\r\nMATCH=tar.bz2\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\n fi\r\nfi\r\n\r\n\r\ncurl -sSL -o AssaultCube.tar.bz2 ${DOWNLOAD_URL}\r\ntar -xf AssaultCube.tar.bz2\r\nrm AssaultCube.tar.bz2\r\n\r\n#######-|Setting Up Server|-#######\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nrm -rf bin_win32\/ *.sh\r\n\r\nif [ \"$(uname -m)\" = \"x86_64\" ]; then\r\n echo -e \"x86 System\"\r\nelse\r\n cd \/mnt\/server\/source\/src\r\n make server_install\r\nfi\r\n#######-|Insert Server Authkey|-#######\r\ncd \/mnt\/server\r\nsed -i 's\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/{{ASSAULT_SERVER_KEY}}\/' .\/config\/servercmdline.txt\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Auth Key",
+ "description": "You must provide your own key for the server to register on the masterserver.\r\nTo generate a key you can run the client and issue the command:\r\n\r\n authkey new server \r\n \r\nSee: (https:\/\/assault.cubers.net\/docs\/server.html)",
+ "env_variable": "ASSAULT_SERVER_KEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Description",
+ "description": "",
+ "env_variable": "ASSAULT_SERVER_DESCRIPTION",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Message of the Day",
+ "description": "",
+ "env_variable": "ASSAULT_SERVER_MOTD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Set the limit on amount of players able to join (MAX 16)",
+ "env_variable": "ASSAULT_SERVER_MAXPLAYERS",
+ "default_value": "16",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|integer|max:16",
+ "field_type": "text"
+ },
+ {
+ "name": "Admin Password",
+ "description": "",
+ "env_variable": "ASSAULT_SERVER_ADMINPASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:512|min:5",
+ "field_type": "text"
+ },
+ {
+ "name": "Player Password",
+ "description": "Password need to join the server.",
+ "env_variable": "ASSAULT_SERVER_PLAYERPASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Master Server",
+ "description": "Forces the server to register with the hostname or IP address of a different masterserver.\r\nThe default is ms.cubers.net\r\nIf you want your server to be hidden and not report to the masterserver, use -mlocalhost",
+ "env_variable": "ASSAULT_SERVER_MASTERSERVER",
+ "default_value": "ms.cubers.net",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Version",
+ "description": "The version of the engine you want to download.",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/cubeengine/cube2/README.md b/game_eggs/cubeengine/cube2/README.md
new file mode 100644
index 00000000..e22ee5bd
--- /dev/null
+++ b/game_eggs/cubeengine/cube2/README.md
@@ -0,0 +1,24 @@
+# Cube 2: Sauerbraten
+[sauerbraten.org](http://sauerbraten.org/)
+
+Cube 2: Sauerbraten is a free multiplayer & singleplayer first person shooter, the successor of the Cube FPS.
+Much like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also to allow map/geometry editing to be done cooperatively in-game.
+
+## Server Ports
+
+Ports required to run the server.
+
+| Port | default |
+|---------|---------|
+| Game | 28785 |
+| Game +1 | 28786 |
+
+The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.)
+
+**Must be Game +1!**
+
+### Notes
+
+
+28785 & 28786 is the default ports, but any port can be used.
+Port 28784 must be available for pinging servers over a LAN to work.
diff --git a/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json b/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json
new file mode 100644
index 00000000..063cd22a
--- /dev/null
+++ b/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json
@@ -0,0 +1,72 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-30T11:20:16+02:00",
+ "name": "Cube 2: Sauerbraten",
+ "author": "holeintheseat@gmail.com",
+ "description": "Cube 2: Sauerbraten is a free multiplayer & singleplayer first person shooter, the successor of the Cube FPS.\r\nMuch like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also to allow map\/geometry editing to be done cooperatively in-game.",
+ "features": null,
+ "docker_images": {
+ "Debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/bin_unix\/linux_64_server -j{{SERVER_PORT}} -n{{CUBE_SERVERDESCRIPTION}} -c{{CUBE_MAXPLAYERS}} -m{{CUBE_MASTERSERVER}} -p{{CUBE_ADMINPASSWORD}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) <|-|> (https:\/\/assault.cubers.net\/)\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt update \r\n#######-|Dependencies|-#######\r\napt -y install tar curl bzip2\r\n#######-|Downloading files|-#######\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\necho -e \"###############################################\"\r\necho -e \"## Downloading and unarchiving Sauerbraten ##\"\r\necho -e \"## THIS WILL TAKE A WHILE. PLEASE BE PATIENT ##\"\r\necho -e \"###############################################\"\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\ncurl -sSL -o sauerbraten_2020_12_29_linux.tar.bz2 https:\/\/cfhcable.dl.sourceforge.net\/project\/sauerbraten\/sauerbraten\/2020_11_29\/sauerbraten_2020_12_29_linux.tar.bz2\r\ntar -xf sauerbraten_2020_12_29_linux.tar.bz2 -strip-components=1\r\nrm sauerbraten_2020_12_29_linux.tar.bz2\r\nchmod +x bin_unix\/linux_64_server\r\n\r\n#######-|Alert Completion|-#######\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:stable",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Description",
+ "description": "",
+ "env_variable": "CUBE_SERVERDESCRIPTION",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Sets the max number of clients to N. The default is 4. If you want to set it higher, be aware that bandwidth usage almost doubles with each extra client, so only do this if the server runs on a serious pipe (not your home DSL or Cable connection).",
+ "env_variable": "CUBE_MAXPLAYERS",
+ "default_value": "4",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|max:16",
+ "field_type": "text"
+ },
+ {
+ "name": "Master Server",
+ "description": "Sets the master server to use for either server (registering) and client (updating) to S. (default: sauerbraten.org).",
+ "env_variable": "CUBE_MASTERSERVER",
+ "default_value": "sauerbraten.org",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:512",
+ "field_type": "text"
+ },
+ {
+ "name": "Admin Password",
+ "description": "",
+ "env_variable": "CUBE_ADMINPASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:512",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/ddracenetwork/README.md b/game_eggs/ddracenetwork/README.md
new file mode 100644
index 00000000..8b02ea2e
--- /dev/null
+++ b/game_eggs/ddracenetwork/README.md
@@ -0,0 +1,20 @@
+# DDRaceNetwork
+
+## From their [Website](https://ddnet.org/downloads/)
+
+DDraceNetwork (DDNet) is an actively maintained version of DDRace, a Teeworlds modification with a unique cooperative gameplay..
+
+## Installation/System Requirements
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | Almost any proccessor will work | -|
+| RAM | 100 MiB | 256 MiB |
+| Storage | 70 MiB | 1024 MiB |
+| Network | Any reasonable speed |- |
+| Game Ownership | Not needed | The game is free, and server doesn't need the game to work. |
+
+## Server Ports
+
+| Port | default |
+|---------|---------|
+| Game | 8303 |
diff --git a/game_eggs/ddracenetwork/egg-d-d-race-network.json b/game_eggs/ddracenetwork/egg-d-d-race-network.json
new file mode 100644
index 00000000..6701c87b
--- /dev/null
+++ b/game_eggs/ddracenetwork/egg-d-d-race-network.json
@@ -0,0 +1,82 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-01T12:47:31+02:00",
+ "name": "DDRaceNetwork",
+ "author": "diedyesterdaywashere@gmail.com",
+ "description": "DDraceNetwork (DDNet) is an actively maintained version of DDRace, a Teeworlds modification with a unique cooperative gameplay.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/DDNet-Server",
+ "config": {
+ "files": "{\r\n \"data\/autoexec_server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_port\": \"sv_port {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"password\": \"password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"sv_map\": \"sv_map \\\"{{server.build.env.SERVER_MAP}}\\\"\",\r\n \"sv_register\": \"sv_register {{server.build.env.SERVER_REGISTER}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \" server name is \"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\napt update\r\napt -y install curl xz-utils tar\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n A=$(curl -sSL https:\/\/ddnet.org\/downloads\/ | grep -io '> myServerconfig.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game Version",
+ "description": "Latest is the default, put \"nightly\" for beta, or enter the version number, for example \"17.0\".",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Server name",
+ "description": "The name of the server",
+ "env_variable": "SERVER_NAME",
+ "default_value": "My DDNet server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Server password",
+ "description": "Password for joining the server, empty for no password",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Server map",
+ "description": "Map to start server with",
+ "env_variable": "SERVER_MAP",
+ "default_value": "Tutorial",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Register server",
+ "description": "Register the server to the server list.\r\n0 is disabled\r\nipv4 is enabled listening ipv4",
+ "env_variable": "SERVER_REGISTER",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:0,ipv4",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/enemy_territory/etlegacy/README.md b/game_eggs/enemy_territory/etlegacy/README.md
index 09555dd7..622829b6 100644
--- a/game_eggs/enemy_territory/etlegacy/README.md
+++ b/game_eggs/enemy_territory/etlegacy/README.md
@@ -18,3 +18,5 @@ ET: Legacy requires a single port
| Port | default |
|---------|---------|
| Game | 27960 |
+|---------|---------|
+| Server | 27950 |
diff --git a/game_eggs/gta/README.md b/game_eggs/gta/README.md
index 9ac0a052..fe23fdd1 100644
--- a/game_eggs/gta/README.md
+++ b/game_eggs/gta/README.md
@@ -20,6 +20,9 @@ alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V
[GTA SA:MP](https://www.sa-mp.com/)
SA-MP is a free Massively Multiplayer Online game mod for the PC version of Rockstar Games Grand Theft Auto: San Andreas (tm).
+[OpenMp](https://www.open.mp/)
+A multiplayer mod for Grand Theft Auto: San Andreas that is fully backwards compatible with San Andreas Multiplayer.
+
[MTA SA](https://mtasa.com/)
What more could you want? Multi Theft Auto provides the best online Grand Theft Auto experience there is. Read on to find out more.
diff --git a/game_eggs/gta/altv/egg-alt--v.json b/game_eggs/gta/altv/egg-alt--v.json
index ef127936..ba43f080 100644
--- a/game_eggs/gta/altv/egg-alt--v.json
+++ b/game_eggs/gta/altv/egg-alt--v.json
@@ -4,26 +4,26 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-07-20T17:34:40+02:00",
+ "exported_at": "2023-06-18T11:34:24+02:00",
"name": "alt:V",
"author": "parker@parkervcp.com",
"description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/games:altv": "ghcr.io\/parkervcp\/games:altv"
+ "ALT:V": "ghcr.io\/parkervcp\/games:altv"
},
"file_denylist": [],
"startup": ".\/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 \"update.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"branch\": \"{{server.build.env.BUILD}}\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"server.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"host:\": \"host: 0.0.0.0\",\r\n \"port:\": \"port: {{server.build.default.port}}\",\r\n \"password:\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"description:\": \"description: {{server.build.env.SERVER_DESC}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Server started\"\r\n}",
"logs": "{}",
"stop": "quit"
},
"scripts": {
"installation": {
- "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 coreutils pcregrep\r\ncd \/mnt\/server\r\n\r\n\r\n#!\/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\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\ngetFileHash() {\r\n local file=(${1##v})\r\n sha1sum \"$file\" | awk '{print $1}'\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\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 \r\n local updateTmp=($(mktemp '\/tmp\/update.sh.XXX'))\r\n\r\n echo '{}' > ${updateTmp[0]}\r\n echo $updateData | jq -c \"$(printf \"$str\" 'server')\" > ${updateTmp[0]}\r\n\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/data\/$localBranch\/update.json\" -A 'AltPublicAgent')\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\r\n updateTmp+=($(mktemp '\/tmp\/update.sh.XXX'))\r\n echo '{}' > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n echo $updateData | jq -c \"$(printf \"$str\" 'data')\" > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n\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 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\" || (\"$(printf \"%0.s0\" {1..40})\" != \"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[0]\")\" && $(getFileHash \"$file\") != \"$(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\ndownloadFiles() {\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 platform=$([ \"$dlType\" == \"data\" ] && echo \"\" || echo \"x64_linux\/\")\r\n updateData=\"$(echo $updateData | jq -r '.hashList.\"altv-server\"[1] = \"server\"')\"\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\r\n wget \"https:\/\/cdn.altv.mp\/$dlType\/$localBranch\/$platform${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\nif [ $noLogFile != true ]; then\r\n truncate -s 0 'update.log'\r\nfi\r\nif [[ ( \"$dryRun\" == false ) && ( ! -e 'update.cfg' ) ]]; then\r\n printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.' > 'update.cfg'\r\nfi\r\nupdateCfg=$([[ -e 'update.cfg' ]] && cat 'update.cfg' || printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.')\r\nlocalBranch=$(echo \"$updateCfg\" | jq -r '.branch')\r\n[[ ! -n \"$localBranch\" || \"$localBranch\" != 'release' && \"$localBranch\" != 'rc' && \"$localBranch\" != 'dev' ]] && localBranch='release'\r\nmodules=($(echo \"$updateCfg\" | jq -r '.modules \/\/ \"\"' | tr -d '[],\"'))\r\n[[ ! -n \"$modules\" ]] && modules=('js-module')\r\nfetchUpdateData\r\nlocalBuild=\"$(echo \"$updateCfg\" | jq -r 'if .build == null then empty else .build end')\"\r\n[[ -z $localBuild || $localBuild == \"-1\" ]] && localBuild=$remoteBuild\r\nprintAndLog \"Current version: $localBuild\\n\"\r\nprintAndLog \"Latest version: $remoteBuild\\n\"\r\nvalidateFiles\r\ndownloadFiles\r\n\r\nchmod +x .\/altv-server\r\n\r\ncd \/mnt\/server\/data\r\n\r\nif [ -f \"vehmodels.bin\" ];\r\nthen\r\n echo \"vehmodels.bin found.\"\r\nelse\r\n echo \"vehmodels.bin has not been found, downloading it\"\r\n wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/vehmodels.bin\r\nfi\r\n\r\nif [ -f \"vehmods.bin\" ];\r\nthen\r\n echo \"vehmods.bin found.\"\r\nelse\r\n echo \"vehmods.bin has not been found, downloading it\"\r\n wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/vehmods.bin\r\nfi\r\n\r\nif [ -f \"clothes.bin\" ];\r\nthen\r\n echo \"clothes.bin found.\"\r\nelse\r\n echo \"clothes.bin has not been found, downloading it\"\r\n wget wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/clothes.bin\r\nfi\r\n\r\ncd \/mnt\/server\r\necho -e \"install complete\"",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n#\r\n\r\napt update\r\napt install -y wget jq curl \r\n\r\ncd \/mnt\/server\r\nNEWVERSION=$(curl -sSL https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/update.json | jq -r .version)\r\n\r\n\r\nif [ -f \"\/mnt\/server\/altv-server\" ]; then\r\n CURRENTVERSION=$(cat update.json | jq -r .version)\r\n if [[ \"${CURRENTVERSION}\" == \"${NEWVERSION}\" ]]; then\r\n echo \"No update found\"\r\n exit 0\r\n fi\r\n echo \"Backing up version ${CURRENTVERSION}\"\r\n mkdir -p \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv altv-server \/mnt\/server\/backup\/${CURRENTVERSION}\/\r\n cd \/mnt\/server\/data\r\n mv clothes.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv vehmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv vehmods.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv pedmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv weaponmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv rpfdata.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n rm \/mnt\/server\/update.json\r\nfi\r\n\r\n\r\ncd \/mnt\/server\r\n\r\n\r\necho \"Installing version: ${NEWVERSION}\"\r\nwget -q https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/altv-server\r\nwget -q https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/update.json\r\nchmod +x .\/altv-server\r\n\r\n\r\nmkdir -p \/mnt\/server\/data\r\ncd \/mnt\/server\/data\r\n\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/vehmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/vehmods.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/clothes.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/pedmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/weaponmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/rpfdata.bin\r\n\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nif [ ! -f \"\/mnt\/server\/server.toml\" ]; then\r\ncat << EOF >> server.toml\r\nname = 'alt:V Server'\r\nhost = '0.0.0.0'\r\nport = ${SERVER_PORT}\r\nplayers = 128\r\npassword = '${PASSWORD}'\r\nannounce = false\r\ntoken = 'YOUR_TOKEN'\r\ngamemode = 'Freeroam'\r\nwebsite = 'example.com'\r\nlanguage = 'en'\r\ndescription = '${SERVER_DESC}'\r\nmodules = []\r\nresources = []\r\nEOF\r\nfi\r\n\r\nmkdir -p resources\/\r\n\r\necho -e \"install complete\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -45,7 +45,7 @@
"default_value": "release",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20",
+ "rules": "required|string|in:release,rc,dev",
"field_type": "text"
},
{
diff --git a/game_eggs/gta/mtasa/egg-multi-theft-auto.json b/game_eggs/gta/mtasa/egg-multi-theft-auto.json
index d2cfbc2a..bab547e8 100644
--- a/game_eggs/gta/mtasa/egg-multi-theft-auto.json
+++ b/game_eggs/gta/mtasa/egg-multi-theft-auto.json
@@ -1,29 +1,29 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-05-25T15:27:15+02:00",
+ "exported_at": "2023-11-13T18:18:13+01:00",
"name": "Multi Theft Auto",
"author": "info@six-gaming.com",
"description": "What more could you want? Multi Theft Auto provides the best online Grand Theft Auto experience there is. Read on to find out more.",
"features": null,
- "images": [
- "ghcr.io\/parkervcp\/yolks:ubuntu"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/games:mta": "ghcr.io\/parkervcp\/games:mta"
+ },
"file_denylist": [],
"startup": ".\/mta-server64 --port {{SERVER_PORT}} --httpport {{SERVER_WEBPORT}} -n",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Server started and is ready to accept connections\"\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "logs": "{}",
"stop": "shutdown"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl unzip lib32gcc1 ca-certificates\r\n\r\ncd \/tmp\r\ncurl -L -o multitheftauto_linux_x64.tar.gz https:\/\/linux.mtasa.com\/dl\/multitheftauto_linux_x64.tar.gz\r\ncurl -L -o mta-baseconfig.tar.gz https:\/\/linux.mtasa.com\/dl\/baseconfig.tar.gz\r\ncurl -L -o mtasa-resources-latest.zip http:\/\/mirror.mtasa.com\/mtasa\/resources\/mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xvf multitheftauto_linux_x64.tar.gz\r\ncp -rf multitheftauto_linux_x64\/* \/mnt\/server\r\n\r\nif [ ! -f \/mnt\/server\/x64\/libmysqlclient.so.16 ]; then\r\n curl -L http:\/\/nightly.mtasa.com\/files\/libmysqlclient.so.16 -o \/mnt\/server\/x64\/libmysqlclient.so.16\r\nfi\r\n\r\nmkdir -p \/mnt\/server\/mods\/deathmatch\/resources\r\nunzip -o -d \/mnt\/server\/mods\/deathmatch\/resources mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server-conf\r\ntar -xvf mta-baseconfig.tar.gz\r\ncp -rf baseconfig\/* \/mnt\/server\/mods\/deathmatch\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\necho \"done\"",
- "container": "ubuntu:18.04",
+ "script": "#!\/bin\/bash\r\n\r\ncd \/tmp\r\ncurl -L -o multitheftauto_linux_x64.tar.gz https:\/\/linux.mtasa.com\/dl\/multitheftauto_linux_x64.tar.gz\r\ncurl -L -o mta-baseconfig.tar.gz https:\/\/linux.mtasa.com\/dl\/baseconfig.tar.gz\r\ncurl -L -o mtasa-resources-latest.zip http:\/\/mirror.mtasa.com\/mtasa\/resources\/mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xvf multitheftauto_linux_x64.tar.gz\r\ncp -rf multitheftauto_linux_x64\/* \/mnt\/server\r\n\r\nif [ ! -f \/mnt\/server\/x64\/libmysqlclient.so.16 ]; then\r\n curl -L http:\/\/nightly.mtasa.com\/files\/libmysqlclient.so.16 -o \/mnt\/server\/x64\/libmysqlclient.so.16\r\nfi\r\n\r\nmkdir -p \/mnt\/server\/mods\/deathmatch\/resources\r\nunzip -o -d \/mnt\/server\/mods\/deathmatch\/resources mtasa-resources-latest.zip\r\n\r\ntar -xvf mta-baseconfig.tar.gz\r\ncp -rf baseconfig\/* \/mnt\/server\/mods\/deathmatch\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:ubuntu",
"entrypoint": "bash"
}
},
@@ -35,7 +35,8 @@
"default_value": "22005",
"user_viewable": true,
"user_editable": false,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/gta/openmp/README.md b/game_eggs/gta/openmp/README.md
new file mode 100644
index 00000000..2f9cabb5
--- /dev/null
+++ b/game_eggs/gta/openmp/README.md
@@ -0,0 +1,10 @@
+# OpenMp
+
+The [OpenMp](https://www.open.mp/) GTA San Andreas dedicated server
+
+## Server Ports
+
+
+| Port | default |
+|---------|---------|
+| Game | 25570 |
diff --git a/game_eggs/gta/openmp/config.json b/game_eggs/gta/openmp/config.json
new file mode 100644
index 00000000..d2a04f2e
--- /dev/null
+++ b/game_eggs/gta/openmp/config.json
@@ -0,0 +1,93 @@
+{
+ "announce": true,
+ "artwork": {
+ "cdn": "",
+ "enable": true,
+ "models_path": "models"
+ },
+ "chat_input_filter": true,
+ "enable_query": true,
+ "game": {
+ "allow_interior_weapons": true,
+ "chat_radius": 200.0,
+ "death_drop_amount": 0,
+ "gravity": 0.008,
+ "group_player_objects": false,
+ "lag_compensation_mode": 1,
+ "map": "",
+ "mode": "",
+ "nametag_draw_radius": 70.0,
+ "player_marker_draw_radius": 250.0,
+ "player_marker_mode": 1,
+ "time": 12,
+ "use_all_animations": false,
+ "use_chat_radius": false,
+ "use_entry_exit_markers": true,
+ "use_instagib": false,
+ "use_manual_engine_and_lights": false,
+ "use_nametag_los": true,
+ "use_nametags": true,
+ "use_player_marker_draw_radius": false,
+ "use_player_ped_anims": false,
+ "use_stunt_bonuses": true,
+ "use_vehicle_friendly_fire": false,
+ "use_zone_names": false,
+ "vehicle_respawn_time": 10000,
+ "weather": 10
+ },
+ "language": "",
+ "logging": {
+ "enable": true,
+ "log_chat": true,
+ "log_cookies": false,
+ "log_deaths": true,
+ "log_queries": false,
+ "log_sqlite": false,
+ "log_sqlite_queries": false,
+ "timestamp_format": "[%Y-%m-%dT%H:%M:%S%z]",
+ "use_prefix": true,
+ "use_timestamp": true
+ },
+ "max_bots": 0,
+ "max_players": 50,
+ "name": "open.mp server",
+ "network": {
+ "acks_limit": 3000,
+ "aiming_sync_rate": 30,
+ "allow_037_clients": true,
+ "bind": "",
+ "cookie_reseed_time": 300000,
+ "in_vehicle_sync_rate": 30,
+ "limits_ban_time": 60000,
+ "message_hole_limit": 3000,
+ "messages_limit": 500,
+ "minimum_connection_time": 0,
+ "mtu": 576,
+ "multiplier": 10,
+ "on_foot_sync_rate": 30,
+ "player_marker_sync_rate": 2500,
+ "player_timeout": 10000,
+ "port": 7777,
+ "public_addr": "",
+ "stream_radius": 200.0,
+ "stream_rate": 1000,
+ "time_sync_rate": 30000,
+ "use_lan_mode": false
+ },
+ "password": "",
+ "pawn": {
+ "legacy_plugins": [],
+ "main_scripts": [
+ "test 1"
+ ],
+ "side_scripts": []
+ },
+ "rcon": {
+ "allow_teleport": false,
+ "enable": false,
+ "password": "changeme"
+ },
+ "sleep": 5.0,
+ "use_dyn_ticks": true,
+ "website": "open.mp"
+}
diff --git a/game_eggs/gta/openmp/egg-open-m-p.json b/game_eggs/gta/openmp/egg-open-m-p.json
new file mode 100644
index 00000000..6b41c066
--- /dev/null
+++ b/game_eggs/gta/openmp/egg-open-m-p.json
@@ -0,0 +1,52 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-01T11:37:31+02:00",
+ "name": "OpenMP",
+ "author": "vedrancappone@gmail.com",
+ "description": "A multiplayer mod for Grand Theft Auto: San Andreas that is fully backwards compatible with San Andreas Multiplayer.",
+ "features": null,
+ "docker_images": {
+ "Samp": "ghcr.io\/parkervcp\/games:samp"
+ },
+ "file_denylist": [],
+ "startup": ".\/omp-server",
+ "config": {
+ "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"network.port\": \"{{server.build.default.port}}\",\r\n \"rcon.password\": \"{{server.build.env.RCON_PASSWORD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"started on port\"\r\n}",
+ "logs": "{}",
+ "stop": "exit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\napt -y install curl git jq tar\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/openmultiplayer\/open.mp\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/openmultiplayer\/open.mp\/releases\")\r\nMATCH=open.mp-linux-x86-dynssl\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -linux-x86 | head -1)\r\n fi\r\nfi\r\n\r\necho \"running: curl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\"\r\ncurl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf openmp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\necho \"creating default config\"\r\n\r\nif [ -e config.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default OpenMp config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/openmp\/config.json >> config.json\r\nfi\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "RCON Password",
+ "description": "The password for RCON",
+ "env_variable": "RCON_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Version",
+ "description": "The version you want to install",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/gta/samp/egg-s-a--m-p.json b/game_eggs/gta/samp/egg-s-a--m-p.json
index 08465d94..097d4322 100644
--- a/game_eggs/gta/samp/egg-s-a--m-p.json
+++ b/game_eggs/gta/samp/egg-s-a--m-p.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-02-08T14:50:39+01:00",
+ "exported_at": "2023-10-19T18:53:04+02:00",
"name": "SA-MP",
"author": "bl4ckspr4y@protonmail.com",
"description": "SA-MP is a free Massively Multiplayer Online game mod for the PC version of Rockstar Games Grand Theft Auto: San Andreas (tm).",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\ncd \/tmp || exit\r\necho \"running: curl -sSL -o samp.tar.gz http:\/\/files.sa-mp.com\/samp037svr_${VERSION}.tar.gz\"\r\ncurl -sSL -o samp.tar.gz http:\/\/files.sa-mp.com\/samp037svr_\"${VERSION}\".tar.gz\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf samp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\nsed -i '3d' \/mnt\/server\/server.cfg\r\necho \"rcon_password ${RCON_PASS}\" >> \/mnt\/server\/server.cfg\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n\r\n# Check if VERSION is set and starts with an uppercase \"R\"\r\nif [[ -n \"$VERSION\" && \"$VERSION\" == R* ]]; then\r\n VERSION=\"0.3.7\"\r\n echo \"Updated VERSION: $VERSION\"\r\nfi\r\n\r\ncd \/tmp || exit\r\necho \"running: curl -sSL -o samp.tar.gz https:\/\/sampcenter.com\/download\/server\/linux\/${VERSION}.tar.gz\"\r\ncurl -sSL -o samp.tar.gz https:\/\/sampcenter.com\/download\/server\/linux\/${VERSION}.tar.gz\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf samp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\nsed -i '3d' \/mnt\/server\/server.cfg\r\necho \"rcon_password ${RCON_PASS}\" >> \/mnt\/server\/server.cfg\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -30,9 +30,9 @@
"variables": [
{
"name": "Version",
- "description": "example: if the download url is http:\/\/files.sa-mp.com\/samp037svr_R2-1.tar.gz then the variable should be: `R2-1`",
+ "description": "Example: if the download url is https:\/\/sampcenter.com\/download\/server\/linux\/0.3.7.tar.gz then the variable should be: `0.3.7`",
"env_variable": "Version",
- "default_value": "R2-1",
+ "default_value": "0.3.7",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32",
diff --git a/game_eggs/ksp/README.md b/game_eggs/ksp/README.md
new file mode 100644
index 00000000..a789c820
--- /dev/null
+++ b/game_eggs/ksp/README.md
@@ -0,0 +1,12 @@
+# Kerbal Space Program
+
+[Dark Multiplayer](https://d-mp.org/)
+Dark Multiplayer is an up-to-date mod adding the long awaited multiplayer feature to Kerbal Space Program while including support for other mods!
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 6702 |
diff --git a/game_eggs/ksp/egg-k-s-p-d-m-p.json b/game_eggs/ksp/egg-k-s-p-d-m-p.json
new file mode 100644
index 00000000..99c4f75a
--- /dev/null
+++ b/game_eggs/ksp/egg-k-s-p-d-m-p.json
@@ -0,0 +1,92 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-09-22T19:54:35+02:00",
+ "name": "KSP DMP",
+ "author": "rufanyin29@gmail.com",
+ "description": "Dark Multiplayer mod server for Kerbal Space Program",
+ "features": null,
+ "docker_images": {
+ "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest"
+ },
+ "file_denylist": [],
+ "startup": "mono DMPServer.exe",
+ "config": {
+ "files": "{\r\n \"Config\/Settings.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"modpackMode\": \"{{server.build.env.MODPACKMODE}}\",\r\n \"warpMode\": \"{{server.build.env.WARPMODE}}\",\r\n \"gameMode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"gameDifficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"whitelisted\": \"{{server.build.env.WHITELIST}}\",\r\n \"serverName\": \"{{server.build.env.SERVERNAME}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Ready!\"\r\n}",
+ "logs": "{}",
+ "stop": "\/exit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nV=$(curl -s https:\/\/d-mp.org\/downloads | grep \"DMP Server\" | awk -F 'href=\"' 'NR==2 {print $2}' | awk -F '\"' '{print $1}') # \/builds\/release\/v0.3.8.3\/DMPServer.zip\r\n\r\necho \"Download link: https:\/\/d-mp.org${V}\"\r\ncurl -sSL -o DMPServer.zip https:\/\/d-mp.org${V}\r\n\r\nunzip -o DMPServer.zip\r\nmv DMPServer\/* .\/\r\n\r\nrm -rf DMPServer\r\nrm DMPServer.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Mod Pack Mode",
+ "description": "Specify the modpack type.",
+ "env_variable": "MODPACKMODE",
+ "default_value": "NONE",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:NONE,CKAN,GAMEDATA",
+ "field_type": "text"
+ },
+ {
+ "name": "Warp Mode",
+ "description": "Specify the warp type.",
+ "env_variable": "WARPMODE",
+ "default_value": "SUBSPACE",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:MCW_FORCE,MCW_VOTE,MCW_LOWEST,SUBSPACE_SIMPLE,SUBSPACE,NONE",
+ "field_type": "text"
+ },
+ {
+ "name": "Game Mode",
+ "description": "Specify the game type.",
+ "env_variable": "GAMEMODE",
+ "default_value": "SANDBOX",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:SANDBOX,CAREER,SCIENCE",
+ "field_type": "text"
+ },
+ {
+ "name": "Game Difficulty",
+ "description": "Specify the gameplay difficulty of the server.",
+ "env_variable": "DIFFICULTY",
+ "default_value": "NORMAL",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:EASY,NORMAL,MODERATE,HARD,CUSTOM",
+ "field_type": "text"
+ },
+ {
+ "name": "Whitelisted",
+ "description": "Enable white-listing.",
+ "env_variable": "WHITELIST",
+ "default_value": "False",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:True,False",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Name",
+ "description": "Name of the server.",
+ "env_variable": "SERVERNAME",
+ "default_value": "DMP Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:48",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md
index f8834dbb..9e374b05 100644
--- a/game_eggs/minecraft/README.md
+++ b/game_eggs/minecraft/README.md
@@ -15,19 +15,23 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains,
## [Java](java) Servers for Java Minecraft
* [Cuberite](java/cuberite)
+* [CurseForge](java/curseforge)
* [Fabric](java/fabric)
* [Feather](java/feather)
* [Forge](java/forge)
* [Forge](java/forge/forge)
- * [CusreForge Generic](java/forge/curseforge-generic)
* [Feed The Beast](java/ftb)
* [Glowstone](java/glowstone)
+* [Limbo](java/limbo)
* [Krypton](java/krypton)
* [Magma](java/magma)
+* [Modrinth](java/modrinth)
* [Mohist](java/mohist)
* [NanoLimbo](java/nanolimbo)
* [Paper](java/paper)
+* [Folia](java/folia)
* [Purpur](java/purpur)
+* [Quilt](java/quilt/)
* [Spigot](java/spigot)
* [SpongeForge](java/spongeforge)
* [SpongeVanilla](java/spongevanilla)
diff --git a/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json b/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json
index 7c6a2e0d..1a26eabd 100644
--- a/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json
+++ b/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-12-11T19:37:36+08:00",
+ "exported_at": "2023-05-17T20:11:37+02:00",
"name": "Liteloader Bedrock Dedicated Server",
"author": "frizth_tatierra@informatics.edu.ph",
"description": "LiteLoaderBDS - Epoch-making & Cross-language Bedrock Dedicated Servers Plugin Loader\r\n\r\nLiteLoaderBDS is an unofficial plugin loader that provides basic API support for Bedrock Dedicated Server, with a massive API, lots of packed utility interfaces, a rich event system and powerful basic interface support.",
@@ -13,7 +13,7 @@
"ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
},
"file_denylist": [],
- "startup": ".\/lae-ll-launcher",
+ "startup": ".\/lae-ll-launcher bedrock_server_mod.exe",
"config": {
"files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"server-name\": \"{{server.build.env.SERVERNAME}}\",\r\n \"gamemode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"difficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"max-players\": \"{{server.build.env.MAXPLAYERS}}\",\r\n \"level-name\": \"{{server.build.env.WORLDNAME}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"IPv4 supported\"\r\n}",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Liteloader First-time Install Script\r\n\r\napk update\r\napk add gzip\r\ncd \/mnt\/server\r\n\r\n# Download Minecraft BDS\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BDS_VERSION}\" ] || [ \"${BDS_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-win\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BDS_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-win\/bedrock-server-$BDS_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\nrm versions.html.gz\r\n\r\n# Download LiteLoaderBDS\r\nif [ -z \"${LL_VERSION}\" ] || [ \"${LL_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest LiteLoaderBDS from GitHub\"\r\n curl -s https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\/latest | grep \"browser_download_url.*LiteLoader-.*zip\" | cut -d : -f 2,3 | tr -d \\\" | wget -i - -O LiteLoader.zip\r\nelse \r\n echo -e \"\\n Downloading ${LL_VERSION} LiteLoaderBDS from GitHub\"\r\n wget https:\/\/github.com\/LiteLDev\/LiteLoaderBDS\/releases\/download\/${LL_VERSION}\/LiteLoader-${LL_VERSION}.zip -O LiteLoader.zip\r\nfi\r\n\r\n# Downlaoding Launcher and finishing touches\r\nwget https:\/\/io.ivampiresp.com\/d\/Software\/MCServer\/BDS\/LiteLoader\/lae-ll-launcher\r\nchmod +x lae-ll-launcher\r\nunzip -o LiteLoader.zip\r\nrm LiteLoader.zip\r\necho \"Finished Downloading Liteloader...\"",
+ "script": "#!\/bin\/bash\r\n# Liteloader First-time Install Script\r\n\r\napk update\r\napk add gzip jq curl wine\r\ncd \/mnt\/server\r\n\r\nfor file in *; do\r\n if [ \"$file\" != \"allowlist.json\" ] && [ \"$file\" != \"permissions.json\" ] && [ \"$file\" != \"server.properties\" ] && [ \"$file\" != \"plugins\" ] && [ \"$file\" != \"world\" ]; then\r\n if [ -d \"$file\" ]; then\r\n rm -rf \"$file\" # Remove directories recursively\r\n else\r\n rm \"$file\" # Remove files\r\n fi\r\n fi\r\ndone\r\n\r\n# Download Minecraft BDS\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BDS_VERSION}\" ] || [ \"${BDS_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-win\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BDS_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-win\/bedrock-server-$BDS_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\nrm versions.html.gz\r\n\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\")\r\n\r\nif [ -z \"${LL_VERSION}\" ] || [ \"${LL_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${LL_VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n echo -e \"\\n Downloading ${LL_VERSION} LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${LL_VERSION}\" '.[] | select(.tag_name==$LL_VERSION) | .assets[].browser_download_url' | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\n fi\r\nfi\r\n\r\ncurl -sSL -o LiteLoader.zip ${DOWNLOAD_GIT_URL}\r\nunzip -o LiteLoader.zip\r\nmv -f LiteLoaderBDS\/* \/mnt\/server\r\nrm LiteLoader.zip\r\ntimeout 30s wine PeEditor.exe\r\nrm -rf '\/root\/.wine' \/mnt\/server\/LiteLoaderBDS\/\r\n\r\n# Downloading Launcher and finishing touches\r\nwget https:\/\/io.ivampiresp.com\/d\/Software\/MCServer\/BDS\/LiteLoader\/lae-ll-launcher\r\nchmod +x lae-ll-launcher\r\necho \"Finished Downloading Liteloader...\"",
"container": "ghcr.io\/parkervcp\/installers:alpine",
"entrypoint": "ash"
}
@@ -109,4 +109,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/README.md b/game_eggs/minecraft/bedrock/PowerNukkitX/README.md
new file mode 100644
index 00000000..641d7d58
--- /dev/null
+++ b/game_eggs/minecraft/bedrock/PowerNukkitX/README.md
@@ -0,0 +1,4 @@
+# PowerNukkitX
+
+[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX)
+PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit
\ No newline at end of file
diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json b/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json
new file mode 100644
index 00000000..e764b2f3
--- /dev/null
+++ b/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json
@@ -0,0 +1,52 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-07T02:29:39+02:00",
+ "name": "PowerNukkitX",
+ "author": "powernukkitx@github.com",
+ "description": "PowerNukkitX support for Pterodactyl",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/pnx start {{AUTOREBOOT}}",
+ "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}",
+ "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip openssl\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\ncd \/mnt\/server || exit 1\r\nUPGRADE=\"no\"\r\nif [ -d \".\/java\" ]; then\r\nUPGRADE=\"yes\"\r\nfi\r\nwget https:\/\/github.com\/PowerNukkitX\/PNX-CLI\/releases\/download\/0.1.6\/PNX-CLI-Linux-x86.zip -O pnx.zip\r\nwget https:\/\/raw.githubusercontent.com\/PowerNukkitX\/PowerNukkitX\/master\/src\/main\/resources\/default-nukkit.yml -O nukkit.yml\r\nunzip pnx.zip\r\nrm -fr pnx.zip 2>&1 >\/dev\/null\r\nmv .\/target\/linux-x86\/pnx .\/ 2>&1 >\/dev\/null\r\nrm -fr target 2>&1 >\/dev\/null\r\nrm -fr java 2>&1 >\/dev\/null\r\nchmod +x pnx\r\n.\/pnx jvm install=GraalVM\r\nif [ \"$UPGRADE\" == \"no\" ]; then\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server install --latest\r\nelse\r\n.\/pnx server install --dev\r\nfi\r\nelse\r\nrm -fr libs 2>&1 >\/dev\/null\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server update --latest\r\nelse\r\n.\/pnx server update --dev\r\nfi\r\nfi\r\nrm -fr tmp-GraalVM.tar.gz 2>&1 >\/dev\/null\r\ncat < 1, it will show debug messages in the console
+ level: 1
+ # Enables commands: /status /gc
+ commands: false
+ ignored-packets:
+ - LevelChunkPacket
+
+timings:
+ # Turn off the timing completely, no timing object will be created, which can help improve performance
+ completely-close: false
+ # Enable core and plugin timings by default
+ enabled: false
+ # Enable monitoring at verbose level, include high-frequency timings
+ verbose: false
+ # Interval between history frames in ticks
+ # Default is 5 minutes (6000 ticks)
+ history-interval: 6000
+ # Length of the whole timing history in ticks
+ # Default is 1 hour (72000 ticks)
+ # This value is capped at a maximum of history-interval * 12
+ history-length: 72000
+ # For special cases of servers with special permission to bypass the max
+ # This max helps keep data file sizes reasonable for processing on Aikar's Timing parser side
+ # Setting this will not help you bypass the max unless Aikar has added an exception on the API side
+ bypass-max: false
+ # If set to true, name of your server won't be sent
+ privacy: false
+ ignore: []
+
+level-settings:
+ # The default format that levels will use when created
+ default-format: anvil
+ # Automatically change levels tick rate to maintain 20 ticks per second
+ auto-tick-rate: true
+ auto-tick-rate-limit: 20
+ # Sets the base tick rate (1 = 20 ticks per second, 2 = 10 ticks per second, etc.)
+ base-tick-rate: 1
+ # Tick all players each tick even when other settings disallow this
+ always-tick-players: false
+ tick-redstone: true
+
+chunk-saving:
+ maximum-size-per-chunk: 1048576
+
+chunk-sending:
+ # Amount of chunks sent to players per tick
+ per-tick: 8
+ # Amount of chunks sent around each player
+ max-chunks: 192
+ # Amount of chunks that need to be sent before spawning the player
+ spawn-threshold: 56
+ # Save a serialized copy of the chunk in memory for faster sending
+ # Useful in mostly-static worlds where lots of players join at the same time
+ cache-chunks: false
+
+chunk-ticking:
+ # Max amount of chunks processed each tick
+ per-tick: 40
+ # Radius of chunks around a player to tick
+ tick-radius: 3
+ light-updates: false
+ clear-tick-list: false
+
+chunk-generation:
+ # Max. amount of chunks in the waiting queue to be generated
+ queue-size: 8
+ # Max. amount of chunks in the waiting queue to be populated
+ population-queue-size: 8
+
+# Max tick rate for these entities
+ticks-per:
+ animal-spawns: 400
+ monster-spawns: 1
+ autosave: 6000
+ cache-cleanup: 900
+
+memory-compression:
+ enable: true
+ slots: 32
+ default-temperature: 32
+ threshold:
+ freezing-point: 0
+ boiling-point: 1024
+ absolute-zero: -256
+ heat:
+ melting: 16
+ single-operation: 1
+ batch-operation: 32
+
+
+# Max amount of these entities
+spawn-limits:
+ monsters: 70
+ animals: 15
+ water-animals: 5
+ ambient: 15
+
+player:
+ # If true, player data will be saved as players/playername.dat
+ # If false, nukkit won't save player data as "dat" files, in order that plugins can do something on it.
+ save-player-data: true
+ # The time between skin change action in seconds, set to 0 if you dont want the cooldown
+ skin-change-cooldown: 30
+ force-skin-trusted: false
+ check-movement: true
+
+aliases:
+# Aliases for commands
+# Examples:
+# showtheversion: version
+# savestop: [save-all, stop]
+
+worlds:
+# These settings will override the generator set in server.properties and allows loading multiple levels
+# Examples:
+#world:
+# seed: 404
+# generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)
+
+anti-xray:
+#world:
+# enabled: true
+# level: low
+# pre-deobfuscate: true
diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties b/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties
new file mode 100644
index 00000000..da94fc1b
--- /dev/null
+++ b/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties
@@ -0,0 +1,40 @@
+#Properties Config file
+#2023-07-06 06:07:52
+motd=PowerNukkitX Server
+sub-motd=https://powernukkitx.cn
+server-port=19132
+server-ip=0.0.0.0
+view-distance=12
+white-list=off
+achievements=on
+announce-player-achievements=on
+spawn-protection=16
+max-players=20
+allow-flight=off
+spawn-animals=on
+spawn-mobs=on
+gamemode=0
+force-gamemode=off
+hardcore=off
+pvp=on
+difficulty=1
+generator-settings=
+level-name=world
+level-seed=
+level-type=DEFAULT
+allow-nether=on
+allow-the_end=on
+use-terra=on
+enable-experiment-mode=on
+enable-query=on
+enable-rcon=off
+rcon.password=
+auto-save=on
+force-resources=off
+force-resources-allow-client-packs=off
+xbox-auth=on
+check-login-time=on
+disable-auto-bug-report=off
+allow-shaded=off
+server-authoritative-movement=server-auth
+network-encryption=on
diff --git a/game_eggs/minecraft/bedrock/README.md b/game_eggs/minecraft/bedrock/README.md
index 0bf1314a..521d0bbd 100644
--- a/game_eggs/minecraft/bedrock/README.md
+++ b/game_eggs/minecraft/bedrock/README.md
@@ -21,6 +21,11 @@ LiteLoaderBDS is an unofficial plugin loader that provides basic API support for
[Nukkit GitHub](https://github.com/Nukkit/Nukkit)
Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition
+## [PowerNukkitX](/game_eggs/minecraft/bedrock/PowerNukkitX)
+
+[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX)
+PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit
+
## [PocketMine MP](/game_eggs/minecraft/bedrock/pocketmine_mp)
[PocketMine MP](https://github.com/pmmp/PocketMine-MP)
diff --git a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json
index 30a6633f..791753b3 100644
--- a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json
+++ b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-07-06T17:14:36+02:00",
+ "exported_at": "2023-06-18T11:46:24+02:00",
"name": "Vanilla Bedrock ARM64",
"author": "josdekurk@gmail.com",
"description": "Bedrock Edition (also known as the Bedrock Version, Bedrock Codebase, Bedrock Engine or just Bedrock) refers to the multi-platform family of editions of Minecraft developed by Mojang AB, Microsoft Studios, 4J Studios, and SkyBox Labs. Prior to this term, as the engine originated with Pocket Edition, this entire product family was referred to as \"Pocket Edition\", \"MCPE\", or \"Pocket\/Windows 10 Edition\".",
@@ -24,8 +24,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget 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# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp whitelist.json whitelist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho 'emit-server-telemetry=true' >> server.properties\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf whitelist.json.bak whitelist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget 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# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp allowlist.json allowlist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho 'emit-server-telemetry=true' >> server.properties\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf allowlist.json.bak allowlist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -91,4 +91,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json
index 9bd191e3..c7f6170f 100644
--- a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json
+++ b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json
@@ -1,19 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-22T05:42:40-05:00",
+ "exported_at": "2023-06-18T11:45:33+02:00",
"name": "Vanilla Bedrock",
"author": "parker@parkervcp.com",
"description": "Bedrock Edition (also known as the Bedrock Version, Bedrock Codebase, Bedrock Engine or just Bedrock) refers to the multi-platform family of editions of Minecraft developed by Mojang AB, Microsoft Studios, 4J Studios, and SkyBox Labs. Prior to this term, as the engine originated with Pocket Edition, this entire product family was referred to as \"Pocket Edition\", \"MCPE\", or \"Pocket\/Windows 10 Edition\".",
"features": [
"pid_limit"
],
- "images": [
- "ghcr.io\/parkervcp\/yolks:debian"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
"file_denylist": [],
"startup": ".\/bedrock_server",
"config": {
@@ -24,8 +24,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget 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# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp whitelist.json whitelist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf whitelist.json.bak whitelist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget 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# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp allowlist.json allowlist.json.bak\r\n\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf allowlist.json.bak allowlist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -37,7 +37,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "ld lib path",
@@ -46,7 +47,8 @@
"default_value": ".",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -55,7 +57,8 @@
"default_value": "Bedrock Dedicated Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:50"
+ "rules": "required|string|max:50",
+ "field_type": "text"
},
{
"name": "Gamemode",
@@ -64,7 +67,8 @@
"default_value": "survival",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:survival,creative,adventure"
+ "rules": "required|string|in:survival,creative,adventure",
+ "field_type": "text"
},
{
"name": "Difficulty",
@@ -73,7 +77,8 @@
"default_value": "easy",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:peaceful,easy,normal,hard"
+ "rules": "required|string|in:peaceful,easy,normal,hard",
+ "field_type": "text"
},
{
"name": "Allow cheats",
@@ -82,7 +87,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json b/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json
index afb85499..91910950 100644
--- a/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json
+++ b/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json
@@ -1,26 +1,26 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-16T13:31:45-05:00",
+ "exported_at": "2023-05-01T16:48:52+01:00",
"name": "Nukkit",
"author": "parker@parkervcp.com",
"description": "Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition\r\n\r\nhttps:\/\/cloudburstmc.org",
"features": null,
- "images": [
- "quay.io\/pterodactyl\/core:java-glibc",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_17"
- ],
+ "docker_images": {
+ "quay.io\/pterodactyl\/core:java-glibc": "quay.io\/pterodactyl\/core:java-glibc",
+ "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ },
"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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "startup": "{\r\n \"done\": \")! \"\r\n}",
"logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
"stop": "stop"
},
@@ -39,7 +39,8 @@
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
- "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
},
{
"name": "Download Path",
@@ -48,7 +49,8 @@
"default_value": "",
"user_viewable": false,
"user_editable": false,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "nukkit version",
@@ -57,7 +59,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
}
diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json
index 609ee1e3..085229e1 100644
--- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json
+++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-02-12T02:53:07-05:00",
+ "exported_at": "2023-06-02T19:34:57+02: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 :)",
@@ -16,13 +16,13 @@
"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}",
- "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "startup": "{\r\n \"done\": \")! \"\r\n}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"amd64\" || printf \"arm64\")\r\n\r\n# Shouldn't be possible to be empty, but default to PM4 if it is and convert to uppercase\r\nVERSION=\"${VERSION:-PM4}\"\r\nVERSION=\"${VERSION^^}\"\r\n\r\n# Helper functions\r\n\r\ndownload_php_binary() {\r\n printf \"Downloading latest PHP %s binary for %s\\n\" \"$REQUIRED_PHP_VERSION\" \"$VERSION\"\r\n curl --location --progress-bar https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/php-\"$REQUIRED_PHP_VERSION\"-latest\/PHP-Linux-x86_64-\"$VERSION\".tar.gz | tar -xzv\r\n}\r\n\r\nset_php_extension_dir() {\r\n printf \"Configuring php.ini\\n\"\r\n EXTENSION_DIR=$(find \"bin\" -name '*debug-zts*')\r\n grep -q '^extension_dir' bin\/php7\/bin\/php.ini && sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y libtool-bin libtool make autoconf automake m4 gzip bzip2 bison g++ git cmake pkg-config re2c\r\n\r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat <>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | jq -r '.download_url')\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"4\"\r\n\r\nelif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n API_CHANNEL=\"stable\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | jq -r '.php_version')\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nCURSEFORGE_API_URL=\"https:\/\/api.curseforge.com\/v1\/mods\/\"\r\nCURSEFORGE_API_HEADERS=(\"--header=Accept: application\/json\" \"--header=x-api-key: ${API_KEY}\")\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving CurseForge project information...\"\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=false\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo file ID specified, using latest file\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.data.mainFileId \/\/ empty')\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n local VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tChecking if provided file id '${VERSION_ID}' exists\"\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.serverPackFileId \/\/ empty')\"\r\n if [[ -n \"${VERSION_SERVER_PACK}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_PACK}'\"\r\n VERSION_ID=$VERSION_SERVER_PACK\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n IS_SERVER_PACK=true\r\n fi\r\n fi\r\n\r\n # Check if version id is unset or empty string\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No file id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n echo -e \"\\tWARNING: File id '${VERSION_ID}' is not a server pack, attempting to use client files\"\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\/download-url\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve file data for file id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction get_loader {\r\n echo -e \"Retrieving loader information...\"\r\n\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n local CLIENT_VERSION_ID;\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"true\" ]]; then\r\n CLIENT_VERSION_ID=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.parentProjectFileId \/\/ empty')\"\r\n else\r\n CLIENT_VERSION_ID=$VERSION_ID\r\n fi\r\n\r\n if [[ -z \"${CLIENT_VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRetrieving file information for '${CLIENT_VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${CLIENT_VERSION_ID}\/download-url\" -O -)\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file id ${CLIENT_VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q \"${DOWNLOAD_URL}\" -O client.zip\r\n\r\n echo -e \"\\tUnpacking client manifest\"\r\n unzip -jo client.zip manifest.json -d \"${SERVER_DIR}\"\r\n mv \"${SERVER_DIR}\/manifest.json\" \"${SERVER_DIR}\/client.manifest.json\" # rename to avoid conflicts with main manifest\r\n rm -rf client.zip\r\n\r\n echo -e \"\\tParsing client manifest\"\r\n local MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n LOADER_ID=$(jq -r '.minecraft.modLoaders[]? | select(.primary == true) | .id' \"${MANIFEST}\")\r\n LOADER_NAME=$(echo \"${LOADER_ID}\" | cut -d'-' -f1)\r\n LOADER_VERSION=$(echo \"${LOADER_ID}\" | cut -d'-' -f2)\r\n\r\n if [[ -z \"${LOADER_NAME}\" || -z \"${LOADER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No loader found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n MINECRAFT_VERSION=$(jq -r '.minecraft.version \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MINECRAFT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No minecraft version found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tFound loader ${LOADER_NAME} ${LOADER_VERSION} for Minecraft ${MINECRAFT_VERSION}\"\r\n}\r\n\r\nfunction unzip-strip() (\r\n set -u\r\n\r\n local archive=$1\r\n local destdir=${2:-}\r\n shift; shift || :\r\n echo -e \"\\tUnpacking ${archive} to ${destdir}\"\r\n\r\n echo -e \"\\tCreating temporary directory\"\r\n local tmpdir=\/mnt\/server\/tmp\r\n if ! mkdir -p \"${tmpdir}\"; then\r\n echo -e \"\\tERROR: mkdir failed to create temporary directory\"\r\n return 1\r\n fi\r\n\r\n trap 'rm -rf -- \"$tmpdir\"' EXIT\r\n\r\n echo -e \"\\tUnpacking archive\"\r\n\r\n if ! unzip -q \"$archive\" -d \"$tmpdir\"; then\r\n echo -e \"\\tERROR: unzip failed to unpack archive\"\r\n return 1\r\n fi\r\n\r\n echo -e \"\\tSetting glob settings\"\r\n\r\n shopt -s dotglob\r\n\r\n echo -e \"\\tCleaning up directory structure\"\r\n\r\n local files=(\"$tmpdir\"\/*) name i=1\r\n\r\n if (( ${#files[@]} == 1 )) && [[ -d \"${files[0]}\" ]]; then\r\n name=$(basename \"${files[0]}\")\r\n files=(\"$tmpdir\"\/*\/*)\r\n else\r\n name=$(basename \"$archive\"); name=${archive%.*}\r\n files=(\"$tmpdir\"\/*)\r\n fi\r\n\r\n if [[ -z \"$destdir\" ]]; then\r\n destdir=.\/\"$name\"\r\n fi\r\n\r\n while [[ -f \"$destdir\" ]]; do\r\n destdir=${destdir}-$((i++));\r\n done\r\n\r\n echo -e \"\\tCopying files to ${destdir}\"\r\n\r\n mkdir -p \"$destdir\"\r\n cp -ar \"$@\" -t \"$destdir\" -- \"${files[@]}\"\r\n rm -rf \"$tmpdir\"\r\n)\r\n\r\nfunction unpack_zip {\r\n echo -e \"Unpacking server files...\"\r\n unzip-strip server.zip \"${SERVER_DIR}\"\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/manifest.json\"\r\n jq -c '.files[]? | select(.required == true) | {project: .projectID, file: .fileID}' \"${MANIFEST}\" | while read -r mod; do\r\n local MOD_PROJECT_ID=$(echo \"${mod}\" | jq -r '.project \/\/ empty')\r\n local MOD_FILE_ID=$(echo \"${mod}\" | jq -r '.file \/\/ empty')\r\n\r\n if [[ -z \"${MOD_PROJECT_ID}\" || -z \"${MOD_FILE_ID}\" ]]; then\r\n echo -e \"\\tERROR: Failed to parse project id or file id for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_URL=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${MOD_PROJECT_ID}\/files\/${MOD_FILE_ID}\/download-url\" -O - | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n\r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FORGE_VERSION=$LOADER_VERSION\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old Forge files so we can safely update\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FABRIC_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local QUILT_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\nfi\r\n\r\nget_loader\r\nunpack_zip\r\n\r\nif [[ -f \"${SERVER_DIR}\/manifest.json\" ]]; then\r\n echo \"Found manifest.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/client.manifest.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n if [[ $LOADER_NAME == \"forge\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"fabric\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"quilt\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"",
+ "container": "openjdk:8-jdk-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Modpack Project ID",
+ "description": "The modpack project ID from the CurseForge site on the pack page, or 'zip' if installing from an uploaded server.zip file.\r\n\r\nFor example, the project Id of https:\/\/www.curseforge.com\/minecraft\/modpacks\/bofa-mods ID is 375152",
+ "env_variable": "PROJECT_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Modpack File ID",
+ "description": "The file ID belonging to a specific version of a modpack. Can either be the main file or the file ID associated with the server pack.\r\n\r\nIf not provided the script will attempt to retrieve the latest server pack or client pack available.",
+ "env_variable": "VERSION_ID",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string",
+ "field_type": "text"
+ },
+ {
+ "name": "CurseForge API Key",
+ "description": "A CurseForge API key is required to use this egg. You can learn how to get an API key here: https:\/\/support.curseforge.com\/en\/support\/solutions\/articles\/9000208346-about-the-curseforge-api-and-how-to-apply-for-a-key",
+ "env_variable": "API_KEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:60",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/fabric/egg-fabric.json b/game_eggs/minecraft/java/fabric/egg-fabric.json
index 8aaa9342..2c37a4d4 100644
--- a/game_eggs/minecraft/java/fabric/egg-fabric.json
+++ b/game_eggs/minecraft/java/fabric/egg-fabric.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-09T13:31:08-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Fabric",
"author": "accounts@bofanodes.io",
"description": "Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.",
@@ -13,12 +13,13 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
@@ -29,7 +30,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\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\n\r\nif [ -z \"$LOADER_VERSION\" ] || [ \"$LOADER_VERSION\" == \"latest\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$LOADER_VERSION\" == \"snapshot\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\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 -loader $LOADER_VERSION -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\n\r\nif [ -z \"$LOADER_VERSION\" ] || [ \"$LOADER_VERSION\" == \"latest\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$LOADER_VERSION\" == \"snapshot\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\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 -loader $LOADER_VERSION -downloadMinecraft\r\nmv server.jar minecraft-server.jar\r\nmv fabric-server-launch.jar server.jar\r\necho \"serverJar=minecraft-server.jar\" > fabric-server-launcher.properties\r\necho -e \"Install Complete\"",
"container": "openjdk:11-jdk-slim",
"entrypoint": "bash"
}
@@ -39,10 +40,11 @@
"name": "Server Jar File",
"description": "The name of the server jarfile to run the server with.",
"env_variable": "SERVER_JARFILE",
- "default_value": "fabric-server-launch.jar",
+ "default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
- "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
},
{
"name": "Minecraft Version",
@@ -51,7 +53,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|between:3,15"
+ "rules": "required|string|between:3,15",
+ "field_type": "text"
},
{
"name": "Fabric Version",
@@ -60,7 +63,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|between:3,15"
+ "rules": "required|string|between:3,15",
+ "field_type": "text"
},
{
"name": "Fabric Loader Version",
@@ -69,7 +73,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|between:3,15"
+ "rules": "required|string|between:3,15",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/feather/egg-feather.json b/game_eggs/minecraft/java/feather/egg-feather.json
index d1181ec8..a7f06812 100644
--- a/game_eggs/minecraft/java/feather/egg-feather.json
+++ b/game_eggs/minecraft/java/feather/egg-feather.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-11-26T00:03:20+00:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Feather",
"author": "parker@parkervcp.com",
"description": "An experimental Minecraft server implementation written in Rust.",
diff --git a/game_eggs/minecraft/java/folia/README.MD b/game_eggs/minecraft/java/folia/README.MD
new file mode 100644
index 00000000..ab62b844
--- /dev/null
+++ b/game_eggs/minecraft/java/folia/README.MD
@@ -0,0 +1,13 @@
+# Folia
+
+Fork of Paper which adds regionised multithreading to the dedicated server.
+
+Check out the [Folia Website](https://papermc.io/) for more information.
+
+## Server Ports
+
+The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
+
+| Port | default |
+|-------|---------|
+| Game | 25565 |
diff --git a/game_eggs/minecraft/java/folia/egg-folia.json b/game_eggs/minecraft/java/folia/egg-folia.json
new file mode 100644
index 00000000..9b232860
--- /dev/null
+++ b/game_eggs/minecraft/java/folia/egg-folia.json
@@ -0,0 +1,77 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-24T16:49:48+02:00",
+ "name": "Folia",
+ "author": "Hosting@NeverStopGaming.net",
+ "description": "Fork of Paper which adds regionised multithreading to the dedicated server.",
+ "features": [
+ "eula",
+ "java_version",
+ "pid_limit"
+ ],
+ "docker_images": {
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
+ "file_denylist": [],
+ "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Folia Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=folia\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi",
+ "container": "ghcr.io\/pterodactyl\/installers:alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Minecraft Version",
+ "description": "The version of minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.",
+ "env_variable": "MINECRAFT_VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Jar File",
+ "description": "The name of the server jarfile to run the server with.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "server.jar",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
+ },
+ {
+ "name": "Download Path",
+ "description": "A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.",
+ "env_variable": "DL_PATH",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Build Number",
+ "description": "The build number for the folia release.\r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.",
+ "env_variable": "BUILD_NUMBER",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/forge/curseforge-generic/README.md b/game_eggs/minecraft/java/forge/curseforge-generic/README.md
deleted file mode 100644
index 6dbb3c44..00000000
--- a/game_eggs/minecraft/java/forge/curseforge-generic/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Forge Generic
-
-## This is a generic egg for curseforge modpacks
-
-You will need to give it a modpack ID. The ID for BOFA mods is `375152` for example.
-This can be found on the modpack page in the `About Project` section in the upper right corner.
-
-This will grab the latest release when the version is set to latest.
-
-It "should" grab versions of the pack based on the modpack version numbers
-
-## API Keys
-
-You will need to get an API key to run the installer now. Make an account at https://console.curseforge.com/
-
-https://console.curseforge.com/#/api-keys
-
-## Server Ports
-
-The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
-
-| Port | default |
-|-------|---------|
-| Game | 25565 |
diff --git a/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json b/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json
deleted file mode 100644
index f64e51eb..00000000
--- a/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v2",
- "update_url": null
- },
- "exported_at": "2022-10-18T22:00:46+02:00",
- "name": "Curseforge Generic",
- "author": "parker@parkervcp.com",
- "description": "A generic egg for a forge modpack",
- "features": [
- "eula",
- "java_version",
- "pid_limit"
- ],
- "docker_images": {
- "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
- "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
- "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
- "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17"
- },
- "file_denylist": [],
- "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar server.jar",
- "config": {
- "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
- "logs": "{}",
- "stop": "stop"
- },
- "scripts": {
- "installation": {
- "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nmkdir -p \/mnt\/server\r\n\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq unzip dos2unix\r\n}\r\n\r\nfunction get_download {\r\n # get json data to work with\r\n echo -e \"Curling the json for the modpack\"\r\n echo -e \"running: curl -sSLX GET https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID} -H 'Accept: application\/json' -H 'x-api-key: API_KEY'\"\r\n JSON_DATA=$(curl -ssLX GET https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID} -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\")\r\n\r\n # if no modpack version is set or is set to latest\r\n if [ -z ${MODPACK_VERSION} ] || [ \"${MODPACK_VERSION}\" = \"latest\" ]; then\r\n echo -e \"Getting latest download url\"\r\n # parse data to get the download url\r\n FILE_ID=$(echo -e ${JSON_DATA} | jq -r \".data.mainFileId\")\r\n echo -e \"File ID is: ${FILE_ID}\"\r\n if [ \"$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .isServerPack\")\" == \"false\" ] && [ \"$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .serverPackFileId\")\" != \"null\" ]; then\r\n FILE_ID=$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .serverPackFileId\")\r\n DOWNLOAD_URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files\/${FILE_ID}\/download-url | jq -r \".data\")\r\n else\r\n DOWNLOAD_URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files\/${FILE_ID}\/download-url | jq -r \".data\")\r\n fi\r\n echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n else\r\n echo -e \"Looking for download url for version ${MODPACK_VERSION}\"\r\n # parse files for version match\r\n FILES_JSON_DATA=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files)\r\n # get element number to get the exact location in the json\r\n FILES_JSON_ELEMENT=$(echo -e ${FILES_JSON_DATA} | jq --arg VERSION \"${MODPACK_VERSION}\" '.[] | select(.displayName) | .displayName | contains($VERSION)' | grep -n true | cut -f1 -d: | tail -1)\r\n # if there wasn't a match default to latest\r\n if [ ! -z ${FILES_JSON_ELEMENT} ]; then\r\n echo -e \"No matching version found\"\r\n echo -e \"defaulting to latest\"\r\n DOWNLOAD_URL=$(echo -e ${FILES_JSON_DATA} | jq --arg ELEMENT \"${FILES_JSON_ELEMENT}\" '.[$ELEMENT|tonumber-1] | .downloadUrl')\r\n else\r\n echo -e \"Version match found\"\r\n DOWNLOAD_URL=$(echo -e ${JSON_DATA} | jq -r .latestFiles[0].downloadUrl)\r\n echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n fi\r\n fi\r\n ## download modpack files\r\n cd \/mnt\/server\r\n echo \"Executing curl -L ${DOWNLOAD_URL} -o server.zip\"\r\n curl -L -g \"${DOWNLOAD_URL}\" -o server.zip\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n cd \/mnt\/server\r\n unzip -o server.zip\r\n}\r\n\r\nfunction forge_install {\r\n echo -e \"\\nInstalling forge server using the installer jar file.\\n\"\r\n if [ -f \/mnt\/server\/*installer.jar ]; then\r\n\t\tmv *installer.jar installer.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n else\r\n echo \"No forge installer found moving on.\"\r\n fi\r\n mv FTBServer.jar server.jar\r\n}\r\n\r\nfunction forge_cleanup {\r\n echo -e \"\\nDeleting installer jar file and cleaning up.\\n\"\r\n rm -rf *installer.jar\r\n if [ ! -f \/mnt\/server\/forge*universal.jar ]; then\r\n mv -v \/mnt\/server\/*\/* \/mnt\/server\/\r\n if [ ! -f \/mnt\/server\/*universal.jar ]; then\r\n mv forge*.jar server.jar\r\n else\r\n mv forge*universal.jar server.jar \r\n fi\r\n else\r\n mv forge*universal.jar server.jar\r\n fi\r\n}\r\n\r\nfunction json_download_prework {\r\n mkdir -p \/mnt\/server\/mods\r\n cd \/mnt\/server\/mods\r\n}\r\n\r\nfunction json_download_mods {\r\n MANIFEST=\/mnt\/server\/manifest.json\r\n for mod in $(jq -c '.files[]' ${MANIFEST} ); do\r\n projID=$(echo $mod | jq -r \".projectID\")\r\n fileID=$(echo $mod | jq -r \".fileID\")\r\n URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${projID}\/files\/${fileID}\/download-url | jq -r \".data\")\r\n # this is saving everything as \/mnt\/server\/mods\/download\r\n echo \"Mod direct url: ${URL}\"\r\n curl -JLO \"${URL}\"\r\n done\r\n}\r\n\r\nfunction json_download_forge {\r\n cd \/mnt\/server\r\n FORGE=$(jq -r '.minecraft.modLoaders[0].id' \/mnt\/server\/manifest.json | cut -d '-' -f2)\r\n MCVER=$(jq -r '.minecraft.version' \/mnt\/server\/manifest.json)\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n FORGE_DOWNLOAD=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\r\n \r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -e \"Download link is $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION\"\r\n curl -sS $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n curl -sS $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -o universal.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n mv *universal.jar server.jar\r\n rm installer.jar\r\n}\r\n\r\nfunction json_download_overrides {\r\n if [ -d \/mnt\/server\/overrides ]; then\r\n mv \/mnt\/server\/overrides\/mods\/* \/mnt\/server\/mods\/\r\n rmdir \/mnt\/server\/overrides\/mods\r\n mv \/mnt\/server\/overrides\/* \/mnt\/server\r\n rmdir \/mnt\/server\/overrides\r\n fi\r\n}\r\n\r\nfunction cfg_download_forge {\r\n dos2unix settings.cfg # In case the pack was distributed with Windows-style line endings in the cfg file\r\n MCVER=`grep 'MCVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n FORGE=`grep 'FORGEVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n \r\n FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n echo -e ${FORGE_VERSION}\r\n FORGE_DOWNLOAD=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\r\n PARSED_LINK=$(echo -e \"$FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION\" | sed 's\/ \/\/g')\r\n\r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -e \"Download link is $PARSED_LINK\"\r\n curl -sSL $PARSED_LINK-installer.jar -o installer.jar\r\n curl -sSL $PARSED_LINK-universal.jar -o universal.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n mv *universal.jar server.jar\r\n rm installer.jar\r\n}\r\n\r\nfunction ftb_install {\r\n chmod +x \/mnt\/server\/settings.sh \r\n . \/mnt\/server\/settings.sh \r\n curl https:\/\/s3.amazonaws.com\/Minecraft.Download\/versions\/${MCVER}\/minecraft_server.${MCVER}.jar -o ${JARFILE} \r\n curl https:\/\/libraries.minecraft.net\/${LAUNCHWRAPPER} -o \/mnt\/server\/libraries\/${LAUNCHWRAPPER}\r\n}\r\n\r\ninstall_required\r\nif [ ! -z ${MODPACK_ID} ] && [ ! \"${MODPACK_ID}\" = \"zip\" ]; then\r\n\tget_download\r\n\tunpack_zip\r\n rm -rf server.zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [ -f \/mnt\/server\/manifest.json ]; then\r\n json_download_prework\r\n json_download_mods\r\n json_download_overrides\r\n json_download_forge\r\nelif [ -f \/mnt\/server\/settings.cfg ]; then\r\n cfg_download_forge\r\nelif [ -f \/mnt\/server\/version.json ]; then\r\n if [ \"$(cat \/mnt\/server\/version.json | jq -r '.packID | contains(\"FTB\")')\" == \"true\" ]; then\r\n ftb_install\r\n fi\r\nelse\r\n forge_install\r\n forge_cleanup\r\nfi\r\n\r\necho -e \"\\n\\nInstall completed succesfully, enjoy!\"",
- "container": "openjdk:8-jdk-slim",
- "entrypoint": "bash"
- }
- },
- "variables": [
- {
- "name": "Modpack Project ID",
- "description": "The modpack project ID from the curseforge site on the pack page.\r\nOr 'zip' if installing from an uploaded server.zip file.\r\n(Ex. https:\/\/www.curseforge.com\/minecraft\/modpacks\/bofa-mods ID is 375152)",
- "env_variable": "MODPACK_ID",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string",
- "field_type": "text"
- },
- {
- "name": "Modpack Version",
- "description": "Version of the modpack to use.",
- "env_variable": "MODPACK_VERSION",
- "default_value": "latest",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string|max:20",
- "field_type": "text"
- },
- {
- "name": "API Key",
- "description": "This is a new requirement and will be needed to pull mods packs\r\n\r\nYou need and account to generate an api-key here\r\nhttps:\/\/console.curseforge.com\/#\/api-keys",
- "env_variable": "API_KEY",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string",
- "field_type": "text"
- }
- ]
-}
diff --git a/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json b/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json
index 14bcf0d0..d51493b7 100644
--- a/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json
+++ b/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-10-31T16:27:58+01:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Forge Enhanced",
"author": "parker@parkervcp.com",
"description": "Minecraft Forge Server. Minecraft Forge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other.",
@@ -14,10 +14,11 @@
"pid_limit"
],
"docker_images": {
- "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
- "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
"Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
- "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8"
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )",
diff --git a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json
index ad59555a..d752ca4f 100644
--- a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json
+++ b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-06-14T21:28:54+03:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "FTB-modpacks.ch Server",
"author": "runemaster580@gmail.com",
"description": "Since the release of the FTB APP, FTB modpacks are now distributed through modpacks.ch. This egg was developed for support for modpacks that are distributed through this.",
@@ -13,23 +13,24 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
- "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar forge-server.jar",
+ "startup": "java -javaagent:log4jfix\/Log4jPatcher-1.0.0.jar -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar start-server.jar\" || printf %s \"@unix_args.txt\" )",
"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}",
- "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# 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",
+ "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\ncd \/mnt\/server\r\n\r\n\r\n# Download needed software.\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq\r\n}\r\n\r\nfunction get_modpack_id {\r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] && [ ! -z ${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} ] && [ ! -z ${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\r\nfunction run_installer {\r\n # get architecture for installer\r\n INSTALLER_TYPE=$([ \"$(uname -m)\" == \"x86_64\" ] && echo \"linux\" || echo \"arm\/linux\")\r\n echo \"ModpackID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID} InstallerType: ${INSTALLER_TYPE}\"\r\n\r\n # download installer\r\n curl -L https:\/\/api.modpacks.ch\/public\/modpack\/0\/0\/server\/${INSTALLER_TYPE} --output serversetup\r\n chmod +x .\/serversetup\r\n \r\n # remove old forge files (to allow updating)\r\n rm -rf libraries\/net\/minecraftforge\/forge\r\n rm -f unix_args.txt\r\n \r\n # run installer\r\n .\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto --noscript --nojava\r\n}\r\n\r\n# allows startup command to work\r\nfunction move_startup_files {\r\n # create symlink for forge unix_args.txt if exists\r\n if compgen -G \"libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt\"; then\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n fi\r\n \r\n # move forge\/fabric jar file to start-server.jar if exists\r\n if compgen -G \"forge-*.jar\"; then\r\n mv -f forge-*.jar start-server.jar\r\n elif compgen -G \"fabric-*.jar\"; then\r\n mv -f fabric-*.jar start-server.jar\r\n fi\r\n}\r\n\r\n# installer cleanup\r\nfunction installer_cleanup {\r\n rm serversetup\r\n rm -f run.bat\r\n rm -f run.sh\r\n}\r\n\r\n# run installation steps\r\ninstall_required\r\nget_modpack_id\r\nrun_installer\r\nmove_startup_files\r\ninstaller_cleanup\r\n\r\necho \"Finished installing FTB modpack\"",
"container": "openjdk:8-jdk-slim",
"entrypoint": "bash"
}
@@ -42,7 +43,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:99|min:4"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "FTB modpack ID",
@@ -51,7 +53,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|integer",
+ "field_type": "text"
},
{
"name": "FTB Pack Version",
@@ -60,7 +63,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "FTB Pack Version ID",
@@ -69,7 +73,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|integer",
+ "field_type": "text"
}
]
}
diff --git a/game_eggs/minecraft/java/glowstone/egg-glowstone.json b/game_eggs/minecraft/java/glowstone/egg-glowstone.json
index 18b66715..808639ab 100644
--- a/game_eggs/minecraft/java/glowstone/egg-glowstone.json
+++ b/game_eggs/minecraft/java/glowstone/egg-glowstone.json
@@ -1,20 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-07T15:15:07-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Glowstone",
"author": "support@pterodactyl.io",
"description": "Glowstone is an open-source server implementation for Minecraft: Java Edition 1.12.2 and up.",
"features": null,
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
"startup": "java -Xms768M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -jar {{SERVER_JARFILE}}",
"config": {
diff --git a/game_eggs/minecraft/java/krypton/egg-krypton.json b/game_eggs/minecraft/java/krypton/egg-krypton.json
index eed82973..24c0f6b5 100644
--- a/game_eggs/minecraft/java/krypton/egg-krypton.json
+++ b/game_eggs/minecraft/java/krypton/egg-krypton.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
- },
- "exported_at": "2021-05-09T06:18:25-04:00",
+},
+"exported_at": "2023-05-17T23:20:29+01:00",
"name": "Krypton",
"author": "callum.seabrook@prevarinite.com",
"description": "A fast, lightweight Minecraft server written in Kotlin",
@@ -13,12 +13,13 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17"
-],
+"docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+},
"file_denylist": "",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JAR}}",
"config": {
diff --git a/game_eggs/minecraft/java/limbo/README.md b/game_eggs/minecraft/java/limbo/README.md
new file mode 100644
index 00000000..88718474
--- /dev/null
+++ b/game_eggs/minecraft/java/limbo/README.md
@@ -0,0 +1,13 @@
+# Limbo
+
+Standalone server program Limbo.
+
+[Limbo Github](https://github.com/LOOHP/Limbo)
+
+## Server Ports
+
+The Limbo server requires a single port for access (default 25565).
+
+| Port | default |
+|-------|---------|
+| Game | 25565 |
diff --git a/game_eggs/minecraft/java/limbo/egg-limbo.json b/game_eggs/minecraft/java/limbo/egg-limbo.json
new file mode 100644
index 00000000..6468d22d
--- /dev/null
+++ b/game_eggs/minecraft/java/limbo/egg-limbo.json
@@ -0,0 +1,42 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-05-17T23:20:29+01:00",
+ "name": "Limbo",
+ "author": "xEfinax@protonmail.com",
+ "description": "Standalone server program Limbo.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ },
+ "file_denylist": [],
+ "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Limbo server listening on \"\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Limbo Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\n\r\nLATEST_LIMBO_NAME=$(curl -s https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/api\/json | jq -r .artifacts[1].displayPath)\r\n\r\ncd \/mnt\/server || exit\r\n\r\nif [ -f \"${SERVER_JARFILE}\" ]; then\r\n\tmv \"${SERVER_JARFILE}\" \"${SERVER_JARFILE}\".old\r\nfi\r\n\r\necho \"Downloading Limbo server jar...\"\r\ncurl -o \"${SERVER_JARFILE}\" https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/artifact\/target\/$LATEST_LIMBO_NAME\r\n\r\nif [ ! -f server.properties ]; then\r\n echo \"Downloading Limbo server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/LOOHP\/Limbo\/master\/src\/main\/resources\/server.properties\r\nfi",
+ "container": "ghcr.io\/pterodactyl\/installers:alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Jar File",
+ "description": "The name of the server jarfile to run the Limbo server with.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "Limbo.jar",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/magma/egg-magma.json b/game_eggs/minecraft/java/magma/egg-magma.json
index 38b994c0..28bc9370 100644
--- a/game_eggs/minecraft/java/magma/egg-magma.json
+++ b/game_eggs/minecraft/java/magma/egg-magma.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-09-28T18:19:11+00:00",
+ "exported_at": "2023-07-29T17:46:23+02: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.",
@@ -14,10 +14,11 @@
"pid_limit"
],
"docker_images": {
- "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
- "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
"Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
- "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8"
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
@@ -29,8 +30,8 @@
},
"scripts": {
"installation": {
- "script": "apt update\r\napt install -y curl jq\r\n\r\ncd \/mnt\/server\/\r\n\r\n# Hard coded latest version as the magma API doesn't have an endpoint to query for it\r\nLATEST_VERSION=\"1.18.2\"\r\n\r\n# Default TAG_VERSION if empty\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION=\"latest\"\r\nfi\r\n\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n MC_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\necho \"Attempting to install Magma - Version ${MC_VERSION} - Tag ${TAG_VERSION}\"\r\n\r\nif [[ \"${TAG_VERSION}\" == \"latest\" ]]; then\r\n # Didn't ask for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\")\r\nelse\r\n # Asked for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\/${TAG_VERSION}\")\r\nfi\r\n\r\nDOWNLOAD_LINK=$(echo ${VERSION_JSON} | jq -r .link)\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n \r\n # Validate that link works\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"No download URL found. Terminating install.\"\r\n exit 2\r\nfi\r\n\r\n\r\n# Download server.jar\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\necho -e \"Install Complete\"",
- "container": "ghcr.io\/parkervcp\/installers:debian",
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl git jq\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\/\r\n\r\n# Hard coded latest version as the magma API doesn't have an endpoint to query for it\r\nLATEST_VERSION=\"1.18.2\"\r\n\r\n# Default TAG_VERSION if empty\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION=\"latest\"\r\nfi\r\n\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n MC_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\necho \"Attempting to install Magma - Version ${MC_VERSION} - Tag ${TAG_VERSION}\"\r\n\r\nif [[ \"${TAG_VERSION}\" == \"latest\" ]]; then\r\n # Didn't ask for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\")\r\nelse\r\n # Asked for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\/${TAG_VERSION}\")\r\nfi\r\n\r\nDOWNLOAD_LINK=$(echo ${VERSION_JSON} | jq -r .link)\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n \r\n # Validate that link works\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"No download URL found. Terminating install.\"\r\n exit 2\r\nfi\r\n\r\n\r\n# Download server.jar\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\necho -e \"Install Complete\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -66,4 +67,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/minecraft/java/modrinth/README.md b/game_eggs/minecraft/java/modrinth/README.md
new file mode 100644
index 00000000..04580ecc
--- /dev/null
+++ b/game_eggs/minecraft/java/modrinth/README.md
@@ -0,0 +1,18 @@
+# Modrinth Generic
+
+## This is a generic egg for Modrinth modpacks
+
+You will need to give it a modpack project ID. The project ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) is `1oIpaoJo` for example.
+This can be found on the modpack page in the `Technical information` section in the left sidebar.
+
+You can also optionally specify a version ID. If you do not specify a version ID, the latest version will be used. The version ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) version 1.12.2For2.0 is `SyMW2FDv` for example. This can be found on the modpack page by clicking the version number in the `Versions` section.
+
+The script will automatically setup of Forge, Fabric, or Quilt depending on the modpack.
+
+## Server Ports
+
+The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
+
+| Port | default |
+|-------|---------|
+| Game | 25565 |
diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json
new file mode 100644
index 00000000..e13e624b
--- /dev/null
+++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json
@@ -0,0 +1,59 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-08-01T20:54:48+02:00",
+ "name": "Modrinth Generic",
+ "author": "contact@chromozone.dev",
+ "description": "A generic egg for a Modrinth modpack.",
+ "features": [
+ "eula",
+ "java_version",
+ "pid_limit"
+ ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ },
+ "file_denylist": [],
+ "startup": "java $([[ -f user_jvm_args.txt ]] && printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")",
+ "config": {
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n\r\n echo -e \"\\tRunning apt update\"\r\n if ! apt update > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt update failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRunning apt install\"\r\n if ! apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt install failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n local PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.title \/\/ empty')\r\n local PROJECT_SUPPORTED=$(echo \"$PROJECT_DATA\" | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo \"$JSON_DATA\" | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"\\tERROR: Failed to download modpack files!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' \"${MANIFEST}\" | while read -r mod; do\r\n local FILE_URL=$(echo \"${mod}\" | jq -r '.url \/\/ empty')\r\n local FILE_NAME=$(echo \"${mod}\" | jq -r '.name \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n \r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod '${FILE_NAME}'\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying shared overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FORGE_VERSION=$(jq -r '.dependencies.forge \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FORGE_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Forge version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_JSON}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve Quilt installer information from manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"",
+ "container": "eclipse-temurin:17-jdk",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Modpack Project ID",
+ "description": "This is the modpack project ID from the Modrinth site.\r\n\r\nFor example, the project ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/' is 1KVo5zza",
+ "env_variable": "PROJECT_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:8",
+ "field_type": "text"
+ },
+ {
+ "name": "Modpack Version ID",
+ "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe",
+ "env_variable": "VERSION_ID",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|max:8",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/mohist/egg-mohist.json b/game_eggs/minecraft/java/mohist/egg-mohist.json
index 1dd2339b..d66da2c0 100644
--- a/game_eggs/minecraft/java/mohist/egg-mohist.json
+++ b/game_eggs/minecraft/java/mohist/egg-mohist.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-14T09:54:36+01:00",
+ "exported_at": "2023-08-13T19:49:14+02:00",
"name": "Mohist",
"author": "alex.chang-lam@protonmail.com",
"description": "Spigot fork with performance optimizations.",
@@ -13,24 +13,25 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17"
- ],
+ "docker_images": {
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
- "startup": "java -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} pause",
+ "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
"config": {
"files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
+ "startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Mohist Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl\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 ${BUILD_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_VERSION}\/download\r\nelse\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_TYPE}\/download\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\necho -e \"Downloading build version ${BUILD_VERSION}\"\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"Download link is valid.\"\r\n else\r\n echo -e \"Link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -s -o server.jar -sS ${DOWNLOAD_LINK}\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/server.jar ]; then\r\n echo \"!!! Error downloading build version ${BUILD_VERSION} !!!\"\r\n exit\r\nfi",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n# Mohist Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl\r\n\r\n#Go into main direction\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nif [ ! -z ${BUILD_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_VERSION}\/download\r\nelse\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/latest\/download\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\necho -e \"Downloading build version ${BUILD_VERSION}\"\r\n\r\ncurl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/${SERVER_JARFILE} ]; then\r\n echo \"!!! Error downloading build version ${BUILD_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -42,16 +43,18 @@
"default_value": "server.jar",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Minecraft Version",
"description": "The version of Minecraft to download.",
"env_variable": "MC_VERSION",
- "default_value": "1.16.5",
+ "default_value": "1.19.4",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Build Number",
@@ -60,16 +63,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
- },
- {
- "name": "Build Type",
- "description": "The type of server jar to download from Mohist.\r\n\r\nValid types are \"recommended\" and \"latest\".",
- "env_variable": "BUILD_TYPE",
- "default_value": "latest",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
}
]
}
diff --git a/game_eggs/minecraft/java/paper/egg-paper.json b/game_eggs/minecraft/java/paper/egg-paper.json
index 98d3195e..0d8de321 100644
--- a/game_eggs/minecraft/java/paper/egg-paper.json
+++ b/game_eggs/minecraft/java/paper/egg-paper.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-05-21T10:48:18-04:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Paper",
"author": "parker@pterodactyl.io",
"description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.",
@@ -13,12 +13,13 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
"config": {
diff --git a/game_eggs/minecraft/java/purpur/egg-purpur.json b/game_eggs/minecraft/java/purpur/egg-purpur.json
index 579bda6d..ea06fe6a 100644
--- a/game_eggs/minecraft/java/purpur/egg-purpur.json
+++ b/game_eggs/minecraft/java/purpur/egg-purpur.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-18T19:20:26-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Purpur",
"author": "purpur@birdflop.com",
"description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features.",
@@ -13,14 +13,15 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
- "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
+ "startup": "java --add-modules=jdk.incubator.vector -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
"config": {
"files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \")! For help, type \"\r\n}",
@@ -42,7 +43,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Server Jar File",
@@ -51,7 +53,8 @@
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
- "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/|max:80"
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/|max:80",
+ "field_type": "text"
},
{
"name": "Build Number",
@@ -60,7 +63,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/quilt/README.md b/game_eggs/minecraft/java/quilt/README.md
new file mode 100644
index 00000000..0655096f
--- /dev/null
+++ b/game_eggs/minecraft/java/quilt/README.md
@@ -0,0 +1,29 @@
+# Quilt
+
+## From their [Website](https://quiltmc.org/)
+
+## [Documentation](https://quiltmc.org/en/install/server/)
+
+The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.
+
+## Installation/System Requirements
+
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | Minecraft probably supports everything? | - |
+| RAM | 2GB | 5GB |
+| Storage | 300MB | 10GB |
+| Network | 3 Mbit/s | 7 Mbit/s |
+| Game Ownership | The game is not required to run the server. | - |
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 25565 |
+
+### Notes
+
+25565 is the default port, but any port can be used.
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/quilt/egg-quilt.json b/game_eggs/minecraft/java/quilt/egg-quilt.json
new file mode 100644
index 00000000..124ad837
--- /dev/null
+++ b/game_eggs/minecraft/java/quilt/egg-quilt.json
@@ -0,0 +1,55 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-08T19:05:09+03:00",
+ "name": "Quilt",
+ "author": "diedyesterdaywashere@gmail.com",
+ "description": "The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.",
+ "features": null,
+ "docker_images": {
+ "Java 8: 1.14 - 1.16.5": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 16: 1.17 - 1.17.1": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17: 1.18 - Newest": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18: Newest": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
+ "file_denylist": [],
+ "startup": "java -jar {{SERVER_JARFILE}} nogui -Xms128M -XX:MaxRAMPercentage=95.0",
+ "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}",
+ "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Quilt Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nwget -O quilt.jar https:\/\/quiltmc.org\/api\/v1\/download-latest-installer\/java-universal\r\njava -jar quilt.jar \\\r\n install server $MC_VERSION \\\r\n --download-server\r\ncd \/mnt\/server\/server\r\nmv * \/mnt\/server\r\ncd ..\r\nrm quilt.jar\r\nrmdir \/mnt\/server\/server\r\nmv server.jar minecraft.jar\r\nmv quilt-server-launch.jar server.jar\r\necho \"serverJar=minecraft.jar\" > quilt-server-launcher.properties\r\necho -e \"Server is Ready!\"",
+ "container": "eclipse-temurin:18-jdk-jammy",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Minecraft Version",
+ "description": "Version of Minecraft that will be installed. You can only choose the exact version number, for example \"1.19.2\", \"latest\" won't work!",
+ "env_variable": "MC_VERSION",
+ "default_value": "1.19.2",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|between:3,15",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Jar File",
+ "description": "The name of the jarfile that will be ran on server launch.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "server.jar",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/minecraft/java/spigot/egg-spigot.json b/game_eggs/minecraft/java/spigot/egg-spigot.json
index ac81e7a3..1873d46c 100644
--- a/game_eggs/minecraft/java/spigot/egg-spigot.json
+++ b/game_eggs/minecraft/java/spigot/egg-spigot.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-09T13:30:38-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "Spigot",
"author": "support@pterodactyl.io",
"description": "Spigot is the most widely-used modded Minecraft server software in the world. It powers many of the top Minecraft server networks around to ensure they can cope with their huge player base and ensure the satisfaction of their players. Spigot works by reducing and eliminating many causes of lag, as well as adding in handy features and settings that help make your job of server administration easier.",
@@ -13,12 +13,13 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
diff --git a/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json b/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json
index 7f3326be..c5e216dc 100644
--- a/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json
+++ b/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-04T16:44:53+08:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "SpongeForge",
"author": "parker@parkervcp.com",
"description": "A community-driven open source Minecraft: Java Edition modding platform.",
@@ -14,10 +14,11 @@
"pid_limit"
],
"docker_images": {
- "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8",
- "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
diff --git a/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json b/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json
index c6d9449b..16c0804c 100644
--- a/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json
+++ b/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-09T13:30:32-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "SpongeVanilla",
"author": "parker@parkervcp.com",
"description": "SpongeVanilla is the implementation of the Sponge API on top of Vanilla Minecraft.",
diff --git a/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json b/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json
index 8cd9f85c..02526f29 100644
--- a/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json
+++ b/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-09T13:30:15-05:00",
+ "exported_at": "2023-05-17T23:20:29+01:00",
"name": "VanillaCord",
"author": "support@pterodactyl.io",
"description": "Minecraft is a game about placing blocks and going on adventures. Explore randomly generated worlds and build amazing things from the simplest of homes to the grandest of castles. Play in Creative Mode with unlimited resources or mine deep in Survival Mode, crafting weapons and armor to fend off dangerous mobs. Do all this alone or with friends.\r\n\r\nVanillaCord adds support for BungeeCord's ip_forward setting.",
@@ -13,12 +13,13 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
diff --git a/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json b/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json
index 25cf326e..544ca2b6 100644
--- a/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json
+++ b/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-02T16:47:41+00:00",
+ "exported_at": "2023-04-03T16:55:25+02:00",
"name": "Velocity",
"author": "parker@parkervcp.com",
"description": "Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.",
@@ -13,12 +13,12 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar {{SERVER_JARFILE}}",
"config": {
@@ -29,7 +29,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\nVELOCITY_VERSION=\"latest\"\r\nfi\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\necho -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\nDOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\nVER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\nLATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\nif [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} version\"\r\nVELOCITY_VERSION=${LATEST_VERSION}\r\nfi\r\nBUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\nif [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\nBUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\nJAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\nif [[ -f ${SERVER_JARFILE} ]]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\nif [[ -f velocity.toml ]]; then\r\necho -e \"velocity config file exists\"\r\nelse\r\necho -e \"downloading velocity config file.\"\r\ncurl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\nif [[ -f forwarding.secret ]]; then\r\necho -e \"velocity forwarding secret file already exists\"\r\nelse\r\necho -e \"creating forwarding secret file\"\r\ntouch forwarding.secret\r\ndate +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\necho -e \"install complete\"",
+ "script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\n\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\n VELOCITY_VERSION=\"latest\"\r\nfi\r\n\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\n echo -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\n VER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\n LATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\n\r\nif [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\nelse\r\n echo -e \"Using the latest ${PROJECT} version\"\r\n VELOCITY_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\nBUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\n\r\nif [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\n echo -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\n BUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\n\r\nJAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\n\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [[ -f ${SERVER_JARFILE} ]]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [[ -f velocity.toml ]]; then\r\n echo -e \"velocity config file exists\"\r\nelse\r\n echo -e \"downloading velocity config file.\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\n\r\nif [[ -f forwarding.secret ]]; then\r\n echo -e \"velocity forwarding secret file already exists\"\r\nelse\r\n echo -e \"creating forwarding secret file\"\r\n touch forwarding.secret\r\n date +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\n\r\necho -e \"install complete\"",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
@@ -42,7 +42,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Server Jar File",
@@ -51,7 +52,8 @@
"default_value": "velocity.jar",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:32|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
},
{
"name": "Download Path",
@@ -60,7 +62,8 @@
"default_value": "",
"user_viewable": false,
"user_editable": false,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "Build Number",
@@ -69,7 +72,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json
index 4d7fc579..02f8940b 100644
--- a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json
+++ b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-12-09T13:31:54-05:00",
+ "exported_at": "2023-07-24T09:28:42-04:00",
"name": "Waterfall",
"author": "hostmaster@waterfallgaming.net",
"description": "Waterfall is a fork of the well-known BungeeCord server teleportation suite.",
@@ -13,12 +13,12 @@
"java_version",
"pid_limit"
],
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_17",
- "ghcr.io\/pterodactyl\/yolks:java_16",
- "ghcr.io\/pterodactyl\/yolks:java_11",
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17",
+ "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16",
+ "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11",
+ "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8"
+ },
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
"config": {
@@ -29,7 +29,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi",
+ "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_LINK}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_LINK}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_LINK} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
@@ -42,7 +42,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|alpha_num|between:1,6"
+ "rules": "required|alpha_num|between:1,6",
+ "field_type": "text"
},
{
"name": "Waterfall Jar File",
@@ -51,7 +52,8 @@
"default_value": "waterfall.jar",
"user_viewable": true,
"user_editable": true,
- "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
+ "field_type": "text"
},
{
"name": "Download Link",
@@ -60,7 +62,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "Waterfall build number",
@@ -69,7 +72,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/minetest/README.md b/game_eggs/minetest/README.md
index 591733ca..7a93329c 100644
--- a/game_eggs/minetest/README.md
+++ b/game_eggs/minetest/README.md
@@ -1,3 +1,14 @@
# Minetest
An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.
+
+## Stopping the server
+
+For the server to be able to stop properly you have to give the admin/console user the permission `server` else you will have to kill the server and no date will be saved!
+
+## Console
+
+The console is currently bugged. It does work but the startup message is messed up.
+
+## Rewrite
+A special thank you to [Tealk](https://github.com/Tealk) for helping me rewrite this egg.
\ No newline at end of file
diff --git a/game_eggs/minetest/egg-minetest.json b/game_eggs/minetest/egg-minetest.json
index 07a37fdf..6b47e682 100644
--- a/game_eggs/minetest/egg-minetest.json
+++ b/game_eggs/minetest/egg-minetest.json
@@ -1,36 +1,192 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1"
+ "version": "PTDL_v2",
+ "update_url": null
},
- "exported_at": "2020-11-02T22:59:26-05:00",
+ "exported_at": "2023-02-26T11:59:47+01:00",
"name": "Minetest",
"author": "support@pterodactyl.io",
"description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.",
- "image": "quay.io\/parkervcp\/pterodactyl-images:base_ubuntu",
- "startup": ".\/bin\/minetestserver --port {{SERVER_PORT}} --terminal",
+ "features": null,
+ "docker_images": {
+ "Minetest": "ghcr.io\/parkervcp\/games:minetest"
+ },
+ "file_denylist": [],
+ "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/.minetest\/minetest.conf --logfile \/home\/container\/server.log",
"config": {
- "files": "{}",
- "startup": "{\r\n \"done\": \" Server for gameid\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"debug.txt\"\r\n}",
+ "files": "{\r\n \".minetest\/minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}",
+ "logs": "{}",
"stop": "\/shutdown"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\ncd \/mnt\/server &&\r\n\r\n# Install installation dependencies\r\napt update &&\r\napt -y install unzip wget build-essential libirrlicht-dev cmake libbz2-dev libjpeg-dev libxxf86vm-dev libsqlite3-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev luajit libncurses5-dev &&\r\n#touch test &&\r\n\r\n# Download, compile and prepare the engine\r\nwget -Osrc.zip https:\/\/github.com\/minetest\/minetest\/archive\/\"${MTVERSION}\".zip &&\r\nunzip .\/src.zip &&\r\nrm .\/src.zip &&\r\ncd .\/minetest-\"${MTVERSION}\" &&\r\ncmake . -DRUN_IN_PLACE=TRUE -DBUILD_CLIENT=FALSE -DBUILD_SERVER=TRUE -DENABLE_GLES=OFF -DENABLE_POSTGRESQL=OFF -DENABLE_REDIS=OFF -DENABLE_SOUND=OFF -DENABLE_LEVELDB=OFF -DENABLE_SPATIAL=OFF &&\r\nmake -j$(nproc) &&\r\nmake package &&\r\nmv .\/minetest-\"${MTVERSION}\"-linux.tar.gz ..\/ &&\r\ncd .. &&\r\nrm -rf .\/minetest-\"${MTVERSION}\" &&\r\ntar xfz .\/minetest-\"${MTVERSION}\"-linux.tar.gz &&\r\nrm minetest-\"${MTVERSION}\"-linux.tar.gz &&\r\nmv .\/minetest-\"${MTVERSION}\"-linux\/* .\/ &&\r\nrm -rf minetest-\"${MTVERSION}\"-linux &&\r\ntouch .\/minetest.conf &&\r\n\r\n# Download and prepare the game\r\ncd .\/games &&\r\nwget -Ominetest_game.zip https:\/\/github.com\/minetest\/minetest_game\/archive\/\"${MTVERSION}\".zip &&\r\nunzip minetest_game.zip &&\r\n#rm minetest_game.zip &&\r\nmv minetest_game-\"${MTVERSION}\" minetest_game &&\r\ncd .. &&\r\n\r\n# Clean up a bit\r\nrm -rf clientmods unix doc client fonts textures &&\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"",
- "container": "ubuntu:18.04",
+ "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\/.minetest\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\n# Create server.log\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\n# Create minetest.conf\r\nCONFIG_FILE=\/mnt\/server\/.minetest\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/.minetest\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\n# Create games folder\r\nGAMES_FOLDER=\/mnt\/server\/.minetest\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\n# Create mods folder\r\nMOD_FOLDER=\/mnt\/server\/.minetest\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\n# Install Gamemode\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if ! [ -z \"$COMMUNITY_GAME_NAME\" ]; then\r\n\t\t if ! [ -z \"$COMMUNITY_GAME_AUTOR\" ]; then\r\n\t\t \techo \"Download $COMMUNITY_GAME_NAME\"\r\n\t\t\t\tD_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n\t\t\t\tcurl -sSL -o \/mnt\/server\/.minetest\/games.zip https:\/\/content.minetest.net\/$D_URL >\/dev\/null 2>&1\r\n\t\t\t\tunzip -o \/mnt\/server\/.minetest\/games.zip -d \/mnt\/server\/.minetest\/games >\/dev\/null 2>&1\r\n\t\t\t\trm \/mnt\/server\/.minetest\/games.zip\r\n\t\t else\r\n\t\t echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n\t\t fi\r\n else\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n fi\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"",
+ "container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
"variables": [
{
- "name": "Version",
- "description": "The version of MT to install. Releases only",
- "env_variable": "MTVERSION",
- "default_value": "5.4.1",
- "user_viewable": false,
+ "name": "Name of the admin player.",
+ "description": "When running a server, clients connecting with this name are admins.",
+ "env_variable": "SERVER_ADMIN_NAME",
+ "default_value": "",
+ "user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:10"
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Server name",
+ "description": "Name of the server, to be displayed when players join and in the serverlist.",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Minetest server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Description of the server",
+ "description": "Description of server, to be displayed when players join and in the serverlist.",
+ "env_variable": "SERVER_DESC",
+ "default_value": "mine here",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Domain name of the server",
+ "description": "Domain name of server, to be displayed in the serverlist.",
+ "env_variable": "SERVER_DOMAIN",
+ "default_value": "game.minetest.net",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Server url",
+ "description": "Homepage of server, to be displayed in the serverlist.",
+ "env_variable": "SERVER_URL",
+ "default_value": "https:\/\/minetest.net",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Show in server list",
+ "description": "Automatically report to the serverlist.",
+ "env_variable": "SERVER_ANNOUNCE",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Announce serverlist",
+ "description": "Announce to this serverlist.",
+ "env_variable": "SERVER_LIST_URL",
+ "default_value": "servers.minetest.net",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "message of the day",
+ "description": "Message of the day displayed to players connecting.",
+ "env_variable": "SERVER_MOTD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Maximum number of players that can be connected simultaneously.",
+ "env_variable": "SERVER_MAX_USERS",
+ "default_value": "15",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|min:0|max:65535",
+ "field_type": "text"
+ },
+ {
+ "name": "Server password",
+ "description": "New users need to input this password.",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "World name",
+ "description": "The name of the world",
+ "env_variable": "WORLD_NAME",
+ "default_value": "world",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Game name",
+ "description": "Default game when creating a new world. Only change if you have already uploaded the game!",
+ "env_variable": "DEFAULT_GAME",
+ "default_value": "minetest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Community download",
+ "description": "Download a community game.\r\nNeeds COMMUNITY_GAME_NAME and COMMUNITY_GAME_AUTOR",
+ "env_variable": "COMMUNITY_DOWNLOAD",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Community game name",
+ "description": "Case sensitive!\r\nExample: https:\/\/content.minetest.net\/packages\/Wuzzy\/mineclone2\/\r\nthen this should be mineclone2",
+ "env_variable": "COMMUNITY_GAME_NAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Community game author",
+ "description": "Case-sensitive!\r\nExample: https:\/\/content.minetest.net\/packages\/Wuzzy\/mineclone2\/\r\nthen this should be Wuzzy",
+ "env_variable": "COMMUNITY_GAME_AUTOR",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Game PATH",
+ "description": "",
+ "env_variable": "MINETEST_SUBGAME_PATH",
+ "default_value": "\/home\/container\/.minetest\/games",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:64",
+ "field_type": "text"
}
]
}
diff --git a/game_eggs/mohaa/egg-mohaa.json b/game_eggs/mohaa/egg-mohaa.json
index 832621d3..65e6e7ea 100644
--- a/game_eggs/mohaa/egg-mohaa.json
+++ b/game_eggs/mohaa/egg-mohaa.json
@@ -1,104 +1,112 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-09-29T23:01:20+02:00",
+ "exported_at": "2023-08-01T16:53:44+02:00",
"name": "mohaa",
"author": "th3dilli@gmx.at",
- "description": null,
+ "description": "Medal of Honor: Allied Assault",
"features": null,
- "images": [
- "ghcr.io\/parkervcp\/games:mohaa"
- ],
+ "docker_images": {
+ "Mohaa": "ghcr.io\/parkervcp\/games:mohaa"
+ },
"file_denylist": [],
"startup": ".\/mohaa_lnxded +set sv_punkbuster 0 +set fs_basepath {{BASE_PATH}} +set fs_outputpath {{LOG_DIR}} +set dedicated 2 +set sv_maxclients {{SERVER_MAXCLIENTS}} +set net_ip 0.0.0.0 +set net_port {{SERVER_PORT}} +exec server.cfg",
"config": {
"files": "{\r\n \"main\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"seta sv_hostname\": \"seta sv_hostname \\\"{{env.SERVER_NAME}}\\\"\",\r\n \"seta sv_maxClients\": \"seta sv_maxClients \\\"{{env.SERVER_MAXCLIENTS}}\\\"\",\r\n \"seta rconPassword\": \"seta rconPassword \\\"{{env.RCON_PASSWORD}}\\\"\",\r\n \"seta g_password\": \"seta g_password \\\"{{env.SERVER_PASSWORD}}\\\"\",\r\n \"Map\": \"Map {{env.SERVER_MAP}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\",\r\n \"userInteraction\": []\r\n}",
+ "startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\"\r\n}",
"logs": "{}",
"stop": "quit"
},
"scripts": {
"installation": {
- "script": "apk --no-cache add curl\r\n\r\nif [[ ! -d \/mnt\/server\/ ]]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nDOWNLOAD_URL=https:\/\/linuxgsm.download\/MedalofHonorAlliedAssault\/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main\/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main\/server.cfg\r\n\r\necho -e \"running 'chmod +x .\/mohaa_lnxded'\"\r\nchmod +x .\/mohaa_lnxded",
- "container": "alpine:3.4",
+ "script": "#!\/bin\/ash\r\n\r\napk --no-cache add curl\r\n\r\nif [[ ! -d \/mnt\/server\/ ]]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nDOWNLOAD_URL=http:\/\/linuxgsm.download\/MedalofHonorAlliedAssault\/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main\/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main\/server.cfg\r\n\r\necho -e \"running 'chmod +x .\/mohaa_lnxded'\"\r\nchmod +x .\/mohaa_lnxded\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "alpine:latest",
"entrypoint": "ash"
}
},
"variables": [
{
- "name": "SERVER_MAXCLIENTS",
+ "name": "Max clients",
"description": "",
"env_variable": "SERVER_MAXCLIENTS",
"default_value": "14",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer"
+ "rules": "required|integer",
+ "field_type": "text"
},
{
- "name": "CONFIG_URL",
+ "name": "Config URL",
"description": "URL from where to get the initial server.cfg",
"env_variable": "CONFIG_URL",
"default_value": "https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/mohaa\/game_eggs\/mohaa\/server.cfg",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string"
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "SERVER_NAME",
+ "name": "Server name",
"description": "The name of the server",
"env_variable": "SERVER_NAME",
"default_value": "MOHAA Server running on Pterodactyl",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "RCON_PASSWORD",
+ "name": "Rcon password",
"description": "Admin password for rcon",
"env_variable": "RCON_PASSWORD",
- "default_value": "ADMINPASSWORD",
+ "default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "SERVER_MAP",
- "description": "Select the map\r\n\r\nobj\/obj_team2\r\ndm\/mohdm7\r\ndm\/mohdm1\r\ndm\/mohdm3\r\ndm\/mohdm2\r\ndm\/mohdm6",
+ "name": "Server map",
+ "description": "Select the map",
"env_variable": "SERVER_MAP",
"default_value": "dm\/mohdm7",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string|in:obj\/obj_team2,dm\/mohdm7,dm\/mohdm1,dm\/mohdm3,dm\/mohdm2,dm\/mohdm6",
+ "field_type": "text"
},
{
- "name": "LOG_DIR",
+ "name": "Logs dir",
"description": "",
"env_variable": "LOG_DIR",
"default_value": "\/home\/container\/Logs",
"user_viewable": true,
- "user_editable": true,
- "rules": "required|string"
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "BASE_PATH",
+ "name": "Base PATH",
"description": "",
"env_variable": "BASE_PATH",
"default_value": "\/home\/container",
"user_viewable": true,
- "user_editable": true,
- "rules": "required|string"
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
},
{
- "name": "SERVER_PASSWORD",
+ "name": "Server password",
"description": "",
"env_variable": "SERVER_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/rdr/redm/egg-red-m.json b/game_eggs/rdr/redm/egg-red-m.json
index fca67286..9d7a6f78 100644
--- a/game_eggs/rdr/redm/egg-red-m.json
+++ b/game_eggs/rdr/redm/egg-red-m.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-07-19T11:52:55-04:00",
+ "exported_at": "2023-07-06T01:51:39+00:00",
"name": "RedM",
"author": "parker@parkervcp.com",
"description": "A new RedM egg for the latest builds due to recent changes in RedM",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p \/mnt\/server\/resources \/mnt\/server\/logs\/\r\n\r\ncd \/mnt\/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https:\/\/github.com\/citizenfx\/cfx-server-data.git \/tmp\r\ncp -Rf \/tmp\/resources\/* resources\/\r\n\r\nRELEASE_PAGE=$(curl -sSL https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/)\r\nCHANGELOGS_PAGE=$(curl -sSL https:\/\/changelogs-live.fivem.net\/api\/changelog\/versions\/linux\/server)\r\n\r\nif [[ \"${CFX_VERSION}\" == \"recommended\" ]] || [[ -z ${CFX_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${CFX_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*\/*.tar.xz\"' | grep -Eo '\".*\"' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1' | grep ${CFX_VERSION})\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho \"Extracting fivem files\"\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*\/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/fivem\/server.cfg >>server.cfg\r\nfi\r\n\r\necho \"install complete\"",
+ "script": "#!\/bin\/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p \/mnt\/server\/resources \/mnt\/server\/logs\/\r\n\r\ncd \/mnt\/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https:\/\/github.com\/citizenfx\/cfx-server-data.git \/tmp\r\ncp -Rf \/tmp\/resources\/* resources\/\r\n\r\nRELEASE_PAGE=$(curl -sSL https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/)\r\nCHANGELOGS_PAGE=$(curl -sSL https:\/\/changelogs-live.fivem.net\/api\/changelog\/versions\/linux\/server)\r\n\r\nif [[ \"${CFX_VERSION}\" == \"recommended\" ]] || [[ -z ${CFX_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${CFX_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*\/*.tar.xz\"' | grep -Po '(?<=href=\")[^\"]*' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1' | grep ${CFX_VERSION})\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho \"Extracting fivem files\"\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*\/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/fivem\/server.cfg >>server.cfg\r\nfi\r\n\r\necho \"install complete\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -89,4 +89,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/rimworld/README.md b/game_eggs/rimworld/README.md
new file mode 100644
index 00000000..440cfb94
--- /dev/null
+++ b/game_eggs/rimworld/README.md
@@ -0,0 +1,5 @@
+# Rimworld
+
+RimWorld follows three survivors from a crashed space liner as they build a colony on a frontier world at the rim of known space. Inspired by the space western vibe of Firefly, the deep simulation of Dwarf Fortress, and the epic scale of Dune and Warhammer 40,000.
+
+Manage colonists' moods, needs, individual wounds, and illnesses. Engage in small-team tactical gunplay. Fashion structures, weapons, and apparel from metal, wood, stone, cloth, or futuristic materials. Fight pirate raiders, hostile tribes, rampaging animals, giant tunnelling insects and ancient killing machines. Tame and train cute pets, productive farm animals, and deadly attack beasts. Watch colonists develop relationships with family members, lovers, and spouses. Discover a new generated world each time you play. Build colonies in the desert, jungle, tundra, and more. Manage quirky colonists with unique backstories, traits, and skills. Learn to play easily with the help of an intelligent and unobtrusive AI tutor.
\ No newline at end of file
diff --git a/game_eggs/rimworld/open_world/README.md b/game_eggs/rimworld/open_world/README.md
new file mode 100644
index 00000000..00d1ab5c
--- /dev/null
+++ b/game_eggs/rimworld/open_world/README.md
@@ -0,0 +1,13 @@
+# Open World
+
+## From their [site](https://openworldhelp.fandom.com/wiki/Open_World_Wiki)
+
+The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!
+
+## Server Ports
+
+| Port | default |
+|---------|---------|
+| Game | 25555 |
+
+### Mods/Plugins may require ports to be added to the server. See [here](https://openworldhelp.fandom.com/wiki/Creating_a_server) for help
diff --git a/game_eggs/rimworld/open_world/egg-rimworld-open-world.json b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json
new file mode 100644
index 00000000..f85b65c8
--- /dev/null
+++ b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json
@@ -0,0 +1,113 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-05-27T13:03:41+03:00",
+ "name": "Rimworld: Open World",
+ "author": "kyle@williquette.us",
+ "description": "The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!\r\n\r\nhttps:\/\/github.com\/D12-Dev\/OpenWorld",
+ "features": null,
+ "docker_images": {
+ "Dotnet 3.1": "ghcr.io\/parkervcp\/yolks:dotnet_3.1",
+ "Dotnet 6": "ghcr.io\/parkervcp\/yolks:dotnet_6"
+ },
+ "file_denylist": [],
+ "startup": ".\/OpenWorldServer",
+ "config": {
+ "files": "{\r\n \"Data\/Config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"EnforceMods\": \"{{server.build.env.ENFORCE_MODS}}\",\r\n \"UseModBlacklist\": \"{{server.build.env.USE_MOD_BLACKLIST}}\",\r\n \"UseCustomDifficulty\": \"{{server.build.env.USE_CUSTOM_DIFF}}\",\r\n \"UseWhitelist\": \"{{server.build.env.WHITELIST}}\",\r\n \"AllowCustomScenarios\": \"{{server.build.env.CUSTOM_SCEN}}\",\r\n \"PlayerVersion\": \"{{server.build.env.PLAYER_VERSION}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \" Server Launched\"\r\n}",
+ "logs": "{}",
+ "stop": "shutdown"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\napt update\r\napt -y install curl jq unzip git\r\n\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/D12-Dev\/OpenWorld\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/D12-Dev\/OpenWorld\/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH} | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${ARCH} | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH}| head -1)\r\n fi\r\nfi\r\n\r\n\r\n#Download the Rimworld Open World server\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\"\r\ncurl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\r\necho -e \"Unzipping ${ARCH}.zip\"\r\nunzip -o ${ARCH}.zip\r\nmv ${ARCH}\/* \/mnt\/server\r\nchmod +x \"OpenWorldServer\"\r\nrm -rf ${ARCH}.zip ${ARCH}\/\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nFILE=\/mnt\/server\/Data\/Config.json\r\nif [ -f \"$FILE\" ]; then\r\n echo \"config already exists.\"\r\nelse \r\n echo \"Config does not exist, making one\"\r\n mkdir -p \/mnt\/server\/Data\r\n cd \/mnt\/server\/Data\r\ncat << EOF > \"Config.json\"\r\n{\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": 25555,\r\n \"MaxPlayers\": 10,\r\n \"PlayerVersion\": \"1.2\",\r\n \"EnforceMods\": false,\r\n \"UseModBlacklist\": false,\r\n \"UseCustomDifficulty\": false,\r\n \"UseWhitelist\": false,\r\n \"AllowCustomScenarios\": false\r\n}\r\nEOF\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Open World Version",
+ "description": "",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:8",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "sets the maximum number of players allowed to connect at once.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "10",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|int",
+ "field_type": "text"
+ },
+ {
+ "name": "Enforce Mods",
+ "description": "This forces players to use the mods listed in the the \"Mods Enforced\" folder, with this disabled it will allow players to join with any mods they would like",
+ "env_variable": "ENFORCE_MODS",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Use Mod Blacklist",
+ "description": "enabled you to blacklist mods from being used, usually used when enforced mods are disabled.",
+ "env_variable": "USE_MOD_BLACKLIST",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Use Custom Difficulty",
+ "description": "forces all players to use the difficulty setting set in the \"Difficulty\" file. MAKE SURE YOU GIVE A VALUE TO EVERYTHING OR IT WILL BE AT 0%",
+ "env_variable": "USE_CUSTOM_DIFF",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Use Whitelist",
+ "description": "allows only the usernames listed in the \"Whitelist\" file to join the server.",
+ "env_variable": "WHITELIST",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Allow Custom Scenarios",
+ "description": "allows people to create custom scenarios when creating their save on the server.",
+ "env_variable": "CUSTOM_SCEN",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Player Version",
+ "description": "version the server will accept clients joining in with.\r\n\r\nTO see the latest:\r\nhttps:\/\/discord.com\/channels\/992806266109964319\/992881103071354890\r\n\r\nfor example for v1.12 you would write 1.12",
+ "env_variable": "PLAYER_VERSION",
+ "default_value": "1.2",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:10",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/spacestation_14/README.md b/game_eggs/spacestation_14/README.md
new file mode 100644
index 00000000..1bb753af
--- /dev/null
+++ b/game_eggs/spacestation_14/README.md
@@ -0,0 +1,31 @@
+# Spacestation 14
+
+## From their [Site](https://spacestation14.io/)
+
+## [Documentation](https://docs.spacestation14.io/en/getting-started/hosting)
+
+
+## Minimum RAM warning
+
+Minimum required memory to run the server.
+2GB is recommended. 3GB+ is preferred
+
+## Minumim Sorage warning
+
+Minimum required storage to run the server.
+Example: 100MiB is recommended. 2GiB+ is preferred
+
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 1212 (TCP+ UDP) |
+
+### Notes
+
+
+1212 is the default port, but any port can be used.
+
diff --git a/game_eggs/spacestation_14/egg-spacestation14.json b/game_eggs/spacestation_14/egg-spacestation14.json
new file mode 100644
index 00000000..c5826c44
--- /dev/null
+++ b/game_eggs/spacestation_14/egg-spacestation14.json
@@ -0,0 +1,62 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-03T16:22:48+02:00",
+ "name": "Spacestation 14",
+ "author": "josdekurk@gmail.com",
+ "description": "Space Station 14 tells the story of an ordinary shift on a space station gone wrong. Immerse yourself into your role, tinker with detailed systems, and survive the chaos in this round-based multiplayer role playing game.",
+ "features": null,
+ "docker_images": {
+ "Dotnet 7": "ghcr.io\/parkervcp\/yolks:dotnet_7"
+ },
+ "file_denylist": [],
+ "startup": ".\/Robust.Server",
+ "config": {
+ "files": "{\r\n \"server_config.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port = {{server.build.default.port}}\",\r\n \"hostname\": \"hostname = \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"tickrate\": \"tickrate = {{server.build.env.SERVER_TICK}}\",\r\n \"max_connections\": \"max_connections = {{server.build.env.SERVER_MAX_PLAYERS}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Server Version\"\r\n}",
+ "logs": "{}",
+ "stop": "^SIGKILL"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -sSL https:\/\/central.spacestation14.io\/builds\/wizards\/builds.html | grep \"The version is\" | sed -n 's\/.*\\([^<]*\\)<\\\/span>.*\/\\1\/p')\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o server_linux.zip https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\ncurl -sSL -o server_linux.zip \"https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\nunzip -o server_linux.zip\r\nrm server_linux.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server name",
+ "description": "The server hostname",
+ "env_variable": "SERVER_NAME",
+ "default_value": "MyServer",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:48",
+ "field_type": "text"
+ },
+ {
+ "name": "Server tickrate",
+ "description": "The tickrate of the server. Default is 60",
+ "env_variable": "SERVER_TICK",
+ "default_value": "60",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|numeric|between:1,80",
+ "field_type": "text"
+ },
+ {
+ "name": "Max players",
+ "description": "",
+ "env_variable": "SERVER_MAX_PLAYERS",
+ "default_value": "256",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|numeric|between:1,256",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/game_eggs/steamcmd_servers/7_days_to_die/README.md b/game_eggs/steamcmd_servers/7_days_to_die/README.md
index 890b3d11..8b48da48 100644
--- a/game_eggs/steamcmd_servers/7_days_to_die/README.md
+++ b/game_eggs/steamcmd_servers/7_days_to_die/README.md
@@ -12,3 +12,18 @@ Set in a brutally unforgiving post-apocalyptic world overrun by the undead, 7 Da
| Game | 26900 - 26902 |
| RCON | 8080 - 8081 |
| webmap | 8082 |
+
+## Sample ignore file for backups
+
+By default the backup includes a lot of files that can be reacquired by pulling the image. Using the following file limits backups to the files that are unique to your server: your config files, logs, saves and generated worlds.
+
+```
+# Ignore all
+*
+# Except server config file
+!serverconfig.xml
+# Except server data dir
+!.local/
+# Except logs
+!logs/
+```
diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md
index db8fada8..64825437 100644
--- a/game_eggs/steamcmd_servers/README.md
+++ b/game_eggs/steamcmd_servers/README.md
@@ -6,6 +6,10 @@ This is a collection of servers that use SteamCMD to install.
[7 Days To Die](7_days_to_die)
+## ARK: Survival Ascended
+
+[ARK: Survival Ascended](ark_survival_asceneded)
+
## ARK: Survival Evolved
[ARK: Survival Evolved](ark_survival_evolved)
@@ -20,6 +24,10 @@ This is a collection of servers that use SteamCMD to install.
[Assetto Corsa](assetto_corsa)
+## Astro Colony
+
+[Astro Colony](astro_colony)
+
## Avorion
[Avorion](avorion)
@@ -28,6 +36,10 @@ This is a collection of servers that use SteamCMD to install.
[Barotrauma](barotrauma)
+## BATTALION: Legacy
+
+[BATTALION: Legacy](/battalion_legacy)
+
## Black Mesa
[Black Mesa](black_mesa)
@@ -68,10 +80,18 @@ This is a collection of servers that use SteamCMD to install.
[Empyrion - Galactic Survival](empyrion)
+## Fistful of Frags
+
+[Fistful of Frags](fof)
+
## Frozen Flame
[Frozen Flame](frozen_flame)
+## Ground Branch
+
+[Ground Branch](ground_branch)
+
## HLDS Server
[HLDS Server](hlds_server)
@@ -118,6 +138,21 @@ This is a collection of servers that use SteamCMD to install.
[Mordhau](mordhau)
+## Mount & Blade II: Bannerlord
+
+[Mount & Blade II: Bannerlord](mount_blade_II_bannerlord)
+
+## Neos VR
+[Neos VR](neosvr)
+
+## No More Room in Hell
+
+[No More Room in Hell](nmrih)
+
+## No One Survived
+
+[No One Survived](no_one_survived)
+
## Onset
[Onset](onset)
@@ -126,6 +161,10 @@ This is a collection of servers that use SteamCMD to install.
[Open Fortress](open_fortress)
+## Operation Harsh Doorstop
+
+[Operation Harsh Doorstop](operation_harsh_doorstop)
+
## Pavlov VR
[Pavlov VR](pavlov_vr)
@@ -150,6 +189,9 @@ This is a collection of servers that use SteamCMD to install.
[Quake Live](quake_live)
+## Resonite
+[Resonite](resonite)
+
## Rising World
* [Rising World](rising_world)
@@ -185,6 +227,10 @@ This is a collection of servers that use SteamCMD to install.
[Soldat](soldat)
+## Sons of the Forest
+
+[Sons of the Forest](sonsoftheforest)
+
## Space Engineers
[Space Engineers](space_engineers)
@@ -215,6 +261,10 @@ This is a collection of servers that use SteamCMD to install.
[Sven Co-op](svencoop)
+## Swords 'n Magic and Stuff
+
+[Swords 'n Magic and Stuff](swords_'n_Magic_and_Stuff)
+
## Team Fortress 2 Classic
[Team Fortress 2 Classic](team_fortress_2_classic)
@@ -223,6 +273,10 @@ This is a collection of servers that use SteamCMD to install.
[The Forest](the_forest)
+## The Front
+
+[The Front](thefront)
+
## The Isle
[The Isle](the_isle)
diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md
new file mode 100644
index 00000000..38852a12
--- /dev/null
+++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md
@@ -0,0 +1,108 @@
+# ARK: Survival Ascended
+
+Steam Description :
+ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!
+
+### Authors / Contributors
+
+
+
+
+
+
+---
+## Troubleshooting
+
+1) Try starting the server with no mods on a fresh install.
+
+2) If there are crash logs, they will be available in the Files at `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml`
+
+### Crash Identifiers
+
+Crashes will either stop the server or display 0-5% CPU usage.
+The number is in reference to RAM/Memory usage.
+
+1) Server crashing around 500MB is probably either a config issue or a corrupted install.
+
+2) Server crashing around 750MB is probably commandline issue.
+
+3) Server crashing around 1GB is probably either a MOD conflict or corrupted SavedArks files.
+
+
+## Known Issues
+
+1) Proxmox VM(s): You'll need to change your Processor Type to `Host` (Default: kvm64)
+
+2) ARK's wiki heavily reference A:SE and not all features are available in A:SA.
+
+## Recommended server settings
+
+### Minimum RAM
+
+This server requires about 11GB of RAM to run with no players on a default map.
+
+See the following -
+
+## Server Ports
+
+Note: The Peer port is not an option that can be set and will always be +1 from the Game Port!
+
+| Port | Default |
+| --------------- | ------- |
+| Game | 7777 |
+| Peer (Game+1) | 7778 |
+| Query | 27015 |
+| RCON (optional) | 37015 |
diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json
new file mode 100644
index 00000000..4b073205
--- /dev/null
+++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json
@@ -0,0 +1,174 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-11-12T11:57:56+01:00",
+ "name": "ARK: Survival Ascended",
+ "author": "blood@darkartsgaming.com",
+ "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "Proton": "ghcr.io\/parkervcp\/steamcmd:proton"
+ },
+ "file_denylist": [],
+ "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} KeepAlive && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\\\"{{SESSION_NAME}}\\\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -Port={{SERVER_PORT}} {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done",
+ "config": {
+ "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerAdminPassword=\": \"ServerAdminPassword={{server.build.env.ARK_ADMIN_PASSWORD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n## cleanup movies?\r\nrm -rf \/mnt\/server\/ShooterGame\/Content\/Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Map",
+ "description": "Available Maps: TheIsland_WP",
+ "env_variable": "SERVER_MAP",
+ "default_value": "TheIsland_WP",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Name",
+ "description": "\"Unofficial\" dedicated server name",
+ "env_variable": "SESSION_NAME",
+ "default_value": "A Pterodactyl Hosted Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:256",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto-update server",
+ "description": "This is to enable auto-updating for servers on restart\/re-install.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Battle Eye",
+ "description": "Enable BattleEye \/ Anti-Cheat",
+ "env_variable": "BATTLE_EYE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "App ID",
+ "description": "app id required for server download\/updates. end users should not see this.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2430930",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|integer|in:2430930",
+ "field_type": "text"
+ },
+ {
+ "name": "Additional Arguments (PARAMS)",
+ "description": "params (?ServerPassword=...) are supported here but params need to be touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd",
+ "env_variable": "ARGS_PARAMS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:1024",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Specifies the maximum amount of players able to join the server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "70",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|min:1|max:200",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Admin Password",
+ "description": "Used for RCON (remote and in-browser console) as well as in-game EnableCheats",
+ "env_variable": "ARK_ADMIN_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|alpha_dash|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Query Port",
+ "description": "ARK query port used by steam server browser and ark client server browser.",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|min:1025|max:65535",
+ "field_type": "text"
+ },
+ {
+ "name": "Additional Arguments (FLAGS)",
+ "description": "flags (-UseBattleEye) are supported here without them touching. (i.e): -crossplay -mods=1234,1235,1236",
+ "env_variable": "ARGS_FLAGS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:1024",
+ "field_type": "text"
+ },
+ {
+ "name": "Server PvE",
+ "description": "ON = Player-vs-Environment (PvE), OFF = Player-vs-Player (PvP); Default is ON",
+ "env_variable": "SERVER_PVE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Password",
+ "description": "required password to enter the server, leave blank for public server",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|alpha_dash|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "RCON Port",
+ "description": "required for console commands and proper server shutdown (saveworld\/exit), doesn't have to be open to the public",
+ "env_variable": "RCON_PORT",
+ "default_value": "37015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|min:1025|max:65535",
+ "field_type": "text"
+ },
+ {
+ "name": "MOD IDs",
+ "description": "https:\/\/www.curseforge.com\/ark-survival-ascended ; ProjectID is is the MOD_ID on the right-side of the mod-view page ; leave blank to disable mods ; separate only by comma ( , ) without spaces! (i.e.) 1234,1235,1236",
+ "env_variable": "MOD_IDS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:512",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json
index 555bfd66..d020882d 100644
--- a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json
+++ b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json
@@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-11-26T13:48:52+01:00",
+ "exported_at": "2023-07-23T15:07:41+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",
"features": [
"steam_disk_space"
],
- "images": [
- "ghcr.io\/parkervcp\/games:source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
+ },
"file_denylist": [],
- "startup": "rmv() { echo -e \"stopping 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=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -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",
+ "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; 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=True?MaxPlayers={{MAX_PLAYERS}}?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}",
@@ -37,7 +37,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|alpha_dash|between:1,100"
+ "rules": "nullable|alpha_dash|between:1,100",
+ "field_type": "text"
},
{
"name": "Admin Password",
@@ -46,7 +47,8 @@
"default_value": "PleaseChangeMe",
"user_viewable": true,
"user_editable": true,
- "rules": "required|alpha_dash|between:1,100"
+ "rules": "required|alpha_dash|between:1,100",
+ "field_type": "text"
},
{
"name": "Server Map",
@@ -55,7 +57,8 @@
"default_value": "TheIsland",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -64,7 +67,8 @@
"default_value": "A Pterodactyl Hosted ARK Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:128"
+ "rules": "required|string|max:128",
+ "field_type": "text"
},
{
"name": "Rcon Port",
@@ -73,7 +77,8 @@
"default_value": "27020",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Query Port",
@@ -82,7 +87,8 @@
"default_value": "27015",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Auto-update server",
@@ -91,7 +97,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
- "rules": "required|boolean"
+ "rules": "required|boolean",
+ "field_type": "text"
},
{
"name": "Battle Eye",
@@ -100,16 +107,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|boolean"
- },
- {
- "name": "Mods",
- "description": "Specifies the order and which mods are loaded. ModIDs need to be comma-separated such as: ModID1,ModID2",
- "env_variable": "MOD_ID",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string"
+ "rules": "required|boolean",
+ "field_type": "text"
},
{
"name": "App ID",
@@ -118,7 +117,8 @@
"default_value": "376030",
"user_viewable": true,
"user_editable": false,
- "rules": "nullable|numeric"
+ "rules": "nullable|numeric",
+ "field_type": "text"
},
{
"name": "Additional Arguments",
@@ -127,7 +127,28 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Mods",
+ "description": "Specifies the order and which mods are loaded. ModIDs need to be comma-separated such as: ModID1,ModID2",
+ "env_variable": "MOD_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Specifies the maximum amount of players able to join the server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "12",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "numeric",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json b/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json
index 569471da..f5e97fa6 100644
--- a/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json
+++ b/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json
@@ -1,31 +1,32 @@
{
- "_comment": "Pterodactyl Arma Reforger Egg ~ Red-Thirten ~ 2022-05-20",
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
+ "exported_at": "2023-07-22T10:56:26+02:00",
"name": "Arma Reforger",
"author": "rehlmgaming@gmail.com",
"description": "Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km\u00b2 mid-Atlantic island \u2014 or take on the role of Game Master and create your very own scenarios for others to enjoy.",
"features": [
"steam_disk_space"
],
- "images": [
- "ghcr.io\/parkervcp\/games:source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
"file_denylist": [],
"startup": ".\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}}",
"config": {
- "files": "{\r\n \"config.json\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" \\\"region\\\"\": \" \\\"region\\\": \\\"{{server.build.env.REGION}}\\\",\",\r\n \" \\\"gameHostBindAddress\\\"\": \" \\\"gameHostBindAddress\\\": \\\"0.0.0.0\\\",\",\r\n \" \\\"gameHostBindPort\\\"\": \" \\\"gameHostBindPort\\\": {{server.build.default.port}},\",\r\n \" \\\"gameHostRegisterBindAddress\\\"\": \" \\\"gameHostRegisterBindAddress\\\": \\\"{{server.build.default.ip}}\\\",\",\r\n \" \\\"gameHostRegisterPort\\\"\": \" \\\"gameHostRegisterPort\\\": {{server.build.default.port}},\",\r\n \" \\\"adminPassword\\\"\": \" \\\"adminPassword\\\": \\\"{{server.build.env.ADMIN_PASS}}\\\",\",\r\n \" \\\"name\\\"\": \" \\\"name\\\": \\\"{{server.build.env.SERVER_NAME}}\\\",\",\r\n \" \\\"password\\\"\": \" \\\"password\\\": \\\"{{server.build.env.SERVER_PASS}}\\\",\",\r\n \" \\\"scenarioId\\\"\": \" \\\"scenarioId\\\": \\\"{{server.build.env.SCENARIO_ID}}\\\",\",\r\n \" \\\"playerCountLimit\\\"\": \" \\\"playerCountLimit\\\": {{server.build.env.MAX_PLAYERS}},\",\r\n\t\t\t\" \\\"autoJoinable\\\"\": \" \\\"autoJoinable\\\": {{server.build.env.AUTO_JOINABLE}},\",\r\n\t\t\t\" \\\"visible\\\"\": \" \\\"visible\\\": {{server.build.env.VISIBLE}},\",\r\n\t\t\t\" \\\"disableThirdPerson\\\"\": \" \\\"disableThirdPerson\\\": {{server.build.env.DISABLE_THIRD}},\",\r\n\t\t\t\" \\\"battlEye\\\"\": \" \\\"battlEye\\\": {{server.build.env.BATTLEYE}},\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"bindAddress\": \"0.0.0.0\",\r\n \"bindPort\": \"{{server.build.default.port}}\",\r\n \"publicAddress\": \"{{server.build.default.ip}}\",\r\n \"publicPort\": \"{{server.build.default.port}}\",\r\n \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"game.gameProperties.fastValidation\": true\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Starting RPL server\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Arma Reforger Egg - egg-arma-reforger.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2022\/05\/20\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/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\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous +app_update ${SRCDS_APPID} validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"dedicatedServerId\": \"\",\r\n\t\"region\": \"${REGION}\",\r\n\t\"gameHostBindAddress\": \"0.0.0.0\",\r\n\t\"gameHostBindPort\": ${SERVER_PORT},\r\n\t\"gameHostRegisterBindAddress\": \"${SERVER_IP}\",\r\n\t\"gameHostRegisterPort\": ${SERVER_PORT},\r\n\t\"adminPassword\": \"${ADMIN_PASS}\",\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"playerCountLimit\": ${MAX_PLAYERS},\r\n\t\t\"autoJoinable\": ${AUTO_JOINABLE},\r\n\t\t\"visible\": ${VISIBLE},\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 2500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 1000,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"missionHeader\": {}\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": true,\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 500,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
- "entrypoint": "\/bin\/bash"
+ "entrypoint": "bash"
}
},
"variables": [
@@ -36,7 +37,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "boolean"
+ "rules": "boolean",
+ "field_type": "text"
},
{
"name": "Server Region",
@@ -45,7 +47,8 @@
"default_value": "US",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW"
+ "rules": "required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -54,7 +57,8 @@
"default_value": "Arma Reforger Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:255"
+ "rules": "required|string|max:255",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -63,7 +67,8 @@
"default_value": "32",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer|between:1,256"
+ "rules": "required|integer|between:1,256",
+ "field_type": "text"
},
{
"name": "Server Password",
@@ -72,7 +77,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:32"
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
},
{
"name": "Admin Password",
@@ -81,7 +87,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:32"
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
},
{
"name": "Scenario ID",
@@ -90,7 +97,8 @@
"default_value": "{ECC61978EDCC2B5A}Missions\/23_Campaign.conf",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "Auto Joinable",
@@ -99,7 +107,8 @@
"default_value": "true",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Visible in Server Browser",
@@ -108,7 +117,8 @@
"default_value": "true",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Enable BattlEye",
@@ -117,7 +127,8 @@
"default_value": "true",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "Disable Third Person",
@@ -126,7 +137,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:true,false"
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
},
{
"name": "[Advanced] Max FPS",
@@ -135,7 +147,8 @@
"default_value": "120",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|integer|gt:0"
+ "rules": "nullable|integer|gt:0",
+ "field_type": "text"
},
{
"name": "[Advanced] Log FPS Interval",
@@ -144,7 +157,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
- "rules": "required|integer|min:0"
+ "rules": "required|integer|min:0",
+ "field_type": "text"
},
{
"name": "[Repair] Validate Server Files",
@@ -153,7 +167,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
},
{
"name": "[Advanced] Arma Reforger Dedicated Server App ID",
@@ -162,7 +177,8 @@
"default_value": "1874900",
"user_viewable": false,
"user_editable": false,
- "rules": "required|integer"
+ "rules": "required|integer",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/astro_colony/README.md b/game_eggs/steamcmd_servers/astro_colony/README.md
new file mode 100644
index 00000000..012255e1
--- /dev/null
+++ b/game_eggs/steamcmd_servers/astro_colony/README.md
@@ -0,0 +1,15 @@
+# [Astro Colony](https://astrocolony.com/)
+
+Explore endless Universe and create the most efficient constellation of colonies. Build conveyor systems to automate production. Take care of Astronauts and their needs! Establish new colonies as part of intergalactic simulation.
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+> [!IMPORTANT]
+> It’s possible to change the query port but changing the game port from **7777** will result in not being able to join the server!
+
+| Port | Default |
+|---------|---------|
+| Game | 7777 |
+| Query | 27015 |
diff --git a/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json
new file mode 100644
index 00000000..7b0dcc5d
--- /dev/null
+++ b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json
@@ -0,0 +1,174 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-11-06T17:38:07+01:00",
+ "name": "Astro Colony",
+ "author": "limmek@swedon.se",
+ "description": "Explore endless Universe and create the most efficient constellation of colonies. Build conveyor systems to automate production. Take care of Astronauts and their needs! Establish new colonies as part of intergalactic simulation.",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "wine": "ghcr.io\/parkervcp\/yolks:wine_latest"
+ },
+ "file_denylist": [],
+ "startup": "wine .\/AstroColony\/Binaries\/Win64\/AstroColonyServer.exe -log -SteamServerName=\\\"${SERVER_NAME}\\\" -QueryPort=${SERVER_QUERY_PORT}",
+ "config": {
+ "files": "{\r\n \"AstroColony\/Saved\/Config\/WindowsServer\/ServerSettings.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ServerPassword\": \"{{env.SERVER_PASSWORD}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MapName\": \"{{env.SERVER_MAP}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MaxPlayers\": \"{{env.SERVER_MAXPLAYERS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SavegameName\": \"{{env.SERVER_GAMESAVE}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ShouldLoadLatestSavegame\": \"{{env.SERVER_LOADLATESTSAVEGAME}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].AdminList\": \"{{env.SERVER_ADMINS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SharedTechnologies\": \"{{env.SERVER_SHAREDTECHNOLOGIES}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].OxygenConsumption\": \"{{env.SERVER_OXYGENCONSUMPTION}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].FreeConstruction\": \"{{env.SERVER_FREECONSTRUCTION}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"server create success\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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# set up settings\r\ncreate_server_settings_ini() {\r\n cat > ServerSettings.ini <
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | No ARM support(?) | |
+| RAM | 1GiB | 2GiB |
+| Storage | 2GB | - |
+| Network | 1Mbit/s | 3Mbit/s |
+| Game Ownership | No | - |
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 27015 |
+| Query | 27016 |
+
+### Notes
+
+Game and Query port can be anything, but they're both required.
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json b/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json
new file mode 100644
index 00000000..be51f2f2
--- /dev/null
+++ b/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json
@@ -0,0 +1,84 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-13T20:14:32+03:00",
+ "name": "BATTALION: Legacy",
+ "author": "diedyesterdaywashere@gmail.com",
+ "description": "BATTALION: Legacy recaptures the core of classic shooters in the final iteration of Battalion 1944. Return to the simple days of playing first person shooters with your friends. Grab your bolt action rifle in 'rifles only' mode or compete in 5v5 Search and Destroy.",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/Battalion\/Binaries\/Linux\/BattalionServer-Linux-Shipping Battalion -QueryPort={{QUERY_PORT}} -SteamServerName=\"{{SERVER_NAME}]\" -Queue=\"Wartide\" -AdminPassword=\"{{ADMIN_PW}}\" -Log",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \" OnCreateSessionComplete \"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "App ID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "805140",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:805140",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "Server will check for updates on every restart. Use 0 to disable.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Query Port",
+ "description": "",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27016",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Name",
+ "description": "",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Pterodactyl hosted Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:60",
+ "field_type": "text"
+ },
+ {
+ "name": "Admin Password",
+ "description": "",
+ "env_variable": "ADMIN_PW",
+ "default_value": "changeme",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json b/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json
index 1c294c12..5b3f1232 100644
--- a/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json
+++ b/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json
@@ -6,7 +6,7 @@
},
"exported_at": "2021-11-26T14:44:12+01:00",
"name": "Citadel: Forged with Fire",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Citadel: Forged With Fire is a massive online sandbox RPG set in the mystical world of Ignus. Featuring magic, spellcasting, building, exploring and crafting as you fight to make a name for yourself and achieve notoriety across the land.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/conan_exiles/README.md b/game_eggs/steamcmd_servers/conan_exiles/README.md
index 32017867..10ab080f 100644
--- a/game_eggs/steamcmd_servers/conan_exiles/README.md
+++ b/game_eggs/steamcmd_servers/conan_exiles/README.md
@@ -14,7 +14,17 @@ Ports required to run the server in a table format.
| Port | default |
|---------|---------|
-| Game | 7777 |
-| Steam Query | 27015 |
+| Game | 7777 |
+| Game +1 | 7778 |
+| UDP Server query| 27015 |
+| RCON| 25575 |
+
+
+## Mods
+
+If you want mods download you have to allocated 1 extra port and manualy set Engine.ini.
+
+See: [Here](https://www.conanexiles.com/dedicated-servers/)
+
## More information can be found [here](https://forums.funcom.com/t/conan-exiles-dedicated-server-app-latest-version-1-0-21/21699)
diff --git a/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json b/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json
index 3b043f51..84fa01b2 100644
--- a/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json
+++ b/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-10-23T13:08:22+02:00",
+ "exported_at": "2023-08-17T16:55:04+02:00",
"name": "Conan Exiles",
"author": "brycea@terrahost.cloud",
"description": "Conan Exiles is an open-world survival game set in the brutal lands of Conan the Barbarian. Survive in a savage world, build your kingdom, and dominate your enemies in brutal combat and epic warfare.",
@@ -12,15 +12,15 @@
"steam_disk_space"
],
"docker_images": {
- "Wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
+ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
},
"file_denylist": [],
- "startup": "export WINEDEBUG=-all; xvfb-run --auto-servernum wine \/home\/container\/ConanSandboxServer.exe ConanSandbox?listen?PVPEnabled={{PVP}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}} -ServerName=\"{{SRV_NAME}}\" -ServerPassword={{SRV_PW}} -console -log",
+ "startup": "xvfb-run --auto-servernum wine \/home\/container\/ConanSandbox\/Binaries\/Win64\/ConanSandboxServer-Win64-Shipping.exe -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -RconPort={{RCON_PORT}} -ServerName=\"{{SRV_NAME}}\" -ServerPassword=\"{{SRV_PW}}\" -console -log",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Started SourceServerQueries\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
@@ -31,33 +31,13 @@
},
"variables": [
{
- "name": "Game ID",
+ "name": "App id",
"description": "The ID corresponding to the game to download.",
"env_variable": "SRCDS_APPID",
"default_value": "443030",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:7",
- "field_type": "text"
- },
- {
- "name": "XVFB Enable",
- "description": "MUST BE 1",
- "env_variable": "XVFB",
- "default_value": "1",
- "user_viewable": false,
- "user_editable": false,
- "rules": "required|numeric|min:0|max:1",
- "field_type": "text"
- },
- {
- "name": "Windows install variable",
- "description": "Required for windows applications to install with steam.\r\n\r\n1 to enable auto-updates",
- "env_variable": "WINDOWS_INSTALL",
- "default_value": "1",
- "user_viewable": false,
- "user_editable": false,
- "rules": "required|boolean",
+ "rules": "required|string|in:443030",
"field_type": "text"
},
{
@@ -101,14 +81,54 @@
"field_type": "text"
},
{
- "name": "PvP Enabled",
+ "name": "WINEDEBUG",
"description": "",
- "env_variable": "PVP",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "vcrun2013 vcrun2015 corefonts",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Windows",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
"default_value": "1",
- "user_viewable": true,
- "user_editable": true,
+ "user_viewable": false,
+ "user_editable": false,
"rules": "required|boolean",
"field_type": "text"
+ },
+ {
+ "name": "Rcon port",
+ "description": "Remote administrative access",
+ "env_variable": "RCON_PORT",
+ "default_value": "25575",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|numeric",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json b/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json
index 87a087c4..4ab04d56 100644
--- a/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json
+++ b/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-03-18T23:18:52+01:00",
+ "exported_at": "2023-03-28T22:32:36+02:00",
"name": "Core Keeper",
"author": "karsten@fiedleronline.net",
"description": "Core Keeper is a survival sandbox game for single or multiplayers.\r\n\r\n--- Drawn towards a mysterious relic, you are an explorer who awakens in an ancient cavern of creatures, resources and trinkets. Trapped deep underground will your survival skills be up to the task? Mine relics and resources to build your base, craft new equipment, survive, and power up the Core. ---",
@@ -15,7 +15,7 @@
"ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
},
"file_denylist": [],
- "startup": "export DISPLAY=:0; rm .\/GameID.txt .\/CoreKeeperServerLog.txt; touch .\/CoreKeeperServerLog.txt; xvfb-run -s \"-screen 0 {{DISPLAY_WIDTH}}x{{DISPLAY_HEIGHT}}x{{DISPLAY_DEPTH}} -ac -nolisten tcp -nolisten unix\" .\/CoreKeeperServer -logfile CoreKeeperServerLog.txt -world {{WORLD_INDEX}} -worldname \"{{WORLD_NAME}}\" -worldseed {{WORLD_SEED}} $([[ \"{{GAME_ID}}\" != \"\" ]] && echo -n \" -gameid {{GAME_ID}}\") -maxplayers {{MAX_PLAYERS}} -worldmode {{WORLD_MODE}} -port {{SERVER_PORT}} & CKPID=$!; tail -f CoreKeeperServerLog.txt & LOGPID=$!; trap \"kill ${CKPID}; wait ${CKPID}; kill ${LOGPID}; wait ${LOGPID}\" 15; wait $!",
+ "startup": "export DISPLAY=:0; rm .\/GameID.txt .\/CoreKeeperServerLog.txt; touch .\/CoreKeeperServerLog.txt; xvfb-run -s \"-screen 0 {{DISPLAY_WIDTH}}x{{DISPLAY_HEIGHT}}x{{DISPLAY_DEPTH}} -ac -nolisten tcp -nolisten unix\" .\/CoreKeeperServer -batchmode -logfile CoreKeeperServerLog.txt -world {{WORLD_INDEX}} -worldname \"{{WORLD_NAME}}\" -worldseed {{WORLD_SEED}} $([[ \"{{GAME_ID}}\" != \"\" ]] && echo -n \" -gameid {{GAME_ID}}\") -maxplayers {{MAX_PLAYERS}} -worldmode {{WORLD_MODE}} -port {{SERVER_PORT}} & CKPID=$!; tail -f CoreKeeperServerLog.txt | grep -e '^\\[userid:[0-9]*\\] player' -e '^[^\\[]' & LOGPID=$!; trap \"kill ${CKPID}; wait ${CKPID}; kill ${LOGPID}; wait ${LOGPID}\" 15; wait $!",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Started session\"\r\n}",
diff --git a/game_eggs/steamcmd_servers/counter_strike/README.md b/game_eggs/steamcmd_servers/counter_strike/README.md
new file mode 100644
index 00000000..459f5447
--- /dev/null
+++ b/game_eggs/steamcmd_servers/counter_strike/README.md
@@ -0,0 +1,8 @@
+# Counter-Strike
+
+Counter-Strike is a series of multiplayer tactical first-person shooter video games in which teams of terrorists battle to perpetrate an act of terror while counter-terrorists try to prevent it. The series began on Windows in 1999 with the release of the first game, Counter-Strike.
+
+## Counter-Strike Titles
+
+- [Counter-Strike: Source](counter_strike_source)
+- [Counter-Strike: Global-Offensive](https://github.com/pterodactyl/panel/blob/develop/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json)
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md
new file mode 100644
index 00000000..16a6c0ce
--- /dev/null
+++ b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md
@@ -0,0 +1,42 @@
+# Counter-Strike: Source
+
+## From their [Steam Depot](https://steamdb.info/app/232330/)
+
+A link to the site that you download the server files from.
+
+## [Documentation](https://github.com/parkervcp/eggs/blob/master/README.md)
+
+A link to relevent documentation for the server.
+
+The description of the server usually provided by the game/server maker.
+
+
+## Install notes
+
+To get a persistent server (server that appears on the server list), you need to get a [Steam Server Login Token](https://steamcommunity.com/dev/managegameservers), it's not required though.
+
+## Installation/System Requirements
+
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | Does not support ARM(?) | - |
+| RAM | 512MB | 1GB |
+| Storage | 3GB | 6GB |
+| Network | 1Mbit/s | 5Mbit/s |
+| Game Ownership | No | See **Install Notes** |
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 27015 |
+| Source TV | 27020 |
+| Client | 27005 |
+| Steam | 26900 |
+
+### Notes
+
+27015 is the default port, but any port can be used.
+The only required port is the Game port, server can run perfectly fine without other allocations.
diff --git a/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json
new file mode 100644
index 00000000..da5088d2
--- /dev/null
+++ b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json
@@ -0,0 +1,92 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-12T01:39:04+03:00",
+ "name": "Counter-Strike: Source",
+ "author": "diedyesterdaywashere@gmail.com",
+ "description": "Counter-Strike: Source blends Counter-Strike's award-winning teamplay action with the advanced technology of Source\u2122 technology.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/srcds_run -game cstrike -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +sv_setsteamaccount {{STEAM_TOKEN}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"gameserver Steam ID \"\r\n}",
+ "logs": "{}",
+ "stop": "quit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam Username",
+ "description": "Username you log into Steam with.",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Password",
+ "description": "Password you log into steam with.",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Guard Code",
+ "description": "Your Steam 2FA on your mobile phone. (Not really needed anymore as you get Approve requests now)",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "App ID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "232330",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Map",
+ "description": "Default map",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "de_dust2",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Game Login Token",
+ "description": "https:\/\/steamcommunity.com\/dev\/managegameservers",
+ "env_variable": "STEAM_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json b/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json
index 6d16a070..bdf3df8e 100644
--- a/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json
+++ b/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-10-07T17:08:45+02:00",
"name": "Craftopia",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Craftopia is the brand new multiplayer survival action game made in Japan. We combined many features we find enjoyable, such as hunting, farming, hack-and-slash, building, automation to develop this game.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/eco/egg-eco.json b/game_eggs/steamcmd_servers/eco/egg-eco.json
index f91c6fed..3f8cfcb0 100644
--- a/game_eggs/steamcmd_servers/eco/egg-eco.json
+++ b/game_eggs/steamcmd_servers/eco/egg-eco.json
@@ -6,7 +6,7 @@
},
"exported_at": "2023-01-04T11:28:40+01:00",
"name": "Eco",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"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.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json
index 78eef2b3..4b5b780d 100644
--- a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json
+++ b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json
@@ -4,19 +4,19 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-16T17:24:48+01:00",
+ "exported_at": "2023-04-25T19:31:11+02:00",
"name": "Empyrion: Galactic Survival",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Empyrion: Galactic Survival dedicated server",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
},
"file_denylist": [],
- "startup": "cd empyrion; WINEDLLOVERRIDES=\"mscoree,mshtml=\" wine .\/DedicatedServer\/EmpyrionDedicated.exe -batchmode -log -logFile .\/logs\/current.log \"$@\" &> .\/logs\/wine.log | tail -f .\/logs\/current.log",
+ "startup": "cd empyrion; WINEDLLOVERRIDES=\"mscoree,mshtml=\" wine .\/DedicatedServer\/EmpyrionDedicated.exe -batchmode -log -logFile .\/logs\/current.log & echo -e \"Checking on telnet connection\" && until nc -z 127.0.0.1 ${TELNET_PORT}; do echo -e \"Waiting on telnet connection...\"; sleep 5; done && $( [[ -z ${TELNET_PWD} ]] && printf %s \"telnet -E 127.0.0.1 ${TELNET_PORT}\")",
"config": {
- "files": "{\r\n \"empyrion\/dedicated.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"ServerConfig.Srv_Port\": \"{{server.build.default.port}}\",\r\n \"ServerConfig.Srv_Name\": \"{{env.SRV_NAME}}\",\r\n \"ServerConfig.Srv_Password\": \"{{env.SRV_PWD}}\",\r\n \"ServerConfig.Srv_MaxPlayers\": \"{{env.MAX_PLAYERS}}\",\r\n \"ServerConfig.Tel_Enabled\": \"{{env.TELNET_ENABLED}}\",\r\n \"ServerConfig.Tel_Port\": \"{{env.TELNET_PORT}}\",\r\n \"ServerConfig.Tel_Pwd\": \"{{env.TELNET_PWD}}\",\r\n \"ServerConfig.Srv_Description\": \"{{env.SRV_DESC}}\",\r\n \"GameConfig.Seed\": \"{{env.SEED}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"-LOG- Start Game\"\r\n}",
+ "files": "{\r\n \"empyrion\/dedicated.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"ServerConfig.Srv_Port\": \"{{server.build.default.port}}\",\r\n \"ServerConfig.Srv_Name\": \"{{env.SRV_NAME}}\",\r\n \"ServerConfig.Srv_Password\": \"{{env.SRV_PWD}}\",\r\n \"ServerConfig.Srv_MaxPlayers\": \"{{env.MAX_PLAYERS}}\",\r\n \"ServerConfig.Tel_Enabled\": \"{{env.TELNET_ENABLED}}\",\r\n \"ServerConfig.Tel_Port\": \"{{env.TELNET_PORT}}\",\r\n \"ServerConfig.Srv_Description\": \"{{env.SRV_DESC}}\",\r\n \"GameConfig.Seed\": \"{{env.SEED}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Connected to 127.0.0.1.\"\r\n}",
"logs": "{}",
"stop": "saveandexit 0"
},
@@ -78,16 +78,6 @@
"rules": "required|numeric",
"field_type": "text"
},
- {
- "name": "Telnet Password",
- "description": "Telnet server password.",
- "env_variable": "TELNET_PWD",
- "default_value": "Abc",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:20",
- "field_type": "text"
- },
{
"name": "Game Seed",
"description": "World generation seed. Numeric between 1 and 7 characters.",
@@ -169,4 +159,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/frozen_flame/README.md b/game_eggs/steamcmd_servers/frozen_flame/README.md
index a936b98b..d177dafc 100644
--- a/game_eggs/steamcmd_servers/frozen_flame/README.md
+++ b/game_eggs/steamcmd_servers/frozen_flame/README.md
@@ -8,8 +8,8 @@ Frozen Flame is a Survival RPG set in the vast world of Arсana, an ancient land
| Port | default |
|-----------|---------|
| Game | 7777 |
-| Query | 27015 |
-| RCON | 25575 |
+| Query | 25575 |
+| RCON | 27015 |
## Server configuration
The documentation can be found here: [Dedicated server documentation](https://github.com/DreamsideInteractive/FrozenFlameServer)
diff --git a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json
index f76ca3ff..300fe7d0 100644
--- a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json
+++ b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json
@@ -4,25 +4,25 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-02-03T14:32:26+08:00",
+ "exported_at": "2023-05-07T19:05:11+02:00",
"name": "Frozen Flame",
"author": "theblitzbat@gmail.com",
"description": "Frozen Flame Dedicated Server",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
},
"file_denylist": [],
- "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer -log -MetaGameServerName={{SERVER_NAME}} -port {{SERVER_PORT}} -queryPort {{QUERY_PORT}}",
+ "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer-Linux-Shipping -log -MetaGameServerName=\"{{SERVER_NAME}}\" -port={{SERVER_PORT}} -queryPort={{QUERY_PORT}} -RconPort={{RCON_PORT}} -RconPassword=\"{{RCON_PASSWORD}}\"",
"config": {
"files": "{\r\n \"FrozenFlame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerPassword\": \"ServerPassword=\\\"{{server.build.env.SERVER_PASSWORD}}\\\"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"LogWorld: Bringing up level for play took\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n\r\n## just in case someone removed the defaults.\r\n\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\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\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# 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\nmkdir -p \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\n\r\n[\/Script\/FrozenFlame.FGameSession]\r\nServerPassword=\"${SERVER_PASSWORD}\"\r\n\r\n[\/Script\/FrozenFlame.GameBalance]\r\n\r\n# Enable PVP for non-friends\r\nbFreePVP=True\r\n\r\n# How long a day lasts\r\nDurationOfDay=3600\r\n\r\n\r\n# Health after death\r\nHealthAfterRespawn=0.5\r\n\r\n# Restore health on level up\r\nbRestoreHealthOnLevelUp=True\r\n\r\n# Stamina cost at jumping\r\nJumpStaminaCost=6\r\n\r\n# Stamina cost at sprinting\r\nSprintStaminaCost=1\r\n\r\n# Loss of armor durability after death\r\nArmorDurabilityReducementAfterDeath=25\r\n\r\n# Weapon durability loss speed\r\nDefaultWeaponDurabilityCost=0.5\r\n\r\n\r\n# Allow to teleport with overweight\r\nbIsAllowedToTeleportWithOverweight=False\r\n\r\n# Allow to fly with overweight\r\nbIsAllowedToGlideWithOverweight=False\r\n\r\n\r\n# Drop of items after level X\r\nMinimalLevelToDropItemAfterDeath=2147483647\r\n\r\n# Drop equipped items after death\r\nbDropEquippedItems=False\r\n\r\n# Drop equipable items after death\r\nbDropEquipableItems=False\r\n\r\n# Drop food on death\r\nbDropFoodItems=False\r\n\r\n\r\n#Flame rate from everything\r\nFlameRate=1\r\n\r\n#Player damage multiplier\r\nPlayerDamageMultiplier=1\r\n\r\n#Monsters health multiplier\r\nMonstersHealthMultiplier=1\r\n\r\n#Monsters damage multiplier\r\nMonstersDamageMultiplier=1\r\n\r\n\r\n\r\n#Bulding without material costs\r\nbNoModuleCost=False\r\n\r\n#Building without restrictions\r\nbLimitlessSupport=False\r\n\r\n#Bulding without decay\r\nbInvulnerableModules=False\r\n\r\n\r\n[\/Script\/FrozenFlame.DecaySubsystemSettings]\r\n#A minimum durability that keeps after weather decay system damage\r\nMinDurability=0.300000\r\nEOF\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\nFILE=\/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\/Game.ini\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exits. updating.\"\r\n mv Game.ini Game.ini.back\r\n curl -sSL o Game.ini https:\/\/raw.githubusercontent.com\/DreamsideInteractive\/FrozenFlameServer\/main\/Game.ini\r\nelse \r\n echo \"Downloading a config file\"\r\n curl -sSL -o Game.ini https:\/\/raw.githubusercontent.com\/DreamsideInteractive\/FrozenFlameServer\/main\/Game.ini\r\nfi\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -52,22 +52,12 @@
"name": "Query Port",
"description": "The query port.",
"env_variable": "QUERY_PORT",
- "default_value": "27015",
+ "default_value": "25575",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|between:1024,65536",
"field_type": "text"
},
- {
- "name": "Additional Arguments",
- "description": "Specify additional launch parameters such as -crossplay. You must include a dash - and separate each parameter with space: -crossplay -exclusivejoin",
- "env_variable": "ARGS",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string",
- "field_type": "text"
- },
{
"name": "Server Name",
"description": "The server name",
@@ -97,6 +87,26 @@
"user_editable": true,
"rules": "boolean",
"field_type": "text"
+ },
+ {
+ "name": "Rcon Port",
+ "description": "",
+ "env_variable": "RCON_PORT",
+ "default_value": "27015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Rcon password",
+ "description": "",
+ "env_variable": "RCON_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:128",
+ "field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/ground_branch/README.md b/game_eggs/steamcmd_servers/ground_branch/README.md
new file mode 100644
index 00000000..40c95595
--- /dev/null
+++ b/game_eggs/steamcmd_servers/ground_branch/README.md
@@ -0,0 +1,92 @@
+# Ground Branch
+
+***NOTE: Game and server are still Early Access. Your mileage may vary as updates are released.***
+___
+
+### Authors / Contributors
+
+
+
+
+
+
+
+___
+
+### Game Description
+
+From BlackFoot Studios' [Website](https://www.groundbranch.com/):
+> From one of the developers behind the original Rainbow Six® and Ghost Recon® games, comes a thinking-man's first-person shooter featuring in-depth character and weapon customization. Take your time. Think ahead. Get the job done.
+
+___
+
+### Egg Capabilities
+
+- Configuration of the Server Query port.
+- Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable.
+- Mods have not been explored at this time (see [Modding](#modding) for more info)
+
+___
+
+### Server Ports
+
+- Default server ports are listed below, but both ports can be changed freely.
+- ***Both ports are required to be open/allocated for normal server behavior!***
+
+| Port | Default (UDP) |
+|---------|---------|
+| **Game (Primary Port in Pterodactyl)** | 7777 |
+| Server Query | 27015 |
+
+___
+
+### Installation/System Requirements
+
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | No ARM support. | Recent x86/64 (AMD/Intel) processor. |
+| RAM | 550 MiB | 1024-4096 MiB |
+| Storage | 5632 MiB | 7168 MiB |
+| Network | 3 MiB/s | 7 MiB/s |
+| Game Ownership | Not required to start. | Recommended to fully configure server (see [Server Configuration](#server-configuration) below) |
+
+___
+
+### Server Configuration
+
+**NOTE: Server Name and Max Players will be overwritten by your Pterodactyl Startup settings every time the server is started.**
+
+#### In-Game Setup (Recommended):
+
+Configuring all aspects of the server (MOTD, game rules, map list, admins, etc.) is, by far, the easiest (and safest) to do in-game via the built in admin menu. Perform the following steps to do so:
+
+1. Start the server.
+2. Navigate to `/home/container/GroundBranch/ServerConfig` within Pterodactyl's file browser and open `AdminSetupPassword.txt`.
+3. Copy the code and start your personal Ground Branch game client.
+4. Log into your server via the server browser by searching for it by the name you set in the Startup tab of the server.
+5. Open the console by pressing `` ` `` and run the following command: `admin setup `. This will add you as a SuperAdmin.
+6. Running the command `admin` will open the Admin Menu where you can configure everything about the server.
+
+#### Manual Setup (Advanced):
+
+All configuration files for the server can be found here: `/home/container/GroundBranch/ServerConfig`
+
+Please refer to the [Unofficial Ground Branch Wiki](https://unofficialgroundbranchwiki.com/en/dedicated-servers/getting-started) for configuration info.
+
+___
+
+### Modding
+
+At the time of writing this (2023/08/01), no workshop mods for Ground Branch exist. However, if they were to be introduced or you would like to install a mod, mods can be installed to `/home/container/steamapps/workshop/content/16900/`. The server should then stage them to `/home/container/GroundBranch/Mods` and show up as "Mod ID #" in the in-game modding menu.
diff --git a/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json
new file mode 100644
index 00000000..d7c408fc
--- /dev/null
+++ b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json
@@ -0,0 +1,133 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-08-01T20:51:33+00:00",
+ "name": "Ground Branch",
+ "author": "rehlmgaming@gmail.com",
+ "description": "From one of the developers behind the original Rainbow Six\u00ae and Ghost Recon\u00ae games, comes a thinking-man's first-person shooter featuring in-depth character and weapon customization. Take your time. Think ahead. Get the job done.",
+ "features": null,
+ "docker_images": {
+ "Wine [Latest]": "ghcr.io\/parkervcp\/yolks:wine_latest",
+ "Wine [Staging]": "ghcr.io\/parkervcp\/yolks:wine_staging"
+ },
+ "file_denylist": [],
+ "startup": "wine GroundBranch\/Binaries\/Win64\/GroundBranchServer-Win64-Shipping.exe MultiHome=0.0.0.0 Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -log",
+ "config": {
+ "files": "{\r\n \"GroundBranch\/ServerConfig\/Server.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName=\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"GroundBranch\/Config\/DefaultModding.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ModPath=\": \"ModPath=..\/steamapps\/workshop\/content\/16900\/\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Bringing up level for play took\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Ground Branch Egg - egg-ground-branch.json\r\n## Authors: David Wolfe (Red-Thirten)\r\n## Date: 2023\/08\/01\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/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\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Ground Branch setup\r\n# Make ServerConfig directory and default Server.ini file (since they are not initially present before first server start)\r\nmkdir -p $HOME\/GroundBranch\/ServerConfig\/ && cd \"$_\"\r\n\r\nif [[ ! -f Server.ini ]]; then\r\n echo -e '\\nCreating default \"Server.ini\" configuration file...'\r\n cat > Server.ini << EOF\r\n[\/Script\/RBZooKeeper.ZKServer]\r\n; Name of the server 64 characters max)\r\nServerName=Unnamed Ground Branch Server\r\n\r\n; The message of the day (512 characters max)\r\n; e.g. ServerMOTD=This text here is displayed
with the 'admin motd' command.\r\nServerMOTD=\"Welcome!\"\r\n\r\n; Set to a jpg image to act as a server banner in-game where possible.\r\n; (recommended resolution: 788 x 386)\r\nServerWebBanner=\"\"\r\n; e.g. ServerWebPage=www.images.com\/myimage.jpeg\r\n\r\n; Password required to join the server.\r\n;ServerPassword=\r\n\r\n; Password required to join the server as a permanent spectator.\r\n;SpectatorOnlyPassword=\r\n\r\n; Maximum number of players allowed on this server.\r\nMaxPlayers=16\r\nMaxSpectators=0\r\n\r\n; Set default match types for game modes and round limits:\r\n; Match types: Continuous, BestOf, FirstTo, Play, PlayUntilWin, TimeLimit.\r\n; Round limits = number of rounds, except Time Limit match type (minutes).\r\n; PVE \/ Co-op:\r\nPVEMatchType=Continuous\r\nPVERoundLimit=2\r\n; PVP:\r\nPVPMatchType=Continuous\r\nPVPRoundLimit=3\r\n; PVP FFA (Free-for-all):\r\nPVPFFAMatchType=Continuous\r\nPVPFFARoundLimit=1\r\nGameRules=((\"AllowCheats\", False),(\"AllowDeadChat\", True),(\"AllowUnrestrictedRadio\", False),(\"AllowUnrestrictedVoice\", False),(\"SpectateEnemies\", True),(\"SpectateForceFirstPerson\", False),(\"SpectateFreeCam\", True),(\"UseTeamRestrictions\", False))\r\nEOF\r\nfi\r\n\r\necho -e \"\\nGround Branch Dedicated Server successfully installed!\\n\"",
+ "container": "ghcr.io\/pterodactyl\/installers:debian",
+ "entrypoint": "\/bin\/bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "[REQUIRED] Server Query Port",
+ "description": "This is the port that your clients will type in and use to connect to the lobby (not the game world). Ensure this port matches your externally forwarded port, and is distanced from other running Ground Branch servers in Pterodactyl (increments of 100 are recommended). This is also true for the Primary\/Game Port!",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "Automatic Updates",
+ "description": "Quickly checks for any server updates on startup, and updates if necessary. (1 ON | 0 OFF)",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Name",
+ "description": "The name of the server that will appear in the server list.",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Unnamed Ground Branch Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:255",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Maximum number of players allowed to connect to the server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "16",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|min:1",
+ "field_type": "text"
+ },
+ {
+ "name": "[Repair] Validate Server Files",
+ "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.",
+ "env_variable": "VALIDATE",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "[System] Ground Branch Dedicated Server App ID",
+ "description": "Steam App ID used for installation and updates. Cannot be changed.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "476400",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:476400",
+ "field_type": "text"
+ },
+ {
+ "name": "[System] Use Windows Branch",
+ "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:1",
+ "field_type": "text"
+ },
+ {
+ "name": "[System] WINEDEBUG",
+ "description": "Used to suppress WINE FIXME messages. Rarely needs to be changed.",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "string|nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "[System] WINEARCH",
+ "description": "Used for compatibility. Cannot be changed.",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:win64",
+ "field_type": "text"
+ },
+ {
+ "name": "[System] WINEPATH",
+ "description": "Used for compatibility. Cannot be changed.",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:\/home\/container",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json b/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json
index ab3ea737..7b8c79a9 100644
--- a/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json
+++ b/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-08T16:25:05+01:00",
+ "exported_at": "2023-07-17T10:38:39-04:00",
"name": "Custom HLDS Engine Game",
"author": "parker@parkervcp.com",
"description": "This option allows modifying the startup arguments and other details to run a custom HLDS based game on the panel.",
@@ -24,7 +24,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# SRCDS Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\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\/steamcmd\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\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} +app_set_config 90 mod ${HLDS_GAME} +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# SRCDS Base Installation Script\r\n\r\nif [ \"${STEAM_USER}\" == \"\" ] || [ \"${STEAM_PASS}\" == \"\" ]; then\r\n echo -e \"Steam user is not set, 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\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\/steamcmd\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\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} +app_set_config 90 mod ${HLDS_GAME} +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -69,6 +69,36 @@
"user_editable": false,
"rules": "required|numeric|digits_between:1,5",
"field_type": "text"
+ },
+ {
+ "name": "Steam Username",
+ "description": "Steam account used to download files (Defaults to anonymous)",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Password",
+ "description": "Password for Steam account",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Auth",
+ "description": "Steam Guard 2FA code for account",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json b/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json
index 37d3c695..062daa70 100644
--- a/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json
+++ b/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json
@@ -1,32 +1,32 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-20T12:55:06-05:00",
+ "exported_at": "2023-10-07T22:46:51+08:00",
"name": "Hurtworld",
"author": "brycea@terrahost.cloud",
"description": "Hurtworld is a hardcore multiplayer survival FPS with a focus on deep survival progression that doesn't become trivial once you establish some basic needs. Built for hardcore gamers, Hurtworld aims to punish.",
"features": [
"steam_disk_space"
],
- "images": [
- "quay.io\/parkervcp\/pterodactyl-images:debian_source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
"file_denylist": [],
- "startup": ".\/Hurtworld.x86_64 -batchmode -nographics -exec \"host {{SERVER_PORT}};queryport {{QUERY_PORT}};maxplayers {{MAX_PLAYERS}};servername {{HOSTNAME}};creativemode ${CREATIVE_MODE};${ADMINS}\" -logfile $1",
+ "startup": ".\/Hurtworld.x86_64 -batchmode -nographics -exec \"host {{SERVER_PORT}};queryport {{QUERY_PORT}};maxplayers {{MAX_PLAYERS}};servername {{HOSTNAME}};creativemode {{CREATIVE_MODE}};addadmin {{ADMINS}}\" -logfile $1",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"orphaned items\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "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 +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +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"
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## copy 32-bit steamclient.so\r\ncp -v linux32\/steamclient.so ..\/Hurtworld_Data\/Plugins\/x86\/steamclient.so\r\n\r\n## copy 64-bit steamclient.so\r\ncp -v linux64\/steamclient.so ..\/Hurtworld_Data\/Plugins\/x86_64\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "\/bin\/bash"
}
},
"variables": [
@@ -37,16 +37,18 @@
"default_value": "405100",
"user_viewable": true,
"user_editable": false,
- "rules": "required|regex:\/^(405100)$\/"
+ "rules": "required|in:405100",
+ "field_type": "text"
},
{
"name": "Query Port",
- "description": "Server Query Default Port",
+ "description": "Server Query Default Port.",
"env_variable": "QUERY_PORT",
"default_value": "13871",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -55,7 +57,8 @@
"default_value": "60",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:60"
+ "rules": "required|string|max:60",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -64,7 +67,38 @@
"default_value": "A Hurtworld Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:50"
+ "rules": "required|string|max:50",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Owner Guid",
+ "description": "Steam id of the server owner.",
+ "env_variable": "ADMINS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:17",
+ "field_type": "text"
+ },
+ {
+ "name": "Creative Mode",
+ "description": "Turn creative mode on and off (free build). Value as 0 for off, 1 for on.",
+ "env_variable": "CREATIVE_MODE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "AUTO_UPDATE",
+ "description": "Disabling or enabling automated updates on boot.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json b/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json
index da78753b..c6def84a 100644
--- a/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json
+++ b/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-12-10T14:40:39+01:00",
+ "exported_at": "2023-09-03T21:07:28+02:00",
"name": "Icarus-Dedicated",
"author": "bolverblitz@ebg.pw",
"description": "Icarus is a survival game that with dedicated servers as a public beta",
@@ -12,7 +12,7 @@
"steam_disk_space"
],
"docker_images": {
- "Wine Staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
+ "Wine Staging": "ghcr.io\/parkervcp\/yolks:wine_latest"
},
"file_denylist": [],
"startup": "wine64 .\/Icarus\/Binaries\/Win64\/IcarusServer-Win64-Shipping.exe -Log -SteamServerName=${SERVER_NAME} -PORT=\"${SERVER_PORT}\" -QueryPort=\"${QUERY_PORT}\"",
@@ -121,4 +121,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json b/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json
index 562e9f4c..6f579f7a 100644
--- a/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json
+++ b/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json
@@ -1,30 +1,28 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-11-26T14:52:26+01:00",
+ "exported_at": "2023-11-13T18:26:59+01:00",
"name": "Insurgency: Sandstorm",
"author": "brycea@terrahost.cloud",
"description": "Insurgency: Sandstorm is a team-based, tactical FPS based on lethal close quarters combat and objective-oriented multiplayer gameplay. Experience the intensity of modern combat where skill is rewarded, and teamwork wins the fight.",
- "features": [
- "steam_disk_space"
- ],
- "images": [
- "ghcr.io\/parkervcp\/games:source"
- ],
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:ubuntu": "ghcr.io\/parkervcp\/steamcmd:ubuntu"
+ },
"file_denylist": [],
- "startup": "\/home\/container\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping {{MAP_NAME}}?Scenario={{SCENARIO}}?MaxPlayers={{MAX_PLAYERS}} -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log -hostname=\"{{HOSTNAME}}\"",
+ "startup": "\/home\/container\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping {{MAP_NAME}}?Scenario={{SCENARIO}}?MaxPlayers={{MAX_PLAYERS}} -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log -hostname=\"{{HOSTNAME}}\" -GSLTToken={{GSLTT}} -GameStats -GameStatsToken={{GST}} {{ADDSWITCHES}}",
"config": {
"files": "{}",
- "startup": "{\r\n \"done\": \"LogGameState: Match State Changed from LoadingAssets to WaitingToStart\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
+ "startup": "{\r\n \"done\": \"LogGameState: Match State Changed from LoadingAssets to WaitingToStart\"\r\n}",
+ "logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
- "script": "apt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${INSTALL_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\nchmod +x \/mnt\/server\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\nchmod +x \/mnt\/server\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -37,7 +35,8 @@
"default_value": "581330",
"user_viewable": true,
"user_editable": false,
- "rules": "nullable|numeric"
+ "rules": "nullable|numeric",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -46,7 +45,8 @@
"default_value": "My Insurgency Server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:64"
+ "rules": "required|string|max:64",
+ "field_type": "text"
},
{
"name": "Query Port",
@@ -55,7 +55,8 @@
"default_value": "27131",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -64,7 +65,8 @@
"default_value": "28",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Default Map",
@@ -73,7 +75,8 @@
"default_value": "Canyon",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "Scenario Name",
@@ -82,7 +85,38 @@
"default_value": "Scenario_Crossing_Checkpoint_Insurgents",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Additional Switches",
+ "description": "Please see this guide for available switches https:\/\/mod.io\/g\/insurgencysandstorm\/r\/server-admin-guide",
+ "env_variable": "ADDSWITCHES",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Game Stats Token",
+ "description": "Generate your token here https:\/\/gamestats.sandstorm.game\/. This is required to have your server show up in the server browser.",
+ "env_variable": "GST",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "GSLT Authentication",
+ "description": "Generate your token here https:\/\/steamcommunity.com\/dev\/managegameservers. This is required to have your server show up in the server browser.",
+ "env_variable": "GSLTT",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
},
{
"name": "Auto Update",
@@ -91,7 +125,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|boolean",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md
new file mode 100644
index 00000000..79943f81
--- /dev/null
+++ b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md
@@ -0,0 +1,29 @@
+# Mount & Blade II: Bannerlord
+
+## [Documentation](https://moddocs.bannerlord.com/multiplayer/hosting_server/)
+
+
+## Installation/System Requirements
+
+| | Bare Minimum | Recommended |
+|---------|---------|---------|
+| Processor | *AMD64 only* | *-* |
+| RAM | *4 GiB* | *8 GiB* |
+| Storage | *5 GiB* | *8 GiB* |
+| Network | *60 packets to each player and each packet is less than 1.5 kilobytes* | *-* |
+| Game Ownership | *Needed for the game token* | *-* |
+
+## Server Ports
+
+Ports required to run the server
+
+| Port | default |
+|---------|---------|
+| Game | 7210 (UDP) |
+
+### Notes
+
+You need to get your own AUTH token to run this server genertate by a offical client
+
+[YT](https://www.youtube.com/watch?v=9Hvuz12Bfzg)
+[Docs](https://moddocs.bannerlord.com/multiplayer/hosting_server/#generating-a-token)
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json
new file mode 100644
index 00000000..9061421c
--- /dev/null
+++ b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json
@@ -0,0 +1,112 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-10-21T17:16:27+02:00",
+ "name": "Mount & Blade II: Bannerlord",
+ "author": "josdekurk@gmail.com",
+ "description": "A strategy\/action RPG. Create a character, engage in diplomacy, craft, trade and conquer new lands in a vast medieval sandbox. Raise armies to lead into battle and command and fight alongside your troops in massive real-time battles using a deep but intuitive skill-based combat system.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
+ },
+ "file_denylist": [],
+ "startup": "cd \/home\/container\/bin\/Win64_Shipping_Server\/ && wine DedicatedCustomServer.Starter.exe \/port {{SERVER_PORT}} \/dedicatedcustomserverauthtoken \"{{AUTH_TOKEN}}\" \/dedicatedcustomserverconfigfile tdm_config.txt _MODULES_*Native*Multiplayer*DedicatedCustomServerHelper*_MODULES_",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Custom Game server is ready! You can now enter console commands\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/Modules\/Native\/\r\ncd \/mnt\/server\/Modules\/Native\/\r\n[ -f \"tdm_config.txt\" ] || curl -sSL -o \"tdm_config.txt\" \"https:\/\/pteropaste.com\/z67k16z608ty\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Windows",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "App id",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "1863440",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:1863440",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update the server on restart.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "[SYSTEM] WINEDEBUG",
+ "description": "don't change this !!!",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "[SYSTEM] WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "vcrun2019 dotnet472",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Auth token",
+ "description": "See: https:\/\/www.youtube.com\/watch?v=9Hvuz12Bfzg",
+ "env_variable": "AUTH_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/neosvr/Config.json b/game_eggs/steamcmd_servers/neosvr/Config.json
new file mode 100644
index 00000000..648a31ca
--- /dev/null
+++ b/game_eggs/steamcmd_servers/neosvr/Config.json
@@ -0,0 +1,48 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Neos-Metaverse/JSONSchemas/main/schemas/NeosHeadlessConfig.schema.json",
+ "universeId": null,
+ "tickRate": 60.0,
+ "maxConcurrentAssetTransfers": 4,
+ "usernameOverride": null,
+ "loginCredential": "",
+ "loginPassword": "",
+ "startWorlds": [{
+ "isEnabled": true,
+ "saveAsOwner": null,
+ "autoInviteUsernames": null,
+ "parentSessionIds": null,
+ "autoInviteMessage": null,
+ "autoRecover": true,
+ "idleRestartInterval": -1.0,
+ "forcedRestartInterval": -1.0,
+ "saveOnExit": false,
+ "autosaveInterval": -1.0,
+ "autoSleep": true,
+ "sessionName": null,
+ "customSessionId": null,
+ "description": null,
+ "maxUsers": 32,
+ "accessLevel": "Anyone",
+ "hideFromPublicListing": null,
+ "tags": null,
+ "mobileFriendly": false,
+ "loadWorldURL": null,
+ "loadWorldPresetName": "SpaceWorld",
+ "overrideCorrespondingWorldId": null,
+ "forcePort": null,
+ "keepOriginalRoles": false,
+ "defaultUserRoles": null,
+ "roleCloudVariable": null,
+ "allowUserCloudVariable": null,
+ "denyUserCloudVariable": null,
+ "requiredUserJoinCloudVariable": null,
+ "requiredUserJoinCloudVariableDenyMessage": null,
+ "awayKickMinutes": -1.0
+ }],
+ "dataFolder": null,
+ "cacheFolder": null,
+ "logsFolder": null,
+ "allowedUrlHosts": null,
+ "autoSpawnItems": null,
+ "metamovieRoles": null
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/neosvr/README.md b/game_eggs/steamcmd_servers/neosvr/README.md
new file mode 100644
index 00000000..83007b28
--- /dev/null
+++ b/game_eggs/steamcmd_servers/neosvr/README.md
@@ -0,0 +1,10 @@
+# Neos VR headless client
+## From https://neos.com
+Developing Neos, short for neo spatium - new space, a highly collaborative virtual and augmented reality metaverse.
+
+# Notice
+
+To use this egg you will need a beta code and a Steam account. Currently the beta code can only acquired by going to the Neos Patreon, subscribing to the "Gunter" level, and linking your Patreon to Discord. Then you will be able to see the #headless-client channel and the password will be pinned in the command after -betapassword. The account will also need to have Neos VR in its library. You can do this by running `app_license_request 740250` in steamcmd if you have never installed Neos VR on this Steam account.
+For more information related to configuration go here: https://wiki.neos.com/Headless_Client/Server
+
+This game does not require any port forwarding, but instead uses UDP NAT hole punching (and/or relay) on a random port. You can force a certain port in the config for direct connections, but most communcation is done via NAT hole punch using LiteNetLib (LNL).
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json
new file mode 100644
index 00000000..a9c11cb2
--- /dev/null
+++ b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json
@@ -0,0 +1,112 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-06-03T13:33:19-04:00",
+ "name": "NeosVR",
+ "author": "espeon@espeon.dev",
+ "description": "Neos VR is a metaverse engineered for the unknown! It\u2019s one of the most versatile and feature rich metaverses for virtual reality, designed so everybody can find something interesting or useful to do in a social setting.",
+ "features": null,
+ "docker_images": {
+ "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest"
+ },
+ "file_denylist": [],
+ "startup": "mono Neos.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly .\/NeosModLoaderHeadless.dll\"; fi)",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"World running...\"\r\n}",
+ "logs": "{}",
+ "stop": "shutdown"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## create default config\r\nmkdir -p \/mnt\/server\/Config\r\nrm -rf \/mnt\/server\/Config\/Config.json\r\ncurl -sSL -o \/mnt\/server\/Config\/Config.json https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/neosvr\/Config.json\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam Account User",
+ "description": "The username for your Steam account.",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Account Password",
+ "description": "The password for your Steam account.",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Account Token\/Code",
+ "description": "The Steam Guard code or Login Token emailed to you.",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Enable Mod Loader",
+ "description": "See: https:\/\/github.com\/neos-modding-group\/NeosModLoader for more information on Neos Mod Loader.",
+ "env_variable": "ENABLE_MODLOADER",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Beta Password",
+ "description": "This is the \"Beta Password\" that is only acquired by going to the Neos Patreon, subscribing to the \"Gunter\" level, and linking your Patreon to Discord. Then you will be able to see the #headless-client channel and the password will be pinned in the command after -betapassword.",
+ "env_variable": "SRCDS_BETAPASS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:30",
+ "field_type": "text"
+ },
+ {
+ "name": "Beta branch name",
+ "description": "",
+ "env_variable": "SRCDS_BETAID",
+ "default_value": "headless-client",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update the server on startup",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam App ID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "740250",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/no_one_survived/README.md b/game_eggs/steamcmd_servers/no_one_survived/README.md
new file mode 100644
index 00000000..ecbe3de6
--- /dev/null
+++ b/game_eggs/steamcmd_servers/no_one_survived/README.md
@@ -0,0 +1,27 @@
+# No One Survived
+
+[STEAM](https://store.steampowered.com/app/1963370/No_One_Survived/)
+
+This is a multiplayer cooperative open world construction survival sandbox game, where you and your friends must find supplies and build shelters in this world. You have to keep an eye on your character's needs state at all times, a bad state is likely to lead to death.
+
+## Minimum RAM warning
+
+Minimum required memory to run the server.
+2GB is recommended. 4GB+ is preferred
+
+## Minumim Sorage warning
+
+Minimum required storage to run the server.
+3GB is recommended.
+
+
+## Server Ports
+
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 5761 |
+| Query | 27015 |
+
+Both TCP and UDP
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json
new file mode 100644
index 00000000..66c39a6d
--- /dev/null
+++ b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json
@@ -0,0 +1,202 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-06-29T10:42:53+02:00",
+ "name": "No One Survived",
+ "author": "josdekurk@gmail.com",
+ "description": "This is a multiplayer cooperative open world construction survival sandbox game, where you and your friends must find supplies and build shelters in this world. You have to keep an eye on your character's needs state at all times, a bad state is likely to lead to death.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
+ },
+ "file_denylist": [],
+ "startup": "wine WRSHServer.exe -server -log -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}}",
+ "config": {
+ "files": "{\r\n \"WRSH\/Saved\/Config\/WindowsServer\/Engine.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"URL.Port\": \"{{server.build.default.port}}\",\r\n \"OnlineSubsystemSteam.bUseSteamNetworking\": \"{{server.build.env.STEAM_NETWORKING}}\",\r\n \"OnlineSubsystemSteam.GameServerQueryPort\": \"{{server.build.env.QUERY_PORT}}\"\r\n }\r\n },\r\n \"WRSH\/Saved\/Config\/WindowsServer\/Game.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"ServerSetting.SaveName\": \"{{server.build.env.SERVER_SAVE_NAME}}\",\r\n \"ServerSetting.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"ServerSetting.NeedPassword\": \"{{server.build.env.SERVER_NEED_PASSWORD}}\",\r\n \"ServerSetting.Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"ServerSetting.MaxPlayers\": \"{{server.build.env.SERVER_PLAYERS}}\",\r\n \"ServerSetting.NumOfZombieSpawn\": \"{{server.build.env.SERVER_NUM_ZOMBIES}}\",\r\n \"ServerSetting.Region\": \"{{server.build.env.SERVER_REGION}}\",\r\n \"ServerSetting.AdminPassword\": \"{{server.build.env.SERVER_ADMIN_PASSWORD}}\"\r\n }\r\n } \r\n}",
+ "startup": "{\r\n \"done\": \"ServerCreate\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Windows",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "App id",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2329680",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:2329680",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update the server on restart",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEDEBUG",
+ "description": "",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:win64,win32",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "vcrun2022 corefonts",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Query Port",
+ "description": "",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Networking",
+ "description": "Enable or disable steam networking.\r\nLeave this to False as with True it will fail to start!",
+ "env_variable": "STEAM_NETWORKING",
+ "default_value": "False",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:False,True",
+ "field_type": "text"
+ },
+ {
+ "name": "Server save name",
+ "description": "The name of the archive, which is also the archive loaded by default.",
+ "env_variable": "SERVER_SAVE_NAME",
+ "default_value": "MySave",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Server name",
+ "description": "The name of the server",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Test",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Toggle server password",
+ "description": "True indicates that the server needs a password and False indicates that it does not need a password.",
+ "env_variable": "SERVER_NEED_PASSWORD",
+ "default_value": "False",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:False,True",
+ "field_type": "text"
+ },
+ {
+ "name": "Server password",
+ "description": "The password for the server. Only works if 'Toggle server password' is set to True",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Server players",
+ "description": "The maximum amount of players the server can join",
+ "env_variable": "SERVER_PLAYERS",
+ "default_value": "50",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|numeric|between:1,100",
+ "field_type": "text"
+ },
+ {
+ "name": "Number of zombies",
+ "description": "Number of zombies generated by the wave of corpse tide (25-100).",
+ "env_variable": "SERVER_NUM_ZOMBIES",
+ "default_value": "50",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|numeric|between:25,100",
+ "field_type": "text"
+ },
+ {
+ "name": "Server region",
+ "description": "All = non-registered region, AF = Africa, AS = Asia, EU = Europe, NA = North America, OC = Oceania, and SA = South America.",
+ "env_variable": "SERVER_REGION",
+ "default_value": "All",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:All,AF,AS,EU,NA,OC,SA",
+ "field_type": "text"
+ },
+ {
+ "name": "Server admin password",
+ "description": "Server administrator password",
+ "env_variable": "SERVER_ADMIN_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json
index c6c5740d..a9ae9030 100644
--- a/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json
+++ b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-07-18T08:23:04-04:00",
+ "exported_at": "2023-04-13T00:19:22+00:00",
"name": "Open Fortress",
"author": "espeon@espeon.dev",
"description": "Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.",
@@ -24,7 +24,7 @@
},
"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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates p7zip-full wget\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nfi\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# 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## 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 ## other flags may be needed depending on install. looking at you cs 1.6\r\n## install tf2 content using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server\/tf2 +app_update 232250 ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\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## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download OpenFortress\r\ncd \/mnt\/server\r\nmv bin bin_dontdeleteme\r\nwget https:\/\/git.sr.ht\/~welt\/murse\/refs\/download\/v0.2.1\/murse-v0.2.1-linux-amd64.tar.gz -O murse.tgz 2> \/dev\/null\r\ntar xvfz murse.tgz\r\nrm -rf murse.tgz\r\nchmod +x murse\r\n.\/murse upgrade -u https:\/\/toast1.openfortress.fun\/toast -c $(curl https:\/\/toast1.openfortress.fun\/toast\/reithreads) asdrggvead\/open_fortress\r\nmv \/mnt\/server\/asdrggvead\/open_fortress \/mnt\/server\/open_fortress\r\nrm -rf asdrggvead\r\nmv bin_dontdeleteme bin\r\n## add fixed gameinfo\r\ncd \/mnt\/server\/open_fortress\r\nrm -rf gameinfo.txt\r\ncat >> gameinfo.txt << EOF\r\n\"GameInfo\"\r\n{\r\ngame \"Open Fortress\"\r\ntitle \"\"\r\ntitle2 \"\"\r\ngamelogo \"1\"\r\ndeveloper \"https:\/\/github.com\/AgitationSkeleton\/open_fortress\/blob\/master\/credits.txt\"\r\ndeveloper_url\t\"https:\/\/github.com\/KaidemonLP\/Open-Fortress-Source\"\r\nmanual \"\"\r\ntype \"multiplayer_only\"\r\nhasportals \"0\" \/\/ gameui.dll\r\nhashdcontent\t\"0\" \/\/ gameui.dll\r\nnomodels \"0\" \/\/ gameui.dll\r\nnohimodel \"0\" \/\/ gameui.dll\r\nnocrosshair \"0\" \/\/ gameui.dll\r\nadvcrosshair \"1\" \/\/ gameui.dll\r\nnodifficulty\t\"1\" \/\/ gameui.dll\r\nsupportsvr \"0\" \/\/ engine.dll + gameui.dll\r\nbots \"0\" \/\/ gameui.dll\r\nnodegraph \"1\" \/\/ engine.dll\r\nperfwizard \"0\" \/\/ unused\r\nSupportsDX8 \"0\" \/\/ unused\r\nSupportsDX9 \"1\" \/\/ unused\r\nSupportsDX10\t\"0\" \/\/ unused\r\nSupportsDX11\t\"0\" \/\/ unused\r\nSupportsXbox\t\"0\" \/\/ unused\r\nSupportsXbox360\t\"0\" \/\/ unused\r\nSupportsXboxOne\t\"0\" \/\/ unused\r\nSupportsPS3 \"0\" \/\/ unused\r\nSupportsPS4 \"0\" \/\/ unused\r\nicon \"resource\/game\"\r\nGameData \"ofd_fic2.fgd\"\r\nInstancePath\t\"maps\/instances\/\"\r\nhidden_maps\r\n{\r\n\"test_speakers\" 1\r\n\"test_hardware\" 1\r\n\"background01\" 1\r\n\"background02\" 1\r\n\"background03\" 1\r\n\"background04\" 1\r\n\"background05\" 1\r\n\"background06\" 1\r\n\"background07\" 1\r\n\"background08\" 1\r\n\"background09\" 1\r\n\"background12\" 1\r\n\"background15\" 1\r\n\"ep1_c17_00\" 1\r\n\"ep1_c17_00a\" 1\r\n\"ep1_c17_01\" 1\r\n\"ep1_c17_01a\" 1\r\n\"ep1_c17_02\" 1\r\n\"ep1_c17_02a\" 1\r\n\"ep1_c17_02b\" 1\r\n\"ep1_c17_05\" 1\r\n\"ep1_c17_06\" 1\r\n\"ep1_citadel_00\"\t1\r\n\"ep1_citadel_00_demo\" 1\r\n\"ep1_citadel_01\"\t1\r\n\"ep1_citadel_02\"\t1\r\n\"ep1_citadel_02b\"\t1\r\n\"ep1_citadel_03\"\t1\r\n\"ep1_citadel_04\"\t1\r\n\"ep1_background01\"\t1\r\n\"ep1_background01a\"\t1\r\n\"ep1_background02\"\t1\r\n\"ep2_outland_01\"\t1\r\n\"ep2_outland_01a\"\t1\r\n\"ep2_outland_02\"\t1\r\n\"ep2_outland_03\"\t1\r\n\"ep2_outland_04\"\t1\r\n\"ep2_outland_05\"\t1\r\n\"ep2_outland_06\"\t1\r\n\"ep2_outland_06a\"\t1\r\n\"ep2_outland_07\"\t1\r\n\"ep2_outland_08\"\t1\r\n\"ep2_outland_09\"\t1\r\n\"ep2_outland_10\"\t1\r\n\"ep2_outland_10a\"\t1\r\n\"ep2_outland_11\"\t1\r\n\"ep2_outland_11a\"\t1\r\n\"ep2_outland_11b\"\t1\r\n\"ep2_outland_12\"\t1\r\n\"ep2_outland_12a\"\t1\r\n\"ep2_background01\"\t1\r\n\"ep2_background02\"\t1\r\n\"ep2_background02a\"\t1\r\n\"ep2_background03\"\t1\r\n\"credits\" 1\r\n\"vst_lostcoast\" 1\r\n\"test\" 1\r\n\"sdk_vehicles\" 1\r\n}\r\nFileSystem\r\n{\r\nSteamAppId 243750\r\nSearchPaths\r\n{\r\ngame+mod |gameinfo_path|custom\/*\r\ngame+game_write+mod+mod_write+default_write_path |gameinfo_path|.\r\ngamebin |gameinfo_path|bin\r\n\/\/ The lines below until the BREAK comment are responsible for the game resources to work properly\r\n\/\/ in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,\r\n\/\/ Source SDK and OF) in the same drive letter\/partition. If you have a different storage configuration,\r\n\/\/ feel free to modify the paths below between quotes (example: D:\\Steam\\steamapps\\common\\Team Fortress 2\\tf).\r\ngame \"\/home\/container\/tf2\/tf\/tf2_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_misc.vpk\"\r\n\/\/ The hl2 folder here is from Source SDK Base 2013 Multiplayer.\r\ngame \"|all_source_engine_paths|hl2\\hl2_misc.vpk\"\r\ngame \"|all_source_engine_paths|hl2\"\r\n\/\/ ========== BREAK ==========\r\nplatform |all_source_engine_paths|platform\/platform_misc.vpk\r\nplatform |all_source_engine_paths|platform\r\ngame+download |gameinfo_path|download\r\n}\r\n}\r\n}\r\nEOF\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s datacache_srv.so datacache.so\r\nln -s dedicated_srv.so dedicated.so\r\nln -s engine_srv.so engine.so\r\nln -s materialsystem_srv.so materialsystem.so\r\nln -s replay_srv.so replay.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s vphysics_srv.so vphysics.so\r\n## more symlink fixes\r\ncd \/mnt\/server\/open_fortress\/bin\r\nln -s server.so server_srv.so\r\n## fix issue with libstdc++.so\r\nrm -rf \/mnt\/server\/bin\/libstdc++.so.6",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates p7zip-full wget\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nfi\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# 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## 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 ## other flags may be needed depending on install. looking at you cs 1.6\r\n## install tf2 content using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server\/tf2 +app_update 232250 ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\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## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download OpenFortress\r\ncd \/mnt\/server\r\nmv bin bin_dontdeleteme\r\nwget https:\/\/git.sr.ht\/~webb\/murse\/refs\/download\/v0.4.0\/murse-v0.4.0-linux-amd64.tar.gz -O murse.tgz 2> \/dev\/null\r\ntar xvfz murse.tgz\r\nrm -rf murse.tgz\r\nchmod +x murse\r\n.\/murse upgrade -u https:\/\/toast.openfortress.fun:8443\/toast asdrggvead\/open_fortress\r\nmv \/mnt\/server\/asdrggvead\/open_fortress \/mnt\/server\/open_fortress\r\nrm -rf asdrggvead\r\nmv bin_dontdeleteme bin\r\n## add fixed gameinfo\r\ncd \/mnt\/server\/open_fortress\r\nrm -rf gameinfo.txt\r\ncat >> gameinfo.txt << EOF\r\n\"GameInfo\"\r\n{\r\ngame \"Open Fortress\"\r\ntitle \"\"\r\ntitle2 \"\"\r\ngamelogo \"1\"\r\ndeveloper \"https:\/\/github.com\/AgitationSkeleton\/open_fortress\/blob\/master\/credits.txt\"\r\ndeveloper_url\t\"https:\/\/github.com\/KaidemonLP\/Open-Fortress-Source\"\r\nmanual \"\"\r\ntype \"multiplayer_only\"\r\nhasportals \"0\" \/\/ gameui.dll\r\nhashdcontent\t\"0\" \/\/ gameui.dll\r\nnomodels \"0\" \/\/ gameui.dll\r\nnohimodel \"0\" \/\/ gameui.dll\r\nnocrosshair \"0\" \/\/ gameui.dll\r\nadvcrosshair \"1\" \/\/ gameui.dll\r\nnodifficulty\t\"1\" \/\/ gameui.dll\r\nsupportsvr \"0\" \/\/ engine.dll + gameui.dll\r\nbots \"0\" \/\/ gameui.dll\r\nnodegraph \"1\" \/\/ engine.dll\r\nperfwizard \"0\" \/\/ unused\r\nSupportsDX8 \"0\" \/\/ unused\r\nSupportsDX9 \"1\" \/\/ unused\r\nSupportsDX10\t\"0\" \/\/ unused\r\nSupportsDX11\t\"0\" \/\/ unused\r\nSupportsXbox\t\"0\" \/\/ unused\r\nSupportsXbox360\t\"0\" \/\/ unused\r\nSupportsXboxOne\t\"0\" \/\/ unused\r\nSupportsPS3 \"0\" \/\/ unused\r\nSupportsPS4 \"0\" \/\/ unused\r\nicon \"resource\/game\"\r\nGameData \"ofd_fic2.fgd\"\r\nInstancePath\t\"maps\/instances\/\"\r\nhidden_maps\r\n{\r\n\"test_speakers\" 1\r\n\"test_hardware\" 1\r\n\"background01\" 1\r\n\"background02\" 1\r\n\"background03\" 1\r\n\"background04\" 1\r\n\"background05\" 1\r\n\"background06\" 1\r\n\"background07\" 1\r\n\"background08\" 1\r\n\"background09\" 1\r\n\"background12\" 1\r\n\"background15\" 1\r\n\"ep1_c17_00\" 1\r\n\"ep1_c17_00a\" 1\r\n\"ep1_c17_01\" 1\r\n\"ep1_c17_01a\" 1\r\n\"ep1_c17_02\" 1\r\n\"ep1_c17_02a\" 1\r\n\"ep1_c17_02b\" 1\r\n\"ep1_c17_05\" 1\r\n\"ep1_c17_06\" 1\r\n\"ep1_citadel_00\"\t1\r\n\"ep1_citadel_00_demo\" 1\r\n\"ep1_citadel_01\"\t1\r\n\"ep1_citadel_02\"\t1\r\n\"ep1_citadel_02b\"\t1\r\n\"ep1_citadel_03\"\t1\r\n\"ep1_citadel_04\"\t1\r\n\"ep1_background01\"\t1\r\n\"ep1_background01a\"\t1\r\n\"ep1_background02\"\t1\r\n\"ep2_outland_01\"\t1\r\n\"ep2_outland_01a\"\t1\r\n\"ep2_outland_02\"\t1\r\n\"ep2_outland_03\"\t1\r\n\"ep2_outland_04\"\t1\r\n\"ep2_outland_05\"\t1\r\n\"ep2_outland_06\"\t1\r\n\"ep2_outland_06a\"\t1\r\n\"ep2_outland_07\"\t1\r\n\"ep2_outland_08\"\t1\r\n\"ep2_outland_09\"\t1\r\n\"ep2_outland_10\"\t1\r\n\"ep2_outland_10a\"\t1\r\n\"ep2_outland_11\"\t1\r\n\"ep2_outland_11a\"\t1\r\n\"ep2_outland_11b\"\t1\r\n\"ep2_outland_12\"\t1\r\n\"ep2_outland_12a\"\t1\r\n\"ep2_background01\"\t1\r\n\"ep2_background02\"\t1\r\n\"ep2_background02a\"\t1\r\n\"ep2_background03\"\t1\r\n\"credits\" 1\r\n\"vst_lostcoast\" 1\r\n\"test\" 1\r\n\"sdk_vehicles\" 1\r\n}\r\nFileSystem\r\n{\r\nSteamAppId 243750\r\nSearchPaths\r\n{\r\ngame+mod |gameinfo_path|custom\/*\r\ngame+game_write+mod+mod_write+default_write_path |gameinfo_path|.\r\ngamebin |gameinfo_path|bin\r\n\/\/ The lines below until the BREAK comment are responsible for the game resources to work properly\r\n\/\/ in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,\r\n\/\/ Source SDK and OF) in the same drive letter\/partition. If you have a different storage configuration,\r\n\/\/ feel free to modify the paths below between quotes (example: D:\\Steam\\steamapps\\common\\Team Fortress 2\\tf).\r\ngame \"\/home\/container\/tf2\/tf\/tf2_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_misc.vpk\"\r\n\/\/ The hl2 folder here is from Source SDK Base 2013 Multiplayer.\r\ngame \"|all_source_engine_paths|hl2\\hl2_misc.vpk\"\r\ngame \"|all_source_engine_paths|hl2\"\r\n\/\/ ========== BREAK ==========\r\nplatform |all_source_engine_paths|platform\/platform_misc.vpk\r\nplatform |all_source_engine_paths|platform\r\ngame+download |gameinfo_path|download\r\n}\r\n}\r\n}\r\nEOF\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s datacache_srv.so datacache.so\r\nln -s dedicated_srv.so dedicated.so\r\nln -s engine_srv.so engine.so\r\nln -s materialsystem_srv.so materialsystem.so\r\nln -s replay_srv.so replay.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s vphysics_srv.so vphysics.so\r\n## more symlink fixes\r\ncd \/mnt\/server\/open_fortress\/bin\r\nln -s server.so server_srv.so\r\n## fix issue with libstdc++.so\r\nrm -rf \/mnt\/server\/bin\/libstdc++.so.6",
"container": "ubuntu:18.04",
"entrypoint": "bash"
}
@@ -71,4 +71,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md b/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md
new file mode 100644
index 00000000..b012c094
--- /dev/null
+++ b/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md
@@ -0,0 +1,15 @@
+# Operation Harsh Doorstop
+
+[Steam](https://store.steampowered.com/app/736590/Operation_Harsh_Doorstop/)
+
+Operation: Harsh Doorstop is an Unreal Engine powered shooter sandbox similar to mod-friendly games like Ravenfield and Garry's Mod but with roots in tactical shooters like Squad and Arma III. Our game is entirely donation funded, completely free, and has full Steam workshop support!
+
+## Server Ports
+
+Operation Harsh Doorstop servers require 3 ports to be open
+
+| Port | default |
+|-----------|---------|
+| Game | 7777 |
+| Query | 27005 |
+| RCON | 7779 |
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json b/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json
new file mode 100644
index 00000000..d43d1178
--- /dev/null
+++ b/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json
@@ -0,0 +1,124 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-03-11T19:59:13+01:00",
+ "name": "Operation Harsh Doorstop",
+ "author": "josdekurk@gmail.com",
+ "description": "Operation: Harsh Doorstop is an Unreal Engine powered shooter sandbox similar to mod-friendly games like Ravenfield and Garry's Mod but with roots in tactical shooters like Squad and Arma III. Our game is entirely donation funded, completely free, and has full Steam workshop support!",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/HarshDoorstop\/Binaries\/Linux\/HarshDoorstopServer-Linux-Shipping HarshDoorstop AAS-TestMap?MaxPlayers={{MAX_PLAYERS}} -SteamServerName=\"{{SERVER_NAME}}\" -Port={{SERVER_PORT}} -MULTIHOME=0.0.0.0 -QueryPort={{QUERY_PORT}} -RCONPort={{RCON_PORT}} -EnableRCON -RCONMaxAuthAttempts={{RCON_MAX_AUTH_ATTEMPTS}} -RCONPassword=\"{{RCON_PASSWORD}}\" -RCONMaxActiveConnections={{RCON_MAX_CONNECTIONS}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"LogRCON: RCON server listening on\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} 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## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/\r\ncd \/mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/\r\ntouch Game.ini\r\ntee -a mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/Game.ini << END\r\n[\/Script\/RCON.RCONServerSystem]\r\nbEnabled=True\r\nListenPort=7779\r\nPassword=\"LetMeIn\"\r\nMaxActiveConnections=5\r\nMaxAuthAttempts=3\r\n\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=32\r\nServerName=\"My Awesome Server\"\r\nPassword=\"cookies\"\r\nEND\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Autop update",
+ "description": "Auto update the server on startup",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "app id",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "950900",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:950900",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "Maximum number of players allowed by this server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "32",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|numeric",
+ "field_type": "text"
+ },
+ {
+ "name": "Server name",
+ "description": "Defines the display or host name of the game server when listed in a server browser",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Harsh Doorstop Dedicated Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:200",
+ "field_type": "text"
+ },
+ {
+ "name": "Query port",
+ "description": "Defines port for Steam master server traffic",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27005",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Rcon Port",
+ "description": "Defines port for RCON server traffic",
+ "env_variable": "RCON_PORT",
+ "default_value": "7779",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Rcon Max Auth Attempts",
+ "description": "Defines the maximum number of authentication attempts an RCON connection can make before being forcibly disconnected",
+ "env_variable": "RCON_MAX_AUTH_ATTEMPTS",
+ "default_value": "3",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|numeric",
+ "field_type": "text"
+ },
+ {
+ "name": "Rcon Password",
+ "description": "Defines the password used for authenticating with the RCON server",
+ "env_variable": "RCON_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Rcon Max Connections",
+ "description": "Maximum number of concurrent RCON connections",
+ "env_variable": "RCON_MAX_CONNECTIONS",
+ "default_value": "5",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|numeric",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/pavlov_vr/Game.ini b/game_eggs/steamcmd_servers/pavlov_vr/Game.ini
index 8e519c32..879dee98 100644
--- a/game_eggs/steamcmd_servers/pavlov_vr/Game.ini
+++ b/game_eggs/steamcmd_servers/pavlov_vr/Game.ini
@@ -1,15 +1,19 @@
[/Script/Pavlov.DedicatedServer]
bEnabled=true
ServerName="My dedicated server"
-MaxPlayers=50
+MaxPlayers=10 #Set this to 10 for Shack. 24 is the max for PC, setting it higher will not allow players to join.
+ApiKey="ABC123FALSEKEYDONTUSEME"
bSecured=true
bCustomServer=true
+bVerboseLogging=false
+bCompetitive=false #This only works for SND
bWhitelist=false
RefreshListTime=120
-LimitedAmmoType=2
+LimitedAmmoType=0
TickRate=90
TimeLimit=60
-Password=0000
-MapRotation=(MapId="UGC1668673188", GameMode="SND")
+#Password=0000
+#BalanceTableURL="vankruptgames/BalancingTable/main"
+MapRotation=(MapId="UGC1758245796", GameMode="GUN")
MapRotation=(MapId="datacenter", GameMode="SND")
MapRotation=(MapId="sand", GameMode="DM")
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/pavlov_vr/README.md b/game_eggs/steamcmd_servers/pavlov_vr/README.md
index 38ca0eb1..f7ee5b9b 100644
--- a/game_eggs/steamcmd_servers/pavlov_vr/README.md
+++ b/game_eggs/steamcmd_servers/pavlov_vr/README.md
@@ -12,6 +12,12 @@ This server requires about 2048M to run. A 3.2 GHz core will support approximate
If you are running multiple servers and have set additional ports (see [Running multiple servers](http://wiki.pavlov-vr.com/index.php?title=Dedicated_server#Running_multiple_servers_on_one_host)) then you need to allow access to the defined port plus the port 400 higher. So if you use 7000 as your port, then UDP 7000 and 7400 need to be open.
+### API key
+
+For your server to show up in the server list, there is now a requirement to have an ApiKey issued by vankrupt. This is to prevent DOS attacks against the master server
+
+Get the key by going [here](https://pavlov-ms.vankrupt.com/servers/v1/key) and using your mobile number to get a SMS (note that there have been reported failures of this SMS system for non-US mobiles. In this case DM davevillz your mobile and ask for a key).
+
### Steam Workshop
diff --git a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json
index 8a51b857..e0afab91 100644
--- a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json
+++ b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json
@@ -1,31 +1,31 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-07-02T04:21:26+03:00",
+ "exported_at": "2023-07-02T17:55:48+02:00",
"name": "Pavlov VR",
"author": "admin@devil.wtf",
"description": "Pavlov VR is a multiplayer shooter in VR with heavy focus on community features. Realistic reloading features and fast paced combat as part of the core experience. Play the #1 most popular VR shooter on PC today.",
"features": [
"steam_disk_space"
],
- "images": [
- "quay.io\/parkervcp\/pterodactyl-images:debian_source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:ubuntu": "ghcr.io\/parkervcp\/steamcmd:ubuntu"
+ },
"file_denylist": [],
- "startup": ".\/Pavlov\/Binaries\/Linux\/PavlovServer -PORT={{SERVER_PORT}}",
+ "startup": ".\/Pavlov\/Binaries\/Linux\/PavlovServer-Linux-Shipping Pavlov -PORT={{SERVER_PORT}} -KEY=\"{{API_KEY}}\"",
"config": {
"files": "{\r\n \"Pavlov\/Saved\/Config\/RconSettings.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Password=\": \"Password={{env.RCON_PASSWORD}}\",\r\n \"Port=\": \"Port={{env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"PavlovLog: StartPlay was called\"\r\n}",
+ "startup": "{\r\n \"done\": \"Starting Server Status Helper on Port\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "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\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\napt -y update\r\napt -y --no-install-recommends install wget gdb 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} +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 \/mnt\/server\/.steam\/sdk64\r\nchmod +x \"\/mnt\/server\/Pavlov\/Binaries\/Linux\/PavlovServer\"\r\n\r\n# Install Configuration Files\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Logs\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nif [ ! -f Game.ini ]; then\r\n echo -e \"Downloading Pavlov VR Game.ini\"\r\n curl -ssL -o Game.ini https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/Game.ini\r\nfi\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\r\nif [ ! -f RconSettings.txt ]; then\r\n echo -e \"Downloading Pavlov VR RconSettings.txt\"\r\n curl -ssL -o RconSettings.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/RconSettings.txt\r\nfi\r\n\r\ncd \/mnt\/server\/\r\nif [ -f PavlovServer.sh ]; then\r\n rm PavlovServer.sh\r\nfi",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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\nchmod +x \"\/mnt\/server\/Pavlov\/Binaries\/Linux\/PavlovServer-Linux-Shipping\"\r\n\r\n# Install Configuration Files\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Logs\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/maps\r\n\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nif [ ! -f Game.ini ]; then\r\n echo -e \"Downloading Pavlov VR Game.ini\"\r\n curl -ssL -o Game.ini https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/Game.ini\r\nfi\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\r\nif [ ! -f RconSettings.txt ]; then\r\n echo -e \"Downloading Pavlov VR RconSettings.txt\"\r\n curl -ssL -o RconSettings.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/RconSettings.txt\r\nfi\r\n\r\ncd \/mnt\/server\/\r\nif [ -f PavlovServer.sh ]; then\r\n rm PavlovServer.sh\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -37,16 +37,8 @@
"default_value": "622970",
"user_viewable": false,
"user_editable": false,
- "rules": "nullable|numeric"
- },
- {
- "name": "Server Type",
- "description": "Choose Between Beta or Shack (-beta shack) or (-beta beta_server). Leave blank for the normal build.",
- "env_variable": "EXTRA_FLAGS",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "required|numeric|in:622970",
+ "field_type": "text"
},
{
"name": "RCON Password",
@@ -55,7 +47,8 @@
"default_value": "CHANGE_ME",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "RCON Port",
@@ -64,16 +57,38 @@
"default_value": "8188",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Auto-update server",
"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",
+ "default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|boolean"
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Beta id",
+ "description": "Beta branch of a steam app",
+ "env_variable": "SRCDS_BETAID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|in:,beta_server",
+ "field_type": "text"
+ },
+ {
+ "name": "Api key",
+ "description": "For your server to show up in the server list, there is now a requirement to have an ApiKey issued by vankrupt. This is to prevent DOS attacks against the master server.\r\nGet it here: https:\/\/pavlov-ms.vankrupt.com\/servers\/v1\/key",
+ "env_variable": "API_KEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
}
]
}
diff --git a/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json b/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json
index 9c93cc3d..60d943e5 100644
--- a/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json
+++ b/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json
@@ -1,30 +1,31 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-01-01T19:35:46+01:00",
+ "exported_at": "2023-08-11T21:40:04+02:00",
"name": "PixARK",
"author": "hello@venatus.digital",
"description": "A simple Docker container with Wine to run PixARK using Pterodactyl Panel",
"features": [
"steam_disk_space"
],
- "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",
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:wine_devel": "ghcr.io\/parkervcp\/yolks:wine_devel"
+ },
+ "file_denylist": [],
+ "startup": "wine64 .\/ShooterGame\/Binaries\/Win64\/PixARKServer.exe \"CubeWorld_Light?listen?DelayRegisterServer=True?bRawSockets=True?SessionName=\"{{SRV_NAME}}\"?AltSaveDirectoryName=PteroPixArk?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?MaxPlayers={{MAX_PLAYERS}}?RCONEnabled=True?RCONPort={{RCPORT}}\" -Seed=12345 -OreSeed=1234 -ConfigsUseAltDir -server -gameplaylogging -log -CULTUREFORCOOKING=en -NoBattlEye -QueryPort={{QPORT}} -Port={{SERVER_PORT}} -CubePort={{CUBEPORT}} -cubeworld={{SRV_NAME}} -nosteamclient -NoHangDetection",
"config": {
"files": "{}",
- "startup": "{\r\n \"done\": \"Full Startup:\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"Logs\/\"\r\n}",
- "stop": "^C"
+ "startup": "{\r\n \"done\": \"Full Startup:\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is '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",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -36,7 +37,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|alpha_dash|between:1,100"
+ "rules": "nullable|alpha_dash|between:1,100",
+ "field_type": "text"
},
{
"name": "Admin Password",
@@ -45,7 +47,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|alpha_dash|between:1,100"
+ "rules": "nullable|alpha_dash|between:1,100",
+ "field_type": "text"
},
{
"name": "Maximum Players",
@@ -54,7 +57,8 @@
"default_value": "10",
"user_viewable": true,
"user_editable": false,
- "rules": "required|numeric|digits_between:1,4"
+ "rules": "required|numeric|digits_between:1,4",
+ "field_type": "text"
},
{
"name": "Query Port",
@@ -63,7 +67,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric|digits_between:1,5"
+ "rules": "required|numeric|digits_between:1,5",
+ "field_type": "text"
},
{
"name": "RCON Port",
@@ -72,7 +77,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": false,
- "rules": "required|numeric|digits_between:1,5"
+ "rules": "required|numeric|digits_between:1,5",
+ "field_type": "text"
},
{
"name": "Cube Port",
@@ -81,7 +87,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": false,
- "rules": "required|numeric|digits_between:1,5"
+ "rules": "required|numeric|digits_between:1,5",
+ "field_type": "text"
},
{
"name": "App ID",
@@ -90,7 +97,8 @@
"default_value": "824360",
"user_viewable": false,
"user_editable": false,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "WINDOWS_INSTALL",
@@ -99,7 +107,8 @@
"default_value": "1",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -108,7 +117,58 @@
"default_value": "PteroPixARKServer",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:30"
+ "rules": "required|string|max:30",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEDEBUG",
+ "description": "",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "XVFB",
+ "description": "XVFB",
+ "env_variable": "XVFB",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "vcrun2019 dotnet6",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/project_zomboid/README.md b/game_eggs/steamcmd_servers/project_zomboid/README.md
index 6f6f9c32..e2fbf6fc 100644
--- a/game_eggs/steamcmd_servers/project_zomboid/README.md
+++ b/game_eggs/steamcmd_servers/project_zomboid/README.md
@@ -4,21 +4,16 @@ Project Zomboid is the ultimate in zombie survival. Alone or in MP: you loot, bu
## Server Ports
-Project Zomboid requires one port for Steam and an additional **one port per player**. Additional ports are allocated as they connect.
-
-For example, when configured with a base allocation of 27016:
+Project Zomboid requires one port for game data and one port for Steam.
```log
-Zomboid Steam Server started, ports 27016 and 27016 must be open on the router
-Connected new client kubi ID # 0 and assigned DL port 27017
-Connected new client kubi2 ID # 1 and assigned DL port 27018
+> *** SERVER STARTED ****.
+> *** Steam is enabled.
+> Server is listening on port 16261 (for Steam connection) and port 16262 (for UDPRakNet connection).
+> Clients should use 16261 port for connections.
```
-If you're experiencing issues with players connecting it's likely because you have not allocated enough ports. These ports **must be in order** following the Steam port.
-
| Port | default |
|-------------|---------|
-| Game | 8766 |
-| Player1 | 8767 |
-| Player2 | 8768 |
-| ... | 8769 |
+| DefaultPort | 16261 |
+| UDPPort | 16262 |
diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json
index 5012b832..45844dc4 100644
--- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json
+++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json
@@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-05-06T10:50:50+02:00",
+ "exported_at": "2023-07-30T20:12:08+02:00",
"name": "Project Zomboid",
"author": "iamkubi@gmail.com",
"description": "Project Zomboid is an open world survival horror video game in alpha stage development by British and Canadian independent developer, The Indie Stone. The game is set in a post apocalyptic, zombie infested world where the player is challenged to survive for as long as possible before inevitably dying.",
"features": [
"steam_disk_space"
],
- "images": [
- "ghcr.io\/parkervcp\/games:source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
"file_denylist": [],
- "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -steamport1 {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"",
+ "startup": "export PATH=\".\/jre64\/bin:$PATH\" ; export LD_LIBRARY_PATH=\".\/linux64:.\/natives:.:.\/jre64\/lib\/amd64:${LD_LIBRARY_PATH}\" ; JSIG=\"libjsig.so\" ; LD_PRELOAD=\"${LD_PRELOAD}:${JSIG}\" .\/ProjectZomboid64 -port {{SERVER_PORT}} -udpport {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"SERVER STARTED\"\r\n}",
@@ -24,7 +24,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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\ncd \/mnt\/server\r\nrm start-server.sh\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -37,7 +37,8 @@
"default_value": "Pterodactyl",
"user_viewable": true,
"user_editable": true,
- "rules": "required|alpha_num|max:64"
+ "rules": "required|alpha_num|max:64",
+ "field_type": "text"
},
{
"name": "Admin Username",
@@ -46,25 +47,28 @@
"default_value": "admin",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Admin Password",
"description": "Password for the admin account",
"env_variable": "ADMIN_PASSWORD",
- "default_value": "password",
+ "default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:32"
+ "rules": "required|string|max:32",
+ "field_type": "text"
},
{
"name": "SteamPort",
- "description": "Sets the SteamPort1 option",
+ "description": "Sets the UDPPort option",
"env_variable": "STEAM_PORT",
- "default_value": "8766",
+ "default_value": "16262",
"user_viewable": true,
- "user_editable": false,
- "rules": "required|string|max:20"
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -73,7 +77,8 @@
"default_value": "10",
"user_viewable": true,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "PZ Steam App ID",
@@ -82,7 +87,8 @@
"default_value": "380870",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Steam Beta Branch [requires reinstall]",
@@ -91,7 +97,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:64"
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
},
{
"name": "Steam Auto Update",
@@ -100,7 +107,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/resonite/Config.json b/game_eggs/steamcmd_servers/resonite/Config.json
new file mode 100644
index 00000000..ad0723f6
--- /dev/null
+++ b/game_eggs/steamcmd_servers/resonite/Config.json
@@ -0,0 +1,48 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json",
+ "universeId": null,
+ "tickRate": 60.0,
+ "maxConcurrentAssetTransfers": 4,
+ "usernameOverride": null,
+ "loginCredential": "",
+ "loginPassword": "",
+ "startWorlds": [{
+ "isEnabled": true,
+ "saveAsOwner": null,
+ "autoInviteUsernames": null,
+ "parentSessionIds": null,
+ "autoInviteMessage": null,
+ "autoRecover": true,
+ "idleRestartInterval": -1.0,
+ "forcedRestartInterval": -1.0,
+ "saveOnExit": false,
+ "autosaveInterval": -1.0,
+ "autoSleep": true,
+ "sessionName": null,
+ "customSessionId": null,
+ "description": null,
+ "maxUsers": 32,
+ "accessLevel": "Anyone",
+ "hideFromPublicListing": null,
+ "tags": null,
+ "mobileFriendly": false,
+ "loadWorldURL": null,
+ "loadWorldPresetName": "SpaceWorld",
+ "overrideCorrespondingWorldId": null,
+ "forcePort": null,
+ "keepOriginalRoles": false,
+ "defaultUserRoles": null,
+ "roleCloudVariable": null,
+ "allowUserCloudVariable": null,
+ "denyUserCloudVariable": null,
+ "requiredUserJoinCloudVariable": null,
+ "requiredUserJoinCloudVariableDenyMessage": null,
+ "awayKickMinutes": -1.0
+ }],
+ "dataFolder": null,
+ "cacheFolder": null,
+ "logsFolder": null,
+ "allowedUrlHosts": null,
+ "autoSpawnItems": null,
+ "metamovieRoles": null
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/resonite/README.md b/game_eggs/steamcmd_servers/resonite/README.md
new file mode 100644
index 00000000..e317827a
--- /dev/null
+++ b/game_eggs/steamcmd_servers/resonite/README.md
@@ -0,0 +1,10 @@
+# Resonite headless client
+## From https://resonite.com
+Dive into a brand new digital universe with infinite possibilities, socialize and hang out with people around the world or to build, create and develop anything.
+
+# Notice
+
+To use this egg, you will need a beta code and a Steam account. Currently the beta code can only acquired by going to the Resonite Patreon (https://www.patreon.com/Resonite), and subscribing to the "Discoverer" level. Then you will be able to message the Resonite bot in-game with "/headlessCode", and receive the beta code. The account will also need to have Resonite in its library. You can do this by running `app_license_request 2519830` in steamcmd if you have never installed Resonite on this Steam account.
+For more information related to Headless configuration, ask in the official Resonite Discord: https://discord.gg/resonite
+
+This game does not require any port forwarding, but instead uses UDP NAT hole punching (and/or relay) on a random port. You can force a certain port in the config for direct connections with the `forcePort` directive, but most communcation is done via NAT hole punch using LiteNetLib (LNL).
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/resonite/egg-resonite.json b/game_eggs/steamcmd_servers/resonite/egg-resonite.json
new file mode 100644
index 00000000..f00fcd3d
--- /dev/null
+++ b/game_eggs/steamcmd_servers/resonite/egg-resonite.json
@@ -0,0 +1,112 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-11-11T08:33:24-05:00",
+ "name": "Resonite",
+ "author": "espeon@espeon.dev",
+ "description": "Enter a novel digital universe with infinite possibilities. Whether you resonate with people around the world in a casual conversation, playing games and socializing or you riff off each other when creating anything from art to programming complex games, you'll find your place here.",
+ "features": null,
+ "docker_images": {
+ "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest"
+ },
+ "file_denylist": [],
+ "startup": "mono Headless\/Resonite.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly \".\/Libraries\/ResoniteModLoader.dll\"\"; fi)",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"World running...\"\r\n}",
+ "logs": "{}",
+ "stop": "shutdown"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\necho -e \"steam user is not set.\\n\"\r\necho -e \"Using anonymous user.\\n\"\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nelse\r\necho -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# 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## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) -betapassword ${SRCDS_BETAPASS} ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\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## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## check if config file exists\r\necho \"Looking for existing config file...\"\r\nif ! [ -f \"\/mnt\/server\/Headless\/Config\/Config.json\" ]; then\r\necho \"Config does not exist, creating new config.\"\r\n## create default config\r\nmkdir -p \/mnt\/server\/Headless\/Config\r\ncurl -sSL -o \/mnt\/server\/Headless\/Config\/Config.json https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/resonite\/Config.json\r\nelse\r\n## leave existing config\r\necho \"Config already exists, leaving it as is.\"\r\nfi\r\n## check if mod loader is enabled\r\necho \"Checking if mod loader needs to be installed...\"\r\nif [ \"$ENABLE_MODLOADER\" = true ]; then\r\necho \"Installing\/Updating mod loader as its enabled.\"\r\nmkdir -p \/mnt\/server\/Libraries\r\nmkdir -p \/mnt\/server\/rml_libs\r\nmkdir -p \/mnt\/server\/rml_mods\r\ncurl -sSL -o \/mnt\/server\/Libraries\/ResoniteModLoader.dll https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader\/releases\/latest\/download\/ResoniteModLoader.dll\r\ncurl -sSL -o \/mnt\/server\/rml_libs\/0Harmony.dll https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader\/releases\/latest\/download\/0Harmony.dll\r\nelse\r\necho \"Skipping installing mod loader as its not enabled.\"\r\nfi\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam Account User",
+ "description": "The username for your Steam account.",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Account Password",
+ "description": "The password for your Steam account.",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:128",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam Account Token\/Code",
+ "description": "The Steam Guard code or Login Token emailed to you.",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Enable Mod Loader",
+ "description": "See: https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader for more information on Resonite Mod Loader.",
+ "env_variable": "ENABLE_MODLOADER",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Beta Password",
+ "description": "This is the \"Beta Password\" that is only acquired by going to the Resonite Patreon, subscribing to the tier with Headless access, and then after your Resonite account shows \"Patreon Supporter\", message the Resonite bot in game with \/headlessCode, and paste that code here.",
+ "env_variable": "SRCDS_BETAPASS",
+ "default_value": "",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:30",
+ "field_type": "text"
+ },
+ {
+ "name": "Beta branch name",
+ "description": "",
+ "env_variable": "SRCDS_BETAID",
+ "default_value": "headless",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update the server on startup",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Steam App ID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2519830",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json b/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json
index 1f3fdf6c..da1fc498 100644
--- a/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json
+++ b/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-10-16T09:21:36+02:00",
"name": "Rising World Java Legacy",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Rising World is a voxel based open-world sandbox game, featuring a procedurally generated world, playable in single and multi-player.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json b/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json
index 3f12eae8..07edfdc0 100644
--- a/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json
+++ b/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-10-23T09:33:48+02:00",
"name": "Rising World Unity",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Rising World is a voxel based open-world sandbox game, featuring a procedurally generated world, playable in single and multi-player.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md
index f14ec862..6d106d5b 100644
--- a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md
+++ b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md
@@ -2,6 +2,13 @@
Escape a chaotic alien planet by fighting through hordes of frenzied monsters – with your friends, or on your own.
+### Author & Contributers
+| Name | Github Profile | Buy me a Coffee |
+| ------------- |-------------|-------------|
+| acl1704 | https://github.com/acl1704 | |
+| gOOvER | https://github.com/gOOvER | [](https://ko-fi.com/B0B351D0Q) |
+
+
## Minimum Specifications
- At least 1GB RAM
@@ -15,7 +22,4 @@ The Risk of Rain 2 server requires a single port for access. Steam Query ports a
|-------|---------|
| Game | 27015 |
| Query | 27016 |
-
-## Installation Notes
-
-The server will get stuck on the very fist start. Kill and restart it.
+| Steam | 27017 (must be queryport +1) |
diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json
index cc578645..24bddb2b 100644
--- a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json
+++ b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json
@@ -1,31 +1,31 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-06-02T12:27:48+03:00",
+ "exported_at": "2023-07-22T11:23:29+02:00",
"name": "Risk of Rain 2",
"author": "alex.chang-lam@protonmail.com",
"description": "Risk of Rain 2 dedicated server.",
"features": [
"steam_disk_space"
],
- "images": [
- "quay.io\/parkervcp\/pterodactyl-images:debian_wine-5"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
+ },
"file_denylist": [],
"startup": "xvfb-run wine .\/\"Risk of Rain 2.exe\"",
"config": {
- "files": "{\r\n \".\/Risk of Rain 2_Data\/Config\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_password\": \"sv_password \\\"{{server.build.env.PASSWORD}}\\\";\",\r\n \"steam_server_heartbeat_enabled\": \"steam_server_heartbeat_enabled {{server.build.env.ADVERTISE}};\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.HOSTNAME}}\\\";\",\r\n \"steam_server_query_port\": \"steam_server_query_port {{server.build.env.QUERY}};\",\r\n \"steam_server_steam_port\": \"steam_server_steam_port {{server.build.env.STEAM}};\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.PLAYERS}};\",\r\n \"exec server;\": \"\",\r\n \"host\": \"\",\r\n \"remove_all_local_users;\": \"\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \".\/Risk of Rain 2_Data\/Config\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_password\": \"sv_password \\\"{{server.build.env.PASSWORD}}\\\";\",\r\n \"steam_server_heartbeat_enabled\": \"steam_server_heartbeat_enabled {{server.build.env.ADVERTISE}};\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.HOSTNAME}}\\\";\",\r\n \"sv_port\": \"sv_port {{server.build.default.port}};\",\r\n \"steam_server_query_port\": \"steam_server_query_port {{server.build.env.QUERY}};\",\r\n \"steam_server_steam_port\": \"steam_server_steam_port {{server.build.env.STEAM}};\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.PLAYERS}};\",\r\n \"exec server;\": \"\",\r\n \"host\": \"\",\r\n \"remove_all_local_users;\": \"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Press Enter to chat.\"\r\n}",
"logs": "{}",
- "stop": "^V"
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Risk of Rain 2 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt update\r\napt -y install curl unzip lib32gcc1 ca-certificates xvfb\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\n\r\nexport WINETRICKS_RUN=mono\r\nexport HOME=\/mnt\/server\r\nexport AUTO_UPDATE=1\r\nexport SRCDS_APPID=1180760\r\n\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir \/mnt\/server +app_update 1180760 validate +quit\r\n\r\n## setup 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\r\n## setup 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v \/mnt\/server\/steam\/linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n#create custom server.cfg\r\ncp \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_startup.cfg\" \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server.cfg\"",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n##steam serverlist fix\r\nmkdir -p \/mnt\/server\/steamworks_sdk\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server\/steamworks_sdk +@sSteamCmdForcePlatformType windows +login anonymous +app_update 1007 +quit\r\ncp \/mnt\/server\/steamworks_sdk\/*64.dll \/mnt\/server\/\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## add below your custom commands if needed\r\n\r\n#create custom server.cfg\r\ncp \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_startup.cfg\" \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server.cfg\"\r\ntouch \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_pregame.cfg\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -37,7 +37,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:40"
+ "rules": "nullable|string|max:40",
+ "field_type": "text"
},
{
"name": "Server Hostname",
@@ -46,7 +47,8 @@
"default_value": "\"Risk of Rain 2 Dedicated Server\"",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:40"
+ "rules": "required|string|max:40",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -55,7 +57,8 @@
"default_value": "4",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
},
{
"name": "Advertise Server",
@@ -64,7 +67,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|boolean"
+ "rules": "required|boolean",
+ "field_type": "text"
},
{
"name": "Query Port",
@@ -73,7 +77,8 @@
"default_value": "27016",
"user_viewable": true,
"user_editable": false,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
},
{
"name": "Steam Port",
@@ -82,7 +87,88 @@
"default_value": "27017",
"user_viewable": false,
"user_editable": false,
- "rules": "required|numeric"
+ "rules": "required|numeric",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "SRCDS_APPID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "1180760",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEDEBUG",
+ "description": "",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "XVFB",
+ "description": "",
+ "env_variable": "XVFB",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "WINDOWS_INSTALL",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "mono",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json b/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json
index eaa55f52..46fb42a3 100644
--- a/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json
+++ b/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-02-03T13:00:17+08:00",
+ "exported_at": "2023-06-17T16:29:22+03:00",
"name": "Rust Autowipe",
"author": "support@pterodactyl.io",
"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.",
@@ -15,7 +15,7 @@
"ghcr.io\/pterodactyl\/games:rust": "ghcr.io\/pterodactyl\/games:rust"
},
"file_denylist": [],
- "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.ip 0.0.0.0 +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 \\\"$( if [ -f seed.txt ] && [[ ${WORLD_SEED} == \"0\" ]]; then printf %s $(cat seed.txt); else printf %s '${WORLD_SEED}'; fi )\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +app.port {{APP_PORT}} +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}\"",
+ "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.ip 0.0.0.0 +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.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +app.port {{APP_PORT}} +server.saveinterval {{SAVEINTERVAL}} $( [ -z ${MAP_URL} ] && printf %s \"+server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( if [ -f seed.txt ] && [[ ${WORLD_SEED} == \"0\" ]]; then printf %s $(cat seed.txt); else printf %s ${WORLD_SEED}; fi )\\\"\"|| printf %s \"+server.levelurl {{MAP_URL}}\" ) {{ADDITIONAL_ARGS}}\"",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Server startup complete\"\r\n}",
@@ -209,6 +209,16 @@
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
+ },
+ {
+ "name": "Custom Map URL",
+ "description": "Overwrites the map with the one from the direct download URL. Invalid URLs will cause the server to crash.",
+ "env_variable": "MAP_URL",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|url",
+ "field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json
index 8e09ee53..1a1c6eb3 100644
--- a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json
+++ b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json
@@ -1,9 +1,10 @@
{
- "_comment": "Pterodactyl Satisfactory Egg ~ Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord ~ 2022-10-13",
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
+ "exported_at": "2023-06-13T23:59:02+00:00",
"name": "Satisfactory",
"author": "rehlmgaming@gmail.com",
"description": "Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven!",
@@ -14,7 +15,7 @@
"ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
},
"file_denylist": [],
- "startup": ".\/Engine\/Binaries\/Linux\/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo \"-DisableSeasonalEvents\"; fi)",
+ "startup": ".\/Engine\/Binaries\/Linux\/*-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo \"-DisableSeasonalEvents\"; fi)",
"config": {
"files": "{\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Engine.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mNumRotatingAutosaves\": \"mNumRotatingAutosaves={{server.build.env.NUM_AUTOSAVES}}\",\r\n \"bImplicitSend\": \"bImplicitSend={{server.build.env.UPLOAD_CRASH_REPORT}}\",\r\n \"InitialConnectTimeout\": \"InitialConnectTimeout={{server.build.env.INIT_CONNECT_TIMEOUT}}\",\r\n \"ConnectionTimeout\": \"ConnectionTimeout={{server.build.env.CONNECT_TIMEOUT}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mFloatValues\": \"mFloatValues=((\\\"FG.AutosaveInterval\\\", {{server.build.env.AUTOSAVE_INTERVAL}}))\",\r\n \"mIntValues\": \"mIntValues=((\\\"FG.NetworkQuality\\\", {{server.build.env.NETWORK_QUALITY}}))\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}",
@@ -23,7 +24,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\n# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord\r\n# Date: 2022\/10\/13\r\n# License: MIT License\r\n\r\n## Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\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\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Satisfactory setup\r\n# Check for successful installation and make the core binary executable.\r\ncd \/mnt\/server\/Engine\/Binaries\/Linux\r\nif [[ ! -f UE4Server-Linux-Shipping ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x UE4Server-Linux-Shipping\r\nfi\r\n\r\n# Make Config directory and default .ini files (since they are not initially present before first server start)\r\nmkdir -p \/mnt\/server\/FactoryGame\/Saved\/Config\/LinuxServer\/ && cd \"$_\"\r\n# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.\r\n# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.\r\n# When the patch to this limitation hits the production branch, this will be updated.\r\nrm -f Engine.ini Game.ini GameUserSettings.ini\r\n\r\necho -e '\\nCreating default \"Engine.ini\" configuration file...'\r\ncat > Engine.ini << EOF\r\n[\/Script\/FactoryGame.FGSaveSession]\r\nmNumRotatingAutosaves=${NUM_AUTOSAVES}\r\n\r\n[CrashReportClient]\r\nbImplicitSend=${UPLOAD_CRASH_REPORT}\r\n\r\n[\/Script\/OnlineSubsystemUtils.IpNetDriver]\r\nInitialConnectTimeout=${INIT_CONNECT_TIMEOUT}\r\nConnectionTimeout=${CONNECT_TIMEOUT}\r\nEOF\r\n\r\necho -e 'Creating default \"Game.ini\" configuration file...'\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\nEOF\r\n\r\necho -e 'Creating default \"GameUserSettings.ini\" configuration file...'\r\ncat > GameUserSettings.ini << EOF\r\n[\/Script\/FactoryGame.FGGameUserSettings]\r\nmIntValues=((\"FG.NetworkQuality\", ${NETWORK_QUALITY}))\r\nmFloatValues=((\"FG.AutosaveInterval\", ${AUTOSAVE_INTERVAL}))\r\nmAutoDetectSettingsHandled=False\r\nmPrimaryLanguage=\r\nCurrentFGGameUserSettingsVersion=0\r\nbUseVSync=False\r\nbUseDynamicResolution=False\r\nResolutionSizeX=1280\r\nResolutionSizeY=720\r\nLastUserConfirmedResolutionSizeX=1280\r\nLastUserConfirmedResolutionSizeY=720\r\nWindowPosX=-1\r\nWindowPosY=-1\r\nFullscreenMode=1\r\nLastConfirmedFullscreenMode=1\r\nPreferredFullscreenMode=1\r\nVersion=5\r\nAudioQualityLevel=0\r\nLastConfirmedAudioQualityLevel=0\r\nFrameRateLimit=0.000000\r\nDesiredScreenWidth=1280\r\nDesiredScreenHeight=720\r\nLastUserConfirmedDesiredScreenWidth=1280\r\nLastUserConfirmedDesiredScreenHeight=720\r\nLastRecommendedScreenWidth=-1.000000\r\nLastRecommendedScreenHeight=-1.000000\r\nLastCPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkMultiplier=1.000000\r\nbUseHDRDisplayOutput=False\r\nHDRDisplayOutputNits=1000\r\n\r\n[ScalabilityGroups]\r\nsg.ResolutionQuality=100.000000\r\nsg.ViewDistanceQuality=3\r\nsg.AntiAliasingQuality=3\r\nsg.ShadowQuality=3\r\nsg.PostProcessQuality=3\r\nsg.TextureQuality=3\r\nsg.EffectsQuality=3\r\nsg.FoliageQuality=3\r\nsg.ShadingQuality=3\r\n\r\n[\/Script\/Engine.GameUserSettings]\r\nbUseDesiredScreenHeight=False\r\n\r\n\r\nEOF\r\n\r\necho -e \"\\nSatisfactory Dedicated Server successfully installed!\\n\"",
+ "script": "#!\/bin\/bash\r\n\r\n# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord\r\n# Date: 2023\/06\/13\r\n# License: MIT License\r\n\r\n## Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\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\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Satisfactory setup\r\n# Check for successful installation and make the server binary executable.\r\n# Use `find` to see if a valid server binary exists using a wildcard, because\r\n# the binary name can differ between UE4 and UE5.\r\ncd \/mnt\/server\/Engine\/Binaries\/Linux\r\ncount=$(find . -maxdepth 1 -name '*-Linux-Shipping' -type f -executable | wc -l)\r\nif [[ $count -eq 0 ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x *-Linux-Shipping\r\nfi\r\n\r\n# Make Config directory and default .ini files (since they are not initially present before first server start)\r\nmkdir -p \/mnt\/server\/FactoryGame\/Saved\/Config\/LinuxServer\/ && cd \"$_\"\r\n# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.\r\n# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.\r\n# When the patch to this limitation hits the production branch, this will be updated.\r\nrm -f Engine.ini Game.ini GameUserSettings.ini\r\n\r\necho -e '\\nCreating default \"Engine.ini\" configuration file...'\r\ncat > Engine.ini << EOF\r\n[\/Script\/FactoryGame.FGSaveSession]\r\nmNumRotatingAutosaves=${NUM_AUTOSAVES}\r\n\r\n[CrashReportClient]\r\nbImplicitSend=${UPLOAD_CRASH_REPORT}\r\n\r\n[\/Script\/OnlineSubsystemUtils.IpNetDriver]\r\nInitialConnectTimeout=${INIT_CONNECT_TIMEOUT}\r\nConnectionTimeout=${CONNECT_TIMEOUT}\r\nEOF\r\n\r\necho -e 'Creating default \"Game.ini\" configuration file...'\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\nEOF\r\n\r\necho -e 'Creating default \"GameUserSettings.ini\" configuration file...'\r\ncat > GameUserSettings.ini << EOF\r\n[\/Script\/FactoryGame.FGGameUserSettings]\r\nmIntValues=((\"FG.NetworkQuality\", ${NETWORK_QUALITY}))\r\nmFloatValues=((\"FG.AutosaveInterval\", ${AUTOSAVE_INTERVAL}))\r\nmAutoDetectSettingsHandled=False\r\nmPrimaryLanguage=\r\nCurrentFGGameUserSettingsVersion=0\r\nbUseVSync=False\r\nbUseDynamicResolution=False\r\nResolutionSizeX=1280\r\nResolutionSizeY=720\r\nLastUserConfirmedResolutionSizeX=1280\r\nLastUserConfirmedResolutionSizeY=720\r\nWindowPosX=-1\r\nWindowPosY=-1\r\nFullscreenMode=1\r\nLastConfirmedFullscreenMode=1\r\nPreferredFullscreenMode=1\r\nVersion=5\r\nAudioQualityLevel=0\r\nLastConfirmedAudioQualityLevel=0\r\nFrameRateLimit=0.000000\r\nDesiredScreenWidth=1280\r\nDesiredScreenHeight=720\r\nLastUserConfirmedDesiredScreenWidth=1280\r\nLastUserConfirmedDesiredScreenHeight=720\r\nLastRecommendedScreenWidth=-1.000000\r\nLastRecommendedScreenHeight=-1.000000\r\nLastCPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkMultiplier=1.000000\r\nbUseHDRDisplayOutput=False\r\nHDRDisplayOutputNits=1000\r\n\r\n[ScalabilityGroups]\r\nsg.ResolutionQuality=100.000000\r\nsg.ViewDistanceQuality=3\r\nsg.AntiAliasingQuality=3\r\nsg.ShadowQuality=3\r\nsg.PostProcessQuality=3\r\nsg.TextureQuality=3\r\nsg.EffectsQuality=3\r\nsg.FoliageQuality=3\r\nsg.ShadingQuality=3\r\n\r\n[\/Script\/Engine.GameUserSettings]\r\nbUseDesiredScreenHeight=False\r\n\r\n\r\nEOF\r\n\r\necho -e \"\\nSatisfactory Dedicated Server successfully installed!\\n\"",
"container": "ghcr.io\/pterodactyl\/installers:debian",
"entrypoint": "\/bin\/bash"
}
@@ -170,4 +171,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json b/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json
index d6f12f63..4c0af7df 100644
--- a/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json
+++ b/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json
@@ -6,7 +6,7 @@
},
"exported_at": "2021-11-14T11:16:57+01:00",
"name": "SCP:SL",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Egg for SCP: Secret Laboratory Dedicated Linux Server",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json b/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json
index 2a881b69..00d43318 100644
--- a/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json
+++ b/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json
@@ -6,7 +6,7 @@
},
"exported_at": "2023-01-09T14:18:18+01:00",
"name": "SCP:SL - Exiled",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Egg for SCP: Secret Laboratory Dedicated Linux Server with Exiled Plugin Framework",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json b/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json
index e422fd4b..75f402c4 100644
--- a/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json
+++ b/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json
@@ -6,7 +6,7 @@
},
"exported_at": "2021-11-14T11:18:28+01:00",
"name": "SCP: Secret Laboratory - MultiAdmin",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "The latest vanilla version of SCP:SL running through MultiAdmin for compatibility. LocalAdmin does not work. No SMod2.",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json b/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json
index d60353e0..b05c26fb 100644
--- a/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json
+++ b/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-10-24T20:12:31+02:00",
"name": "Solace Crafting",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Open-world fantasy survival RPG. Borderless distance-based difficulty with player built fast-travel, modular-building, and town management.",
"features": null,
"docker_images": {
diff --git a/game_eggs/steamcmd_servers/soldat/egg-soldat.json b/game_eggs/steamcmd_servers/soldat/egg-soldat.json
index 235aaa83..13cb12f4 100644
--- a/game_eggs/steamcmd_servers/soldat/egg-soldat.json
+++ b/game_eggs/steamcmd_servers/soldat/egg-soldat.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-01-20T12:58:19-05:00",
"name": "Soldat",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Soldat is a unique 2D (side-view) multiplayer action game. It has been influenced by the best of games such as Liero, Worms, Quake, and Counter-Strike and provides a fast-paced gaming experience with tons of blood and flesh. Soldiers fight against each other in 2D battle arenas using a deadly arsenal of military weapons, across 7 default game modes. It features 18 different weapons and 60 maps to frag away on, with full support for user created content.\r\n\r\nSteam: https:\/\/store.steampowered.com\/app\/638490\/Soldat\/",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/README.md b/game_eggs/steamcmd_servers/sonsoftheforest/README.md
new file mode 100644
index 00000000..d4f2ca3d
--- /dev/null
+++ b/game_eggs/steamcmd_servers/sonsoftheforest/README.md
@@ -0,0 +1,29 @@
+# Sons of the Forest
+
+### Game Description
+
+Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.
+
+### Useful links
+
+Steam: https://store.steampowered.com/app/1326470/Sons_Of_The_Forest/
+
+### Author & Contributers
+| Name | Github Profile | Buy me a Coffee |
+| ------------- |-------------|-------------|
+| gOOvER | https://github.com/gOOvER | [](https://ko-fi.com/B0B351D0Q) |
+
+
+### Server Ports
+
+Sons of the Forest requires up to 3 ports. You can choose every port you want.
+
+| Port | default |
+|---------|---------------|
+| Game | 8766 |
+| Query | 27016 |
+| BlobSyncPort | 9700 |
+
+## Special Note
+
+you need a minimum of 8GB RAM for the Server to run
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg
new file mode 100644
index 00000000..5686e1da
--- /dev/null
+++ b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg
@@ -0,0 +1,41 @@
+{
+ "IpAddress": "0.0.0.0",
+ "GamePort": 8766,
+ "QueryPort": 27016,
+ "BlobSyncPort": 9700,
+ "ServerName": "Sons Of The Forest Server (dedicated)",
+ "MaxPlayers": 8,
+ "Password": "",
+ "LanOnly": false,
+ "SaveSlot": 1,
+ "SaveMode": "Continue",
+ "GameMode": "Normal",
+ "SaveInterval": 600,
+ "IdleDayCycleSpeed": 0.0,
+ "IdleTargetFramerate": 5,
+ "ActiveTargetFramerate": 60,
+ "LogFilesEnabled": false,
+ "TimestampLogFilenames": true,
+ "TimestampLogEntries": true,
+ "GameSettings": {
+ "Gameplay.TreeRegrowth": true,
+ "Structure.Damage": true
+ },
+ "CustomGameModeSettings": {
+ "GameSetting.Vail.EnemySpawn": true,
+ "GameSetting.Vail.EnemyHealth": "Normal",
+ "GameSetting.Vail.EnemyDamage": "Normal",
+ "GameSetting.Vail.EnemyArmour": "Normal",
+ "GameSetting.Vail.EnemyAggression": "Normal",
+ "GameSetting.Vail.AnimalSpawnRate": "Normal",
+ "GameSetting.Environment.StartingSeason": "Summer",
+ "GameSetting.Environment.SeasonLength": "Default",
+ "GameSetting.Environment.DayLength": "Default",
+ "GameSetting.Environment.PrecipitationFrequency": "Default",
+ "GameSetting.Survival.ConsumableEffects": "Normal",
+ "GameSetting.Survival.PlayerStatsDamage": "Off",
+ "GameSetting.Survival.ColdPenalties": "Off",
+ "GameSetting.Survival.ReducedFoodInContainers": false,
+ "GameSetting.Survival.SingleUseContainers": false
+ }
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json
new file mode 100644
index 00000000..fd3ca54c
--- /dev/null
+++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json
@@ -0,0 +1,174 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-10-18T18:00:26+02:00",
+ "name": "Sons Of The Forest",
+ "author": "eggs@goover.dev",
+ "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
+ },
+ "file_denylist": [],
+ "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.SkipNetworkAccessibilityTest \"{{SKIP_TESTS}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"",
+ "config": {
+ "files": "{\r\n \"serverconfig\/dedicatedserver.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ServerName\": \"{{server.build.env.SRV_NAME}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"#DSL Dedicated server loaded.\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}Sons of the Forest Installscript${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# 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\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\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## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/serverconfig\r\nFILE=$HOME\/serverconfig\/dedicatedserver.cfg\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}dedicatedserver.cfg found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No dedicatedserver.cfg found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o dedicatedserver.cfg https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/dedicatedserver.cfg\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\nFILE=$HOME\/serverconfig\/ownerswhitelist.txt\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}ownerswhitelist.txt found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No ownerswhitelist.txt found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o ownerswhitelist.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/ownerswhitelist.txt\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "QueryPort",
+ "description": "UDP port used by Steam to list the server and enable the discovery services.",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27016",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "BlobSyncPort",
+ "description": "BlobSyncPort UDP port used by the BlobSync system to initialize game systems and exchange data.",
+ "env_variable": "BLOBSYNC_PORT",
+ "default_value": "9700",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Name",
+ "description": "Name of the server visible in the server list, and in the Steam contacts.",
+ "env_variable": "SRV_NAME",
+ "default_value": "Pterodactyl hosted Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:60",
+ "field_type": "text"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum number of players allowed simultaneously on the server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "4",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|between:1,8",
+ "field_type": "text"
+ },
+ {
+ "name": "Password",
+ "description": "",
+ "env_variable": "SRV_PW",
+ "default_value": "changeme",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Gamemode",
+ "description": "Sets the difficulty game mode when creating a new save. This parameter is ignored if loading a save (save mode set to \u201ccontinue\u201d with a save that exists on the slot). If the game mode is set to \u201ccustom\u201d, then the custom game mode settings will be read from CustomGameModeSettings option, described later.",
+ "env_variable": "GAME_MODE",
+ "default_value": "normal",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|in:normal,hard,hardsurvival,peaceful,custom",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "SRCDS_APPID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2465200",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEDEBUG",
+ "description": "",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "mono vcrun2019",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "WINDOWS_INSTALL",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Skip network Test",
+ "description": "if you have problems to connect to your server, set this to TRUE",
+ "env_variable": "SKIP_TESTS",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt b/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt
new file mode 100644
index 00000000..adbdab4e
--- /dev/null
+++ b/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt
@@ -0,0 +1,6 @@
+# In order to be able to administrate your server from in game directly, you will need to setup server ownership.
+# Add below the steam ids of every server owner, one steam id per line.
+# To find your SteamID, open Steam and click on your name on the top right, then go to Account Details.
+# You can use # to comment out a line. That can be helpful to keep track of SteamIDs, you can include their name in the line above or below, starting with a #.
+
+
diff --git a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json
index 6257b68d..e4e9d49c 100644
--- a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json
+++ b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json
@@ -4,23 +4,23 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-26T17:47:55+01:00",
+ "exported_at": "2023-07-22T12:57:51+02:00",
"name": "Space Engineers",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Space Engineers is a voxel-based sandbox game set in space and on planets.",
"features": [
"steam_disk_space"
],
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
+ "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
},
"file_denylist": [],
- "startup": "winetricks sound=disabled; export WINEARCH=\"win64\"; export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine \/home\/container\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession",
+ "startup": "export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine \/home\/container\/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\t},\r\n\t\"config\/Saves\/World\/Sandbox.sbc\": {\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 }\r\n }\r\n}",
+ "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.SessionSettings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_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 \"config\/Saves\/World\/Sandbox.sbc\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyObjectBuilder_Checkpoint.Settings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_ENABLED}}\"\r\n }\r\n },\r\n \"config\/Saves\/World\/Sandbox_config.sbc\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyObjectBuilder_WorldConfiguration.Settings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_ENABLED}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Game ready...\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
@@ -140,6 +140,36 @@
"rules": "required|numeric|max:65535",
"field_type": "text"
},
+ {
+ "name": "Auto Update",
+ "description": "",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Enable Experimental Mode",
+ "description": "Enable Experimental Mode. Must be 'true' when using mods",
+ "env_variable": "EXPERIMENTAL_ENABLED",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Enable In-Game Scripts",
+ "description": "Allow players to run In-Game Scripts",
+ "env_variable": "INGAMESCRIPTS_ENABLED",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
{
"name": "WINEDEBUG",
"description": "WINEDEBUG: Debug Level of wine",
@@ -164,20 +194,30 @@
"name": "WINETRICKS_RUN",
"description": "",
"env_variable": "WINETRICKS_RUN",
- "default_value": "vcrun2013 vcrun2017 corefonts dotnet48",
+ "default_value": "vcrun2019 dotnet48 corefonts",
"user_viewable": false,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
},
{
- "name": "Auto Update",
+ "name": "WINEARCH",
"description": "",
- "env_variable": "AUTO_UPDATE",
- "default_value": "1",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|boolean",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEPATH",
+ "description": "",
+ "env_variable": "WINEPATH",
+ "default_value": "\/home\/container",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
"field_type": "text"
}
]
diff --git a/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json b/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json
index 5f9e6e30..e1fa6c30 100644
--- a/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json
+++ b/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-11-26T17:31:15+01:00",
"name": "Space Engineers - Torch Server",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Torch is the successor to SE Server Extender and gives server admins the tools they need to keep their Space Engineers servers running smoothly. It features a user interface with live management tools and a plugin system so you can run your server exactly how you'd like. Torch is still in early development so there may be bugs and incomplete features.\r\n\r\n!!!!! DO NOT CANCEL THE FIRST START, OR YOU NEED TO DELETE THE SERVER AND CREATE FROM SCRATCH !!!!",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/squad/egg-squad.json b/game_eggs/steamcmd_servers/squad/egg-squad.json
index 5fbee199..672a4957 100644
--- a/game_eggs/steamcmd_servers/squad/egg-squad.json
+++ b/game_eggs/steamcmd_servers/squad/egg-squad.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-13T11:04:16+01:00",
+ "exported_at": "2023-04-11T11:41:50-06:00",
"name": "Squad",
"author": "brycea@terrahost.cloud",
"description": "Squad is a 50 vs 50 multiplayer first-person shooter that aims to capture combat realism through communication and teamplay. Major features include vehicle-based combined arms gameplay, large scale environments, base building, and integrated positional VoIP for proximity talking & radio.",
@@ -101,7 +101,7 @@
"field_type": "text"
},
{
- "name": "Reserved Slows",
+ "name": "Reserved Slots",
"description": "The number of reserved slots for admins \/ mods",
"env_variable": "reservedslots",
"default_value": "0",
diff --git a/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json b/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json
index 21c62948..780f11fa 100644
--- a/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json
+++ b/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json
@@ -6,7 +6,7 @@
},
"exported_at": "2022-12-30T11:39:51+01:00",
"name": "Stationeers",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Stationeers Server",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json
index 6ff877ef..037eb5ab 100644
--- a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json
+++ b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json
@@ -1,19 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-04-23T15:20:19+02:00",
+ "exported_at": "2023-05-21T09:59:37-07:00",
"name": "Subnautica",
"author": "tueye@tuworld.de",
- "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.5.0.0 is required",
+ "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.7.0.0 is required",
"features": [
"steam_disk_space"
],
- "images": [
- "ghcr.io\/parkervcp\/yolks:mono_latest"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest"
+ },
"file_denylist": [],
"startup": "mono .\/nitrox\/NitroxServer-Subnautica.exe",
"config": {
@@ -37,7 +37,8 @@
"default_value": "264710",
"user_viewable": false,
"user_editable": false,
- "rules": "required|numeric|digits_between:1,6"
+ "rules": "required|numeric|digits_between:1,6",
+ "field_type": "text"
},
{
"name": "Steam-Username",
@@ -46,7 +47,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:64"
+ "rules": "required|string|max:64",
+ "field_type": "text"
},
{
"name": "Steam-Password",
@@ -55,7 +57,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:64"
+ "rules": "required|string|max:64",
+ "field_type": "text"
},
{
"name": "Steam-GuardCode",
@@ -64,7 +67,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:6"
+ "rules": "nullable|string|max:6",
+ "field_type": "text"
},
{
"name": "Nitrox Version",
@@ -73,7 +77,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|between:3,12"
+ "rules": "required|string|between:3,12",
+ "field_type": "text"
},
{
"name": "Auto Save Interval",
@@ -82,7 +87,8 @@
"default_value": "120000",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric|digits_between:6,7"
+ "rules": "required|numeric|digits_between:6,7",
+ "field_type": "text"
},
{
"name": "Disable Auto Save",
@@ -91,7 +97,8 @@
"default_value": "False",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:True,False"
+ "rules": "required|string|in:True,False",
+ "field_type": "text"
},
{
"name": "Save Name",
@@ -100,7 +107,8 @@
"default_value": "world",
"user_viewable": true,
"user_editable": true,
- "rules": "alpha_dash|between:1,100"
+ "rules": "alpha_dash|between:1,100",
+ "field_type": "text"
},
{
"name": "Server Password",
@@ -109,7 +117,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|between:3,12"
+ "rules": "nullable|string|between:3,12",
+ "field_type": "text"
},
{
"name": "Admin Password",
@@ -118,7 +127,8 @@
"default_value": "PleaseChangeMe",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|between:3,16"
+ "rules": "required|string|between:3,16",
+ "field_type": "text"
},
{
"name": "Game Mode",
@@ -127,7 +137,8 @@
"default_value": "SURVIVAL",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE"
+ "rules": "required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE",
+ "field_type": "text"
},
{
"name": "Auto Portforward via UPnP",
@@ -136,7 +147,8 @@
"default_value": "False",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|in:True,False"
+ "rules": "required|string|in:True,False",
+ "field_type": "text"
},
{
"name": "Serializer Mode",
@@ -145,7 +157,18 @@
"default_value": "JSON",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|in:PROTOBUF,JSON"
+ "rules": "required|string|in:PROTOBUF,JSON",
+ "field_type": "text"
+ },
+ {
+ "name": "Extra Flags",
+ "description": "Extra flags for steamcmd download. Do not edit",
+ "env_variable": "EXTRA_FLAGS",
+ "default_value": "-beta legacy",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json b/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json
index 07374e03..4218b289 100644
--- a/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json
+++ b/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json
@@ -1,19 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-20T13:02:23-05:00",
+ "exported_at": "2023-07-28T16:36:08+02:00",
"name": "Sven Co-op",
"author": "pteroducktyl@yildri.nl",
"description": "Sven Co-op is a co-operative game originally based around Valve Software's Half-Life. In this game players must work together against computer controlled enemies and solve puzzles as a team.",
"features": [
"steam_disk_space"
],
- "images": [
- "quay.io\/pterodactyl\/core:source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
"file_denylist": [],
"startup": ".\/svends_run -console -port {{SERVER_PORT}} +maxplayers {{SC_PLAYERS}} +map {{SC_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
"config": {
@@ -24,8 +24,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Sven co-op Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\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\/steamcmd\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\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 276060 validate +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so",
- "container": "ubuntu:16.04",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -37,7 +37,8 @@
"default_value": "svencoop1",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string"
+ "rules": "required|string",
+ "field_type": "text"
},
{
"name": "Max Players",
@@ -46,7 +47,8 @@
"default_value": "12",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric|between:2,32"
+ "rules": "required|numeric|between:2,32",
+ "field_type": "text"
},
{
"name": "Server Name",
@@ -55,7 +57,8 @@
"default_value": "Sven Co-op server",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:40"
+ "rules": "required|string|max:40",
+ "field_type": "text"
},
{
"name": "Password",
@@ -64,7 +67,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string|max:20"
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
},
{
"name": "Region",
@@ -73,7 +77,8 @@
"default_value": "255",
"user_viewable": true,
"user_editable": true,
- "rules": "required|numeric|between:-1,255"
+ "rules": "required|numeric|between:-1,255",
+ "field_type": "text"
},
{
"name": "Source AppID",
@@ -82,7 +87,8 @@
"default_value": "276060",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|max:20",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md
new file mode 100644
index 00000000..e40fd1cc
--- /dev/null
+++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md
@@ -0,0 +1,21 @@
+# Swords 'n Magic and Stuff
+
+Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG.
+
+## Console
+Because there is not yet a real console this egg uses a wrapper that prints the log file to the console but it is a continue loop so it will keep sending the contents of the latest log file to the console. The console does not accept any input.
+
+There is a 30 seconds timeout before the wrapper will try to start the server as it needs to wait until the log file is written and the first lines are writen to that file.
+
+## first start
+Because of the wrapper the first start of the console will show no logs. On first start wait for vcrun2019 to install. Then hit restart.
+
+## Server Ports
+
+
+| Port | default |
+|-----------|---------|
+| Game | 7777 |
+| Query | 27015 |
+
+
diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json
new file mode 100644
index 00000000..0e9cd8f5
--- /dev/null
+++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json
@@ -0,0 +1,162 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-08-10T18:31:24+02:00",
+ "name": "Swords 'n Magic and Stuff",
+ "author": "josdekurk@gmail.com",
+ "description": "Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG",
+ "features": null,
+ "docker_images": {
+ "Wine": "ghcr.io\/parkervcp\/yolks:wine_latest"
+ },
+ "file_denylist": [],
+ "startup": "wine \/home\/container\/SNM2020\/Binaries\/Win64\/SNMASServer-Win64-Shipping.exe -port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Succeeded to create Steam session with ID\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/\r\n\r\nif [ ! -f \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini ]\r\nthen\r\n echo \"The config file does not yet exists, making a new one\"\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nelse\r\n echo \"Old config file found. Replacing it with a up to date one but a backup will be made\"\r\n mv \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game-$(date \"+%Y.%m.%d-%H.%M.%S\").ini.old\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "WINDOWS_INSTALL",
+ "description": "",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "App id",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2058450",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update the server on startup",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEARCH",
+ "description": "",
+ "env_variable": "WINEARCH",
+ "default_value": "win64",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|in:win32,win64",
+ "field_type": "text"
+ },
+ {
+ "name": "WINEDEBUG",
+ "description": "",
+ "env_variable": "WINEDEBUG",
+ "default_value": "-all",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "WINETRICKS_RUN",
+ "description": "",
+ "env_variable": "WINETRICKS_RUN",
+ "default_value": "vcrun2019",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Query port",
+ "description": "The port that Steam uses for clients to query the server (ping, etc)",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27015",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|",
+ "field_type": "text"
+ },
+ {
+ "name": "Server name",
+ "description": "This is the server name used for your server.\r\n\r\nYou must pick between 2 and 5 UNIQUE words (no duplicate words).\r\nThe words are case insensitive \r\nThe list of approved words changes can be found: `SNM2020\/Saved\/Logs\/Allowed-Words.txt`",
+ "env_variable": "SNM_NAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Admin steam id",
+ "description": "This the Steam ID of the owner\/admin of this server.",
+ "env_variable": "SNM_OWNER_STEAM_ID",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Server password",
+ "description": "This is the server password; it is disabled by default.",
+ "env_variable": "SNM_PASSWORD",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "Max players",
+ "description": "You can specify the maximum number of players",
+ "env_variable": "SNM_MAX_PLAYERS",
+ "default_value": "16",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|max:16",
+ "field_type": "text"
+ },
+ {
+ "name": "Reset time",
+ "description": "This is the number of days between resets.",
+ "env_variable": "SNM_DAYS_UNTIL_RESET",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "Reset time",
+ "description": "This is the local time of day when the server will\r\nreset. The format is HH:MM, and it is 24 hour format.\r\nMidnight => 00:00, 10:30AM => 10:30, 4:30PM => 16:30",
+ "env_variable": "SNM_RESET_TIME_OF_DAY",
+ "default_value": "00:00",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json
index 42dd6627..9e029455 100644
--- a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json
+++ b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-12-24T20:50:58+10:30",
+ "exported_at": "2023-07-13T23:07:08+01:00",
"name": "Team Fortress 2 Classic",
"author": "eggs@scattergun.io",
"description": "Team Fortress 2 Classic is a free mod of the 2007 game Team Fortress 2, developed by Eminoma and utilizing the Source engine.",
@@ -12,7 +12,7 @@
"steam_disk_space"
],
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:games_source": "ghcr.io\/parkervcp\/yolks:games_source"
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
},
"file_denylist": [],
"startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart -debug +maxplayers {{MAXPLAYERS}}",
@@ -24,7 +24,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## just in case someone removed the defaults.\r\napt install -y wget\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# 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## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} 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## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.zip https:\/\/tf2classic.org\/tf2c\/tf2classic-${GAMEVERSION}.zip\r\n\r\nunzip -o tf2classic.zip\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt install -y zstd\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.tar.zst https:\/\/wiki.tf2classic.com\/kachemak\/tf2classic-${GAMEVERSION}.tar.zst\r\n\r\ntar -xf tf2classic.tar.zst\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -81,4 +81,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json b/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json
index cee68026..0dd4ee8a 100644
--- a/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json
+++ b/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json
@@ -4,25 +4,27 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-03-09T20:07:00+01:00",
+ "exported_at": "2023-07-01T11:11:33+02:00",
"name": "The Isle",
"author": "fredrik.johansenfuun@gmail.com",
"description": "The Isle is an open beta with an open-world survival game where players choose from three factions in an attempt to survive a fierce island. Hunt. Prey. Survive.",
- "features": null,
+ "features": [
+ "steam_disk_space"
+ ],
"docker_images": {
- "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
},
"file_denylist": [],
- "startup": "\/home\/container\/steamcmd\/steamcmd.sh +force_install_dir \/home\/container +login Anonymous +app_update 412680 -beta evrima +quit && \/home\/container\/TheIsle\/Binaries\/Linux\/TheIsleServer-Linux-Shipping -Port=$SERVER_PORT -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8",
+ "startup": "\/home\/container\/TheIsle\/Binaries\/Linux\/TheIsleServer-Linux-Shipping -Port=$SERVER_PORT -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8",
"config": {
- "files": "{\r\n \"\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayerCount\": \"MaxPlayerCount={{server.build.env.PLAYER_COUNT}}\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.PLAYER_COUNT}}\",\r\n \"RconEnabled\": \"RconEnabled={{server.build.env.RCON}}\",\r\n \"RconPort\": \"RconPort={{server.build.env.RCON_PORT}}\",\r\n \"RconPassword\": \"RconPassword={{server.build.env.RCON_PASSWORD}}\",\r\n \"QueuePort\": \"QueuePort={{server.build.env.QUEUE_PORT}}\",\r\n \"discord\": \"discord={{server.build.env.DISCORD}}\",\r\n \"bEnableHumans\": \"bEnableHumans={{server.build.env.HUMANS}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"r.EyeAdaptation.BlackHistogramBucketInfluence =\"\r\n}",
+ "files": "{\r\n \"\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayerCount\": \"MaxPlayerCount={{server.build.env.PLAYER_COUNT}}\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.PLAYER_COUNT}}\",\r\n \"bRconEnabled\": \"bRconEnabled={{server.build.env.RCON}}\",\r\n \"RconPort\": \"RconPort={{server.build.env.RCON_PORT}}\",\r\n \"RconPassword\": \"RconPassword={{server.build.env.RCON_PASSWORD}}\",\r\n \"bQueueEnabled\": \"bQueueEnabled={{server.build.env.ENABLE_QUEUE}}\",\r\n \"QueuePort\": \"QueuePort={{server.build.env.QUEUE_PORT}}\",\r\n \"discord\": \"discord={{server.build.env.DISCORD}}\",\r\n \"bEnableHumans\": \"bEnableHumans={{server.build.env.HUMANS}}\",\r\n \"bServerPassword\": \"bServerPassword={{server.build.env.SERVER_PASSWORD_ENABLED}}\",\r\n \"ServerPassword\": \"ServerPassword={{server.build.env.SERVER_PASSWORD}}\",\r\n \"bAllowReplay\": \"bAllowReplay={{server.build.env.ALLOW_REPLAY}}\",\r\n \"bServerDynamicWeather\": \"bServerDynamicWeather={{server.build.env.DYNAMIC_WEATHER}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Display: Session started succesfully!\"\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) 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# The Isle\r\nmkdir -p \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n#Config File\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini << ENDOFFILE\r\n[\/Script\/Engine.Game]\r\nRconEnabled=${RCON}\r\nRconPort=${RCON_PORT}\r\nRconPassword=${RCON_PASSWORD}\r\n-\r\n[\/Script\/TheIsle.TIGameSession]\r\nServerName=${SERVER_NAME}\r\nMaxPlayerCount=${PLAYER_COUNT}\r\nbEnableGlobalChat=true\r\nbGlobalIsSpeciesOnly=false\r\nbLocalIsSpeciesOnly=true\r\nbEnableHumans=${HUMANS}\r\nLocalChatRange=20000.f\r\nQueuePort=${QUEUE_PORT}\r\ndiscord=${DISCORD}\r\n-\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${PLAYER_COUNT}\r\n-\r\n[\/Script\/TheIsle.TIGameStateBase]\r\nAdminsSteamIDs=${ADMINSTEAMID}\r\nENDOFFILE\r\n#Hotfix\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Engine.ini << ENDOFFILE\r\n[Core.System]\r\nPaths=..\/..\/..\/Engine\/Content\r\nPaths=%GAMEDIR%Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/SoundUtilities\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Synthesis\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/AudioSynesthesia\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/WebBrowserWidget\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/FX\/Niagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/PythonScriptPlugin\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/SteamCore\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/RVTObjectLandscapeBlending\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSS\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/DonMeshPainting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/UIPF\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/EOSCore\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ControlRig\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSSMoviePipelineSupport\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/MovieRenderPipeline\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Compositing\/OpenColorIO\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/SequencerScripting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/ImpostorBaker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/2D\/Paper2D\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Developer\/AnimationSharing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/GeometryMode\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/SpeedTreeImporter\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Enterprise\/DatasmithContent\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosClothEditor\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryProcessing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryCollectionPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosSolverPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosNiagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/MotoSynth\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Media\/MediaCompositing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXREyeTracker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXR\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXRHandTracking\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/VirtualProduction\/Takes\/Content\r\n\r\n[EpicOnlineServices]\r\nDedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW\r\nDedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8\r\nENDOFFILE\r\nchmod -R 777 \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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# The Isle\r\nmkdir -p \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n#Config File\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini << ENDOFFILE\r\n[\/Script\/TheIsle.TIGameSession]\r\nServerName=${SERVER_NAME}\r\nMaxPlayerCount=${PLAYER_COUNT}\r\nbRconEnabled=${RCON}\r\nRconPort=${RCON_PORT}\r\nRconPassword=${RCON_PASSWORD}\r\nbServerPassword=${SERVER_PASSWORD_ENABLED}\r\nServerPassword=${SERVER_PASSWORD}\r\nbServerDynamicWeather=${DYNAMIC_WEATHER}\r\nbAllowReplay=${ALLOW_REPLAY}\r\nbEnableHumans=${HUMANS}\r\nbQueueEnabled=${ENABLE_QUEUE}\r\nQueuePort=${QUEUE_PORT}\r\n-\r\n[\/Script\/TheIsle.TIGameStateBase]\r\nAdminsSteamIDs=${ADMINSTEAMID}\r\nENDOFFILE\r\n#Hotfix\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Engine.ini << ENDOFFILE\r\n[Core.System]\r\nPaths=..\/..\/..\/Engine\/Content\r\nPaths=%GAMEDIR%Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/SoundUtilities\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Synthesis\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/AudioSynesthesia\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/WebBrowserWidget\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/FX\/Niagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/PythonScriptPlugin\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/SteamCore\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/RVTObjectLandscapeBlending\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSS\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/DonMeshPainting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/UIPF\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/EOSCore\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ControlRig\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSSMoviePipelineSupport\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/MovieRenderPipeline\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Compositing\/OpenColorIO\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/SequencerScripting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/ImpostorBaker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/2D\/Paper2D\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Developer\/AnimationSharing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/GeometryMode\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/SpeedTreeImporter\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Enterprise\/DatasmithContent\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosClothEditor\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryProcessing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryCollectionPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosSolverPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosNiagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/MotoSynth\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Media\/MediaCompositing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXREyeTracker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXR\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXRHandTracking\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/VirtualProduction\/Takes\/Content\r\n\r\n[EpicOnlineServices]\r\nDedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW\r\nDedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8\r\nENDOFFILE\r\n\r\nchmod -R 777 \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -48,6 +50,36 @@
"rules": "required|numeric|digits_between:1,100",
"field_type": "text"
},
+ {
+ "name": "Allow Replay",
+ "description": "Enable or disable Replay",
+ "env_variable": "ALLOW_REPLAY",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Humans",
+ "description": "Enable or disable humans",
+ "env_variable": "HUMANS",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "Enable Dynamic weather",
+ "description": "Enable or disable dynamic weather",
+ "env_variable": "DYNAMIC_WEATHER",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
{
"name": "RCON",
"description": "Enable RCON",
@@ -64,7 +96,7 @@
"env_variable": "RCON_PORT",
"default_value": "44000",
"user_viewable": true,
- "user_editable": true,
+ "user_editable": false,
"rules": "required|numeric",
"field_type": "text"
},
@@ -72,19 +104,29 @@
"name": "RCON Password",
"description": "",
"env_variable": "RCON_PASSWORD",
- "default_value": "RCON_password_is_a_must",
+ "default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
+ {
+ "name": "Enable Queue",
+ "description": "Enable the queue",
+ "env_variable": "ENABLE_QUEUE",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
{
"name": "Queue Port",
"description": "",
"env_variable": "QUEUE_PORT",
"default_value": "44000",
"user_viewable": true,
- "user_editable": true,
+ "user_editable": false,
"rules": "required|numeric",
"field_type": "text"
},
@@ -94,20 +136,30 @@
"env_variable": "DISCORD",
"default_value": "norden",
"user_viewable": true,
- "user_editable": true,
+ "user_editable": false,
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
- "name": "Humans",
- "description": "Enable humans",
- "env_variable": "HUMANS",
+ "name": "Server Password",
+ "description": "Enable server password",
+ "env_variable": "SERVER_PASSWORD_ENABLED",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
+ {
+ "name": "Server Password",
+ "description": "The password of the server",
+ "env_variable": "SERVER_PASSWORD",
+ "default_value": "No password",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:20",
+ "field_type": "text"
+ },
{
"name": "Auto Update",
"description": "Auto update on restart",
@@ -118,6 +170,16 @@
"rules": "required|boolean",
"field_type": "text"
},
+ {
+ "name": "Beta branch of a steam app.",
+ "description": "",
+ "env_variable": "SRCDS_BETAID",
+ "default_value": "evrima",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
{
"name": "App id",
"description": "",
@@ -127,16 +189,6 @@
"user_editable": false,
"rules": "required|string|in:412680",
"field_type": "text"
- },
- {
- "name": "Beta ID",
- "description": "Beta branch of a steam app.",
- "env_variable": "SRCDS_BETAID",
- "default_value": "evrima",
- "user_viewable": false,
- "user_editable": false,
- "rules": "required|string|",
- "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md
new file mode 100644
index 00000000..089df2bc
--- /dev/null
+++ b/game_eggs/steamcmd_servers/thefront/README.md
@@ -0,0 +1,58 @@
+# The Front
+
+## Author & Contributers
+| Name | Github Profile | Buy me a Coffee |
+|:-------------:|:-------------:|:-------------:|
+| gOOvER | https://github.com/gOOvER | [Donate](https://www.paypal.com/donate/?hosted_button_id=83JB2X6H7DHXJ) |
+
+## Special Thanks
+Special thanks to [KRServers](https://krservers.de/) for spending me the Key
+
+## The Front
+The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.
+
+Steam: https://store.steampowered.com/app/2285150/The_Front/
+
+## Server Ports
+The Server needs 4 Ports. You can choose every Port you want
+
+| Port | default |
+|-------|---------|
+| Game | 27015 |
+| Beacon | 27016 |
+| Query | 27017 |
+| ShutDownService | 27018 |
+
+## Updating the Server
+Until the devs fix their linux server, you must reinstall the server on every update. Autoupdate is disabled and should NOT activated, because it can break your installation.
+
+## Hardware
+You need a min of 10GB for the Server.
+
+## Special Note
+> [!WARNING]
+> DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag
+
+
+## Server Tags
+You can use Server Tags with this Egg. But max is 5
+
+To be used in the variable as follows: `0,1,2,3,4`
+
+Available Server Tags
+
+0 = PVP
+1 = PVE
+2 = EXP Multiplikator
+3 = GatheringRate
+4 = KeepInventory
+5 = 45d wipe
+6 = 15d wipe
+7 = 30d wipe
+8 = 60d wipe
+
+## Troubleshooting
+
+- I get the error "**Server Connection has expired!**"
+ - Allocate and open all ports in your Firewall.
+
diff --git a/game_eggs/steamcmd_servers/thefront/egg-the-front.json b/game_eggs/steamcmd_servers/thefront/egg-the-front.json
new file mode 100644
index 00000000..0c8c8a8a
--- /dev/null
+++ b/game_eggs/steamcmd_servers/thefront/egg-the-front.json
@@ -0,0 +1,244 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-10-18T15:46:21+02:00",
+ "name": "The Front",
+ "author": "eggs@goover.dev",
+ "description": "The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.",
+ "features": [
+ "steam_disk_space"
+ ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/ProjectWar\/Binaries\/Linux\/TheFrontServer ProjectWar_Start?DedicatedServer -server -game -log -ServerTags=\"{{SRV_TAGS}}\" -UseSteamSocket={{STEAMSOCKET}} -Port=\"{{SERVER_PORT}}\" -BeaconPort=\"{{BEACON_PORT}}\" -ShutDownServicePort=\"{{SHUTDOWN_PORT}}\" -QueryPort=\"{{QUERY_PORT}}\" -ConfigServerName=\"{{CFG_NAME}}\" -OutIPAddress={{SERVER_IP}} -UserDir=\"\/home\/container\/TheFrontManager\/{{CFG_NAME}}\/\" -ServerName=\"{{SRV_NAME}}\" -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -Game.PhysicsVehicle=false -ansimalloc -Game.MaxFrameRate=35 -MaxQueueSize=50 -QueueValidTime=120 -QueueThreshold={{MAX_PLAYERS}} -ServerFightModeType={{GAMEMODE}} -IsCanSelfDamage={{SELFDMG}} -IsCanFriendDamage={{DMGALLIES}} -SaveWorldInterval={{SRV_SAVETIME}} -GMOverlapRatio=2 -GreenHand={{GREENHAND}} -SensitiveWords={{SENSITIVE_WORDS}} -UseACE={{ANTI_CHEAT}} -ServerAdminAccounts={{SRV_ADMIN}} -IsShowGmTitle={{ADMIN_LABEL}} -ServerPassword={{SRV_PW}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"LogLoad: (Engine Initialization) \"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# 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\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\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## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "[SERVER] Server Name",
+ "description": "no spaces und special signs",
+ "env_variable": "SRV_NAME",
+ "default_value": "Pterodactyl hosted Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:50",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Max Players",
+ "description": "The max number of players on your server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "10",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|between:1,80",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Config Name",
+ "description": "Name of the savefile. NO SPACE or SPECIAL signs",
+ "env_variable": "CFG_NAME",
+ "default_value": "new",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Server Password",
+ "description": "",
+ "env_variable": "SRV_PW",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] PvE",
+ "description": "off = PvP; on = PvE",
+ "env_variable": "GAMEMODE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Use Steam Socket",
+ "description": "Use Steam servers for network penetration. Enable this if you don't have a public IP but you want to allow players from outside your network to join your server. If disabled, only you and other players on your LAN can join. If you have a public IP, you do not need to enable this. Enabling this feature will affect latency. When Steam servers are busy, you may not be able to join this server.",
+ "env_variable": "STEAMSOCKET",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Damage self?",
+ "description": "Allows players to damage themselves.",
+ "env_variable": "SELFDMG",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Damage allies?",
+ "description": "Allows squadmates to damage each other.",
+ "env_variable": "DMGALLIES",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Server Admins",
+ "description": "Enter a 17-digit Steam ID. Use semicolons between each ID. GM level defaults to highest level (Lv. 25)",
+ "env_variable": "SRV_ADMIN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Label admin",
+ "description": "Toggles special admin icon.",
+ "env_variable": "ADMIN_LABEL",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Server save interval",
+ "description": "Server archive interval (in seconds)",
+ "env_variable": "SRV_SAVETIME",
+ "default_value": "300",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|integer|between:150,600",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Enable novice protection?",
+ "description": "When enabled, new characters will receive novice protection.",
+ "env_variable": "GREENHAND",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Server Tags",
+ "description": "MAX 5 -> \r\n\r\n0= PVP | \r\n1= PVE | \r\n2= EXP Multiplikator | \r\n3= GatheringRate | \r\n4= KeepInventory | \r\n5= 45d wipe | \r\n6= 15d wipe | \r\n7= 30d wipe | \r\n8= 60d wipe |",
+ "env_variable": "SRV_TAGS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Enable anticheat?",
+ "description": "Toggles anticheat.",
+ "env_variable": "ANTI_CHEAT",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[ADVANCED] Enable profanity?",
+ "description": "When disable, profanity will be blocked.",
+ "env_variable": "SENSITIVE_WORDS",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] Auto Update",
+ "description": "Autoupdate your Server on start\/restart",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "[SYSTEM] SRCDS_APPID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "2334200",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] BeaconPort",
+ "description": "port+1",
+ "env_variable": "BEACON_PORT",
+ "default_value": "27016",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] QueryPort",
+ "description": "port+2",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27017",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "[SERVER] ShutDownServicePort",
+ "description": "port +3",
+ "env_variable": "SHUTDOWN_PORT",
+ "default_value": "27017",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer|between:1024,65536",
+ "field_type": "text"
+ },
+ {
+ "name": "WINDOWS_INSTALL",
+ "description": "DO NOT REMOVE !!!",
+ "env_variable": "WINDOWS_INSTALL",
+ "default_value": "1",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|boolean",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json b/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json
index 2b3ce29d..172be105 100644
--- a/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json
+++ b/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-12-15T18:37:30+01:00",
+ "exported_at": "2023-04-24T17:42:49+02:00",
"name": "American Truck Simulator Dedicated Server",
"author": "chase@cstmgames.com",
"description": "This will set up SteamCMD and all the required files for the newly released American Truck Simulator Dedicated server. Simply placed the exported server config from your ATS instance to the .local\/share\/American Truck Simulator\/ folder and select start. Make sure that auto start is off on server creation to allow you to upload your config files.",
@@ -12,7 +12,7 @@
"steam_disk_space"
],
"docker_images": {
- "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
},
"file_denylist": [],
"startup": ".\/bin\/linux_x64\/amtrucks_server",
@@ -20,7 +20,7 @@
"files": "{\r\n \"\/.local\/share\/American Truck Simulator\/server_config.sii\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" connection_dedicated_port:\": \" connection_dedicated_port: {{server.build.default.port}}\",\r\n \" query_dedicated_port:\": \" query_dedicated_port: {{env.QUERY_PORT}}\",\r\n \" server_logon_token:\": \" server_logon_token: \\\"{{env.STEAM_TOKEN}}\\\"\",\r\n \" lobby_name:\": \" lobby_name: \\\"{{env.LOBBY_NAME}}\\\"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"[MP] Session running.\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
@@ -50,26 +50,6 @@
"rules": "required|string|in:2239530",
"field_type": "text"
},
- {
- "name": "Steam username",
- "description": "",
- "env_variable": "STEAM_USER",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:32",
- "field_type": "text"
- },
- {
- "name": "Steam password",
- "description": "",
- "env_variable": "STEAM_PASS",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:64",
- "field_type": "text"
- },
{
"name": "Query port",
"description": "By there readme of the game the query port must be between 27015-27020, but from our testing this port can be any port",
@@ -82,12 +62,12 @@
},
{
"name": "Steam Auth token",
- "description": "Acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required).",
+ "description": "By default, whenever a dedicated server is launched it is using an anonymous account. For such an account non-persistent server id is generated (used for direct search). To avoid this you can acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required)",
"env_variable": "STEAM_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:32",
+ "rules": "nullable|string|max:32",
"field_type": "text"
},
{
diff --git a/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json b/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json
index a8d52c2c..1f2356ca 100644
--- a/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json
+++ b/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-14T17:26:13+01:00",
+ "exported_at": "2023-04-24T17:19:01+02:00",
"name": "Euro Truck Simulator 2 Dedicated server",
"author": "josdekurk@gmail.com",
"description": "Travel across Europe as king of the road, a trucker who delivers important cargo across impressive distances! With dozens of cities to explore, your endurance, skill and speed will all be pushed to their limits.",
@@ -62,12 +62,12 @@
},
{
"name": "Steam Auth token",
- "description": "Acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required).",
+ "description": "By default, whenever a dedicated server is launched it is using an anonymous account. For such an account non-persistent server id is generated (used for direct search). To avoid this you can acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required)",
"env_variable": "STEAM_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:32",
+ "rules": "nullable|string|max:32",
"field_type": "text"
},
{
@@ -79,26 +79,6 @@
"user_editable": true,
"rules": "required|string|max:64",
"field_type": "text"
- },
- {
- "name": "Steam password",
- "description": "",
- "env_variable": "STEAM_PASS",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:64",
- "field_type": "text"
- },
- {
- "name": "Steam username",
- "description": "",
- "env_variable": "STEAM_USER",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string|max:32",
- "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/truck-simulator/server_config.sii b/game_eggs/steamcmd_servers/truck-simulator/server_config.sii
index f6bb06b6..68e714d9 100644
--- a/game_eggs/steamcmd_servers/truck-simulator/server_config.sii
+++ b/game_eggs/steamcmd_servers/truck-simulator/server_config.sii
@@ -8,7 +8,7 @@ server_config : _nameless.54e.4440 {
max_players: 8
max_vehicles_total: 100
max_ai_vehicles_player: 50
- max_ai_vehicles_player_spawn: 30
+ max_ai_vehicles_player_spawn: 50
connection_virtual_port: 100
query_virtual_port: 101
connection_dedicated_port: 27015
diff --git a/game_eggs/steamcmd_servers/unturned/README.md b/game_eggs/steamcmd_servers/unturned/README.md
index 3376abb0..ad425f9b 100644
--- a/game_eggs/steamcmd_servers/unturned/README.md
+++ b/game_eggs/steamcmd_servers/unturned/README.md
@@ -7,12 +7,17 @@ You're one of the few not yet turned zombie. Keeping it that way will be a chall
- Take a subtle approach sneaking around and making use of distractions.
- Confront and learn to counter special abilities ranging from invisibility to fire breathing to lightning attacks.
+## GSLT
+
+You can manually create GSLTs while logged in with your Steam account here: https://steamcommunity.com/dev/managegameservers
+
+Use Unturned's app ID 304930, and a memo to remind you which server the token is for.
+
## Server Ports
-Rocketmod requires 3 ports to run properly.
+Unturned requires 2 ports to run properly.
| Port | default |
|---------|---------|
| Game | 27015 |
| Game +1 | 27016 |
-| Game +2 | 27017 |
diff --git a/game_eggs/steamcmd_servers/unturned/egg-unturned.json b/game_eggs/steamcmd_servers/unturned/egg-unturned.json
index 8f4ad1b2..bda91e0b 100644
--- a/game_eggs/steamcmd_servers/unturned/egg-unturned.json
+++ b/game_eggs/steamcmd_servers/unturned/egg-unturned.json
@@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-01-20T13:04:52-05:00",
+ "exported_at": "2023-08-03T09:39:35+02:00",
"name": "Unturned",
"author": "parker@parkervcp.com",
"description": "Vanilla Unturned with the included RockerMod.",
"features": [
"steam_disk_space"
],
- "images": [
- "quay.io\/parkervcp\/pterodactyl-images:debian_source"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian"
+ },
"file_denylist": [],
- "startup": ".\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}}",
+ "startup": ".\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}} -GSLT {{GSLT}} -Name \"{{SRV_NAME}}\" -Password {{SRV_PW}} +InternetServer\/{{SRV_ID}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Loading level: 100%\"\r\n}",
@@ -24,12 +24,62 @@
},
"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\n\r\nDEBIAN_FRONTEND=noninteractive\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} +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 \/mnt\/server\/.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 \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Specific to Unturned\r\ncd \/mnt\/server\/\r\nln -s ..\/..\/..\/steamcmd\/linux64\/steamclient.so Unturned_Headless_Data\/Plugins\/x86_64\/steamclient.so\r\nln -s ..\/Extras\/Rocket.Unturned\/ Modules\/",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_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## add below your custom commands if needed\r\n\r\n## Specific to Unturned\r\ncd \/mnt\/server\/\r\nln -s ..\/..\/..\/steamcmd\/linux64\/steamclient.so Unturned_Headless_Data\/Plugins\/x86_64\/steamclient.so\r\nln -s ..\/Extras\/Rocket.Unturned\/ Modules\/\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
+ {
+ "name": "Server Name",
+ "description": "",
+ "env_variable": "SRV_NAME",
+ "default_value": "Pterodactyl hosted Server",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "string|max:50",
+ "field_type": "text"
+ },
+ {
+ "name": "Server Password",
+ "description": "",
+ "env_variable": "SRV_PW",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "GSLT",
+ "description": "",
+ "env_variable": "GSLT",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Server ID",
+ "description": "ID of the server for savegames",
+ "env_variable": "SRV_ID",
+ "default_value": "PterodactylUnturned",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "string",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto update",
+ "description": "Auto update on restart",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
{
"name": "Steam App ID",
"description": "Steam App ID require for install and startup update",
@@ -37,7 +87,8 @@
"default_value": "1110390",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20"
+ "rules": "required|string|in:1110390",
+ "field_type": "text"
},
{
"name": "ld lib path",
@@ -46,25 +97,8 @@
"default_value": ".\/Unturned_Headless_Data\/Plugins\/x86_64\/",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string"
- },
- {
- "name": "Steam User",
- "description": "Should be left blank for anon user",
- "env_variable": "STEAM_USER",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string"
- },
- {
- "name": "Steam Password",
- "description": "",
- "env_variable": "STEAM_PASS",
- "default_value": "",
- "user_viewable": true,
- "user_editable": true,
- "rules": "nullable|string"
+ "rules": "required|string",
+ "field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json
index c87ab7fc..46bb2ff4 100644
--- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json
+++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-15T14:46:32+01:00",
+ "exported_at": "2023-11-10T17:55:31+01:00",
"name": "V Rising BepInEx",
"author": "rehlmgaming@gmail.com",
"description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.",
@@ -17,7 +17,7 @@
"file_denylist": [],
"startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0",
"config": {
- "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnMasterServer\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}",
"logs": "{}",
"stop": "^C"
@@ -284,10 +284,10 @@
"name": "WINETRICKS_RUN",
"description": "",
"env_variable": "WINETRICKS_RUN",
- "default_value": "vcrun2019 dotnet48",
+ "default_value": "mono vcrun2022",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20",
+ "rules": "required|string|max:50",
"field_type": "text"
},
{
diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json b/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json
index e06cdbbc..2c45be00 100644
--- a/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json
+++ b/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-13T12:18:05+01:00",
+ "exported_at": "2023-05-18T09:31:34+00:00",
"name": "V Rising",
"author": "rehlmgaming@gmail.com",
"description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.",
@@ -17,14 +17,14 @@
"file_denylist": [],
"startup": "wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0",
"config": {
- "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnMasterServer\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.LIST_STEAM}}\",\r\n \"ListOnEOS\": \"{{server.build.env.LIST_EOS}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"CompressSaveFiles\": \"{{server.build.env.COMPRESS_SAVES}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"API.Enabled\": \"{{server.build.env.ENABLE_API}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/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\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2023\/05\/18\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Install required packages.\r\napt -y update && apt -y --no-install-recommends install dos2unix\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/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\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings\r\n# Check for successful installation.\r\ncd $HOME\/VRisingServer_Data\/StreamingAssets\/Settings\r\nif [[ -f ServerHostSettings.json ]]; then\r\n # Copies default ServerHostSettings file to save-data directory.\r\n # Also converts the contents to use Unix newlines so Ptero's JSON parser does not fail.\r\n dos2unix -n ServerHostSettings.json $HOME\/save-data\/Settings\/ServerHostSettings.json\r\nelse\r\n echo -e \"\\n\\nSteamCMD failed to install the V Rising Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\necho -e \"\\nV Rising Dedicated Server successfully installed!\\n\"",
"container": "ghcr.io\/pterodactyl\/installers:debian",
"entrypoint": "\/bin\/bash"
}
@@ -141,9 +141,19 @@
"field_type": "text"
},
{
- "name": "List On Master Server",
- "description": "Set to true to list on the server list, else set to false.",
- "env_variable": "SERVER_LIST",
+ "name": "List On Steam",
+ "description": "Set to true to list on the Steam server list, else set to false.",
+ "env_variable": "LIST_STEAM",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "List On Epic",
+ "description": "Set to true to list on the Epic Online Services server list, else set to false.",
+ "env_variable": "LIST_EOS",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
@@ -170,6 +180,26 @@
"rules": "required|integer|min:1",
"field_type": "text"
},
+ {
+ "name": "[Advanced] Compress Save Files",
+ "description": "Set to true to compress world save files, else set to false.",
+ "env_variable": "COMPRESS_SAVES",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "[Advanced] Enable API",
+ "description": "Set to true to allow responses to public API requests to the server, else set to false.",
+ "env_variable": "ENABLE_API",
+ "default_value": "false",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
{
"name": "[Advanced] Enable RCON",
"description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon",
@@ -252,32 +282,32 @@
},
{
"name": "[SYSTEM] WINEDEBUG",
- "description": "don't change",
+ "description": "Used to suppress WINE FIXME messages. Rarely needs to be changed.",
"env_variable": "WINEDEBUG",
"default_value": "-all",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20",
+ "rules": "required|string",
"field_type": "text"
},
{
"name": "[SYSTEM] WINEARCH",
- "description": "don't change",
+ "description": "Used for compatibility. Cannot be changed.",
"env_variable": "WINEARCH",
"default_value": "win64",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20",
+ "rules": "required|string|in:win64",
"field_type": "text"
},
{
"name": "[SYSTEM] WINEPATH",
- "description": "don't change",
+ "description": "Used for compatibility. Cannot be changed.",
"env_variable": "WINEPATH",
"default_value": "\/home\/container",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:20",
+ "rules": "required|string|in:\/home\/container",
"field_type": "text"
}
]
diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json
index b2f3879f..ab2dca35 100644
--- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json
+++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json
@@ -6,7 +6,7 @@
},
"exported_at": "2023-03-03T16:16:01+01:00",
"name": "Valheim BepINex",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture incl the Plugin Framework BepInEx",
"features": [
"steam_disk_space"
diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md b/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md
index 66427737..d9e7f379 100644
--- a/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md
+++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md
@@ -14,7 +14,7 @@ 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
+Support: https://github.com/Grantapher/ValheimPlus
Discord: https://discord.gg/AmH6Va97GT
***!!! ATTENTION !!!***
diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json
index 82968fc1..d30ba605 100644
--- a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json
+++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json
@@ -4,9 +4,9 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-03-03T16:15:23+01:00",
+ "exported_at": "2023-10-07T06:47:10+02:00",
"name": "Valheim Plus Mod",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.",
"features": [
"steam_disk_space"
@@ -184,7 +184,7 @@
"name": "[V+] Github Package",
"description": "",
"env_variable": "GITHUB_PACKAGE",
- "default_value": "valheimPlus\/ValheimPlus",
+ "default_value": "Grantapher\/ValheimPlus",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|max:40",
diff --git a/game_eggs/terraria/tmodloader/egg-t-modloader.json b/game_eggs/terraria/tmodloader/egg-t-modloader.json
index ccbee327..43af8d20 100755
--- a/game_eggs/terraria/tmodloader/egg-t-modloader.json
+++ b/game_eggs/terraria/tmodloader/egg-t-modloader.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-04T11:17:39+01:00",
+ "exported_at": "2023-04-09T04:34:42+02:00",
"name": "tModloader",
"author": "parker@parkervcp.com",
"description": "tModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.",
@@ -13,7 +13,7 @@
"Dotnet 6": "ghcr.io\/parkervcp\/yolks:dotnet_6"
},
"file_denylist": [],
- "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~\/saves\/Worlds\/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods",
+ "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~\/saves\/Worlds\/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -config serverconfig.txt -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods",
"config": {
"files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"difficulty\": \"difficulty={{server.build.env.DIFFICULTY}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}",
@@ -129,4 +129,4 @@
"field_type": "text"
}
]
-}
+}
\ No newline at end of file
diff --git a/game_eggs/terraria/tshock/egg-tshock.json b/game_eggs/terraria/tshock/egg-tshock.json
index c82cb557..8d34c3ab 100644
--- a/game_eggs/terraria/tshock/egg-tshock.json
+++ b/game_eggs/terraria/tshock/egg-tshock.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-11-06T14:39:45+01:00",
+ "exported_at": "2023-03-19T08:36:18+01:00",
"name": "tshock",
"author": "parker@parkervcp.com",
"description": "The t-shock modded terraria server.\r\n\r\nhttps:\/\/tshock.co\/",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget jq file unzip\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\")\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i \"linux-x64\" | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"linux-x64\" | head -1 )\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i \"linux-x64\" | head -1)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK -O TShock.zip\r\n\r\nunzip -o TShock.zip\r\n\r\ntar xvf TShock-*.tar\r\n\r\nrm TShock.zip TShock-*.tar\r\n\r\nchmod +x TShock.Server\r\n\r\necho -e \"install complete\"",
+ "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget jq file unzip\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\necho ${MATCH}\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH} | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH} | head -1 )\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH} | head -1)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK -O TShock.zip\r\n\r\nunzip -o TShock.zip\r\n\r\ntar xvf TShock-*.tar\r\n\r\nrm TShock.zip TShock-*.tar\r\n\r\nchmod +x TShock.Server\r\n\r\necho -e \"install complete\"",
"container": "debian:bullseye-slim",
"entrypoint": "\/bin\/bash"
}
@@ -69,4 +69,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json b/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json
index 1a5ef0bb..23a8a486 100644
--- a/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json
+++ b/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-08T16:22:11+01:00",
+ "exported_at": "2023-03-26T16:13:26+02:00",
"name": "OpenTTD Server",
"author": "admin@justmyrandomstuff.com",
"description": "OpenTTD is an open source simulation game based upon the popular Microprose game \"Transport Tycoon Deluxe\", written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.\r\n\r\nOpenTTD is modelled after the original Transport Tycoon game by Chris Sawyer and enhances the game experience dramatically. Many features were inspired by TTDPatch while others are original.",
@@ -22,8 +22,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\napk add --no-cache wget binutils xz curl\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting file from: https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-debian-bullseye-amd64.deb\"\r\nwget https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-debian-bullseye-amd64.deb -O openttd.deb\r\nar -x openttd.deb\r\ntar -xvf data.tar.*\r\ncp -a usr\/share\/games\/openttd\/* .\/\r\ncp -a usr\/games\/openttd .\/\r\nchmod +x openttd\r\n\r\nrm -fR usr\/share\/games\/openttd\/\r\nrm -fR usr\/games\/openttd\r\n\r\nwget https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip -O opengfx.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz debian-binary open*deb\r\n\r\n[ -f \/home\/container\/openttd.cfg ] || curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
- "container": "alpine:3.16",
+ "script": "#!\/bin\/ash\r\napk add --no-cache xz curl tar unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho -e \"\\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz\"\r\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz \r\n\r\necho -e \"\\nUnpacking tar\"\r\ntar -xf openttd-linux.tar.xz --strip-components=1\r\nrm openttd-linux.tar.xz\r\nchmod +x openttd\r\n\r\necho -e \"\\nRunning curl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\"\r\ncurl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz\r\n\r\n[ -f \/home\/container\/openttd.cfg ] || curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "alpine:latest",
"entrypoint": "ash"
}
},
@@ -45,14 +45,14 @@
"default_value": "true",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:5",
+ "rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "OpenTTD Version",
- "description": "The version of OpenTTD i.e. 1.10.1",
+ "description": "The version of OpenTTD i.e. 12.2",
"env_variable": "OPENTTD_VERSION",
- "default_value": "12.2",
+ "default_value": "13.0-RC2",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
@@ -60,7 +60,7 @@
},
{
"name": "OpenGFX Version",
- "description": "The OpenGFX Version i.e. 0.6.0",
+ "description": "The OpenGFX Version i.e. 7.1",
"env_variable": "OPENGFX_VERSION",
"default_value": "7.1",
"user_viewable": true,
@@ -69,4 +69,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/game_eggs/vintage_story/egg-vintage-story.json b/game_eggs/vintage_story/egg-vintage-story.json
index aad82472..d9ff2f7f 100644
--- a/game_eggs/vintage_story/egg-vintage-story.json
+++ b/game_eggs/vintage_story/egg-vintage-story.json
@@ -4,16 +4,16 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-03-09T19:41:11+01:00",
+ "exported_at": "2023-08-10T18:09:03+02:00",
"name": "Vintage Story",
"author": "mail@wuffy.eu",
"description": "Vintage Story is an uncompromising wilderness survival sandbox game inspired by lovecraftian horror themes. Find yourself in a ruined world reclaimed by nature and permeated by unnerving temporal disturbances. Relive the advent of human civilization, or take your own path.",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest"
+ "Dotnet 7": "ghcr.io\/parkervcp\/yolks:dotnet_7"
},
"file_denylist": [],
- "startup": "mono VintagestoryServer.exe --dataPath .\/data --port={{SERVER_PORT}} --maxclients={{MAX_CLIENTS}} {{OPTIONS}}",
+ "startup": ".\/VintagestoryServer --dataPath .\/data --port={{SERVER_PORT}} --maxclients={{MAX_CLIENTS}} {{OPTIONS}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Dedicated Server now running on Port \"\r\n}",
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# Vintage Story Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl jq\r\n\r\nBRANCH=\"${FILES_BRANCH}\"\r\n\r\n# Fetching latest stable server release\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n case \"${BRANCH}\" in\r\n \"stable\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n ;;\r\n \"unstable\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/unstable.json\"\r\n ;;\r\n \"pre\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/pre.json\"\r\n ;;\r\n *)\r\n echo \"Invalid stage; fallback to stable\"\r\n API_URL=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n ;;\r\n esac\r\n DOWNLOAD_URL=$(curl -SsL \"$API_URL\" | jq -r 'if ([.[]] | .[0].server.urls.cdn) != null then [.[]] | .[0].server.urls.cdn else [.[]] | .[0].server.urls.local end');\r\n# Use specified server release\r\nelse\r\n case \"${BRANCH}\" in\r\n \"stable\")\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n \"unstable\")\r\n DOWNLOAD_URL=https:\/\/account.vintagestory.at\/files\/unstable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n \"pre\")\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/pre\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n *)\r\n echo \"Invalid stage; fallback to stable\"\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n esac\r\nfi\r\n\r\ncd \/mnt\/server\/ || exit\r\n\r\ncurl -o vs_server.tar.gz \"${DOWNLOAD_URL}\"\r\ntar -xzf vs_server.tar.gz\r\n\r\nrm vs_server.tar.gz\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "script": "#!\/bin\/bash\r\n# Vintage Story Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl jq\r\n\r\n#!\/bin\/bash\r\n\r\ndeclare -A API_URLS=(\r\n [\"stable\"]=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n [\"unstable\"]=\"http:\/\/api.vintagestory.at\/unstable.json\"\r\n [\"pre\"]=\"http:\/\/api.vintagestory.at\/pre.json\"\r\n)\r\n\r\ndeclare -A DOWNLOAD_URLS=(\r\n [\"stable\"]=\"https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n [\"unstable\"]=\"https:\/\/account.vintagestory.at\/files\/unstable\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n [\"pre\"]=\"https:\/\/cdn.vintagestory.at\/gamefiles\/pre\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n)\r\n\r\nBRANCH=\"${FILES_BRANCH}\"\r\n\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n API_URL=\"${API_URLS[$BRANCH]}\"\r\n DOWNLOAD_URL=$(curl -SsL \"$API_URL\" | jq -r 'if ([.[]] | .[0].linuxserver.urls.cdn) != null then [.[]] | .[0].linuxserver.urls.cdn else [.[]] | .[0].linuxserver.urls.local end')\r\nelse\r\n API_URL=\"${API_URLS[$BRANCH]}\"\r\n DOWNLOAD_URL=\"${DOWNLOAD_URLS[$BRANCH]}\"\r\nfi\r\n\r\n# Fallback to stable API URL if the branch is not recognized\r\nif [ -z \"$API_URL\" ]; then\r\n echo \"Invalid stage; fallback to stable\"\r\n API_URL=\"${API_URLS[\"stable\"]}\"\r\nfi\r\n\r\necho \"API URL: $API_URL\"\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\n\r\ncd \/mnt\/server\/ || exit\r\n\r\ncurl -o vs_server.tar.gz \"${DOWNLOAD_URL}\"\r\ntar -xzf vs_server.tar.gz\r\n\r\nrm vs_server.tar.gz\r\nrm server.sh\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
@@ -69,4 +69,4 @@
"field_type": "text"
}
]
-}
\ No newline at end of file
+}
diff --git a/generic/README.md b/generic/README.md
index ee032791..91cd1eb4 100644
--- a/generic/README.md
+++ b/generic/README.md
@@ -1,5 +1,15 @@
# Generic Language
+### [C#](c%23)
+
+[C#](https://learn.microsoft.com/en-us/dotnet/csharp//)
+A generic C# language egg running with dotnet
+
+### [Elixir](elixir)
+
+[elixir](https://elixir-lang.org/)
+A generic Elixir language egg
+
### [Dart](dart)
[dart](https://dart.dev/)
@@ -30,6 +40,11 @@ A generic Lua (Luvit) language egg
[nodejs](https://nodejs.org)
A generic Node.JS egg
+### [Bun](bun)
+
+[bun](https://bun.sh)
+A generic Bun egg
+
### [nodemon](nodemon)
[nodemon](https://nodemon.io/)
diff --git a/generic/bun/README.md b/generic/bun/README.md
new file mode 100644
index 00000000..6f2b7adc
--- /dev/null
+++ b/generic/bun/README.md
@@ -0,0 +1,24 @@
+# Bun - JavaScript & TypeScript Generic
+
+## From their [site](https://bun.sh/)
+
+This egg is designed to run any generic Bun application, allowing users to pull their own Bun source code from a Git repository.
+
+There is an option to allow a user to upload their own files to run a server.
+
+The startup configs and commands may need changing to actually function properly.
+
+## Configuration
+
+The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
+
+
+You can use arrays to have multiple different values when different bots are being used
+
+```json
+{
+ "done":[
+ "change this text 1",
+ "change this text 2"
+ ]
+}
diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json
new file mode 100644
index 00000000..97eeaad6
--- /dev/null
+++ b/generic/bun/egg-bun.json
@@ -0,0 +1,123 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-09-13T17:51:41+02:00",
+ "name": "Bun",
+ "author": "mratox@protonmail.com",
+ "description": "Bun is an incredibly fast JavaScript runtime, transpiler bundler, and npm package manager all-in-one.",
+ "features": null,
+ "docker_images": {
+ "Bun Latest": "ghcr.io\/parkervcp\/yolks:bun_latest",
+ "Bun Canary": "ghcr.io\/parkervcp\/yolks:bun_canary"
+ },
+ "file_denylist": [],
+ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; bun run {{MAIN_FILE}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Bun App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n\r\necho \"Installing bun packages\"\r\nif [[ ! -z ${BUN_PACKAGES} ]]; then\r\n bun install ${BUN_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n bun install --production\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Git Repository Address",
+ "description": "The Git repository address to clone .",
+ "env_variable": "GIT_ADDRESS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "User Uploaded Files",
+ "description": "Skip all the install stuff if you are letting a user upload files.\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "USER_UPLOAD",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "Pull the latest files on startup when using a Git Repository.\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Main file",
+ "description": "The main file passed to the bun run command",
+ "env_variable": "MAIN_FILE",
+ "default_value": "index.js",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Additional Bun Packages",
+ "description": "Install additional bun packages.\r\nUse spaces to separate",
+ "env_variable": "BUN_PACKAGES",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Uninstall Bun Packages",
+ "description": "Uninstall bun packages.\r\nUse spaces to separate",
+ "env_variable": "RMBUN_PACKAGES",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Branch",
+ "description": "The Git branch to install.",
+ "env_variable": "BRANCH",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Username",
+ "description": "Git username for authentication.",
+ "env_variable": "USERNAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Access Token",
+ "description": "Git access token for authentication.",
+ "env_variable": "ACCESS_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/generic/c#/README.md b/generic/c#/README.md
new file mode 100644
index 00000000..ea246ad4
--- /dev/null
+++ b/generic/c#/README.md
@@ -0,0 +1,22 @@
+# C# Language Generic
+
+This egg is designed to run any generic C# application, allowing users to pull their own C# source code from a Github repository.
+
+There is an option to allow a user to upload their own files to run a bot.
+
+The startup configs and commands may need changing to actually function properly.
+
+## Configuration
+
+The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
+
+
+You can use arrays to have multiple different values when different bots are being used
+
+```json
+{
+ "done":[
+ "change this text 1",
+ "change this text 2"
+ ]
+}
diff --git a/generic/c#/egg-generic-c.json b/generic/c#/egg-generic-c.json
new file mode 100644
index 00000000..dcdb7bea
--- /dev/null
+++ b/generic/c#/egg-generic-c.json
@@ -0,0 +1,116 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-07-02T19:22:35+02:00",
+ "name": "Generic C#",
+ "author": "josdekurk@gmail.com",
+ "description": "A generic C# (dotnet) egg that runs your C# project.",
+ "features": null,
+ "docker_images": {
+ "Dotnet_7": "ghcr.io\/parkervcp\/yolks:dotnet_7",
+ "Dotnet_6": "ghcr.io\/parkervcp\/yolks:dotnet_6",
+ "Dotnet_5": "ghcr.io\/parkervcp\/yolks:dotnet_5",
+ "Dotnet_3.1": "ghcr.io\/parkervcp\/yolks:dotnet_3.1",
+ "Dotnet_2.1": "ghcr.io\/parkervcp\/yolks:dotnet_2.1"
+ },
+ "file_denylist": [],
+ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; cd {{PROJECT_DIR}}; dotnet restore; dotnet run --project {{PROJECT_FILE}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y git curl jq file unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Git Repo Address",
+ "description": "GitHub Repo to clone\r\n\r\nI.E. https:\/\/github.com\/parkervcp\/repo_name",
+ "env_variable": "GIT_ADDRESS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Install Branch",
+ "description": "The branch to install.",
+ "env_variable": "BRANCH",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "User Uploaded Files",
+ "description": "Skip all the install stuff if you are letting a user upload files.\r\n\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "USER_UPLOAD",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "Pull the latest files on startup when using a GitHub repo.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Username",
+ "description": "Username to auth with git.",
+ "env_variable": "USERNAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Access Token",
+ "description": "Password to use with git.\r\n\r\nIt's best practice to use a Personal Access Token.\r\nhttps:\/\/github.com\/settings\/tokens\r\nhttps:\/\/gitlab.com\/-\/profile\/personal_access_tokens",
+ "env_variable": "ACCESS_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "project file",
+ "description": "The main project file if multiple are present",
+ "env_variable": "PROJECT_FILE",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Project location",
+ "description": "The location of where the .csproj file is located. not the .sln file!",
+ "env_variable": "PROJECT_DIR",
+ "default_value": "\/home\/container",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/generic/elixir/README.md b/generic/elixir/README.md
new file mode 100644
index 00000000..98a8c7ed
--- /dev/null
+++ b/generic/elixir/README.md
@@ -0,0 +1,22 @@
+# Elixir Language Generic
+
+This egg is designed to run any generic Elixir application, allowing users to pull their own Elixir source code from a Git repository.
+
+There is an option to allow a user to upload their own files to run a server.
+
+The startup configs and commands may need changing to actually function properly.
+
+## Configuration
+
+The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
+
+
+You can use arrays to have multiple different values when different bots are being used
+
+```json
+{
+ "done":[
+ "change this text 1",
+ "change this text 2"
+ ]
+}
diff --git a/generic/elixir/egg-elixir.json b/generic/elixir/egg-elixir.json
new file mode 100644
index 00000000..6142957d
--- /dev/null
+++ b/generic/elixir/egg-elixir.json
@@ -0,0 +1,96 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-08-31T14:24:13+02:00",
+ "name": "Elixir",
+ "author": "mravox@proton.me",
+ "description": "Elixir is a functional, concurrent, high-level general-purpose programming language that runs on the BEAM virtual machine, which is also used to implement the Erlang programming language.",
+ "features": null,
+ "docker_images": {
+ "Elixir Latest": "ghcr.io\/parkervcp\/yolks:elixir_latest",
+ "Elixir 1.15": "ghcr.io\/parkervcp\/yolks:elixir_1.15",
+ "Elixir 1.14": "ghcr.io\/parkervcp\/yolks:elixir_1.14",
+ "Elixir 1.13": "ghcr.io\/parkervcp\/yolks:elixir_1.13",
+ "Elixir 1.12": "ghcr.io\/parkervcp\/yolks:elixir_1.12"
+ },
+ "file_denylist": [],
+ "startup": "if [[ -d .git ]] && [[ 0 == \"1\" ]]; then git pull; fi; mix deps.get; mix run --no-halt",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Elixir App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${GIT_USERNAME}\" ] && [ -z \"${GIT_ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${GIT_ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git elixir repository\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${GIT_BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${GIT_BRANCH}'\"\r\n git clone --single-branch --branch ${GIT_BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "debian:bullseye-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Git Repository Address",
+ "description": "The Git repository address to clone .",
+ "env_variable": "GIT_ADDRESS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Branch",
+ "description": "The Git branch to install.",
+ "env_variable": "GIT_BRANCH",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "User Uploaded Files",
+ "description": "Skip all the install stuff if you are letting a user upload files.\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "USER_UPLOAD",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Auto Update",
+ "description": "Pull the latest files on startup when using a Git Repository.\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Username",
+ "description": "Git username for authentication.",
+ "env_variable": "GIT_USERNAME",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Git Access Token",
+ "description": "Git access token for authentication.",
+ "env_variable": "GIT_ACCESS_TOKEN",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string",
+ "field_type": "text"
+ }
+ ]
+}
diff --git a/generic/java/README.md b/generic/java/README.md
index 5f4e909c..987ebe2f 100644
--- a/generic/java/README.md
+++ b/generic/java/README.md
@@ -1,6 +1,6 @@
# Java Language Generic
-This egg is designed to run any generic Java application, allowing users to pull their own Java source code from a Github repository. This egg is also compatible with Kotin.
+This egg is designed to run any generic Java application, allowing users to pull their own Java source code from a Github repository. This egg is also compatible with Kotlin.
There is an option to allow a user to upload their own files to run a bot.
diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json
index 5b5dc27e..d7418cca 100644
--- a/generic/nodejs/egg-node-js-generic.json
+++ b/generic/nodejs/egg-node-js-generic.json
@@ -4,31 +4,32 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-27T20:19:13+01:00",
+ "exported_at": "2023-10-24T17:44:31+02:00",
"name": "node.js generic",
"author": "parker@parkervcp.com",
"description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:nodejs_18": "ghcr.io\/parkervcp\/yolks:nodejs_18",
- "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17",
- "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16",
- "ghcr.io\/parkervcp\/yolks:nodejs_15": "ghcr.io\/parkervcp\/yolks:nodejs_15",
- "ghcr.io\/parkervcp\/yolks:nodejs_14": "ghcr.io\/parkervcp\/yolks:nodejs_14",
- "ghcr.io\/parkervcp\/yolks:nodejs_12": "ghcr.io\/parkervcp\/yolks:nodejs_12"
+ "Nodejs 20": "ghcr.io\/parkervcp\/yolks:nodejs_20",
+ "Nodejs 19": "ghcr.io\/parkervcp\/yolks:nodejs_19",
+ "Nodejs 18": "ghcr.io\/parkervcp\/yolks:nodejs_18",
+ "Nodejs 17": "ghcr.io\/parkervcp\/yolks:nodejs_17",
+ "Nodejs 16": "ghcr.io\/parkervcp\/yolks:nodejs_16",
+ "Nodejs 14": "ghcr.io\/parkervcp\/yolks:nodejs_14",
+ "Nodejs 12": "ghcr.io\/parkervcp\/yolks:nodejs_12"
},
"file_denylist": [],
- "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}}",
+ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; else \/usr\/local\/bin\/ts-node --esm \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; fi",
"config": {
"files": "{}",
- "startup": "{\r\n \"done\": \"change this part\"\r\n}",
+ "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\necho -e \"updating npm. please wait...\"\r\nnpm install npm@latest -g\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
- "container": "node:14-buster-slim",
+ "container": "node:18-bullseye-slim",
"entrypoint": "bash"
}
},
@@ -73,16 +74,6 @@
"rules": "required|boolean",
"field_type": "text"
},
- {
- "name": "JS file",
- "description": "The file that starts the app",
- "env_variable": "JS_FILE",
- "default_value": "index.js",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|string",
- "field_type": "text"
- },
{
"name": "Additional Node packages",
"description": "Install additional node packages.\r\n\r\nUse spaces to separate.",
@@ -122,6 +113,26 @@
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
+ },
+ {
+ "name": "Main file",
+ "description": "The file that starts the app.\r\nCan be .js and .ts",
+ "env_variable": "MAIN_FILE",
+ "default_value": "index.js",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:16",
+ "field_type": "text"
+ },
+ {
+ "name": "Additional Arguments.",
+ "description": "Any extra arguments for nodejs or ts-node",
+ "env_variable": "NODE_ARGS",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/generic/python/egg-python-generic.json b/generic/python/egg-python-generic.json
index deb33f8d..96e126e3 100644
--- a/generic/python/egg-python-generic.json
+++ b/generic/python/egg-python-generic.json
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-27T23:37:50-08:00",
+ "exported_at": "2023-06-22T14:18:47+02:00",
"name": "python generic",
"author": "parker@parkervcp.com",
"description": "A Generic Python Egg for Pterodactyl\r\n\r\nTested with: https:\/\/github.com\/Ispira\/pixel-bot",
@@ -28,7 +28,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Python App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git python repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\nexport HOME=\/mnt\/server\r\n\r\necho \"Installing python requirements into folder\"\r\nif [[ ! -z ${PY_PACKAGES} ]]; then\r\n pip install -U --prefix .local ${PY_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/requirements.txt ]; then\r\n pip install -U --prefix .local -r ${REQUIREMENTS_FILE}\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
- "container": "python:3.8-slim",
+ "container": "python:3.8-slim-bullseye",
"entrypoint": "bash"
}
},
diff --git a/software/foldingathome/README.md b/software/foldingathome/README.md
new file mode 100644
index 00000000..817293ca
--- /dev/null
+++ b/software/foldingathome/README.md
@@ -0,0 +1,35 @@
+# Folding@Home
+
+[Folding@Home](https://foldingathome.org/) is a distributed computing project aimed at simulating protein folding and other molecular dynamics.
+
+## User Account
+
+You can setup an User Account to track your PPD (Points per Day) and done WUs (Work Units). To get a Passkey visit the [Folding@home Passkey Site](https://apps.foldingathome.org/getpasskey)
+
+## Teams
+
+You can add your earned Points to a Team that you support. This is not nessesary as the points are just to track how much work was done (with some exeptions). Here is the [full List of the Teams](https://stats.foldingathome.org/team)
+
+## Remote Control
+
+You can connect via FAHControl to your instance. WebUI is not supported because it wouldn't be password protected.
+
+## CPU Usage Control
+
+There are three power modes:
+- light
+- medium
+- full
+
+Only light and medium are useful because full enables gpu which is not supported in this egg.
+Light uses half of the available **cpu cores of your system**. Full uses **all of your cpu cores.** You can still limit the cpu usage via the panel.
+
+## Supported Versions
+
+Versions < v8 are supported. v8 is still beta and wont work with this egg. Get the latest v7 version number here: [Folding@Home Downloadserver](https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/)
+
+## Server Ports
+
+| Port | default |
+| ---- | ------- |
+| FAHControl | 36330 |
diff --git a/software/foldingathome/egg-folding--home.json b/software/foldingathome/egg-folding--home.json
new file mode 100644
index 00000000..fb057617
--- /dev/null
+++ b/software/foldingathome/egg-folding--home.json
@@ -0,0 +1,102 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-04-30T12:31:28+02:00",
+ "name": "Folding@Home",
+ "author": "fuggschen@krk-gaming.de",
+ "description": "Folding@home is a distributed computing project aimed to help scientists develop new therapeutics for a variety of diseases by the means of simulating protein dynamics. This includes the process of protein folding and the movements of proteins, and is reliant on simulations run on volunteers' personal computers",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/FAHClient --user={{FAH_USERNAME}} --team={{FAH_TEAM}} --passkey={{FAH_PASSKEY}} $(if {{FAH_ANON}}; then echo \"--fold-anon=true\"; fi) --command-port={{SERVER_PORT}} --password={{FAH_PASSWORD}} --power={{FAH_POWER}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Started FahCore\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n#\r\n# Folding@Home install script\r\n#\r\n# Created by Fuggschen\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"64bit\" || echo \"arm64\")\r\ncd \/tmp\r\n\r\necho \"Removing previous Version\"\r\nmv \/mnt\/server\/config.xml \/tmp\/config.xml\r\nrm -rf \/mnt\/server\/*\r\n\r\necho \"Installing dependencies\"\r\napt update && apt upgrade -y && apt install curl bzip2 -y\r\n\r\necho \"Downloading FAHClient\"\r\ncurl -sSL -o fahclient.tar.bz2 https:\/\/download.foldingathome.org\/releases\/public\/release\/fahclient\/debian-stable-${ARCH}\/${FAH_VERSION}\/latest.tar.bz2\r\n\r\necho \"Installing FAHClient\"\r\ntar -xjf fahclient.tar.bz2 -C \/mnt\/server --strip-components=1\r\n\r\necho \"Cleaning up..\"\r\nrm -f fahclient.tar.bz2\r\nrm -f \/mnt\/server\/sample-config.xml\r\nmv \/tmp\/config.xml \/mnt\/server\/config.xml\r\n\r\nFILE=\/mnt\/server\/config.xml\r\nif [[ ! -f $FILE ]]\r\nthen\r\necho \"Setting up config.xml\"\r\ncat > $FILE << EOF\r\n\r\n \r\n \r\n \r\n \r\n<\/config>\r\nEOF\r\nfi\r\n\r\necho \"Done!\"",
+ "container": "debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "FaH Username",
+ "description": "Your Folding@Home Username",
+ "env_variable": "FAH_USERNAME",
+ "default_value": "Anonymous",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "FaH Team",
+ "description": "Your Folding@Home Team that you are folding for. For reference look here: https:\/\/stats.foldingathome.org\/team",
+ "env_variable": "FAH_TEAM",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|int",
+ "field_type": "text"
+ },
+ {
+ "name": "FaH Passkey",
+ "description": "Your Folding@Home Passkey for your Username, if not Anonymous. Get your Passkey here: https:\/\/apps.foldingathome.org\/getpasskey",
+ "env_variable": "FAH_PASSKEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:32",
+ "field_type": "text"
+ },
+ {
+ "name": "FaH Anonymous Mode",
+ "description": "Set to true if you are folding Anonymously",
+ "env_variable": "FAH_ANON",
+ "default_value": "true",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:true,false",
+ "field_type": "text"
+ },
+ {
+ "name": "FaH Version",
+ "description": "Set to wanted major Folding@Home Version. Check here: https:\/\/download.foldingathome.org\/releases\/public\/release\/fahclient\/debian-stable-64bit\/",
+ "env_variable": "FAH_VERSION",
+ "default_value": "v7.6",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:20",
+ "field_type": "text"
+ },
+ {
+ "name": "FaHControl Password",
+ "description": "Set a WebUI Password",
+ "env_variable": "FAH_PASSWORD",
+ "default_value": "SetPasswordHere",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "FaH Power",
+ "description": "The Powerlevel it should use:\r\n- light (only half the cpu power is used)\r\n- medium (full cpu power)\r\n- full (full cpu and gpu power but gpu is not supported)",
+ "env_variable": "FAH_POWER",
+ "default_value": "medium",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:light,medium,full",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/software/languagetool/README.md b/software/languagetool/README.md
index 7c5a6602..1ed45d72 100644
--- a/software/languagetool/README.md
+++ b/software/languagetool/README.md
@@ -4,6 +4,6 @@ LanguageTool is an Open Source proofreading software for English, French, German
View https://languagetool.org for more information.
-Requires one prt for comunication.
+Requires one port for comunication.
Try `addr:port/v2/check?language=en-US&text=this+is+a+test` to test
diff --git a/software/languagetool/egg-languagetool.json b/software/languagetool/egg-languagetool.json
index 026432e4..97f0646a 100644
--- a/software/languagetool/egg-languagetool.json
+++ b/software/languagetool/egg-languagetool.json
@@ -1,19 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2022-04-06T17:26:12+02:00",
+ "exported_at": "2023-10-07T07:47:03+02:00",
"name": "LanguageTool",
"author": "thomasruhl@live.de",
"description": "This egg installs a LanguageTool server\r\n\r\nLanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. It finds many errors that a simple spell checker cannot find.\r\n\r\nView https:\/\/languagetool.org for more information.",
"features": null,
- "images": [
- "ghcr.io\/pterodactyl\/yolks:java_8"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:java_17": "ghcr.io\/parkervcp\/yolks:java_17"
+ },
"file_denylist": [],
- "startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin \\\"*\\\" --public --config config.properties",
+ "startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin --public --config config.properties",
"config": {
"files": "{\r\n \"config.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"languageModel\": \"models\/\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Server started\"\r\n}",
@@ -35,7 +35,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
- "rules": "nullable|string"
+ "rules": "nullable|string",
+ "field_type": "text"
}
]
}
\ No newline at end of file
diff --git a/software/meilisearch/README.md b/software/meilisearch/README.md
new file mode 100644
index 00000000..b8e8a592
--- /dev/null
+++ b/software/meilisearch/README.md
@@ -0,0 +1,7 @@
+# [Meilisearch](https://www.meilisearch.com/)
+
+An open-source, lightning-fast, and hyper-relevant search engine that fits effortlessly into your workflow.
+
+## Server Ports
+
+One port needs to be allocated to run Meilisearch.
diff --git a/software/meilisearch/egg-meilisearch.json b/software/meilisearch/egg-meilisearch.json
new file mode 100644
index 00000000..376424b0
--- /dev/null
+++ b/software/meilisearch/egg-meilisearch.json
@@ -0,0 +1,112 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v2",
+ "update_url": null
+ },
+ "exported_at": "2023-09-12T11:04:11+02:00",
+ "name": "Meilisearch",
+ "author": "josdekurk@gmail.com",
+ "description": "A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow.",
+ "features": null,
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
+ "startup": ".\/meilisearch --http-addr \"0.0.0.0:{{SERVER_PORT}}\" --max-indexing-memory=\"{{SERVER_MEMORY}}mb\" $([ \"$NO_ANALYTICS\" -eq 1 ] && echo \"--no-analytics\")",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Actix runtime found; starting in Actix runtime\"\r\n}",
+ "logs": "{}",
+ "stop": "^^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/meilisearch\/meilisearch\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/meilisearch\/meilisearch\/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-amd64\" || echo \"linux-aarch64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n## Config file\r\nFILE=\/mnt\/server\/config.toml\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file exits\"\r\nelse \r\n echo \"Config does not exist. Making one\"\r\n curl -sSL -o config.toml https:\/\/raw.githubusercontent.com\/meilisearch\/meilisearch\/latest\/config.toml\r\nfi\r\n\r\ncurl -sSL -o meilisearch ${DOWNLOAD_URL}\r\nchmod +x meilisearch\r\n\r\n# Make the needed directory's \r\nmkdir -p \/mnt\/server\/dumps\r\nmkdir -p \/mnt\/server\/data.ms\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Master key",
+ "description": "In production, a Master key of at least 16 bytes is mandatory\r\nSets the instance's master key, automatically protecting all routes except GET \/health. This means you will need a valid API key to access all other endpoints.",
+ "env_variable": "MEILI_MASTER_KEY",
+ "default_value": "",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "nullable|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Environment",
+ "description": "Configures the instance's environment. Value must be either production or development.",
+ "env_variable": "MEILI_ENV",
+ "default_value": "development",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:development,production",
+ "field_type": "text"
+ },
+ {
+ "name": "Disable analytics",
+ "description": "Deactivates Meilisearch's built-in telemetry when provided.",
+ "env_variable": "NO_ANALYTICS",
+ "default_value": "0",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
+ "field_type": "text"
+ },
+ {
+ "name": "Dumps dir",
+ "description": "Sets the directory where Meilisearch will create dump files.",
+ "env_variable": "MEILI_DUMP_DIR",
+ "default_value": "\/home\/container\/dumps",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "DB PATH",
+ "description": "Designates the location where database files will be created and retrieved.",
+ "env_variable": "MEILI_DB_PATH",
+ "default_value": "\/home\/container\/data.ms",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string|max:64",
+ "field_type": "text"
+ },
+ {
+ "name": "Log level",
+ "description": "Defines how much detail should be present in Meilisearch's logs.",
+ "env_variable": "MEILI_LOG_LEVEL",
+ "default_value": "INFO",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string|in:INFO,WARN,ERROR,TRACE",
+ "field_type": "text"
+ },
+ {
+ "name": "Config Path",
+ "description": "Designates the location of the configuration file to load at launch.",
+ "env_variable": "MEILI_CONFIG_FILE_PATH",
+ "default_value": "\/home\/container\/config.toml",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Max threads",
+ "description": "Sets the maximum number of threads Meilisearch can use during indexing",
+ "env_variable": "MEILI_MAX_INDEXING_THREADS",
+ "default_value": "2",
+ "user_viewable": true,
+ "user_editable": false,
+ "rules": "required|integer",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/software/uptime-kuma/README.md b/software/uptime-kuma/README.md
index 3ba818df..bcf2444e 100644
--- a/software/uptime-kuma/README.md
+++ b/software/uptime-kuma/README.md
@@ -17,8 +17,27 @@ After installation and successful start, browse to your : and setup th
## Server Ports
-Uptime Kuma requires 1 port. You can choose every port you want
+Uptime Kuma requires 1 port. You can choose any port you want
| Port | default |
|---------|---------------|
| default | 3000 |
+
+## Cloudflared, Apprise & Chromium
+
+The latest image provides support for Cloudflared and Apprise.
+
+### Cloudflared
+With Cloudflared it is possible to create a proxy over Cloudflare without having to use an nginx proxy. More info here:
+https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy-with-Cloudflare-Tunnel
+
+### Apprise
+Apprise provides notifications for all kinds of services. Uptime Kuma has a built-in support for Apprise.
+More info's here:
+https://github.com/caronc/apprise#supported-notifications
+
+### Monitor HTTP(s) - Browser Engine (Chromium)
+The image supports the monitor "HTTP(s) - Browser Engine".
+To use this monitor, enter the following path in the settings under "General -> Chrome/Chromium Executable" (at the bottom):
+
+/usr/bin/chromium-browser
\ No newline at end of file
diff --git a/software/uptime-kuma/egg-uptime-kuma.json b/software/uptime-kuma/egg-uptime-kuma.json
index a8ac9570..bf756329 100644
--- a/software/uptime-kuma/egg-uptime-kuma.json
+++ b/software/uptime-kuma/egg-uptime-kuma.json
@@ -4,16 +4,16 @@
"version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2023-01-22T09:33:11+01:00",
+ "exported_at": "2023-10-09T19:06:53+02:00",
"name": "Uptime Kuma",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.",
"features": null,
"docker_images": {
- "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16"
+ "ghcr.io\/parkervcp\/apps:uptimekuma": "ghcr.io\/parkervcp\/apps:uptimekuma"
},
"file_denylist": [],
- "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}} --port={{SERVER_PORT}}",
+ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then npm run setup; fi; \/usr\/local\/bin\/node \/home\/container\/server\/server.js --port={{SERVER_PORT}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"[SERVER] INFO: Listening on \"\r\n}",
@@ -22,9 +22,9 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\ncd \/mnt\/server\r\nnpm ci --production \r\nnpm run download-dist\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0",
- "container": "node:16-bullseye-slim",
- "entrypoint": "bash"
+ "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\napk add --no-cache git-lfs --repository=https:\/\/dl-cdn.alpinelinux.org\/alpine\/latest-stable\/community\r\n\r\n## npm update to latest\r\necho -e \"Updating npm to latest....\\n\"\r\nif [ -d \"\/mnt\/server\/node_modules\" ]; then\r\n rm -fR \/mnt\/server\/node_modules\r\n npm cache verify\r\nfi\r\nnpm install -g npm@latest\r\n\r\n## Uptime Kuma install & update\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\n\r\nif [ -d .git ]; then\r\n echo -e \"Updating Uptime Kuma....\\n \"\r\n npm run setup\r\nelse\r\n echo -e \"Download and installing Uptime Kuma...\\n\" \r\n git clone https:\/\/github.com\/louislam\/uptime-kuma.git .\r\n npm run setup\r\nfi\r\n\r\n## only create dir, when .git is present to prevent errors\r\nif [ -d .git ]; then\r\n mkdir -p \/mnt\/server\/data\r\nfi\r\n\r\nif [ ! -f \"\/mnt\/server\/data\/kuma.db\" ]; then\r\n cp \/mnt\/server\/db\/kuma.db \/mnt\/server\/data\/kuma.db\r\nfi\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0",
+ "container": "node:18-alpine",
+ "entrypoint": "ash"
}
},
"variables": [
@@ -38,16 +38,6 @@
"rules": "nullable|string",
"field_type": "text"
},
- {
- "name": "Auto Update",
- "description": "Pull the latest files on startup when using a GitHub repo.",
- "env_variable": "AUTO_UPDATE",
- "default_value": "1",
- "user_viewable": true,
- "user_editable": true,
- "rules": "required|boolean",
- "field_type": "text"
- },
{
"name": "JS file",
"description": "The file that starts the app",
@@ -59,23 +49,13 @@
"field_type": "text"
},
{
- "name": "Additional Node packages",
- "description": "Install additional node packages.\r\n\r\nUse spaces to separate.",
- "env_variable": "NODE_PACKAGES",
- "default_value": "",
- "user_viewable": false,
- "user_editable": false,
- "rules": "nullable|string",
- "field_type": "text"
- },
- {
- "name": "Uninstall Node packages",
- "description": "Uninstall node packages.\r\n\r\nUse spaces to separate.",
- "env_variable": "UNNODE_PACKAGES",
- "default_value": "",
- "user_viewable": false,
- "user_editable": false,
- "rules": "nullable|string",
+ "name": "Auto Update",
+ "description": "",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|boolean",
"field_type": "text"
}
]
diff --git a/stock_eggs/README.md b/stock_eggs/README.md
deleted file mode 100644
index 9800efe2..00000000
--- a/stock_eggs/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Stock Pterodactyl eggs
-
-Eggs based on the stock [Pterodactyl eggs](https://github.com/pterodactyl/panel/tree/develop/database/Seeders/eggs).
-
-These are mostly fixes that should make it into the main repo eventually as I pr them over.
diff --git a/stock_eggs/minecraft/README.md b/stock_eggs/minecraft/README.md
deleted file mode 100644
index 4e0654a9..00000000
--- a/stock_eggs/minecraft/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Minecraft
-
-[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/minecraft)
-
-All the default minecraft things
-
-## Server Ports
-
-The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
-
-| Port | Default |
-|------|---------|
-| Game | 25565 |
diff --git a/stock_eggs/rust/README.md b/stock_eggs/rust/README.md
deleted file mode 100644
index 2761eb13..00000000
--- a/stock_eggs/rust/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Rust
-
-[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/rust)
-
-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.
-
-## Minimum RAM warning
-
-The server requires at least 4096MB to run properly.
-This is mostly needed for the startup only, once it is running (depending on your world size) it should consume less.
-
-## Server Ports
-
-Ports required to run the server.
-
-| Port | default |
-|----------------|-----------|
-| Game | 28015 UDP |
-| RCON | 28016 TCP |
-| Query | 28017 UDP |
-| Rust+ App | 28082 TCP |
diff --git a/stock_eggs/source-engine/README.md b/stock_eggs/source-engine/README.md
deleted file mode 100644
index 5d8ff1ea..00000000
--- a/stock_eggs/source-engine/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Source-Engine
-
-[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/source-engine)
-
-The Source Dedicated Server or SRCDS is a tool that runs the server component of a Source game without the client component. In other words, it simulates the game without drawing it.
-
-This also covers games that are installed using the steamcmd utility.
-
-## Server Ports
-
-Many of these servers will require the steam query ports to be open for the server.
-The default steam query port is 27015
-
-## ARK Survival Evolved
-
-
-### Port Requirements
-
-The ARK server requires 4 ports minimum.
-
-| Port | default |
-|---------|---------|
-| Game | 7777 |
-| Game +1 | 7778 |
-| Query | 27015 |
-| RCON | 27020 |
-
-Please note the server may not show up on steam game server lists due to this requirement if all ports are not set/added.
-
-## Counter Strike: Global Offensive
-
-Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gameplay that it pioneered when it was launched 19 years ago. CS: GO features new maps, characters, weapons, and game modes, and delivers updated versions of the classic CS content (de_dust2, etc.).
-
-### Port Requirements
-
-| Port | default |
-|----------|---------|
-| Game | 27015 |
-
-## Custom Source Engine Game
-
-
-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](game_eggs/steamcmd_servers/hlds_server)
-
-### Port Requirements
-
-| Port | default |
-|----------|---------|
-| Game | 27015 |
-
-## Garry's Mod
-
-
-Garry's Mod is a physics sandbox. There aren't any predefined aims or goals. We give you the tools and leave you to play.
-
-### Port Requirements
-
-| Port | default |
-|----------|---------|
-| Game | 27015 |
-
-## Insurgency
-
-
-Take to the streets for intense close quarters combat, where a team's survival depends upon securing crucial strongholds and destroying enemy supply in this multiplayer and cooperative Source Engine based experience.
-
-### Port Requirements
-
-| Port | default |
-|----------|---------|
-| Game | 27015 |
-
-## Team Fortress 2
-
-Nine distinct classes provide a broad range of tactical abilities and personalities. Constantly updated with new game modes, maps, equipment and, most importantly, hats!
-
-### Port Requirements
-
-| Port | default |
-|----------|---------|
-| Game | 27015 |
diff --git a/stock_eggs/voice-servers/README.md b/stock_eggs/voice-servers/README.md
deleted file mode 100644
index 757dc72c..00000000
--- a/stock_eggs/voice-servers/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Voice Servers
-
-[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/voice-servers)
-
-## Mumble
-
-Mumble is an open source, low-latency, high quality voice chat software primarily intended for use while gaming.
-
-### Required Server Ports
-
-Mumble only requires a single port to run. The default is 64738
-
-| Port | default |
-|---------|---------|
-| Game | 64738 |
-
-## Teamspeak 3
-
-Use crystal clear sound to communicate with your team mates cross-platform with military-grade security, lag-free performance & unparalleled reliability and uptime.
-
-### Required Server Ports
-
-Teamspeak 3 only requires a single port to run. The default is 9987
-
-Other ports for ServerQuery and File Transfers are required for specific things.
-
-| Port | default |
-|---------|---------|
-| Server | 9987 |
-| Query | 10011 |
-| Files | 30033 |
-
-By default pteordactyl sets the query port to the same as the server port.
diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json
index d846af2e..7d68dc65 100644
--- a/voice_servers/lavalink/egg-lavalink.json
+++ b/voice_servers/lavalink/egg-lavalink.json
@@ -1,31 +1,62 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1",
+ "version": "PTDL_v2",
"update_url": null
},
- "exported_at": "2021-04-11T13:56:42+02:00",
+ "exported_at": "2023-08-04T08:40:49+02:00",
"name": "Lavalink",
"author": "damuffin36@gmail.com",
"description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/freyacodes\/Lavalink",
"features": null,
- "images": [
- "ghcr.io/parkervcp/yolks:java_11"
- ],
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:java_17": "ghcr.io\/parkervcp\/yolks:java_17"
+ },
"file_denylist": [],
"startup": "java -jar Lavalink.jar",
"config": {
"files": "{\r\n \"application.yml\": {\r\n \"parser\": \"yml\",\r\n \"find\": {\r\n \"server.address\": \"0.0.0.0\",\r\n \"server.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Started Launcher in \"\r\n}",
"logs": "{}",
- "stop": "^C"
+ "stop": "^^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# NodeJS Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\ncurl -L -o Lavalink.jar https:\/\/github.com\/freyacodes\/Lavalink\/releases\/latest\/download\/Lavalink.jar\r\n\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho -e \"install complete\"\r\nexit 0",
+ "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\napt update\r\napt install -y curl jq git\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\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 -L -o Lavalink.jar ${DOWNLOAD_URL}\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
- "variables": []
-}
+ "variables": [
+ {
+ "name": "Version",
+ "description": "",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": true,
+ "user_editable": true,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "GITHUB_PACKAGE",
+ "description": "",
+ "env_variable": "GITHUB_PACKAGE",
+ "default_value": "lavalink-devs\/Lavalink",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
+ },
+ {
+ "name": "Match",
+ "description": "",
+ "env_variable": "MATCH",
+ "default_value": "Lavalink.jar",
+ "user_viewable": false,
+ "user_editable": false,
+ "rules": "required|string",
+ "field_type": "text"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/voice_servers/ts3_manager/egg-t-s3-manager.json b/voice_servers/ts3_manager/egg-t-s3-manager.json
index c20c8b53..369f0963 100644
--- a/voice_servers/ts3_manager/egg-t-s3-manager.json
+++ b/voice_servers/ts3_manager/egg-t-s3-manager.json
@@ -1,25 +1,29 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
- "version": "PTDL_v1"
+ "version": "PTDL_v2",
+ "update_url": null
},
- "exported_at": "2020-12-05T08:58:33+01:00",
+ "exported_at": "2023-10-07T18:01:49+02:00",
"name": "TS3 Manager",
- "author": "info@goover.de",
+ "author": "eggs@goover.dev",
"description": "The Open Source Webinterface For TeamSpeak Servers",
"features": null,
- "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
+ "docker_images": {
+ "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
+ },
+ "file_denylist": [],
"startup": ".\/start_ts3-manager -p ${SERVER_PORT}",
"config": {
"files": "{}",
- "startup": "{\r\n \"done\": \"Server listening on\",\r\n \"userInteraction\": []\r\n}",
+ "startup": "{\r\n \"done\": \"Server listening on\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
- "script": "apt -y update\r\napt -y upgrade\r\napt install -y git unzip jq wget tar curl\r\n\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi",
- "container": "debian:buster-slim",
+ "script": "#!\/bin\/bash\r\n\r\n## install needed packages\r\napt update\r\napt install -y git unzip jq wget tar curl\r\n\r\n## env\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"",
+ "container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -31,7 +35,8 @@
"default_value": "joni1802\/ts3-manager",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:50"
+ "rules": "required|string|max:50",
+ "field_type": "text"
},
{
"name": "VERSION",
@@ -40,7 +45,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
- "rules": "required|string|max:30"
+ "rules": "required|string|max:30",
+ "field_type": "text"
},
{
"name": "MATCH",
@@ -49,7 +55,8 @@
"default_value": "ts3-manager-linux-x64",
"user_viewable": false,
"user_editable": false,
- "rules": "required|string|max:50"
+ "rules": "required|string|max:50",
+ "field_type": "text"
}
]
}
\ No newline at end of file