diff --git a/.github/ISSUE_TEMPLATE/bugs.md b/.github/ISSUE_TEMPLATE/bugs.md
index 82150487..759830d8 100644
--- a/.github/ISSUE_TEMPLATE/bugs.md
+++ b/.github/ISSUE_TEMPLATE/bugs.md
@@ -4,8 +4,14 @@ about: Report an issue for an egg
---
-Please fill out the information bellow and remove from the line up
+# If you are seeing any of the following go to Discord and port your error in a support channel.
+ * `A fatal error was encountered while starting this server.`
+ * `No server egg configuration could be located; aborting startup.`
+
+Please fill out the information bellow and remove from the line up
+If you just submit a bug with no info I will close out your bug.
---------------
+
Panel Version: (version number)
Daemon Version: (version number)
Service: (minecraft/factorio/etc)
diff --git a/.github/ISSUE_TEMPLATE/issue_template.md b/.github/ISSUE_TEMPLATE/issue_template.md
deleted file mode 100644
index 4b46de11..00000000
--- a/.github/ISSUE_TEMPLATE/issue_template.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Please fill out the information bellow and remove from the line up
----------------
-Panel Version: (version number)
-Daemon Version: (version number)
-New Service: (yes/no) (Is this a request for a new service?)
-Service: (minecraft/factorio/etc)
-Modified: (yes/no) (did you add or change things, this includes startup configs/install scripts/variables)
-
-Expected Behavior:
-
-Actual Behavior:
-
-Steps to Reproduce: (Step by step what to do to cause the issue)
-
-If this is a request for a new service then you can add info here like links to the site where the server files can be found. If it is a steamcmd game have you looked at the custom source engine service yet?
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/request.md b/.github/ISSUE_TEMPLATE/request.md
index 62fe627d..1590d3a8 100644
--- a/.github/ISSUE_TEMPLATE/request.md
+++ b/.github/ISSUE_TEMPLATE/request.md
@@ -5,7 +5,15 @@ about: Suggest a server to build an egg for
---
Please fill out the information bellow and remove from the line up
+Please understand how Pterodactyl works when you are requesting an egg. (ie. docker-compose doesn't work for a pterodactyl server)
---------------
+
Service: (Ex. minecraft/factorio/etc)
-Link to game: (Ex. minecraft.net/factorio.com/etc)
\ No newline at end of file
+Does this expand an already existing service: Y/N
+
+Link to game: (Ex. minecraft.net/factorio.com/etc)
+
+Links for server downloads: This needs to be an official link and not one that is hosted on some forum page or a personal github page.
+
+Links for install steps/docs:
diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
deleted file mode 100644
index 93074704..00000000
--- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
+++ /dev/null
@@ -1,20 +0,0 @@
-### All Submissions:
-
-* [ ] Have you followed the guidelines in our Contributing document?
-* [ ] Have you checked to ensure there aren't other open [Pull Requests](../../pulls) for the same update/change?
-
-
-
-### New Feature Submissions:
-
-1. [ ] Does your submission pass tests (server is connectable)?
-
-### Changes to Egg Features:
-
-* [ ] Have you added an explanation of what your changes do and why you'd like us to include them?
-* [ ] Have you tested your Egg changes?
-
-### Changes to README:
-
-* [ ] Have you added the server to the main README.md?
-* [ ] Have you added a unique README.md for the server you are adding?
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..edcd00b2
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,22 @@
+### All Submissions:
+
+* [ ] Have you followed the guidelines in our Contributing document?
+* [ ] Have you checked to ensure there aren't other open [Pull Requests](../../pulls) for the same update/change?
+* [ ] Did you branch your changes and PR from that branch and not from your master branch?
+ * If not, why?:
+
+
+
+### New Server Submissions:
+
+1. [ ] Does your submission pass tests (server is connectable)?
+2. [ ] Does your server use a custom docker image?
+ * [ ] Have you tried to use a generic image?
+ * [ ] Did you PR the necessary changes to make it work?
+3. [ ] Have you added the server to the main README.md?
+4. [ ] Have you added a unique README.md for the server you are adding?
+
+### Changes to an existing Egg:
+
+1. [ ] Have you added an explanation of what your changes do and why you'd like us to include them?
+2. [ ] Have you tested your Egg changes?
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..615b2764
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.DS_Store
+node_modules/
+.vuepress/*
\ No newline at end of file
diff --git a/.gitignore_global b/.gitignore_global
deleted file mode 100644
index 496ee2ca..00000000
--- a/.gitignore_global
+++ /dev/null
@@ -1 +0,0 @@
-.DS_Store
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 58a857fb..9662ccc9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,6 +11,9 @@
3. Try to stay in the stock containers.
If you need something in a container PR it to [my image repo](https://github.com/parkervcp/images) where I can review and pull up to the main repo.
+4. Don't be afraid to submit PR's to the egg repo.
+ I dont bite. I will work with you on the egg and the required things to run it.
+
## Step 1.
#### Be aware of the pterodactyl install process.
@@ -38,6 +41,6 @@ This is to maintain a clean repo that others can pull and be fully aware of what
## Step 3.
-#### Don't be afraid to submit PR's to the egg repo.
+#### Make a branch and do your work in there.
-I dont bite. I will work with you on the egg and the required things to run it.
+I have been getting messy PR's due to people always PRing from their master branch. Please make a branch and PR from there,
diff --git a/README.md b/README.md
index 2f48469d..c768cf0e 100644
--- a/README.md
+++ b/README.md
@@ -2,56 +2,120 @@
I am working on adding a large collection of public eggs for the Pterodactyl community.
-With that I am also accepting PR's for new service and also updates to the current ones.
+With that I am also accepting PR's for new services and also updates to the current ones.
If you are submitting PR's try and keep names and titles the same.
+## How to import an egg
-# You must restart your daemon after importing an egg.
+If you are reading this it looks like you are looking to add an egg to your server.
+
+1. Download any of the json files located in the folders below.
+ 1. It's easiest to right click the `raw` button and save as.
+2. In your panel go to the `Nests` section in the admin part of the panel
+3. Click the green `Import Egg` button
+4. Browse to the json file you saved earlier
+5. Select what nest you want to put the egg in.
+ 1. If you want a new nest you need to create it before importing the egg.
+6. Restart the daemon on your node before creating a server using the new egg(s).
+
+# You must restart your daemon after importing an egg
## Please read the CONTRIBUTING.md before submitting PRs
## Bot Eggs
-[Discord](/bots/discord/)
-* [ATL Bot](/bots/discord/atlbot) NodeJS
-* [parkertron](/bots/discord/parkertron/) Golang
-* [pixel-bot](/bots/discord/pixelbot/) Python
-* [Sinusbot](/bots/discord/sinusbot/)
+[Discord](/bots/discord/)
+* [ATL Bot](/bots/discord/atlbot/) Node JS
+* [Bastion](/bots/discord/bastion/)
+* [discord.js](bots/discord/discord.js/) Node JS generic
+* [fragbot](/bots/discord/fragbot/) Golang
+* [jmusicbot](/bots/discord/jmusicbot) Java
+* [parkertron](/bots/discord/parkertron/) Golang
+* [pixel-bot](/bots/discord/pixelbot/) Python
+* [Sinusbot](/bots/discord/sinusbot/)
+
+[TeamSpeak3](bots/teamspeak3)
+* [JTS3ServerMod](/bots/teamspeak3/jts3servermod/)
+
+## Database Eggs
+[MariaDB](/database/mariadb/)
## Game Eggs
-[Factorio](/factorio/factorio/)
-[Grand Theft Auto](/gta/)
-* [FiveM](/gta/fivem/)
-* [RageMP](/gta/ragemp/)
+[ET Legacy](/enemy_territory/etlegacy/)
-[Minecraft](/minecraft/)
-* [Forge](/minecraft/forge/)
-* [Feed The Beast](/minecraft/ftb/)
-* [Spigot](/minecraft/spigot/)
-* [Technic](/minecraft/technic/)
+[Factorio](/factorio/factorio/)
-[MinecraftPE](/minecraft_pe/)
-* [Bedrock](/minecraft_pe/bedrock/)
-* [Nukkit](/minecraft_pe/nukkit/)
-* [PocketMine MP](/minecraft_pe/pocketmine_mp/)
+[Grand Theft Auto](/gta/)
+* GTA V
+ * [FiveM](/gta/fivem/)
+ * [RageMP](/gta/ragemp/)
+ * [alt:V](/gta/altv/)
+* GTA SA
+ * [Multi Theft Auto](/gta/mtasa/)
+ * [SA-MP](/gta/samp/)
-[Minecraft Proxies](/minecraft_proxy/)
-* [Waterfall](/minecraft_proxy/waterfall/)
+[Minecraft Bedrock](/minecraft_bedrock/) Servers for Bedrock Minecraft
+* [Bedrock](/minecraft_bedrock/bedrock/)
+* [Nukkit](/minecraft_bedrock/nukkit/)
+* [PocketMine MP](/minecraft_bedrock/pocketmine_mp/)
-[Mount & Blade Warband](/mb_warband/)
+[Minecraft Java](/minecraft_java/) Servers for Java Minecraft
+* [Cuberite](/minecraft_java/cuberite/)
+* [Forge](/minecraft_java/forge/)
+* [Feed The Beast](/minecraft_java/ftb/)
+* [Paper](/minecraft_java/paper)
+* [Spigot](/minecraft_java/spigot/)
+* [spongeforge](/minecraft_java/spongeforge/)
+* [SpongeVanilla](/minecraft_java/spongevanilla/)
+* [Technic](/minecraft_java/technic/)
+* [VanillaCord](/minecraft_java/vanillacord/)
-[Source](/source_servers/)
-* [7 Days to Die](/source_servers/7_days_to_die/)
-* [PixARK](/source_servers/pixark/)
+[Minecraft Proxies](/minecraft_proxy/) (these are for the java version of minecraft)
+* [Waterfall](/minecraft_proxy/waterfall/)
+* [TyphoonLimbo](/minecraft_proxy/typhoonlimbo/)
+* [Velocity](/minecraft_proxy/velocity/)
-[Squad](/squad/)
-[Terraria](/terraria/)
-* [tshock](/terraria/tshock/)
-[Unturned](/unturned/)
-* [RocketMod](/unturned/rocketmod/)
+[Red Dead Redemption](/rdr/)
+* [RedM](/rdr/redm/)
-[Xonotic](/xonotic/)
+[steamcmd servers](/steamcmd_servers/) These eggs use steamcmd to install
+* [7 Days to Die](/steamcmd_servers/7_days_to_die/)
+* [ARK Survival Evolved](/steamcmd_servers/ark_survival_evolved/)
+* [Arma](/steamcmd_servers/arma/)
+ * [Arma 3](/steamcmd_servers/arma/arma3/)
+ * [Arma 3 HC](/steamcmd_servers/arma/arma3_headless_client/)
+* [Conan Exiles](/steamcmd_servers/conan_exiles)
+* [Don't Starve](/steamcmd_servers/dont_starve)
+* [ECO](/steamcmd_servers/eco/)
+* [HLDS server](/steamcmd_servers/hlds_server)
+* [Mordhau](/steamcmd_servers/mordhau)
+* [Onset](/steamcmd_servers/onset)
+* [PixARK](/steamcmd_servers/pixark/)
+* [Rust Staging Branch](/steamcmd_servers/rust_staging/)
+* [SCP: Secret Laboratory](/steamcmd_servers/scpsl/)
+* [Starbound](/steamcmd_servers/starbound)
+* [Sven Co-op](/steamcmd_servers/svencoop)
+* [Squad](/steamcmd_servers/squad/)
+* [Unturned](/steamcmd_servers/unturned/)
+ * [RocketMod](/steamcmd_servers/unturned/rocketmod/)
+ * [Unturned](/steamcmd_servers/unturned/unturned/)
+
+[Tycoon Games](/tycoon_games/)
+* [OpenTTD](/tycoon_games/openttd/)
+
+[Unreal Engine](/unreal_engine)
+* [Tower Unite](/unreal_engine/tower_unite/)
+* [Tower Unite](/steamcmd_servers/tower_unite/)
+
+[Terraria](/terraria/)
+* [tmodloader](/terraria/tmodloader)
+* [tshock](/terraria/tshock/)
+
+[Tycoon Games](/tycoon_games/)
+* [OpenTTD](/tycoon_games/openttd/)
+
+[Xonotic](/xonotic/xonotic/)
\ No newline at end of file
diff --git a/bots/discord/README.md b/bots/discord/README.md
index 164249aa..66ab5d3b 100644
--- a/bots/discord/README.md
+++ b/bots/discord/README.md
@@ -2,10 +2,30 @@
### Some of these bots support other services but are primarily Discord bots
+#### Generic Discord.js bot egg
+discord.js
+A generic discord.js bot egg. Meant to pull from a repo can also be used where a user can upload the files on their own.
+
#### ATLauncher Discord Bot
[ATLauncher/discord-bot](https://github.com/ATLauncher/discord-bot)
Their github has all the info you need
+#### Bastion
+[TheBastionBot/Bastion](https://github.com/TheBastionBot/Bastion)
+Give awesome perks to your Discord server!
+
+#### DiscordJS
+[discord.js](https://discord.js.org/)
+A generic discord.js egg for running discord bots.
+
+#### fragbot
+[jagrosh/MusicBot](https://github.com/jagrosh/MusicBot)
+A Discord music bot that's easy to set up and run yourself!
+
+#### fragbot
+[fragforce/fragbot](https://github.com/fragforce/fragbot)
+The bot that runs as the fragforce `@Fragbot` offering looking-for-group services for now
+
#### parkertron
[parkervcp/parkertron](https://github.com/parkervcp/parkertron)
The bot that runs as the pterodactyl `@Support Bot`
diff --git a/bots/discord/atlbot/README.md b/bots/discord/atlbot/README.md
new file mode 100644
index 00000000..008d3906
--- /dev/null
+++ b/bots/discord/atlbot/README.md
@@ -0,0 +1,6 @@
+# ATLBot
+### Their [Github](https://github.com/ATLauncher/discord-bot)
+This is the code for our Discord bot which runs on the official ATLauncher Discord server
+
+### Server Ports
+There are no ports required for the atl bot
\ No newline at end of file
diff --git a/bots/discord/atlbot/bot/egg-a-t-l-bot.json b/bots/discord/atlbot/bot/egg-a-t-l-bot.json
deleted file mode 100644
index 9a830410..00000000
--- a/bots/discord/atlbot/bot/egg-a-t-l-bot.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-02-22T13:32:44-05:00",
- "name": "ATLBot",
- "author": "jfeldt19@gmail.com",
- "description": "ATLbot in ptero\r\n\r\nhttps:\/\/github.com\/ATLauncher\/discord-bot\/",
- "image": "quay.io\/parkervcp\/pterodactyl-images:nodejs",
- "startup": "npm run start",
- "config": {
- "files": "{\r\n \"config\/config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"client_token\": \"{{server.build.env.CLIENT_TOKEN}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"I am ready!\",\r\n \"userInteraction\": [\r\n \"Request to use token, but token was unavailable\"\r\n ]\r\n}",
- "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
- "stop": "^C"
- },
- "scripts": {
- "installation": {
- "script": "apk add --no-cache openssl\r\n\r\ncd \/mnt\/server\r\n\r\nwget https:\/\/github.com\/ATLauncher\/discord-bot\/archive\/master.zip\r\n\r\nunzip master.zip\r\n\r\nrm master.zip\r\n\r\nmv discord-bot-master\/* .\/\r\n\r\nmv config\/config.json.example config\/config.json\r\n\r\n\/usr\/local\/bin\/npm install --production\r\n\r\n\/usr\/local\/bin\/npm run build\r\n\r\nrm -r discord-bot-master\/\r\nrm Dockerfile\r\nrm CONTRIBUTING.md\r\nrm README.md\r\nrm \/config\/.gitignore\r\nrm CODE_OF_CONDUCT.md",
- "container": "node:8.9-alpine",
- "entrypoint": "ash"
- }
- },
- "variables": [
- {
- "name": "client_token",
- "description": "Get a discord token at https:\/\/discordapp.com\/developers\/",
- "env_variable": "CLIENT_TOKEN",
- "default_value": "get_your_own_token_from_discord_",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:75"
- }
- ]
-}
\ No newline at end of file
diff --git a/bots/discord/atlbot/egg-a-t-l-bot.json b/bots/discord/atlbot/egg-a-t-l-bot.json
new file mode 100644
index 00000000..2bea0340
--- /dev/null
+++ b/bots/discord/atlbot/egg-a-t-l-bot.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-06-23T10:00:12-04:00",
+ "name": "ATLBot",
+ "author": "jfeldt19@gmail.com",
+ "description": "ATLbot in ptero\r\n\r\nhttps:\/\/github.com\/ATLauncher\/discord-bot\/",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:alpine_nodejs-10",
+ "startup": "npm run start",
+ "config": {
+ "files": "{\r\n \"config\/local.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"discord.client_token\": \"{{server.build.env.CLIENT_TOKEN}}\",\r\n \"logging.level\": \"debug\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Bot started\"\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "apk add --no-cache openssl git\r\n\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/ATLauncher\/discord-bot.git . \r\nfi\r\n\r\necho '{}' > config\/local.json\r\n\r\nnpm install --production\r\n\r\nnpm run build\r\n\r\nrm Dockerfile\r\nrm CONTRIBUTING.md\r\nrm README.md\r\nrm \/config\/.gitignore\r\nrm CODE_OF_CONDUCT.md",
+ "container": "node:10-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "client_token",
+ "description": "Get a discord token at https:\/\/discordapp.com\/developers\/",
+ "env_variable": "CLIENT_TOKEN",
+ "default_value": "get_your_own_token_from_discord_",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:75"
+ },
+ {
+ "name": "Node Environment",
+ "description": "The node environment variable.\r\n\r\nNeeds to stay at \"development\" to log to console.",
+ "env_variable": "NODE_ENV",
+ "default_value": "development",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bots/discord/bastion/README.md b/bots/discord/bastion/README.md
new file mode 100644
index 00000000..c57d5814
--- /dev/null
+++ b/bots/discord/bastion/README.md
@@ -0,0 +1,9 @@
+# Bastion
+### From their [Github](https://github.com/TheBastionBot/Bastion)
+Give awesome perks to your Discord server!
+
+### Install notes
+Due to rate limiting the console on the panel 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.
+
+### Server Ports
+No Ports are required for the bastion bot.
\ No newline at end of file
diff --git a/bots/discord/bastion/egg-bastion.json b/bots/discord/bastion/egg-bastion.json
new file mode 100644
index 00000000..4355f1d8
--- /dev/null
+++ b/bots/discord/bastion/egg-bastion.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-05-06T23:13:44-04:00",
+ "name": "Bastion",
+ "author": "parker@parkervcp.com",
+ "description": "Bastion is an all-in-one multipurpose Discord bot that can do a whole bunch of things and its features are expanding daily. Bastion does everything most people will ever need it to do. Check out some feature highlights below to get a peek into the vast feature list of Bastion. And if you think Bastion lacks some feature, please send a suggestion and we will add it to Bastion as soon as possible.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:bot_bastion",
+ "startup": "node -r .\/utils\/globals.js .",
+ "config": {
+ "files": "{\r\n \"settings\/credentials.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"botId\": \"{{server.build.env.BOT_ID}}\",\r\n \"token\": \"{{server.build.env.BOT_TOKEN}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"I'm ready to roll!\"\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## Install Requirements\r\napk --no-cache add python g++ make git\r\n\r\n## Move to install folder\r\ncd \/mnt\/server\/\r\n\r\n## Clone repo\r\ngit clone -b stable -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\n## Install node_modules\r\nyarn install --only=production\r\n\r\n## Move config files.\r\nmv settings\/credentials.example.yaml settings\/credentials.yaml\r\nmv settings\/configurations.example.yaml settings\/configurations.yaml",
+ "container": "node:10-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Bot ID",
+ "description": "The Bot ID you get from https:\/\/discordapp.com\/developers\/applications\/",
+ "env_variable": "BOT_ID",
+ "default_value": "GETABOTID",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:32"
+ },
+ {
+ "name": "Bot Token",
+ "description": "The Bot ID you get from https:\/\/discordapp.com\/developers\/applications\/",
+ "env_variable": "BOT_TOKEN",
+ "default_value": "GETABOTTOKEN",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bots/discord/discord.js/README.md b/bots/discord/discord.js/README.md
new file mode 100644
index 00000000..db4a930f
--- /dev/null
+++ b/bots/discord/discord.js/README.md
@@ -0,0 +1,7 @@
+# discord.js generic
+
+This egg was designed to allow a user to pull their own nodejs discord bot from a repo.
+
+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.
\ No newline at end of file
diff --git a/bots/discord/discord.js/egg-discord-js-generic.json b/bots/discord/discord.js/egg-discord-js-generic.json
new file mode 100644
index 00000000..6d16fcf6
--- /dev/null
+++ b/bots/discord/discord.js/egg-discord-js-generic.json
@@ -0,0 +1,72 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-02-01T21:36:43-05:00",
+ "name": "discord.js generic",
+ "author": "parker@parkervcp.com",
+ "description": "a generic discord js bot egg\r\n\r\nThis will clone a git repo for a bot. 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.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_nodejs-10",
+ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi && \/usr\/local\/bin\/npm install --production && \/usr\/local\/bin\/node \/home\/container\/{{BOT_JS_FILE}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"change this part\"\r\n}",
+ "logs": "{}",
+ "stop": "^c"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#\/bin\/ash\r\n\r\napk add --no-cache git make gcc g++ python\r\n\r\ncd \/mnt\/server\r\n\r\nif [[ ! ${INSTALL_REPO} = *\\.git ]]; then\r\n INSTALL_REPO=$(echo -e ${INSTALL_REPO} | sed 's:\/*$::')\r\n INSTALL_REPO=\"${INSTALL_REPO}.git\"\r\nfi\r\n\r\necho -e \"working on installing a discord.js bot from ${INSTALL_REPO}\"\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n\techo -e \"assuming user knows what they are doing have a good day.\"\r\n\texit 0\r\nelse\r\n\tif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n\t\techo -e \"\/mnt\/server directory is not empty.\"\r\n\t if [ -d .git ]; then\r\n\t\t\techo -e \".git directory exists\" \r\n\t\t\tif [ -f .git\/config ]; then\r\n\t\t\t\techo -e \"loading info from git config\"\r\n\t\t\t\tORIGIN=$(git config --get remote.origin.url)\r\n\t\t\telse\r\n\t\t\t\techo -e \"files found with no git config\"\r\n\t\t\t\techo -e \"closing out without touching things to not break anything\"\r\n\t\t\t\texit 10\r\n\t\t\tfi\r\n\t\tfi\r\n\t\tif [ \"${ORIGIN}\" == \"${INSTALL_REPO}\" ]; then\r\n\t\t\techo \"pulling latest from github\"\r\n\t\t\tgit pull \r\n\t\t\techo -e \"updating local npm modules\"\r\n\t\t\t\/usr\/local\/bin\/npm install --production\r\n\t\tfi\r\n\telse\r\n \techo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n\t\tif [ -z ${INSTALL_BRANCH} ]; then\r\n\t\t\techo -e \"assuming master branch\"\r\n\t\t\tINSTALL_BRANCH=master\r\n\t\tfi\r\n \r\n\t\techo -e \"running 'git clone --single-branch --branch ${INSTALL_BRANCH} ${INSTALL_REPO} .'\"\r\n\t\tgit clone --single-branch --branch ${INSTALL_BRANCH} ${INSTALL_REPO} .\r\n\t\techo -e \"install npm modules locally\"\r\n\t\t\/usr\/local\/bin\/npm install --production\r\n\tfi\r\nfi \r\n\r\necho -e \"install complete\"\r\nexit 0",
+ "container": "node:10-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Install Repo",
+ "description": "The git repo to clone and install the discord js bot from",
+ "env_variable": "INSTALL_REPO",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "nullable|string|max:128"
+ },
+ {
+ "name": "Install Branch",
+ "description": "The branch of the bot to install",
+ "env_variable": "INSTALL_BRANCH",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "nullable|string|max:32"
+ },
+ {
+ "name": "User Uploaded Files",
+ "description": "Skip all the install cruft is you are just letting a user upload files.\r\n\r\n0 = false (default)\r\n1 = true",
+ "env_variable": "USER_UPLOAD",
+ "default_value": "0",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|bool"
+ },
+ {
+ "name": "Auto Update",
+ "description": "When using a git repo pull the latest files on startup.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "0",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|boolean"
+ },
+ {
+ "name": "Bot js file",
+ "description": "The file that starts the bot.",
+ "env_variable": "BOT_JS_FILE",
+ "default_value": "index.js",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bots/discord/fragbot/README.md b/bots/discord/fragbot/README.md
new file mode 100644
index 00000000..6ef6eedd
--- /dev/null
+++ b/bots/discord/fragbot/README.md
@@ -0,0 +1,8 @@
+# fragbot
+### Their [Github](https://github.com/fragforce/fragbot)
+The golang based discord bot for fragforce.
+
+Runs the fragforce `@fragbot`
+
+### Server Ports
+There are no ports required for fragbot
\ No newline at end of file
diff --git a/bots/discord/fragbot/egg-fragbot.json b/bots/discord/fragbot/egg-fragbot.json
new file mode 100644
index 00000000..76d0bef3
--- /dev/null
+++ b/bots/discord/fragbot/egg-fragbot.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-04-27T21:33:33-04:00",
+ "name": "fragbot",
+ "author": "parker@parkervcp.com",
+ "description": "The fragforce discord bot.\r\n\r\nlocated at https:\/\/github.com\/fragforce\/fragbot",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_alpine",
+ "startup": ".\/fragbot",
+ "config": {
+ "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"token\": \"{{server.build.env.DISCORD_TOKEN}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Bot is now running\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{}",
+ "stop": "shutdown"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# fragbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nexport GOPATH=$HOME\/go\r\nexport PATH=$GOROOT\/bin:$GOPATH\/bin:$PATH\r\n\r\ncd\r\n\r\napk add --no-cache --update git\r\n\r\necho \"pulling the fragbot repo\"\r\n\r\ngit clone https:\/\/github.com\/fragforce\/fragbot.git\r\n\r\ncd fragbot\/\r\n\r\ngo mod download\r\n\r\necho \"building fragbot\"\r\n\r\ngo build \r\n\r\necho \"build complete copying parkertron and example configs over\"\r\n\r\ncp fragbot \/mnt\/server\/\r\n\r\nif [ -f \/mnt\/server\/config.json ]; then\r\n echo \"config file exists already\"\r\nelse\r\n cp -r \/root\/fragbot\/config.example.json \/mnt\/server\/config.json\r\nfi\r\n\r\necho \"Install complete. If you watched this. Congrats.\"",
+ "container": "golang:1.12-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Discord Bot Token",
+ "description": "The token that is to be used for the bot.",
+ "env_variable": "DISCORD_TOKEN",
+ "default_value": "ThisNeedsToBeChanged",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bots/discord/jmusicbot/README.md b/bots/discord/jmusicbot/README.md
new file mode 100644
index 00000000..e38a71e1
--- /dev/null
+++ b/bots/discord/jmusicbot/README.md
@@ -0,0 +1,6 @@
+# JMusicBot
+### Their [Github](https://github.com/jagrosh/MusicBot)
+A Discord music bot that's easy to set up and run yourself!
+
+### Server Ports
+There are no ports required for JMusicBot
\ 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
new file mode 100644
index 00000000..99cce2a7
--- /dev/null
+++ b/bots/discord/jmusicbot/egg-j-music-bot.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-02-21T13:00:39-05:00",
+ "name": "JMusicBot",
+ "author": "parker@parkervcp.com",
+ "description": "A Discord music bot that's easy to set up and run yourself!",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-8-jre",
+ "startup": "java -Djavax.accessibility.assistive_technologies=\" \" -Dnogui=true -jar JMusicBot.jar",
+ "config": {
+ "files": "{\r\n \"config.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"token =\": \"token = \\\"{{env.BOT_TOKEN}}\\\"\",\r\n \"prefix =\": \"prefix = \\\"{{env.BOT_PREFIX}}\\\"\",\r\n \"owner =\": \"owner = \\\"{{env.BOT_OWNER}}\\\"\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"\"\r\n}",
+ "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, VERSION and MATCH (match is to match the filename in some way)\r\n## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nGITHUB_PACKAGE=\"jagrosh\/MusicBot\"\r\nMATCH=\"All\"\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_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n CONFIG_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i config)\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 latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n CONFIG_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n fi\r\nfi\r\n\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\n\r\ncurl -Lo JMusicBot.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"config found\"\r\nelse\r\n echo -e \"config not found getting default\"\r\n curl -Lo config.txt ${CONFIG_LINK}\r\nfi\r\n\r\necho \"Job's Done\"",
+ "container": "debian:buster-slim",
+ "entrypoint": "\/bin\/bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Discord Bot Token",
+ "description": "The token for the discord bot.\r\n\r\nhttps:\/\/discordapp.com\/developers\/applications\/",
+ "env_variable": "BOT_TOKEN",
+ "default_value": "You need to get a token",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ },
+ {
+ "name": "Bot Prefix",
+ "description": "Thew prefix for the bot.\r\n\r\nDefault is it @mention the bot.",
+ "env_variable": "BOT_PREFIX",
+ "default_value": "@mention",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Bot Owner ID",
+ "description": "This is the user ID of the bot owner.",
+ "env_variable": "BOT_OWNER",
+ "default_value": "changethistoyourdiscordid",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:32"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bots/discord/parkertron/README.md b/bots/discord/parkertron/README.md
new file mode 100644
index 00000000..e66546f7
--- /dev/null
+++ b/bots/discord/parkertron/README.md
@@ -0,0 +1,8 @@
+# parkertron
+### Their [Github](https://github.com/parkervcp/parkertron)
+Purely a chatbot. Not even a smart one.
+
+Runs the Pterodactyl `@support bot`
+
+### Server Ports
+There are no ports required for parkertron
\ No newline at end of file
diff --git a/bots/discord/parkertron/egg-parkertron.json b/bots/discord/parkertron/egg-parkertron.json
index 908a36fe..8be2cbec 100644
--- a/bots/discord/parkertron/egg-parkertron.json
+++ b/bots/discord/parkertron/egg-parkertron.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-24T00:13:01-04:00",
+ "exported_at": "2019-02-17T12:34:32-05:00",
"name": "parkertron",
"author": "parker@parkervcp.com",
"description": "The stupid chatbot parkertron by Parkervcp.\r\n\r\nhttps:\/\/github.com\/parkervcp\/parkertron",
- "image": "quay.io\/parkervcp\/pterodactyl-images:parkertron",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:bot_parkertron",
"startup": ".\/parkertron",
"config": {
"files": "{}",
@@ -17,8 +17,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# parkertron Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nexport GOPATH=$HOME\/go\r\nexport PATH=$GOROOT\/bin:$GOPATH\/bin:$PATH\r\n\r\ncd\r\n\r\nmkdir -p go\/bin go\/src\r\n\r\napk add --no-cache --update go git curl lua-stdlib lua musl-dev g++ libc-dev tesseract-ocr tesseract-ocr-dev\r\n\r\necho \"installing dep for golang dependancies\"\r\n\r\ncurl https:\/\/raw.githubusercontent.com\/golang\/dep\/master\/install.sh | sh\r\n\r\ncd go\/src\/\r\n\r\necho \"pulling the parkertron pterodactyl branch\"\r\n\r\ngit clone https:\/\/github.com\/parkervcp\/parkertron.git\r\n\r\ncd parkertron\/\r\n\r\ndep ensure\r\n\r\necho \"building parkertron\"\r\n\r\ngo build \r\n\r\necho \"build complete copying parkertron and example configs over\"\r\n\r\ncp parkertron \/mnt\/server\/\r\n\r\nif [ -d \"$DIRECTORY\" ]; then\r\n echo \"Files exist already\"\r\nelse\r\n cp -r configs\/ \/mnt\/server\/\r\nfi\r\n\r\necho \"Install complete. If you watched this. Congrats.\"",
- "container": "alpine:3.7",
+ "script": "#!\/bin\/ash\r\n# parkertron Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nexport GOPATH=$HOME\/go\r\nexport PATH=$GOROOT\/bin:$GOPATH\/bin:$PATH\r\n\r\ncd\r\n\r\napk add --no-cache --update git curl lua-stdlib lua musl-dev g++ libc-dev tesseract-ocr tesseract-ocr-dev\r\n\r\necho \"pulling the parkertron pterodactyl branch\"\r\n\r\ngit clone https:\/\/github.com\/parkervcp\/parkertron.git\r\n\r\ncd parkertron\/\r\n\r\necho \"building parkertron\"\r\n\r\ngo build \r\n\r\necho \"build complete copying parkertron and example configs over\"\r\n\r\ncp parkertron \/mnt\/server\/\r\n\r\nif [ -d \"$DIRECTORY\" ]; then\r\n echo \"Files exist already\"\r\nelse\r\n cp configs\/ \/mnt\/server\/\r\nfi\r\n\r\necho \"Install complete. If you watched this. Congrats.\"",
+ "container": "golang:1.11-alpine",
"entrypoint": "ash"
}
},
diff --git a/bots/discord/pixelbot/README.md b/bots/discord/pixelbot/README.md
new file mode 100644
index 00000000..4726344e
--- /dev/null
+++ b/bots/discord/pixelbot/README.md
@@ -0,0 +1,9 @@
+# pixelbot
+### Their [Github](https://github.com/possatti/pixelbot)
+Bot for pixelcanvas.io
+
+### Server Ports
+There are no ports required for pixelbot
+
+### Side notes
+This was to make sure the parkervcp/images:python 3 image worked.
\ No newline at end of file
diff --git a/bots/discord/pixelbot/egg-pixel-bot.json b/bots/discord/pixelbot/egg-pixel-bot.json
index e9646353..5949b3b1 100644
--- a/bots/discord/pixelbot/egg-pixel-bot.json
+++ b/bots/discord/pixelbot/egg-pixel-bot.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-03-27T08:57:41-04:00",
+ "exported_at": "2020-01-19T11:11:24-05:00",
"name": "pixel-bot",
"author": "parker@parkervcp.com",
"description": "A Discord bot written in Python using discord.py\r\n\r\nhttps:\/\/github.com\/Ispira\/pixel-bot",
- "image": "quay.io\/parkervcp\/pterodactyl-images:python3",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:alpine_python-3",
"startup": "python bot.py",
"config": {
"files": "{\r\n \"config\/config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"owner\": \"{{server.build.env.OWNER_UID}}\",\r\n \"token\": \"{{server.build.env.BOT_TOKEN}}\",\r\n \"bot_name\": \"{{server.build.env.BOT_NAME}}\",\r\n \"log_file\": \"latest.log\"\r\n }\r\n },\r\n \"plugins\/settings\/imgur.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"client_id\": \"{{server.build.env.IMGUR_KEY}}\",\r\n \"client_secret\": \"{{server.build.env.IMGUR_SECRET}}\"\r\n }\r\n }\r\n}",
@@ -17,7 +17,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache git gcc g++ libffi-dev make\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Cloning pixel-bot repo\"\r\ngit clone https:\/\/github.com\/Ispira\/pixel-bot.git .\r\n\r\necho \"Installing python requirements into folder\"\r\npip install -U --target $(pwd) discord imgurpython xkcd pynacl",
+ "script": "#!\/bin\/ash\r\n# Pixel Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache git gcc g++ libffi-dev make\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Cloning pixel-bot repo\"\r\ngit clone https:\/\/github.com\/Ispira\/pixel-bot.git .\r\n\r\necho \"Installing python requirements into folder\"\r\npip install -U --target $(pwd) discord imgurpython xkcd pynacl",
"container": "python:3.6-alpine3.7",
"entrypoint": "ash"
}
diff --git a/bots/discord/sinusbot/README.md b/bots/discord/sinusbot/README.md
new file mode 100644
index 00000000..9fe05294
--- /dev/null
+++ b/bots/discord/sinusbot/README.md
@@ -0,0 +1,15 @@
+# SinusBot
+### Their [Site](https://www.sinusbot.com/)
+Listen to your favorite music together with all of your friends
+
+Welcome the Simple, Elegant & great sounding TS3- and Discord-Bot!
+
+### Server Ports
+1 port is required to run SinusBot.
+
+| Port | default |
+|---------|---------|
+| Game | 8087 |
+
+### Side notes
+This uses a custom image.
\ No newline at end of file
diff --git a/bots/discord/sinusbot/egg-sinusbot.json b/bots/discord/sinusbot/egg-sinusbot.json
index c89460ae..fa050d60 100644
--- a/bots/discord/sinusbot/egg-sinusbot.json
+++ b/bots/discord/sinusbot/egg-sinusbot.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-10T00:15:54-04:00",
+ "exported_at": "2019-07-25T10:48:45-04:00",
"name": "Sinusbot",
- "author": "ki2007@damw.eu",
+ "author": "support@pterodactyl.io",
"description": "Musicbot for Discord and Teamspeak.",
- "image": "quay.io\/parkervcp\/pterodactyl-images:sinusbot",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:bot_sinusbot",
"startup": ".\/sinusbot --override-password=\"${OVERRIDE_PASSWORD}\"",
"config": {
"files": "{\r\n \"config.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ListenPort\": \"ListenPort = {{server.build.default.port}}\",\r\n \"ListenHost\": \"ListenHost = \\\"0.0.0.0\\\"\"\r\n }\r\n }\r\n}",
@@ -17,7 +17,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\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-dl\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#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-dl\/youtube-dl\"' >> config.ini\r\n#cp scripts scripts_org\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download TeamSpeak Client\r\nwget -q `curl https:\/\/www.teamspeak.com\/en\/downloads#client | grep Client-linux_amd64 | grep option | grep 4Net | cut -d'\"' -f2`\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\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#Download youtube-dl\r\ncd \/mnt\/server\/youtube-dl\r\nwget -q https:\/\/yt-dl.org\/downloads\/latest\/youtube-dl\r\nchmod a+rx youtube-dl",
+ "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-dl\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#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-dl\/youtube-dl\"' >> 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-dl\r\ncd \/mnt\/server\/youtube-dl\r\nwget -q https:\/\/yt-dl.org\/downloads\/latest\/youtube-dl\r\nchmod a+rx youtube-dl",
"container": "ubuntu:18.04",
"entrypoint": "bash"
}
diff --git a/bots/teamspeak3/README.md b/bots/teamspeak3/README.md
new file mode 100644
index 00000000..f430ca9f
--- /dev/null
+++ b/bots/teamspeak3/README.md
@@ -0,0 +1,7 @@
+# TeamSpeak3 Bots
+
+### Some of these bots support other services but are primarily TeamSpeak3 bots
+
+#### JTS3ServerMod
+[JTS3ServerMod](https://www.stefan1200.de/forum/index.php?topic=2.0)
+Please Check their site for an in depth on the bot.
\ No newline at end of file
diff --git a/bots/teamspeak3/jts3servermod/egg-j-t-s3-server-mod.json b/bots/teamspeak3/jts3servermod/egg-j-t-s3-server-mod.json
new file mode 100644
index 00000000..c6094ad2
--- /dev/null
+++ b/bots/teamspeak3/jts3servermod/egg-j-t-s3-server-mod.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-01-11T00:40:33+01:00",
+ "name": "JTS3ServerMod",
+ "author": "teamwuffy@gmail.com",
+ "description": "Setup:\r\n- Install the latest version\r\n- Go into config\/server1 and edit JTS3ServerMod_server.cfg\r\n- Save and start the server\r\n\r\nAuthor: https:\/\/www.stefan1200.de\/forum\/index.php?topic=2.0",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar .\/JTS3ServerMod.jar",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Successful connected to \",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# JTS3ServerMod\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y install wget unzip\r\n\r\ncd \/tmp\r\n\r\nif [ -z \"$SERVER_VERSION\" ] || [ \"$SERVER_VERSION\" == \"latest\" ]; then\r\n wget -q -O JTS3ServerMod.zip 'https:\/\/www.stefan1200.de\/dlrequest.php?file=jts3servermod&type=.zip'\r\nelse\r\n wget -q -O JTS3ServerMod.zip 'https:\/\/www.stefan1200.de\/downloads\/JTS3ServerMod_$SERVER_VERSION.zip'\r\nfi\r\n\r\nunzip JTS3ServerMod.zip\r\n\r\nmkdir -p \/mnt\/server\r\nexport HOME=\/mnt\/server\r\n\r\nmv \/tmp\/JTS3ServerMod\/* \/mnt\/server\/",
+ "container": "ubuntu:18.10",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Version",
+ "description": "",
+ "env_variable": "SERVER_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/database/README.md b/database/README.md
new file mode 100644
index 00000000..66e60c2b
--- /dev/null
+++ b/database/README.md
@@ -0,0 +1,9 @@
+# databases
+
+## sql DBs
+
+### [mariadb](/database/mariadb/)
+ https://mariadb.org/
+
+### [postgres](/database/postgres/)
+ https://www.postgresql.org/
\ No newline at end of file
diff --git a/database/mariadb/README.md b/database/mariadb/README.md
new file mode 100644
index 00000000..10acde47
--- /dev/null
+++ b/database/mariadb/README.md
@@ -0,0 +1,17 @@
+# MariaDB
+### From their [Website](https://mariadb.org/)
+One of the most popular database servers. Made by the original developers of MySQL.
+Guaranteed to stay open source.
+
+### Minimum RAM warning
+There is no actual minimum suggested for MariaDB.
+
+See here https://mariadb.com/kb/en/library/mariadb-hardware-requirements/
+
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Server | 3306 |
diff --git a/database/mariadb/egg-maria-d-b.json b/database/mariadb/egg-maria-d-b.json
new file mode 100644
index 00000000..12afd857
--- /dev/null
+++ b/database/mariadb/egg-maria-d-b.json
@@ -0,0 +1,26 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-11-06T18:52:33-05:00",
+ "name": "MariaDB",
+ "author": "parker@parkervcp.com",
+ "description": "One of the most popular database servers. Made by the original developers of MySQL. Guaranteed to stay open source.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:db_mariadb",
+ "startup": "{ \/usr\/sbin\/mysqld & } && sleep 5 && mysql -u root",
+ "config": {
+ "files": "{\r\n \".my.cnf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port = {{server.build.default.port}}\",\r\n \"bind-address\": \"bind-address=0.0.0.0\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"mysqld: ready for connections\"\r\n}",
+ "logs": "{}",
+ "stop": "shutdown; exit;"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# MariaDB Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nset -x\r\n\r\necho -e \"installing dependencies\"\r\napt-get -y update\r\napt-get -y install curl\r\n\r\n## add user\r\necho -e \"adding container user\"\r\nuseradd -d \/home\/container -m container -s \/bin\/bash\r\n\r\n## own server to container user\r\nchown container: \/mnt\/server\/\r\n\r\n## run install script as user\r\necho -e \"getting my.conf\"\r\nif [ -f \/mnt\/server\/.my.cnf ]; then\r\n echo -e \"moving current config for install\"\r\n mv \/mnt\/server\/.my.cnf \/mnt\/server\/custom.my.cnf\r\n runuser -l container -c 'curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/mariadb\/install.my.cnf > \/mnt\/server\/.my.cnf'\r\nelse\r\n runuser -l container -c 'curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/mariadb\/install.my.cnf > \/mnt\/server\/.my.cnf'\r\nfi\r\n\r\n## mkdir and install db\r\necho -e \"installing mysql database\"\r\nrunuser -l container -c 'mkdir -p \/mnt\/server\/run\/mysqld'\r\nrunuser -l container -c 'mkdir -p \/mnt\/server\/log\/mysql'\r\nrunuser -l container -c 'mkdir \/mnt\/server\/mysql'\r\n\r\nrunuser -l container -c 'mysql_install_db --defaults-file=\/mnt\/server\/.my.cnf'\r\n\r\nif [ -f \/mnt\/server\/custom.my.cnf ]; then\r\n echo -e \"moving current config back in place\"\r\n mv \/mnt\/server\/custom.my.cnf \/mnt\/server\/.my.cnf\r\nelse\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/mariadb\/my.cnf > \/mnt\/server\/.my.cnf\r\nfi\r\n\r\necho -e \"install complete\"\r\n\r\nexit",
+ "container": "mariadb:10.3",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": []
+}
\ No newline at end of file
diff --git a/database/mariadb/install.my.cnf b/database/mariadb/install.my.cnf
new file mode 100644
index 00000000..f1af70ac
--- /dev/null
+++ b/database/mariadb/install.my.cnf
@@ -0,0 +1,189 @@
+# MariaDB database server configuration file.
+#
+# You can copy this file to one of:
+# - "/etc/mysql/my.cnf" to set global options,
+# - "~/.my.cnf" to set user-specific options.
+#
+# One can use all long options that the program supports.
+# Run program with --help to get a list of available options and with
+# --print-defaults to see which it would actually understand and use.
+#
+# For explanations see
+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
+
+# This will be passed to all mysql clients
+# It has been reported that passwords should be enclosed with ticks/quotes
+# escpecially if they contain "#" chars...
+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
+[client]
+port = 3306
+socket = /mnt/server/run/mysqld/mysqld.sock
+
+# Here is entries for some specific programs
+# The following values assume you have at least 32M ram
+
+# This was formally known as [safe_mysqld]. Both versions are currently parsed.
+[mysqld_safe]
+socket = /mnt/server/run/mysqld/mysqld.sock
+nice = 0
+
+[mysqld]
+#
+# * Basic Settings
+#
+#user = mysql
+pid-file = /mnt/server/run/mysqld/mysqld.pid
+socket = /mnt/server/run/mysqld/mysqld.sock
+port = 3306
+basedir = /usr
+datadir = /mnt/server/mysql
+tmpdir = /tmp
+lc_messages_dir = /usr/share/mysql
+lc_messages = en_US
+skip-external-locking
+#
+# Instead of skip-networking the default is now to listen only on
+# localhost which is more compatible and is not less secure.
+#
+# * Fine Tuning
+#
+max_connections = 100
+connect_timeout = 5
+wait_timeout = 600
+max_allowed_packet = 16M
+thread_cache_size = 128
+sort_buffer_size = 4M
+bulk_insert_buffer_size = 16M
+tmp_table_size = 32M
+max_heap_table_size = 32M
+#
+# * MyISAM
+#
+# This replaces the startup script and checks MyISAM tables if needed
+# the first time they are touched. On error, make copy and try a repair.
+myisam_recover_options = BACKUP
+key_buffer_size = 128M
+#open-files-limit = 2000
+table_open_cache = 400
+myisam_sort_buffer_size = 512M
+concurrent_insert = 2
+read_buffer_size = 2M
+read_rnd_buffer_size = 1M
+#
+# * Query Cache Configuration
+#
+# Cache only tiny result sets, so we can fit more in the query cache.
+query_cache_limit = 128K
+query_cache_size = 64M
+# for more write intensive setups, set to DEMAND or OFF
+#query_cache_type = DEMAND
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+# As of 5.1 you can enable the log at runtime!
+general_log_file = /mnt/server/log/mysql/mysql.log
+#general_log = 1
+#
+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
+#
+# we do want to know about network errors and such
+#log_warnings = 2
+#
+# Enable the slow query log to see queries with especially long duration
+#slow_query_log[={0|1}]
+slow_query_log_file = /mnt/server/log/mysql/mariadb-slow.log
+long_query_time = 10
+#log_slow_rate_limit = 1000
+#log_slow_verbosity = query_plan
+
+#log-queries-not-using-indexes
+#log_slow_admin_statements
+#
+# The following can be used as easy to replay backup logs or for replication.
+# note: if you are setting up a replication slave, see README.Debian about
+# other settings you may need to change.
+#server-id = 1
+#report_host = master1
+#auto_increment_increment = 2
+#auto_increment_offset = 1
+#log_bin = /var/log/mysql/mariadb-bin
+#log_bin_index = /var/log/mysql/mariadb-bin.index
+# not fab for performance, but safer
+#sync_binlog = 1
+expire_logs_days = 10
+max_binlog_size = 100M
+# slaves
+#relay_log = /var/log/mysql/relay-bin
+#relay_log_index = /var/log/mysql/relay-bin.index
+#relay_log_info_file = /var/log/mysql/relay-bin.info
+#log_slave_updates
+#read_only
+#
+# If applications support it, this stricter sql_mode prevents some
+# mistakes like inserting invalid dates etc.
+#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL
+#
+# * InnoDB
+#
+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
+# Read the manual for more InnoDB related options. There are many!
+default_storage_engine = InnoDB
+# you can't just change log file size, requires special procedure
+#innodb_log_file_size = 50M
+innodb_buffer_pool_size = 256M
+innodb_log_buffer_size = 8M
+innodb_file_per_table = 1
+innodb_open_files = 400
+innodb_io_capacity = 400
+innodb_flush_method = O_DIRECT
+#
+# * Security Features
+#
+# Read the manual, too, if you want chroot!
+# chroot = /var/lib/mysql/
+#
+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
+#
+# ssl-ca=/etc/mysql/cacert.pem
+# ssl-cert=/etc/mysql/server-cert.pem
+# ssl-key=/etc/mysql/server-key.pem
+
+#
+# * Galera-related settings
+#
+[galera]
+# Mandatory settings
+#wsrep_on=ON
+#wsrep_provider=
+#wsrep_cluster_address=
+#binlog_format=row
+#default_storage_engine=InnoDB
+#innodb_autoinc_lock_mode=2
+#
+# Allow server to accept connections on all interfaces.
+#
+bind-address=0.0.0.0
+#
+# Optional setting
+#wsrep_slave_threads=1
+#innodb_flush_log_at_trx_commit=0
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet = 16M
+
+[mysql]
+#no-auto-rehash # faster start of mysql but no tab completion
+
+[isamchk]
+key_buffer = 16M
+
+#
+# * IMPORTANT: Additional settings that can override those from this file!
+# The files must end with '.cnf', otherwise they'll be ignored.
+#
+!include /etc/mysql/mariadb.cnf
+!includedir /etc/mysql/conf.d/
\ No newline at end of file
diff --git a/database/mariadb/my.cnf b/database/mariadb/my.cnf
new file mode 100644
index 00000000..3049c1bb
--- /dev/null
+++ b/database/mariadb/my.cnf
@@ -0,0 +1,190 @@
+# MariaDB database server configuration file.
+#
+# You can copy this file to one of:
+# - "/etc/mysql/my.cnf" to set global options,
+# - "~/.my.cnf" to set user-specific options.
+#
+# One can use all long options that the program supports.
+# Run program with --help to get a list of available options and with
+# --print-defaults to see which it would actually understand and use.
+#
+# For explanations see
+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
+
+# This will be passed to all mysql clients
+# It has been reported that passwords should be enclosed with ticks/quotes
+# escpecially if they contain "#" chars...
+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
+[client]
+port = 3306
+socket = /home/container/run/mysqld/mysqld.sock
+
+# Here is entries for some specific programs
+# The following values assume you have at least 32M ram
+
+# This was formally known as [safe_mysqld]. Both versions are currently parsed.
+[mysqld_safe]
+socket = /home/container/run/mysqld/mysqld.sock
+nice = 0
+
+[mysqld]
+#
+# * Basic Settings
+#
+#user = mysql
+pid-file = /home/container/run/mysqld/mysqld.pid
+socket = /home/container/run/mysqld/mysqld.sock
+port = 3306
+basedir = /usr
+datadir = /home/container/mysql
+tmpdir = /tmp
+lc_messages_dir = /usr/share/mysql
+lc_messages = en_US
+skip-external-locking
+#
+# Instead of skip-networking the default is now to listen only on
+# localhost which is more compatible and is not less secure.
+bind-address=0.0.0.0
+#
+# * Fine Tuning
+#
+max_connections = 100
+connect_timeout = 5
+wait_timeout = 600
+max_allowed_packet = 16M
+thread_cache_size = 128
+sort_buffer_size = 4M
+bulk_insert_buffer_size = 16M
+tmp_table_size = 32M
+max_heap_table_size = 32M
+#
+# * MyISAM
+#
+# This replaces the startup script and checks MyISAM tables if needed
+# the first time they are touched. On error, make copy and try a repair.
+myisam_recover_options = BACKUP
+key_buffer_size = 128M
+#open-files-limit = 2000
+table_open_cache = 400
+myisam_sort_buffer_size = 512M
+concurrent_insert = 2
+read_buffer_size = 2M
+read_rnd_buffer_size = 1M
+#
+# * Query Cache Configuration
+#
+# Cache only tiny result sets, so we can fit more in the query cache.
+query_cache_limit = 128K
+query_cache_size = 64M
+# for more write intensive setups, set to DEMAND or OFF
+#query_cache_type = DEMAND
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+# As of 5.1 you can enable the log at runtime!
+general_log_file = /home/container/log/mysql/mysql.log
+#general_log = 1
+#
+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
+#
+# we do want to know about network errors and such
+#log_warnings = 2
+#
+# Enable the slow query log to see queries with especially long duration
+#slow_query_log[={0|1}]
+slow_query_log_file = /home/container/log/mysql/mariadb-slow.log
+long_query_time = 10
+#log_slow_rate_limit = 1000
+#log_slow_verbosity = query_plan
+
+#log-queries-not-using-indexes
+#log_slow_admin_statements
+#
+# The following can be used as easy to replay backup logs or for replication.
+# note: if you are setting up a replication slave, see README.Debian about
+# other settings you may need to change.
+#server-id = 1
+#report_host = master1
+#auto_increment_increment = 2
+#auto_increment_offset = 1
+#log_bin = /var/log/mysql/mariadb-bin
+#log_bin_index = /var/log/mysql/mariadb-bin.index
+# not fab for performance, but safer
+#sync_binlog = 1
+expire_logs_days = 10
+max_binlog_size = 100M
+# slaves
+#relay_log = /var/log/mysql/relay-bin
+#relay_log_index = /var/log/mysql/relay-bin.index
+#relay_log_info_file = /var/log/mysql/relay-bin.info
+#log_slave_updates
+#read_only
+#
+# If applications support it, this stricter sql_mode prevents some
+# mistakes like inserting invalid dates etc.
+#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL
+#
+# * InnoDB
+#
+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
+# Read the manual for more InnoDB related options. There are many!
+default_storage_engine = InnoDB
+# you can't just change log file size, requires special procedure
+#innodb_log_file_size = 50M
+innodb_buffer_pool_size = 256M
+innodb_log_buffer_size = 8M
+innodb_file_per_table = 1
+innodb_open_files = 400
+innodb_io_capacity = 400
+innodb_flush_method = O_DIRECT
+#
+# * Security Features
+#
+# Read the manual, too, if you want chroot!
+# chroot = /var/lib/mysql/
+#
+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
+#
+# ssl-ca=/etc/mysql/cacert.pem
+# ssl-cert=/etc/mysql/server-cert.pem
+# ssl-key=/etc/mysql/server-key.pem
+
+#
+# * Galera-related settings
+#
+[galera]
+# Mandatory settings
+#wsrep_on=ON
+#wsrep_provider=
+#wsrep_cluster_address=
+#binlog_format=row
+#default_storage_engine=InnoDB
+#innodb_autoinc_lock_mode=2
+#
+# Allow server to accept connections on all interfaces.
+#
+bind-address=0.0.0.0
+#
+# Optional setting
+#wsrep_slave_threads=1
+#innodb_flush_log_at_trx_commit=0
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet = 16M
+
+[mysql]
+#no-auto-rehash # faster start of mysql but no tab completion
+
+[isamchk]
+key_buffer = 16M
+
+#
+# * IMPORTANT: Additional settings that can override those from this file!
+# The files must end with '.cnf', otherwise they'll be ignored.
+#
+!include /etc/mysql/mariadb.cnf
+!includedir /etc/mysql/conf.d/
\ No newline at end of file
diff --git a/enemy_territory/etlegacy/README.md b/enemy_territory/etlegacy/README.md
new file mode 100644
index 00000000..43b83406
--- /dev/null
+++ b/enemy_territory/etlegacy/README.md
@@ -0,0 +1,20 @@
+# ET: Legacy
+
+#### The ET: Legacy Server
+
+
+#### from the developers
+
+Wolfenstein: Enemy Territory is a free multiplayer first-person shooter. Set during World War II and heavily focused on team work, it was initially released in 2003 by Splash Damage and id Software. More than a decade after its release, after spending countless hours of escorting tanks and trucks, stealing gold and radar parts
+and transmitting confidential documents, it was time to dust off the game which consistently refused to go down.
+
+Enemy Territory: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of GPLv3 license. The main goal of this project is to fix bugs, remove old dependencies and make it playable on all major operating systems while still remaining compatible with the ET 2.60b version and as many of its mods as possible. We do appreciate any contribution to the project such as patches, suggestions or comments.
+
+Make sure to checkout their [Home Page](https://www.etlegacy.com/).
+
+### Server Ports
+ET: Legacy requires a single port
+
+| Port | default |
+|---------|---------|
+| Game | 27960 |
\ No newline at end of file
diff --git a/enemy_territory/etlegacy/egg-e-t-legacy.json b/enemy_territory/etlegacy/egg-e-t-legacy.json
new file mode 100644
index 00000000..0f5dc4cc
--- /dev/null
+++ b/enemy_territory/etlegacy/egg-e-t-legacy.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-04-29T22:08:18+08:00",
+ "name": "ET Legacy",
+ "author": "parker@parkervcp.com",
+ "description": "Welcome to Enemy Territory: Legacy, an open source project that aims to create a fully compatible client and server for the popular online FPS game Wolfenstein: Enemy Territory - whose gameplay is still considered unmatched by many, despite its great age.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "startup": ".\/etlded +set net_port {{SERVER_PORT}} +map {{MAP}}",
+ "config": {
+ "files": "{\r\n \"etmain\/etl_server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"\/\/set net_ip \\\"\\\"\": \"set net_ip \\\"0.0.0.0\\\"\",\r\n \"\/\/set net_port \\\"27960\\\"\": \"set net_port \\\"{{server.build.env.SERVER_PORT}}\\\"\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"------ Server Initialization ------\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{}",
+ "stop": "quit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get -y install wget curl zip unzip\r\n\r\ncd \/tmp\/\r\n\r\necho \"Downloading $ET_VERSION bit ET Legacy version\"\r\n\r\nif [ $ET_VERSION == \"32\" ];then \r\n wget `curl https:\/\/www.etlegacy.com\/download | grep \"Linux 32-bit bin\" | grep -Eoi ']+>' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo '(http|https):\/\/[^\"]+'` -O etlegacy.tar.gz\r\nelse\r\n wget `curl https:\/\/www.etlegacy.com\/download | grep \"Linux 64-bit bin\" | grep -Eoi ']+>' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo '(http|https):\/\/[^\"]+'` -O etlegacy.tar.gz\r\nfi\r\n\r\necho \"Unpacking ET: Legacy\"\r\ntar --strip-components=1 -xzvf etlegacy.tar.gz -C \/mnt\/server\/\r\n\r\necho \"Downloading latest enemy territory files\"\r\nwget `curl https:\/\/www.splashdamage.com\/games\/wolfenstein-enemy-territory\/ | grep .x86_full | grep -Eoi ']+>' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo --color=never '(http|https):\/\/[^\"]+'` -O enemy_territory.zip\r\n\r\necho \"Unpacking enemy territory files\"\r\nunzip enemy_territory.zip\r\n\r\necho \"Copying enemy territory assets\"\r\n.\/*.x86_keygen_V03.run --tar xvf .\/etmain\/\r\ncp etmain\/pak*.pk3 \/mnt\/server\/etmain\/\r\n\r\n# Create .etlegacy as the server doesn't correctly create it\r\nmkdir -p \/mnt\/server\/.etlegacy",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "ET Legacy Version",
+ "description": "What version of the server to install. 32 or 64 bit version.",
+ "env_variable": "ET_VERSION",
+ "default_value": "32",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer|in:32, 64"
+ },
+ {
+ "name": "Default Map",
+ "description": "The default map to use when starting the server.",
+ "env_variable": "MAP",
+ "default_value": "oasis",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
diff --git a/example/README.md b/example/README.md
new file mode 100644
index 00000000..94d7f62b
--- /dev/null
+++ b/example/README.md
@@ -0,0 +1,20 @@
+# Example Server Name
+### From their [Github](https://github.com/parkervcp/eggs)
+A link to the site that you download game files from.
+The description of the server usually provided by the game/server maker.
+
+### Install notes
+Due to rate limiting the console on the panel 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.
+
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 25565 |
+
+#### Mods/Plugins may require ports to be added to the server.
diff --git a/factorio/factorio/egg-factorio.json b/factorio/factorio/egg-factorio.json
index afad8fb2..34201ede 100644
--- a/factorio/factorio/egg-factorio.json
+++ b/factorio/factorio/egg-factorio.json
@@ -3,21 +3,21 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-29T02:28:44-04:00",
+ "exported_at": "2019-08-18T21:02:25+02:00",
"name": "Factorio",
"author": "parker@parkervcp.com",
"description": "The vanilla Factorio server.\r\n\r\nhttps:\/\/www.factorio.com\/",
- "image": "quay.io\/pterodactyl\/core:glibc",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:glibc",
"startup": ".\/bin\/x64\/factorio --port {{SERVER_PORT}} --server-settings data\/server-settings.json --start-server {{SAVE_NAME}}.zip",
"config": {
- "files": "{\r\n \"data\/server-settings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"description\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"max_players\": \"{{server.build.env.MAX_SLOTS}}\",\r\n \"game_password\": \"{{server.build.env.SERVER_PASS}}\",\r\n \"username\": \"{{server.build.env.SERVER_USERNAME}}\",\r\n \"token\": \"{{server.build.env.SERVER_TOKEN}}\",\r\n \"autosave_interval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"autosave_slots\": \"{{server.build.env.SAVE_SLOTS}}\",\r\n \"afk_autokick_interval\": \"{{server.build.env.AFK_KICK}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"Hosting game at IP ADDR\",\r\n \"userInteraction\": []\r\n}",
+ "files": "{\r\n \"data\/server-settings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"description\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"max_players\": \"{{server.build.env.MAX_SLOTS}}\",\r\n \"username\": \"{{server.build.env.SERVER_USERNAME}}\",\r\n \"token\": \"{{server.build.env.SERVER_TOKEN}}\",\r\n \"autosave_interval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"autosave_slots\": \"{{server.build.env.SAVE_SLOTS}}\",\r\n \"afk_autokick_interval\": \"{{server.build.env.AFK_KICK}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Hosting game at\",\r\n \"userInteraction\": []\r\n}",
"logs": "{\r\n \"custom\": false,\r\n \"location\": \"factorio-current.log\"\r\n}",
"stop": "\/quit"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl tar xz jq\r\n\r\nlatest_stable=`curl -sL https:\/\/updater.factorio.com\/get-available-versions | jq -r '.[\"core-linux_headless64\"] | .[] | .[\"stable\"] | select(. != null)'`\r\nlatest_experimental=`curl -sL https:\/\/www.factorio.com\/download-headless\/experimental | grep -m 1 -o -E '([0-9]\\.[0-9][0-9]\\.[0-9][0-9] | [0-9]\\.[0-9][0-9]\\.[0-9])'`\r\n\r\nif [ -z \"${FACTORIO_VERSION}\" ] || [ \"${FACTORIO_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_stable\r\nelif [ \"${FACTORIO_VERSION}\" == \"experimental\" ]; then\r\n DL_VERSION=$latest_experimental\r\nelse\r\n DL_VERSION=${FACTORIO_VERSION}\r\nfi\r\n\r\necho -e \"\\n running 'curl -sL https:\/\/www.factorio.com\/get-download\/${DL_VERSION}\/headless\/linux64 -o factorio-${DL_VERSION}.tar.gz' \\n\"\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sL https:\/\/www.factorio.com\/get-download\/${DL_VERSION}\/headless\/linux64 -o factorio-${DL_VERSION}.tar.gz\r\n\r\ntar -xf factorio-${DL_VERSION}.tar.gz --strip-components=1 -C \/mnt\/server\r\n\r\nrm factorio-${DL_VERSION}.tar.gz\r\n\r\nif [ -e data\/map-gen-settings.json ]; then\r\n echo \"map-gen exists\"\r\nelse\r\n echo \"copying map-gen default settings\"\r\n mv data\/map-gen-settings.example.json data\/map-gen-settings.json\r\nfi\r\n\r\nif [ -e data\/server-settings.json ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"copying server default settings\"\r\n mv data\/server-settings.example.json data\/server-settings.json\r\nfi\r\n\r\nif [ -e map-settings.json ]; then\r\n echo \"map settings exists\"\r\nelse\r\n echo \"copying map default settings\"\r\n mv data\/map-settings.example.json data\/map-settings.json\r\nfi\r\n\r\nif [ -e ${SAVE_NAME}.zip ]; then\r\n echo \"save file exists\"\r\nelse\r\n .\/bin\/x64\/factorio --create ${SAVE_NAME} --map-settings data\/map-settings.json --map-gen-settings data\/map-gen-settings.json\r\n chmod o+w ${SAVE_NAME}.zip\r\nfi",
+ "script": "#!\/bin\/ash\r\n# Factorio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl tar xz jq\r\n\r\nlatest_stable=`curl -sL https:\/\/updater.factorio.com\/get-available-versions | jq -r '.[\"core-linux_headless64\"] | .[] | .[\"stable\"] | select(. != null)'`\r\nlatest_experimental=`curl -sL https:\/\/www.factorio.com\/download-headless\/experimental | grep -m 1 -o -E '([0-9]\\.[0-9]*\\.[0-9]*)'`\r\n\r\nif [ -z \"${FACTORIO_VERSION}\" ] || [ \"${FACTORIO_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=$latest_stable\r\nelif [ \"${FACTORIO_VERSION}\" == \"experimental\" ]; then\r\n DL_VERSION=$latest_experimental\r\nelse\r\n DL_VERSION=${FACTORIO_VERSION}\r\nfi\r\n\r\necho -e \"\\n running 'curl -sL https:\/\/www.factorio.com\/get-download\/${DL_VERSION}\/headless\/linux64 -o factorio-${DL_VERSION}.tar.gz' \\n\"\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sL https:\/\/www.factorio.com\/get-download\/${DL_VERSION}\/headless\/linux64 -o factorio-${DL_VERSION}.tar.gz\r\n\r\ntar -xf factorio-${DL_VERSION}.tar.gz --strip-components=1 -C \/mnt\/server\r\n\r\nrm factorio-${DL_VERSION}.tar.gz\r\n\r\nif [ -e data\/map-gen-settings.json ]; then\r\n echo \"map-gen exists\"\r\nelse\r\n echo \"copying map-gen default settings\"\r\n mv data\/map-gen-settings.example.json data\/map-gen-settings.json\r\nfi\r\n\r\nif [ -e data\/server-settings.json ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"copying server default settings\"\r\n mv data\/server-settings.example.json data\/server-settings.json\r\nfi\r\n\r\nif [ -e map-settings.json ]; then\r\n echo \"map settings exists\"\r\nelse\r\n echo \"copying map default settings\"\r\n mv data\/map-settings.example.json data\/map-settings.json\r\nfi\r\n\r\nif [ -e ${SAVE_NAME}.zip ]; then\r\n echo \"save file exists\"\r\nelse\r\n .\/bin\/x64\/factorio --create ${SAVE_NAME}\r\n chmod o+w ${SAVE_NAME}.zip\r\nfi",
"container": "frolvlad\/alpine-glibc",
"entrypoint": "ash"
}
@@ -112,15 +112,6 @@
"user_viewable": 1,
"user_editable": 1,
"rules": "required|numeric|digits_between:1,3"
- },
- {
- "name": "Server Password",
- "description": "Password to join the server, Blank is none.",
- "env_variable": "SERVER_PASS",
- "default_value": "",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:30"
}
]
}
diff --git a/gta/README.md b/gta/README.md
index e5cd3d17..64bdd40e 100644
--- a/gta/README.md
+++ b/gta/README.md
@@ -5,10 +5,16 @@
[FiveM](https://fivem.net/)
FiveM is a modification for Grand Theft Auto V enabling you to play multiplayer on customized dedicated servers.
-[Rage MP](https://rage.mp/?)
+[Rage MP](https://rage.mp/)
RAGE Multiplayer is an multiplayer modification for Grand Theft Auto V that is alternative to GTA Online.
+[alt:V](https://altv.mp)
+alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V
+
## San Andreas
[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).
+
+[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/gta/altv/README.md b/gta/altv/README.md
new file mode 100644
index 00000000..dddd7a36
--- /dev/null
+++ b/gta/altv/README.md
@@ -0,0 +1,11 @@
+# alt:v
+
+### From the [alt:V](https://altv.mp) Site
+alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V.
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 7788 |
diff --git a/gta/altv/egg-alt--v.json b/gta/altv/egg-alt--v.json
new file mode 100644
index 00000000..944fdd7d
--- /dev/null
+++ b/gta/altv/egg-alt--v.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-02-19T21:48:36-05:00",
+ "name": "alt:V",
+ "author": "parker@parkervcp.com",
+ "description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
+ "startup": "sleep 2 && .\/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}",
+ "startup": "{\r\n \"done\": \"Server started\"\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# AltV Install Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# BUILD=stable ## this should be an egg variable.\r\nBASE_URL=\"https:\/\/cdn.altv.mp\/\" ## Where the files are stored.\r\n\r\n## install required dependancies.\r\nfunction install_deps () {\r\n apt update\r\n apt install -y libatomic1 zip unzip jq curl wget\r\n echo -e \"deps installed\"\r\n echo -e\r\n}\r\n\r\n## check the has on files and compare to a remote source.\r\n## usage 'check_hash \"file\" \"remote_hash_source\"'\r\nfunction check_hash () {\r\n echo -e \"Checking for file ${1}\"\r\n echo -e \"running: curl -sSL ${2} | jq -r --arg FILENAME \\\"${3}\\\" '.hashList | .[\\$FILENAME]'\"\r\n hash=$(curl -sSL ${2} | jq -r --arg FILENAME ${3} '.hashList | .[$FILENAME]')\r\n echo -e \"hash: $hash\"\r\n\r\n if [ -f ${2} ]; then\r\n\r\n echo -e \"hash is $(sha1sum ${1} | awk '{ print $1 }')\"\r\n echo -e \"current has is ${hash}\"\r\n\r\n if [ \"$(sha1sum ${2} | awk '{ print $1 }')\" == \"${hash}\" ]; then\r\n echo -e \"Hash matched\"\r\n echo -e \"No need to download new file.\"\r\n return 0\r\n else\r\n echo -e \"Hash didn't match\"\r\n echo -e \"Need to download the correct version\"\r\n return 1\r\n fi\r\n else\r\n echo \"No file found\"\r\n return 1\r\n fi\r\n}\r\n\r\n## makes sure a download link is valid.\r\nfunction validate_download () {\r\n DOWNLOAD_URL=${1}\r\n\r\n echo -e \"Download url is ${DOWNLOAD_URL}\"\r\n\r\n if [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\n fi\r\n\r\n}\r\n\r\nfunction download_files () {\r\n ## validate download link and get files\r\n validate_download ${1}\r\n echo -e \"running wget ${DOWNLOAD_URL} -O ${2}\"\r\n wget ${DOWNLOAD_URL} -O ${2}\r\n}\r\n\r\n## This is a file array for files to get downloaded.\r\n## They are all comma separated lists.\r\n## remote folder (0), json file with hashes (1), file name in json file (2), file name (3), file folder (4), extra commands (5)\r\nfile_array=( \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"altv-server\",\"altv-server\",\/mnt\/server\/,execute \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"data\/vehmodels.bin\",\"vehmodels.bin\",\/mnt\/server\/data\/ \\\r\n\"server\/${BUILD}\/x64_linux\/\",\"update.json\",\"data\/vehmods.bin\",\"vehmods.bin\",\/mnt\/server\/data\/ \\\r\n\"others\/\",,\"server.cfg\",server.cfg,\/mnt\/server\/ \\\r\n\"node-module\/${BUILD}\/x64_linux\/\",\"update.json\",\"libnode.so.72\",\"libnode.so.72\",\/mnt\/server\/ \\\r\n\"node-module\/${BUILD}\/x64_linux\/\",\"update.json\",\"modules\/libnode-module.so\",\"libnode-module.so\",\/mnt\/server\/modules\/ \\\r\n\"coreclr-module\/${BUILD}\/x64_linux\/\",,\"AltV.Net.Host.dll\",\"AltV.Net.Host.dll\",\/mnt\/server\/ \\\r\n\"coreclr-module\/${BUILD}\/x64_linux\/\",,\"AltV.Net.Host.runtimeconfig.json\",\"AltV.Net.Host.runtimeconfig.json\",\/mnt\/server\/ \\\r\n\"coreclr-module\/stable\/x64_linux\/\",\"update.json\",\"modules\/libcsharp-module.so\",\"libcsharp-module.so\",\/mnt\/server\/modules\/ \\\r\n\"samples\/\",,\"resources.zip\",\"resources.zip\",\/mnt\/server\/,unzip \\\r\n)\r\n\r\ninstall_deps\r\n\r\n## this goes through each value in the array and then checks the hash\r\nfor EACH in ${file_array[@]}\r\ndo\r\n ## this needs to be here to break apart the arrays.\r\n IFS=',' read -r -a array <<< \"$EACH\"\r\n\r\n if [ ! -z \"${array[1]}\" ]; then\r\n ## check hash on 'folder\/file' with 'remote file base url\/remote folder\/ json file' 'json file name' \r\n if check_hash \"${array[4]}${array[3]}\" \"${BASE_URL}${array[0]}${array[1]}\" \"${array[2]}\"; then\r\n echo -e \"file up to date\"\r\n else\r\n echo -e \"downloading most recent file\"\r\n fi\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n else\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n fi\r\n\r\n ## run extra commands if needed.\r\n case ${array[5]} in\r\n unzip)\r\n cd ${array[4]}\r\n unzip -o ${array[3]}\r\n rm ${array[3]}\r\n ;;\r\n execute)\r\n chmod +x ${array[4]}${array[3]}\r\n ;;\r\n esac\r\n\r\n# echo -e \"HashFile: ${BASE_URL}${array[0]}${array[1]}\"\r\n# echo -e \"Download URL ${BASE_URL}${array[0]}${array[2]}\"\r\n# echo -e \"Filename ${array[3]}\"\r\n# echo -e \"File Folder ${array[4]}\"\r\n# echo -e \"commands to run ${array[5]}\"\r\n# echo -e\r\ndone\r\n\r\necho -e \"install complete\"",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "ld lib path",
+ "description": "Needed to load modules correctly.",
+ "env_variable": "LD_LIBRARY_PATH",
+ "default_value": ".",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Which alt:V build to download",
+ "description": "The supported versions are release, rc, dev (default: release).\r\n\r\nIf you don't know what you are doing leave it on stable",
+ "env_variable": "BUILD",
+ "default_value": "release",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Server Password",
+ "description": "The password to join the server",
+ "env_variable": "PASSWORD",
+ "default_value": "ChangeMe",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|min:6"
+ },
+ {
+ "name": "Server Description",
+ "description": "Description for the server.",
+ "env_variable": "SERVER_DESC",
+ "default_value": "A Pterodactyl Hosted Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/gta/fivem/README.md b/gta/fivem/README.md
index fa08bb2a..69dd4670 100644
--- a/gta/fivem/README.md
+++ b/gta/fivem/README.md
@@ -1,3 +1,23 @@
# FiveM
-The [FiveM](https://fivem.net/) GTA 5 dedicated server
+
+# Notice
+
+This is to inform all users that the4 fivem team has enabled cloudflare ddos protection and the install script is now broken due to this.
+
+You will need to have a self hosted version of the server files to curl in the install script.
+
+I have added a `DOWNLOAD_URL` variable that needs to point to a `fx.tar.xz` file as I am too lazy to update the entire script.
+
+### From the [FiveM](https://fivem.net/) Site
+FiveM is a modification for Grand Theft Auto V enabling you to play multiplayer on customized dedicated servers.
+
+### Install notes
- Only installs latest version versions are not selectable.
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 30210 |
+| Game+1 | 30211 |
diff --git a/gta/fivem/egg-five-m.json b/gta/fivem/egg-five-m.json
index d86b1fdb..6aa4b4b0 100644
--- a/gta/fivem/egg-five-m.json
+++ b/gta/fivem/egg-five-m.json
@@ -3,22 +3,22 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-17T10:59:42-04:00",
+ "exported_at": "2019-11-03T20:45:20-05:00",
"name": "FiveM",
"author": "parker@parkervcp.com",
"description": "A new FiveM egg for the latest builds due to recent changes in FiveM",
- "image": "quay.io\/parkervcp\/pterodactyl-images:alpine",
- "startup": "$(pwd)\/alpine\/opt\/cfx-server\/ld-musl-x86_64.so.1 --library-path \"$(pwd)\/alpine\/usr\/lib\/v8\/:$(pwd)\/alpine\/lib\/:$(pwd)\/alpine\/usr\/lib\/\" -- $(pwd)\/alpine\/opt\/cfx-server\/FXServer +set citizen_dir $(pwd)\/alpine\/opt\/cfx-server\/citizen\/ +set sv_licenseKey {{FIVEM_LICENSE}} +set sv_maxplayers {{MAX_PLAYERS}} +exec server.cfg",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_alpine",
+ "startup": "$(pwd)\/alpine\/opt\/cfx-server\/ld-musl-x86_64.so.1 --library-path \"$(pwd)\/alpine\/usr\/lib\/v8\/:$(pwd)\/alpine\/lib\/:$(pwd)\/alpine\/usr\/lib\/\" -- $(pwd)\/alpine\/opt\/cfx-server\/FXServer +set citizen_dir $(pwd)\/alpine\/opt\/cfx-server\/citizen\/ +set sv_licenseKey {{FIVEM_LICENSE}} +set steam_webApiKey {{STEAM_WEBAPIKEY}} +set sv_maxplayers {{MAX_PLAYERS}} +exec server.cfg",
"config": {
"files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"endpoint_add_tcp\": \"endpoint_add_tcp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"endpoint_add_udp\": \"endpoint_add_udp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_HOSTNAME}}\\\"\",\r\n \"sv_maxclients\": \"sv_maxclients {{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"Server license key authentication succeeded. Welcome!\"\r\n}",
+ "startup": "{\r\n \"done\": \"succeeded. Welcome!\"\r\n}",
"logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash \r\n\r\napk add openssl tar xz curl wget git --no-cache\r\n\r\ncd \/mnt\/server\r\n\r\nmkdir resources\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\ncd \/mnt\/server\r\n\r\necho \"Downloading the latest fivem server files\"\r\nlatest_fivem_url=`curl https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/ | tail -4 | head -1 | cut -d'\"' -f2`\r\n\r\necho -e \"pulling files from https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${latest_fivem_url}fx.tar.xz\"\r\nwget https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${latest_fivem_url}fx.tar.xz\r\n\r\necho \"Extracting fivem files\"\r\n\r\ntar xf fx.tar.xz\r\n\r\nrm -rf fx.tar.xz 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\/gta\/fivem\/server.cfg >> server.cfg\r\nfi\r\n\r\nmkdir logs\/\r\n\r\necho \"install complete\"",
- "container": "alpine:3.7",
+ "script": "#!\/bin\/ash\r\n# FiveM Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add openssl tar xz curl wget git file --no-cache\r\n\r\nmkdir -p \/mnt\/server\/resources\r\n\r\ncd \/mnt\/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https:\/\/github.com\/citizenfx\/cfx-server-data.git \/tmp\r\ncp -Rf \/tmp\/resources\/* resources\/ \r\n\r\nRELEASE_PAGE=$(curl -sSL https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/)\r\n\r\nif [ \"${FIVEM_VERSION}\" == \"latest\" ] || [ -z ${FIVEM_VERSION} ] ; then\r\n LATEST_RECOMMENDED=$(echo -e \"${RELEASE_PAGE}\" | grep \"LATEST RECOMMENDED\" -B1 | grep -Eo 'href=\".*\/*.tar.xz\"' | grep -Eo '\".*\"' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1')\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${LATEST_RECOMMENDED})\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo 'href=\".*\/*.tar.xz\"' | grep -Eo '\".*\"' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1' | grep ${FIVEM_VERSION})\r\n if [ \"${VERSION_LINK}\" == \"\" ]; then\r\n echo -e \"defaulting to latest as the version requested was invalid.\"\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. Exeting\"\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\/gta\/fivem\/server.cfg >> server.cfg\r\nfi\r\n\r\nmkdir logs\/\r\n\r\necho \"install complete\"",
+ "container": "alpine:3.10",
"entrypoint": "ash"
}
},
@@ -32,11 +32,20 @@
"user_editable": 1,
"rules": "required|string|max:32"
},
+ {
+ "name": "Steam Web Api Key",
+ "description": "Use your Steam WebApiKey or set to 'none'. Get your key at https:\/\/steamcommunity.com\/dev\/apikey\/",
+ "env_variable": "STEAM_WEBAPIKEY",
+ "default_value": "none",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
{
"name": "Max Players",
"description": "Set the fivem max play count",
"env_variable": "MAX_PLAYERS",
- "default_value": "30",
+ "default_value": "32",
"user_viewable": 1,
"user_editable": 0,
"rules": "required|integer|between:1,32"
@@ -49,6 +58,24 @@
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string"
+ },
+ {
+ "name": "fivem version",
+ "description": "The fivem version that is to be installed.\r\n\r\nan example is `1383-e5ea040353ce1b8bc86e37982bf5d888938e3096`\r\n\r\nYou can the latest version from here - https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/",
+ "env_variable": "FIVEM_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:50"
+ },
+ {
+ "name": "Download Link",
+ "description": "This is the link to download fivem from. This is only used in the install script.\r\n\r\nThe file you link to needs to be an fx.tar.zx file.\r\n\r\nExample:\r\nhttps:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/1626-8c06e8bc3ed7e6690c6c2d9e0b90e29df65b3ea6\/fx.tar.xz",
+ "env_variable": "DOWNLOAD_URL",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "string|nullable"
}
]
}
diff --git a/gta/mtasa/README.md b/gta/mtasa/README.md
new file mode 100644
index 00000000..ed5c0ff2
--- /dev/null
+++ b/gta/mtasa/README.md
@@ -0,0 +1,14 @@
+# Multi Theft Auto
+[Multi Theft Auto](https://mtasa.com/) is a Open Source Grand Theft Auto: San Andreas Multiplayer modification.
+
+### Server Ports
+
+Multi Theft Auto requires 3 ports.
+
+| Port | Default |
+-------|----------
+| Game | 22003 |
+| http | 22005 |
+| ASE | 22126 |
+
+The ASE port is required to announce the server to the mta server list, this port is always the Game port (22003) +123.
diff --git a/gta/mtasa/egg-multi-theft-auto.json b/gta/mtasa/egg-multi-theft-auto.json
new file mode 100644
index 00000000..1500c5d6
--- /dev/null
+++ b/gta/mtasa/egg-multi-theft-auto.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-03-10T15:39:00+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.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "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}",
+ "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 -sSL -o multitheftauto_linux_x64.tar.gz https:\/\/linux.mtasa.com\/dl\/multitheftauto_linux_x64.tar.gz\r\ncurl -sSL -o mta-baseconfig.tar.gz https:\/\/linux.mtasa.com\/dl\/baseconfig.tar.gz\r\ncurl -sSL -o mtasa-resources-latest.zip http:\/\/mirror.mtasa.com\/mtasa\/resources\/mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf multitheftauto_linux_x64.tar.gz -C \/mnt\/server\/\r\ncp -r \/mnt\/server\/multitheftauto_linux_x64\/* \/mnt\/server\r\nrm -rf \/mnt\/server\/multitheftauto_linux_x64\/\r\n\r\nmkdir -p \/mnt\/server\/mods\/deathmatch\/resources\r\nunzip -d \/mnt\/server\/mods\/deathmatch\/resources mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server-conf\r\ntar -xzvf mta-baseconfig.tar.gz -C \/mnt\/server-conf\r\ncp -r \/mnt\/server-conf\/baseconfig\/* \/mnt\/server\/mods\/deathmatch\r\nrm -rf \/mnt\/server-conf\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server",
+ "container": "ubuntu:16.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "SERVER_WEBPORT",
+ "description": "The http port for web resource.\r\nThis Port needs to be the {{SERVER_PORT}}+3.",
+ "env_variable": "SERVER_WEBPORT",
+ "default_value": "22005",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric"
+ }
+ ]
+}
diff --git a/gta/ragemp/conf.json b/gta/ragemp/conf.json
index 8787335b..8ee83ffd 100644
--- a/gta/ragemp/conf.json
+++ b/gta/ragemp/conf.json
@@ -1,9 +1,9 @@
{
- "announce": false,
+ "announce": true,
"bind": "0.0.0.0",
"gamemode": "freeroam",
"name": "RAGE:MP Unofficial server",
"maxplayers": 100,
"port": 26011,
"streamdistance": 500
-}
\ No newline at end of file
+}
diff --git a/gta/ragemp/egg-rage--m-p.json b/gta/ragemp/egg-rage--m-p.json
index 039a0e7a..4c9ea78a 100644
--- a/gta/ragemp/egg-rage--m-p.json
+++ b/gta/ragemp/egg-rage--m-p.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-06-03T00:48:50-04:00",
+ "exported_at": "2019-09-04T17:31:10-04:00",
"name": "Rage.MP",
"author": "noreply.waypointhosting@gmail.com",
"description": "https:\/\/rage.mp\/\r\n\r\nThis server requires 2 ports to be added for the server. the main port and the next (port+1) as ports for the server.",
- "image": "quay.io\/pterodactyl\/core:glibc",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
"startup": ".\/server",
"config": {
"files": "{\r\n \"conf.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"bind\": \"0.0.0.0\",\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"announce\": \"{{server.build.env.ANNOUNCE}}\"\r\n }\r\n }\r\n}",
@@ -17,8 +17,8 @@
},
"scripts": {
"installation": {
- "script": "apt update\r\napt -y install curl tar libstdc++6\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Downloading rage.mp\"\r\ncurl -sSL -o ragemp-srv.tar.gz https:\/\/cdn.rage.mp\/lin\/ragemp-srv.tar.gz\r\n\r\ntar -xzvf ragemp-srv.tar.gz --strip 1 -C \/mnt\/server\r\n\r\nrm ragemp-srv.tar.gz\r\n\r\nchmod +x .\/server\r\n\r\nif [ -e conf.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default rage.mp config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/GTA\/RageMP\/conf.json >> conf.json\r\nfi\r\n\r\necho \"install complete\"\r\n\r\nexit 0",
- "container": "ubuntu:16.04",
+ "script": "apt update\r\napt -y install curl tar\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Downloading rage.mp\"\r\ncurl -sSL -o ragemp-srv.tar.gz https:\/\/cdn.rage.mp\/lin\/ragemp-srv.tar.gz\r\n\r\ntar -xzvf ragemp-srv.tar.gz --strip 1 -C \/mnt\/server\r\n\r\nrm ragemp-srv.tar.gz\r\n\r\nchmod +x .\/server\r\n\r\nif [ -e conf.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default rage.mp config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/GTA\/RageMP\/conf.json >> conf.json\r\nfi\r\n\r\necho \"install complete\"\r\n\r\nexit 0",
+ "container": "debian:stable-slim",
"entrypoint": "bash"
}
},
@@ -43,9 +43,9 @@
},
{
"name": "Announce",
- "description": "Announce to the master server so people can see you in their server browser.",
+ "description": "Announce to the master server so people can see you in their server browser.\r\n\r\nThis needs to be a 0 (false) or 1 (true) due to weird boolean parsing.",
"env_variable": "ANNOUNCE",
- "default_value": "false",
+ "default_value": "0",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|boolean"
diff --git a/gta/samp/egg-sa-mp.json b/gta/samp/egg-s-a--m-p.json
similarity index 93%
rename from gta/samp/egg-sa-mp.json
rename to gta/samp/egg-s-a--m-p.json
index a3ff2f6b..090a4511 100644
--- a/gta/samp/egg-sa-mp.json
+++ b/gta/samp/egg-s-a--m-p.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-25T21:32:57+02:00",
+ "exported_at": "2019-07-21T20:35:32-04: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).",
- "image": "quay.io\/parkervcp\/pterodactyl-images:samp",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:game_samp",
"startup": ".\/samp03svr",
"config": {
"files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port {{server.build.default.port}}\"\r\n }\r\n }\r\n}",
@@ -23,4 +23,4 @@
}
},
"variables": []
-}
+}
\ No newline at end of file
diff --git a/mb_warband/README.md b/mb_warband/README.md
deleted file mode 100644
index 0798ccfd..00000000
--- a/mb_warband/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Mount & Blade Warband
-
-Mount & Blade: Warband is a stand alone expansion pack for the game that brought medieval battlefields to life with its realistic mounted combat and detailed fighting system. Many modifications have been developed to bring the Warband universe into different eras, including the popular Napoleonic Wars DLC, among many others, featuring battles of up to concurrent 200 players.
-
-### Server Ports
-
-Warband requires a single port (default 7240)
-
-| Port | default |
-|---------|---------|
-| Game | 7240 |
-
-### Other Notes
-
-* The server can only use the main IP address of the node due to limitations in the way Warband's server reporting system operates, no alias or secondary IP addresses can be used.
-* A complete list of modules supported by this egg can be found [here](https://github.com/masonr/pterodactyl-images/tree/mb-warband), the module name will need to be copied exactly as shown.
-* The current module can be changed at any time and will automatically download the new files upon restart after changing the module name
diff --git a/mb_warband/egg-m--b-warband.json b/mb_warband/egg-m--b-warband.json
deleted file mode 100644
index 9d46ddd4..00000000
--- a/mb_warband/egg-m--b-warband.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-07-28T22:01:58-04:00",
- "name": "M&B Warband",
- "author": "mason@rowe.sh",
- "description": "Mount & Blade Warband server",
- "image": "masonr\/pterodactyl-images:mb-warband",
- "startup": "WINEDEBUG=\"fixme-all\" wine mb_warband_dedicated.exe -r Config.txt -m {{MODULE}}",
- "config": {
- "files": "{}",
- "startup": "{\r\n \"done\": \"Starting mission\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"Logs\/\"\r\n}",
- "stop": "^C"
- },
- "scripts": {
- "installation": {
- "script": "#!\/bin\/bash\r\napt update\r\napt install -y wget dos2unix\r\ncd \/mnt\/server\/\r\n\r\nif [[ -z \"$MODULE\" ]] ; then\r\n\tMODULE=\"Native\"\r\nfi\r\n\r\n# Download helper script with all server file links\r\nwget \"https:\/\/files.rowe.sh\/pterodactyl\/mb-warband\/mb-warband-links.sh\"\r\nchmod +x mb-warband-links.sh\r\n\r\n# Generate links for server files\r\nMODULE_BASE_LINK=`.\/mb-warband-links.sh link \"$MODULE\" base`\r\nMODULE_LINK=`.\/mb-warband-links.sh link \"$MODULE\" mod`\r\n\r\n# Ensure module files link has been obtained, exit if not\r\nif [[ -z \"$MODULE_LINK\" ]] ; then\r\n\techo \"ERROR: Module name was mistyped or is not currently supported.\"\r\n\techo \"Available modules:\"\r\n\t.\/mb-warband-links.sh modules\r\n\texit 1\r\nfi\r\n\r\n# Install base server files, if needed\r\nif [[ ! -z \"$MODULE_BASE_LINK\" ]] ; then\r\n\twget -qO- $MODULE_BASE_LINK | tar xvz --strip-components=1\r\nfi\r\n\r\n# Install module files\r\nwget -qO- $MODULE_LINK | tar xvz --strip-components=1\r\ncp -rf \"$MODULE\"_Sample_Config.txt Config.txt\r\ndos2unix Config.txt\r\n\r\necho \"Module: $MODULE has been sucessfully installed.\"\r\nrm mb-warband-links.sh\r\n\r\n# Edit Server Name ($SERVER_NAME)\r\nsed -i 's\/.*set_server_name.*\/set_server_name '\"$SERVER_NAME\"'\/g' Config.txt\r\n\r\n# Edit Server Admin Password ($ADMIN_PASSWORD)\r\nsed -i 's\/.*set_pass_admin.*\/set_pass_admin '\"$ADMIN_PASS\"'\/g' Config.txt\r\n\r\n# Edit Server Password ($SERVER_PASS)\r\nsed -i 's\/.*set_pass .*\/set_pass '\"$SERVER_PASS\"'\/g' Config.txt\r\nsed -i 's\/.*set_pass$\/set_pass '\"$SERVER_PASS\"'\/g' Config.txt\r\n\r\n# Edit Server Welcome Message ($MOTD)\r\nsed -i 's\/.*set_welcome_message.*\/set_welcome_message '\"$MOTD\"'\/g' Config.txt\r\n\r\n# Edit Player Count ($PLAYERS)\r\nsed -i 's\/.*set_max_players.*\/set_max_players '\"$PLAYERS\"' '\"$PLAYERS\"'\/g' Config.txt\r\n\r\n# Edit Server Port ($SERVER_PORT)\r\nsed -i 's\/.*set_port.*\/set_port '\"$SERVER_PORT\"'\/g' Config.txt",
- "container": "ubuntu:16.04",
- "entrypoint": "bash"
- }
- },
- "variables": [
- {
- "name": "Module",
- "description": "Name of the module. For a full list of supported modules visit --- https:\/\/github.com\/masonr\/pterodactyl-images\/tree\/mb-warband --- and copy the module name from the first column exactly as shown.",
- "env_variable": "MODULE",
- "default_value": "Native",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:200"
- },
- {
- "name": "Player Count",
- "description": "Number of players",
- "env_variable": "PLAYERS",
- "default_value": "32",
- "user_viewable": 1,
- "user_editable": 0,
- "rules": "required|integer|max:200"
- },
- {
- "name": "Server Name",
- "description": "Name of the game server",
- "env_variable": "SERVER_NAME",
- "default_value": "Pterodactyl_Server",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:100"
- },
- {
- "name": "Admin Password",
- "description": "Password for admin login",
- "env_variable": "ADMIN_PASS",
- "default_value": "ptero",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:50"
- },
- {
- "name": "Welcome Message",
- "description": "Welcome message \/ MOTD",
- "env_variable": "MOTD",
- "default_value": "Welcome!",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:500"
- },
- {
- "name": "Server Password",
- "description": "Password for the server.\r\nLeave blank to keep server unlocked.",
- "env_variable": "SERVER_PASS",
- "default_value": "",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "nullable|string|max:50"
- }
- ]
-}
diff --git a/minecraft/forge/forge-generic/egg-forge-generic.json b/minecraft/forge/forge-generic/egg-forge-generic.json
deleted file mode 100644
index 1f6dd88b..00000000
--- a/minecraft/forge/forge-generic/egg-forge-generic.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-07-15T12:35:48-04:00",
- "name": "Forge Generic",
- "author": "parker@parkervcp.com",
- "description": "A generic egg for a forge modpack",
- "image": "quay.io\/pterodactyl\/core:java",
- "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 \"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}",
- "stop": "stop"
- },
- "scripts": {
- "installation": {
- "script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\nBASE_URL=${MODPACK_URL}\/files\r\n\r\nif [ -z \"${MODPACK_VERSION}\" ] || [ \"${MODPACK_VERSION}\" == \"latest\" ]; then\r\n ID=`curl -sl ${BASE_URL} | grep -i -A9 'title=\"release\"' | grep -m 1 -i -o 'href=\".*\"' | cut -d \"\/\" -f5 | sed s\/\\\"\/\/g`\r\n echo \"ID: ${ID}\"\r\nelse \r\n ID=`curl -sl ${BASE_URL} | grep -i -A9 \"${MODPACK_VERSION}\" | grep -m 1 -oE 'href=\"[^\\\"]+\"' | cut -d \"\/\" -f5 | grep -oE [0-9]+`\r\n echo \"ID: ${ID}\"\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n\r\nSECONDURL=${BASE_URL}\/${ID}\r\necho \"SECONDURL: ${SECONDURL}\"\r\n\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -i server | grep -Eo 'href=\"[^\\\"]+\"' | grep -o -E \"[0-9]+\" | tail -1`\r\necho \"GOOD_ID: ${GOOD_ID}\"\r\n\r\nDL_URL=${BASE_URL}\/${GOOD_ID}\/download\r\necho \"Download_URL: ${DL_URL}\"\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Executing curl -L ${DL_URL} -o server.zip\"\r\ncurl -L ${DL_URL} -o server.zip\r\n\r\nunzip server.zip\r\n\r\nrm -rf server.zip\r\n\r\necho -e \"\\nInstalling forge server usint the installer jar file.\\n\"\r\njava -jar *installer.jar --installServer\r\n\r\necho -e \"\\nDeleting installer jar file and cleaning up.\\n\"\r\nrm -rf *installer.jar\r\n\r\nmv *universal.jar server.jar",
- "container": "frolvlad\/alpine-oraclejdk8:cleaned",
- "entrypoint": "ash"
- }
- },
- "variables": [
- {
- "name": "modpack URL",
- "description": "The modpack URL from the curseforge site.\r\n\r\n(Ex. https:\/\/minecraft.curseforge.com\/projects\/sevtech-ages)",
- "env_variable": "MODPACK_URL",
- "default_value": "",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:64"
- },
- {
- "name": "Modpack Version",
- "description": "Version of the modpack to use.",
- "env_variable": "MODPACK_VERSION",
- "default_value": "latest",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|max:20"
- }
- ]
-}
\ No newline at end of file
diff --git a/minecraft/spigot/paper-spigot/egg-paper-spigot.json b/minecraft/spigot/paper-spigot/egg-paper-spigot.json
deleted file mode 100644
index 335a36fc..00000000
--- a/minecraft/spigot/paper-spigot/egg-paper-spigot.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-03-10T00:30:35-06:00",
- "name": "Paper Spigot",
- "author": "hostmaster@waterfallgaming.net",
- "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.",
- "image": "quay.io\/pterodactyl\/core:java-glibc",
- "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 \"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\/ash\r\n# Paper Spigot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${DL_VERSION}\" ] || [ \"${DL_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=\"lastSuccessfulBuild\"\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} https:\/\/ci.destroystokyo.com\/job\/Paper\/${DL_VERSION}\/artifact\/paperclip.jar",
- "container": "alpine:3.4",
- "entrypoint": "ash"
- }
- },
- "variables": [
- {
- "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": 1,
- "user_editable": 1,
- "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
- },
- {
- "name": "PaperSpigot Version",
- "description": "The version of PaperSpigot to download, Use \"latest\" for latest.",
- "env_variable": "DL_VERSION",
- "default_value": "latest",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|between:3,7"
- }
- ]
-}
diff --git a/minecraft_pe/README.md b/minecraft_bedrock/README.md
similarity index 75%
rename from minecraft_pe/README.md
rename to minecraft_bedrock/README.md
index 65ff989d..5dd20afa 100644
--- a/minecraft_pe/README.md
+++ b/minecraft_bedrock/README.md
@@ -9,5 +9,5 @@ The official Minecraft Bedrock (Formerly Minecraft Pocket Edition) server.
Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition
#### PocketMine MP
-[PockletMine MP](https://github.com/pmmp/PocketMine-MP)
-A server software for Minecraft: Bedrock Edition in PHP
\ No newline at end of file
+[PocketMine MP](https://github.com/pmmp/PocketMine-MP)
+A server software for Minecraft: Bedrock Edition in PHP
diff --git a/minecraft_pe/bedrock/README.md b/minecraft_bedrock/bedrock/README.md
similarity index 100%
rename from minecraft_pe/bedrock/README.md
rename to minecraft_bedrock/bedrock/README.md
diff --git a/minecraft_pe/bedrock/egg-vanilla-bedrock.json b/minecraft_bedrock/bedrock/egg-vanilla-bedrock.json
similarity index 53%
rename from minecraft_pe/bedrock/egg-vanilla-bedrock.json
rename to minecraft_bedrock/bedrock/egg-vanilla-bedrock.json
index cdd90647..919bfe71 100644
--- a/minecraft_pe/bedrock/egg-vanilla-bedrock.json
+++ b/minecraft_bedrock/bedrock/egg-vanilla-bedrock.json
@@ -3,38 +3,38 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-09-13T12:06:06-04:00",
+ "exported_at": "2019-07-11T16:09:28-04: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\".",
- "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_ubuntu",
"startup": ".\/bedrock_server",
"config": {
"files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"Listening on IPv4 port\"\r\n}",
+ "startup": "{\r\n \"done\": \"Server started\"\r\n}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n\r\napk add --no-cache zip unzip wget\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Downloading files from https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\"\r\nwget https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\n\r\necho -e \"Unpacking server files\"\r\nunzip bedrock-server-$BEDROCK_VERSION.zip\r\n\r\necho -e \"Done\"",
- "container": "alpine:3.8",
+ "script": "#!\/bin\/ash\r\n\r\napk add --no-cache zip unzip wget curl\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n DOWNLOAD_URL=$(curl https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\/ | grep azureedge | grep linux | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\")\r\n BEDROCK_ZIP=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5)\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\n BEDROCK_ZIP=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5)\r\nfi\r\n\r\necho -e \"Downloading files from https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\"\r\n\r\nwget ${DOWNLOAD_URL}\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $BEDROCK_ZIP\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $BEDROCK_ZIP\r\n\r\necho -e \"Done\"",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Bedrock Version",
- "description": "The version of bedrock",
+ "description": "The version of bedrock. (Ex. 1.7.0.13)\r\n\r\nDefault version is latest.",
"env_variable": "BEDROCK_VERSION",
- "default_value": "1.6.1.0",
+ "default_value": "latest",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string|max:20"
},
{
"name": "ld lib path",
- "description": "This is required to run the server properly.",
+ "description": "Dumb reasons to need this",
"env_variable": "LD_LIBRARY_PATH",
"default_value": ".",
"user_viewable": 0,
diff --git a/minecraft_pe/nukkit/egg-nukkit.json b/minecraft_bedrock/nukkit/egg-nukkit.json
similarity index 80%
rename from minecraft_pe/nukkit/egg-nukkit.json
rename to minecraft_bedrock/nukkit/egg-nukkit.json
index a7a0aea4..1444cb91 100644
--- a/minecraft_pe/nukkit/egg-nukkit.json
+++ b/minecraft_bedrock/nukkit/egg-nukkit.json
@@ -3,7 +3,7 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-05-13T20:03:45+00:00",
+ "exported_at": "2019-11-02T22:11:25-04:00",
"name": "Nukkit",
"author": "parker@parkervcp.com",
"description": "Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition\r\n\r\nhttps:\/\/nukkit.io\/",
@@ -17,8 +17,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl openssl\r\n\r\ncd \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n wget ${MODIFIED_DOWNLOAD} -O ${SERVER_JARFILE}\r\nelif [ -z \"${NUKKIT_VERSION}\" ] || [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https:\/\/ci.nukkitx.com\/job\/NukkitX\/job\/master\/lastSuccessfulBuild\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https:\/\/ci.nukkitx.com\/job\/nukkit\/${NUKKIT_VERSION}\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\nwget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/Minecraft%20PE\/nukkit\/nukkit.yml\r\n\r\nwget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/Minecraft%20PE\/nukkit\/server.properties",
- "container": "alpine:3.7",
+ "script": "#!\/bin\/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache curl openssl\r\n\r\ncd \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n wget ${MODIFIED_DOWNLOAD} -O ${SERVER_JARFILE}\r\nelif [ -z \"${NUKKIT_VERSION}\" ] || [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https:\/\/ci.nukkitx.com\/job\/NukkitX\/job\/Nukkit\/job\/master\/lastSuccessfulBuild\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https:\/\/ci.nukkitx.com\/job\/NukkitX\/job\/Nukkit\/job\/master\/${NUKKIT_VERSION}\/artifact\/target\/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_bedrock\/nukkit\/nukkit.yml\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_bedrock\/nukkit\/server.properties\r\nfi",
+ "container": "alpine:3.10",
"entrypoint": "ash"
}
},
diff --git a/minecraft_pe/nukkit/nukkit.yml b/minecraft_bedrock/nukkit/nukkit.yml
similarity index 100%
rename from minecraft_pe/nukkit/nukkit.yml
rename to minecraft_bedrock/nukkit/nukkit.yml
diff --git a/minecraft_pe/nukkit/server.properties b/minecraft_bedrock/nukkit/server.properties
similarity index 100%
rename from minecraft_pe/nukkit/server.properties
rename to minecraft_bedrock/nukkit/server.properties
diff --git a/minecraft_bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/minecraft_bedrock/pocketmine_mp/egg-pocketmine-m-p.json
new file mode 100644
index 00000000..8f0f3877
--- /dev/null
+++ b/minecraft_bedrock/pocketmine_mp/egg-pocketmine-m-p.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-01-24T08:59:24-05: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 :)",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_ubuntu",
+ "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 \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"server.log\"\r\n}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n\r\napk add --no-cache curl\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"\\n downloading pocketmine MP build ${PMMP_VERSION}\"\r\nif [ -z \"$PMMP_VERSION\" ] || [ \"$PMMP_VERSION\" == \"latest\" ]; then\r\n curl -sSL -o PocketMine-MP.phar https:\/\/jenkins.pmmp.io\/job\/PocketMine-MP\/Stable\/artifact\/PocketMine-MP.phar\r\nelse \r\n curl -sSL -o PocketMine-MP.phar https:\/\/jenkins.pmmp.io\/job\/PocketMine-MP\/${PMMP_VERSION}\/artifact\/PocketMine-MP.phar\r\nfi\r\n\r\necho -e \"\\n downloading latest php7.3 build from pocketmine\"\r\ncurl -sSL -o php.binary.tar.gz https:\/\/jenkins.pmmp.io\/job\/PHP-7.3-Linux-x86_64\/lastSuccessfulBuild\/artifact\/PHP_Linux-x86_64.tar.gz\r\n\r\necho -e \"\\n getting default server.properties\"\r\ncurl -sSL https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_bedrock\/pocketmine_mp\/server.properties > server.properties\r\n\r\necho -e \"\\n unpacking php7 binaries\"\r\ntar -xzvf php.binary.tar.gz\r\n\r\necho -e \"\\n removing pvp7 packages\"\r\nrm -rf \/mnt\/server\/php.binary.tar.gz\r\n\r\necho -e \"\\n creating files and folders\"\r\ntouch banned-ips.tx banned-players.txt ops.txt white-list.txt server.log\r\nmkdir -p players worlds plugins resource_packs",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "PocketmineMP Version",
+ "description": "The build to pull and install. (Ex. 1604)\r\n\r\nThis is the build number on https:\/\/jenkins.pmmp.io",
+ "env_variable": "PMMP_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_pe/pocketmine_mp/server.properties b/minecraft_bedrock/pocketmine_mp/server.properties
similarity index 100%
rename from minecraft_pe/pocketmine_mp/server.properties
rename to minecraft_bedrock/pocketmine_mp/server.properties
diff --git a/minecraft/README.md b/minecraft_java/README.md
similarity index 84%
rename from minecraft/README.md
rename to minecraft_java/README.md
index 07a09740..68d2b300 100644
--- a/minecraft/README.md
+++ b/minecraft_java/README.md
@@ -7,18 +7,9 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains,
## Server Ports
The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
-## Spigot
-A collection of spigot and forked spigot eggs.
-
-[Spigot](https://www.spigotmc.org/)
-This is a direct fork of the default spigot service with the added benefit of being able to build the spigot jar.
-- (It's noted that building the jar is intensive and time consuming)
-
-[PaperMC GitHub](https://github.com/PaperMC/Paper)
-High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies
-
-[Taco Spigot GitHub](https://github.com/TacoSpigot/TacoSpigot)
-An even-higher higher performance PaperSpigot fork that adds new features.
+## Cuberite
+A lightweight, fast and extensible game server for Minecraft
+[Cuberite](https://cuberite.org/)
## Forge
[Forge MC](https://files.minecraftforge.net/)
@@ -38,7 +29,25 @@ Supply values to 2 variables to use
[FTB Revelation](https://www.feed-the-beast.com/projects/ftb-revelation)
Revelation is a general all-purpose modpack with optimal FPS, server performance and stability.
-#### Technic Packs
+## Paper
+Currently the default on pterodactyl for many reasons. First being that you don't need to build the jar.
+
+[PaperMC GitHub](https://github.com/PaperMC/Paper)
+High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies
+
+## Spigot
+A collection of spigot and forked spigot eggs.
+
+[Spigot](https://www.spigotmc.org/)
+This is a direct fork of the default spigot service with the added benefit of being able to build the spigot jar.
+- (It's noted that building the jar is intensive and time consuming)
+
+## Sponge
+
+[SpongeVanilla](https://www.spongepowered.org/)
+A community-driven open source Minecraft: Java Edition modding platform.
+
+## Technic Packs
[Hexxit](https://www.technicpack.net/modpack/hexxit)
Gear up and set forth on a campaign worthy of legend, for Hexxit has been unearthed!
@@ -46,4 +55,4 @@ Gear up and set forth on a campaign worthy of legend, for Hexxit has been uneart
Blightfall is a combination modpack and adventure map about surviving on an alien planet.
[Tekkit Legends](https://www.technicpack.net/modpack/tekkit-legends)
-The ancient power of Tekkits past return in this legendary pack!
+The ancient power of Tekkits past return in this legendary pack!
\ No newline at end of file
diff --git a/minecraft_java/cuberite/README.md b/minecraft_java/cuberite/README.md
new file mode 100644
index 00000000..b5c0b2a5
--- /dev/null
+++ b/minecraft_java/cuberite/README.md
@@ -0,0 +1,11 @@
+# Cuberite
+A lightweight, fast and extensible game server for Minecraft
+
+## 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 |
+| WebAdmin | 8080 |
\ No newline at end of file
diff --git a/minecraft_java/cuberite/egg-cuberite.json b/minecraft_java/cuberite/egg-cuberite.json
new file mode 100644
index 00000000..e6c6e0e7
--- /dev/null
+++ b/minecraft_java/cuberite/egg-cuberite.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-14T12:24:30-05:00",
+ "name": "Cuberite",
+ "author": "parker@parkervcp.com",
+ "description": "A lightweight, fast and extensible game server for Minecraft",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
+ "startup": ".\/Cuberite",
+ "config": {
+ "files": "{\r\n \"settings.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"Server.Ports\": \"{{server.build.default.port}}\",\r\n \"Server.Description\": \"{{server.build.env.SERV_DESC}}\"\r\n }\r\n },\r\n \"webadmin.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"User:admin.Password\": \"{{server.build.env.ADMIN_PASS}}\",\r\n \"WebAdmin.Ports\":\"{{server.build.env.WEB_PORT}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Startup complete \"\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Cuberite\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y wget\r\n\r\ncd \/mnt\/server\r\n\r\nwget https:\/\/builds.cuberite.org\/job\/Cuberite%20Linux%20x64%20Master\/lastSuccessfulBuild\/artifact\/Cuberite.tar.gz\r\n\r\ntar --strip-components=1 -xf Cuberite.tar.gz",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Description",
+ "description": "Server Description",
+ "env_variable": "SERV_DESC",
+ "default_value": "Cuberite on Pterodactyl!",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Admin Password",
+ "description": "The password for the webadmin panel 'admin' user",
+ "env_variable": "ADMIN_PASS",
+ "default_value": "ChangeMe",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "WebAdmin Port",
+ "description": "Port for the cuberite webadmin panel.",
+ "env_variable": "WEB_PORT",
+ "default_value": "8080",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer|between:1,65535"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_java/cuberite/settings.ini b/minecraft_java/cuberite/settings.ini
new file mode 100644
index 00000000..a6b1afbb
--- /dev/null
+++ b/minecraft_java/cuberite/settings.ini
@@ -0,0 +1,52 @@
+; This is the main server configuration
+; Most of the settings here can be configured using the webadmin interface, if enabled in webadmin.ini
+
+[Authentication]
+Authenticate=1
+AllowBungeeCord=0
+Server=sessionserver.mojang.com
+Address=/session/minecraft/hasJoined?username=%USERNAME%&serverId=%SERVERID%
+
+[MojangAPI]
+NameToUUIDServer=api.mojang.com
+NameToUUIDAddress=/profiles/minecraft
+UUIDToProfileServer=sessionserver.mojang.com
+UUIDToProfileAddress=/session/minecraft/profile/%UUID%?unsigned=false
+
+[Server]
+Description=Cuberite - in C++!
+ShutdownMessage=Server shutdown
+MaxPlayers=100
+HardcoreEnabled=0
+AllowMultiLogin=0
+Ports=25565
+AllowMultiWorldTabCompletion=1
+DefaultViewDistance=10
+
+[RCON]
+Enabled=0
+
+[AntiCheat]
+LimitPlayerBlockChanges=1
+
+[PlayerData]
+LoadOfflinePlayerData=0
+LoadNamedPlayerData=1
+
+[Worlds]
+DefaultWorld=world
+World=world_nether
+World=world_the_end
+
+[WorldPaths]
+world=world
+world_nether=world_nether
+world_the_end=world_the_end
+
+[Plugins]
+Plugin=Core
+Plugin=ChatLog
+
+[DeadlockDetect]
+Enabled=1
+IntervalSec=20
diff --git a/minecraft_java/cuberite/webadmin.ini b/minecraft_java/cuberite/webadmin.ini
new file mode 100644
index 00000000..64652b85
--- /dev/null
+++ b/minecraft_java/cuberite/webadmin.ini
@@ -0,0 +1,14 @@
+; This file controls the webadmin feature of Cuberite
+; It specifies whether webadmin is enabled, and what logins are allowed.
+; Username format: [User:*username*]
+; Password format: Password=*password*; for example:
+; [User:admin]
+; Password=admin
+; Please restart Cuberite to apply changes made in this file!
+
+[WebAdmin]
+Ports=8080
+Enabled=1
+
+[User:admin]
+Password=
\ No newline at end of file
diff --git a/minecraft/forge/forge-generic/README.md b/minecraft_java/forge/curseforge-generic/README.md
similarity index 53%
rename from minecraft/forge/forge-generic/README.md
rename to minecraft_java/forge/curseforge-generic/README.md
index 03468b6f..c92470c2 100644
--- a/minecraft/forge/forge-generic/README.md
+++ b/minecraft_java/forge/curseforge-generic/README.md
@@ -2,7 +2,8 @@
### This is a generic egg for curseforge modpacks
-You will need to give it a modpack URL such as `https://minecraft.curseforge.com/projects/`
+You will need to give it a modpack ID. The ID for sevtech-ages is `268208` for example.
+This can be found on the modpack page in the `About Project` section in the upper right corner.
This will grabe the latest release when the version is set to latest.
diff --git a/minecraft_java/forge/curseforge-generic/egg-curseforge-generic.json b/minecraft_java/forge/curseforge-generic/egg-curseforge-generic.json
new file mode 100644
index 00000000..99325559
--- /dev/null
+++ b/minecraft_java/forge/curseforge-generic/egg-curseforge-generic.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-11-17T11:02:14-05:00",
+ "name": "Curseforge Generic",
+ "author": "parker@parkervcp.com",
+ "description": "A generic egg for a forge modpack",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\n\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq unzip\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 -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID}\"\r\n JSON_DATA=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID})\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 .defaultFileId)\r\n DOWNLOAD_URL=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID}\/file\/${FILE_ID}\/download-url)\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 https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${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\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 \"${DOWNLOAD_URL}\" -o server.zip\r\n unzip -o server.zip\r\n rm -rf 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 java -jar *installer.jar --installServer\r\n else\r\n echo \"No forge installer found moving on.\"\r\n fi\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\/*universal.jar ]; then\r\n mv -v \/mnt\/server\/*\/* \/mnt\/server\/\r\n mv *universal.jar server.jar\r\n else\r\n mv *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 https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${projID}\/file\/${fileID}\/download-url)\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 \r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar \\n\"\r\n curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O \\n\"\r\n curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O\r\n java -jar installer.jar --installServer\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 \r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar \\n\"\r\n curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O \\n\"\r\n curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O\r\n java -jar installer.jar --installServer\r\n mv *universal.jar server.jar\r\n rm installer.jar\r\n}\r\n\r\ninstall_required\r\nget_download\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\nelse\r\n forge_install\r\n forge_cleanup\r\nfi",
+ "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\n\r\n(Ex. https:\/\/minecraft.curseforge.com\/projects\/sevtech-ages ID is 268208)",
+ "env_variable": "MODPACK_ID",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Modpack Version",
+ "description": "Version of the modpack to use.",
+ "env_variable": "MODPACK_VERSION",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_java/forge/forge/README.md b/minecraft_java/forge/forge/README.md
new file mode 100644
index 00000000..72585414
--- /dev/null
+++ b/minecraft_java/forge/forge/README.md
@@ -0,0 +1,7 @@
+# Forge Generic
+
+### This is a generic egg for the forge standalone server
+
+This will download the latest jar for a specific forge version.
+
+this has a fix for the broken 1.7.10 and 1.8.9 versions forge has
\ No newline at end of file
diff --git a/minecraft_java/forge/forge/egg-forge-enhanced.json b/minecraft_java/forge/forge/egg-forge-enhanced.json
new file mode 100644
index 00000000..c97fa8a6
--- /dev/null
+++ b/minecraft_java/forge/forge/egg-forge-enhanced.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-01T20:05:28-05: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.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq\r\n\r\necho -e \"minecraft version: ${MC_VERSION}\"\r\necho -e \"build type: ${BUILD_TYPE}\"\r\n\r\nJSON_DATA=$(curl -sSL https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/promotions_slim.json)\r\n\r\nif [ \"${MC_VERSION}\" == \"latest\" ] || [ \"${MC_VERSION}\" == \"\" ] ; then\r\n echo -e \"getting latest recommended version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"recommended\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n\tBUILD_TYPE=recommended\r\n\t\r\n\techo -e \"minecraft version: ${MC_VERSION}\"\r\n\techo -e \"build type: ${BUILD_TYPE}\"\r\nfi\r\n\r\n## some variables for getting versions and things\r\nFILE_SITE=$(echo -e ${JSON_DATA} | jq -r '.homepage')\r\nVERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n## locating the forge version\r\nif [ \"${VERSION_KEY}\" == \"\" ] && [ \"${BUILD_TYPE}\" == \"recommended\" ]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"latest\"))')\r\nfi\r\n\r\n## Error if the mc version set wasn't valid.\r\nif [ \"${VERSION_KEY}\" == \"\" ]; then\r\n\techo -e \"The install failed because there is no valid version of forge for the version on minecraft selected.\"\r\n\texit 1\r\nfi\r\n\r\nFORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\nif [ \"${MC_VERSION}\" == \"1.7.10\" ] || [ \"${MC_VERSION}\" == \"1.8.9\" ]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\nelse\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}\r\nfi\r\n\r\n#Go into main direction\r\ncd \/mnt\/server\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-universal.jar; then\r\n echo -e \"universal jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 3\r\n fi\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 installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\r\ncurl -s -o $SERVER_JARFILE -sS ${DOWNLOAD_LINK}-universal.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/installer.jar ] || [ ! -f .\/$SERVER_JARFILE ]; then\r\n echo \"!!! Error by downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer\r\n\r\n#Deleting installer.jar\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar",
+ "container": "openjdk:8-jdk-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Jar File",
+ "description": "The name of the Jarfile to use when running Forge Mod.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "server.jar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ },
+ {
+ "name": "Forge version",
+ "description": "The version of minecraft you want to install for.\r\n\r\nLeaving latest will install the latest recommended version.",
+ "env_variable": "MC_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:9"
+ },
+ {
+ "name": "Build Type",
+ "description": "The type of server jar to download from forge.\r\n\r\nValid types are \"recommended\" and \"latest\".",
+ "env_variable": "BUILD_TYPE",
+ "default_value": "recommended",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft/ftb/feed-the-beast/egg-feed-the-beast.json b/minecraft_java/ftb/feed-the-beast/egg-feed-the-beast.json
similarity index 84%
rename from minecraft/ftb/feed-the-beast/egg-feed-the-beast.json
rename to minecraft_java/ftb/feed-the-beast/egg-feed-the-beast.json
index 289ba61c..675a1f2d 100644
--- a/minecraft/ftb/feed-the-beast/egg-feed-the-beast.json
+++ b/minecraft_java/ftb/feed-the-beast/egg-feed-the-beast.json
@@ -3,22 +3,22 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-04-02T17:20:55-04:00",
+ "exported_at": "2019-04-03T08:08:25-04:00",
"name": "Feed the Beast",
"author": "aevum@decess.us",
"description": "Egg to handle all official FTB Modpacks",
- "image": "quay.io\/pterodactyl\/core:java",
- "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar FTBserver-*.jar",
+ "image": "quay.io\/pterodactyl\/core:java-glibc",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar FTBserv*.jar",
"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 \"level-name\": \"{{server.build.env.LEVEL_NAME}}\",\r\n \"level-seed\": \"{{server.build.env.LEVEL_SEED}}\",\r\n \"max-players\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.MOTD}}\"\r\n }\r\n }\r\n}",
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\",\r\n \"level-name\": \"{{server.build.env.LEVEL_NAME}}\",\r\n \"level-seed\": \"{{server.build.env.LEVEL_SEED}}\",\r\n \"max-players\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.MOTD}}\"\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\/ash\r\n# Generic FTB Server Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# MODPACK_VERSION = version of the modpack, set in variables\r\n# i.e MODPACK_VERSION=1.5.0\r\n# MODPACK_URL = url base of the pack, set in variables, hardcoded\r\n# i.e https:\/\/www.feed-the-beast.com\/projects\/ftb-revelation\/files\r\n# MODPACK_URL=ftb-revelation\r\n\r\napk add curl --no-cache\r\n\r\n## Correcting for bad variables\r\nGETPACK=$(echo ${MODPACK_URL} | cut -d \"\/\" -f 5 )\r\necho -e \"\\n The pack being downloaded is $GETPACK \\n\"\r\n\r\n## Getting the Base URL\r\nBASEURL=https:\/\/www.feed-the-beast.com\/projects\/${GETPACK}\/files\r\necho \"The base URL is ${BASEURL}\"\r\n\r\n## This is meant to get the pack ID that is unique and not exactly clear \r\n\r\n\r\nif [ -z \"${MODPACK_VERSION}\" ] || [ \"${MODPACK_VERSION}\" == \"latest\" ]; then\r\n ID=`curl -sl ${BASEURL} | grep -i -A9 'title=\"release\"' | grep -i -o 'href=\".*\"' | cut -d \"\/\" -f5 | sed s\/\\\"\/\/g`\r\n echo \"ID: ${ID}\"\r\nelse \r\n ID=`curl -sl ${BASEURL} | grep -i -A9 \"${MODPACK_VERSION}\" | grep -m1 -oE 'href=\"[^\\\"]+\"' | cut -d \"\/\" -f5 | grep -oE [0-9]+`\r\n echo \"ID: ${ID}\"\r\nfi\r\n\r\nSECONDURL=${BASEURL}\/${ID}\r\necho \"SECONDURL: ${SECONDURL}\"\r\n\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -i server | grep -Eo 'href=\"[^\\\"]+\"' | grep -o -E \"[0-9]+\" | tail -1`\r\necho \"GOOD_ID: ${GOOD_ID}\"\r\n\r\nDL_URL=${BASEURL}\/${GOOD_ID}\/download\r\necho \"Download_URL: ${DL_URL}\"\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Executing curl -L ${DL_URL} -o $GETPACK.zip\"\r\ncurl -L ${DL_URL} -o $GETPACK.zip\r\n\r\nunzip ${GETPACK}.zip\r\n\r\nrm -rf ${GETPACK}.zip\r\n\r\necho \"Running FTBInstall.sh\"\r\n\r\nsh .\/FTBInstall.sh",
- "container": "alpine:3.7",
+ "script": "#!\/bin\/ash\r\n# Generic FTB Server Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# MODPACK_VERSION = version of the modpack, set in variables\r\n# i.e MODPACK_VERSION=1.5.0\r\n# MODPACK_URL = url base of the pack, set in variables, hardcoded\r\n# i.e https:\/\/www.feed-the-beast.com\/projects\/ftb-revelation\/files\r\n# MODPACK_URL=ftb-revelation\r\n\r\napk add curl --no-cache\r\n\r\n## Correcting for bad variables\r\nGETPACK=$(echo ${MODPACK_URL} | cut -d \"\/\" -f 5 )\r\necho -e \"\\n The pack being downloaded is $GETPACK \\n\"\r\n\r\n## Getting the Base URL\r\nBASEURL=https:\/\/www.feed-the-beast.com\/projects\/${GETPACK}\/files\r\necho \"The base URL is ${BASEURL}\"\r\n\r\n## This is meant to get the pack ID that is unique and not exactly clear \r\n\r\n\r\nif [ -z \"${MODPACK_VERSION}\" ] || [ \"${MODPACK_VERSION}\" == \"latest\" ]; then\r\n ID=`curl -sl ${BASEURL} | grep -i -A9 'title=\"release\"' | grep -i -o 'href=\".*\"' | cut -d \"\/\" -f5 | sed s\/\\\"\/\/g`\r\n echo \"ID: ${ID}\"\r\nelse \r\n ID=`curl -sl ${BASEURL} | grep -i -A9 \"${MODPACK_VERSION}\" | grep -m1 -oE 'href=\"[^\\\"]+\"' | cut -d \"\/\" -f5 | grep -oE [0-9]+`\r\n echo \"ID: ${ID}\"\r\nfi\r\n\r\nSECONDURL=${BASEURL}\/${ID}\r\necho \"SECONDURL: ${SECONDURL}\"\r\n\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -i server | grep -Eo 'href=\"[^\\\"]+\"' | grep -o -E \"[0-9]+\" | tail -1`\r\necho \"GOOD_ID: ${GOOD_ID}\"\r\n\r\nDL_URL=${BASEURL}\/${GOOD_ID}\/download\r\necho \"Download_URL: ${DL_URL}\"\r\n\r\ncd \/mnt\/server\r\n\r\necho \"Executing curl -L ${DL_URL} -o $GETPACK.zip\"\r\ncurl -L ${DL_URL} -o $GETPACK.zip\r\n\r\nunzip ${GETPACK}.zip\r\n\r\nrm -rf ${GETPACK}.zip\r\n\r\necho \"Running FTBInstall.sh\"\r\nif [ -f .\/FTBInstall.sh ]; then\r\n sh .\/FTBInstall.sh\r\nelse\r\n echo -e \"No FTBInstall script found. Assumeing it's not needed.\"\r\nfi",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
@@ -30,7 +30,7 @@
"default_value": "",
"user_viewable": 1,
"user_editable": 1,
- "rules": "required|regex:([a-z-0-9]+$)"
+ "rules": "nullable|regex:([a-z-0-9]+$)"
},
{
"name": "Modpack Version",
diff --git a/minecraft/ftb/ftb-revelation/egg-f-t-b-revelation.json b/minecraft_java/ftb/ftb-revelation/egg-f-t-b-revelation.json
similarity index 87%
rename from minecraft/ftb/ftb-revelation/egg-f-t-b-revelation.json
rename to minecraft_java/ftb/ftb-revelation/egg-f-t-b-revelation.json
index bcc73a2f..726ce374 100644
--- a/minecraft/ftb/ftb-revelation/egg-f-t-b-revelation.json
+++ b/minecraft_java/ftb/ftb-revelation/egg-f-t-b-revelation.json
@@ -3,14 +3,14 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-26T23:48:51-05:00",
+ "exported_at": "2019-03-15T16:25:38+00:00",
"name": "FTB Revelation",
"author": "aevum@decess.us",
"description": "Revelation is a general all-purpose pack that is designed for solo play as well as small and medium population servers. This pack contains a mix of magic, tech and exploration mods, and is the largest pack ever built and released by the Feed The Beast Team.",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar FTBserver-*.jar",
"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}",
+ "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 \"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"
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl --no-cache\r\n\r\nBASEURL=https:\/\/www.feed-the-beast.com\/projects\/ftb-revelation\/files\r\nPATTERN=\"(projects\\\/ftb-revelation\\\/files\\\/\\d{7,})\"\r\nID=`curl -sl ${BASEURL}| grep -A2 ${MODPACK_VERSION} | grep -oE \"${PATTERN}\"`\r\nSECONDURL=https:\/\/www.feed-the-beast.com\/${ID}\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -B2 Server_${MODPACK_VERSION}.zip | grep -oE \"${PATTERN}\"`\r\n\r\nDL_URL=https:\/\/www.feed-the-beast.com\/${GOOD_ID}\/download\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -L ${DL_URL} -o ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nunzip ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nrm -rf ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nsh .\/FTBInstall.sh",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
diff --git a/minecraft_java/paper/README.MD b/minecraft_java/paper/README.MD
new file mode 100644
index 00000000..87eef00a
--- /dev/null
+++ b/minecraft_java/paper/README.MD
@@ -0,0 +1,11 @@
+# Paper
+
+Paper is the next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance.
+
+## 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 |
\ No newline at end of file
diff --git a/minecraft_java/paper/egg-paper.json b/minecraft_java/paper/egg-paper.json
new file mode 100644
index 00000000..60fde38e
--- /dev/null
+++ b/minecraft_java/paper/egg-paper.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-08-01T04:49:37-04:00",
+ "name": "Paper",
+ "author": "parker@pterodactyl.io",
+ "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
+ "logs": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache --update curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n echo -e \"using supplied download url\"\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\/v1\/paper | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | IN($VERSION)' | grep true`\r\n LATEST_PAPER_VERSION=`curl -s https:\/\/papermc.io\/api\/v1\/paper | jq -r '.versions' | jq -r '.[0]'`\r\n \r\n if [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n echo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n else\r\n echo -e \"Using the latest paper version\"\r\n MINECRAFT_VERSION=${LATEST_PAPER_VERSION}\r\n fi\r\n \r\n BUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all[] | IN($BUILD)' | grep true`\r\n LATEST_PAPER_BUILD=`curl -s https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION} | jq -r '.builds.latest'`\r\n \r\n if [ \"${BUILD_EXISTS}\" == \"true\" ] || [ ${BUILD_NUMBER} == \"latest\" ]; then\r\n echo -e \"Build is valid. Using version ${BUILD_NUMBER}\"\r\n else\r\n echo -e \"Using the latest paper build\"\r\n BUILD_NUMBER=${LATEST_PAPER_BUILD}\r\n fi\r\n \r\n echo \"Version being downloaded\"\r\n echo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n echo -e \"Build: ${BUILD_NUMBER}\"\r\n DOWNLOAD_URL=https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION}\/${BUILD_NUMBER}\/download \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 mv ${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": "alpine:3.9",
+ "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": 1,
+ "user_editable": 0,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "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": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Build Number",
+ "description": "The build number for the paper 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": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_java/server.properties b/minecraft_java/server.properties
new file mode 100644
index 00000000..00313aec
--- /dev/null
+++ b/minecraft_java/server.properties
@@ -0,0 +1,3 @@
+#Minecraft server properties
+server-port=25565
+server-ip=
diff --git a/minecraft_java/spigot/README.MD b/minecraft_java/spigot/README.MD
new file mode 100644
index 00000000..92ed0f4f
--- /dev/null
+++ b/minecraft_java/spigot/README.MD
@@ -0,0 +1,19 @@
+# Spigot
+
+A high performance Minecraft server implementation
+
+## 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 |
+
+## Server Specific
+
+Spigot was hit with a DMCA and now requires that it be built by the user.
+
+#### This egg will build spigot for you.
+
+You can also supply a download link to a server jar if you want.
\ No newline at end of file
diff --git a/minecraft/spigot/spigot-enhanced/egg-spigot--enhanced.json b/minecraft_java/spigot/egg-spigot.json
similarity index 74%
rename from minecraft/spigot/spigot-enhanced/egg-spigot--enhanced.json
rename to minecraft_java/spigot/egg-spigot.json
index a55ee430..c6e06f61 100644
--- a/minecraft/spigot/spigot-enhanced/egg-spigot--enhanced.json
+++ b/minecraft_java/spigot/egg-spigot.json
@@ -3,11 +3,11 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-25T12:20:22-05:00",
- "name": "Spigot-Enhanced",
+ "exported_at": "2019-03-29T13:00:51-04: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.",
- "image": "quay.io\/pterodactyl\/core:java-glibc",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-8-jre",
"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}",
@@ -17,8 +17,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Spigot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n apk update\r\n apk add curl\r\n\r\n cd \/mnt\/server\r\n\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n curl -sSL -o ${SERVER_JARFILE} ${MODIFIED_DOWNLOAD}\r\nelse\r\n apk add --no-cache curl git openjdk8 openssl\r\n \r\n cd \/srv\/\r\n \r\n wget https:\/\/hub.spigotmc.org\/jenkins\/job\/BuildTools\/lastSuccessfulBuild\/artifact\/target\/BuildTools.jar\r\n \r\n mv BuildTools.jar \/srv\/\r\n\r\n java -jar BuildTools.jar --rev ${SPIGOT_VERSION}\r\n\r\n mv spigot-*.jar \/mnt\/server\/${SERVER_JARFILE}\r\nfi",
- "container": "alpine:3.7",
+ "script": "#!\/bin\/ash\r\n# Spigot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache --update curl git openjdk8 openssl bash nss\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n cd \/mnt\/server\r\n\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\n curl -sSL -o ${SERVER_JARFILE} ${MODIFIED_DOWNLOAD}\r\nelse\r\n cd \/srv\/\r\n \r\n wget https:\/\/hub.spigotmc.org\/jenkins\/job\/BuildTools\/lastSuccessfulBuild\/artifact\/target\/BuildTools.jar\r\n \r\n mv BuildTools.jar \/srv\/\r\n\r\n java -jar BuildTools.jar --rev ${DL_VERSION}\r\n\r\n mv spigot-*.jar \/mnt\/server\/${SERVER_JARFILE}\r\nfi",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
@@ -32,15 +32,6 @@
"user_editable": 1,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
},
- {
- "name": "Spigot Version",
- "description": "The version of Spigot to download (using the --rev tag). Use \"latest\" for latest.",
- "env_variable": "SPIGOT_VERSION",
- "default_value": "latest",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|between:3,7"
- },
{
"name": "Download Path",
"description": "A URL to use to download Spigot rather than building it on the server. This is not user viewable. Use {{DL_VERSION}}<\/code> in the URL to automatically insert the assigned version into the URL. If you do not enter a URL Spigot will build directly in the container (this will fail on low memory containers).",
@@ -49,6 +40,15 @@
"user_viewable": 0,
"user_editable": 0,
"rules": "nullable|string"
+ },
+ {
+ "name": "Spigot Version",
+ "description": "The version of Spigot to download (using the --rev tag). Use \"latest\" for latest.",
+ "env_variable": "DL_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|between:3,7"
}
]
}
\ No newline at end of file
diff --git a/minecraft_java/spongeforge/README.MD b/minecraft_java/spongeforge/README.MD
new file mode 100644
index 00000000..685f7f66
--- /dev/null
+++ b/minecraft_java/spongeforge/README.MD
@@ -0,0 +1,9 @@
+# SpongeForge
+SpongeForge is the implementation of the Sponge API on the Minecraft Forge platform.
+
+## Server Ports
+Minecraft servers requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
+
+| Port | default |
+|-------|---------|
+| Game | 25565 |
\ No newline at end of file
diff --git a/minecraft_java/spongeforge/egg-sponge-forge.json b/minecraft_java/spongeforge/egg-sponge-forge.json
new file mode 100644
index 00000000..76fa3a1f
--- /dev/null
+++ b/minecraft_java/spongeforge/egg-sponge-forge.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-11T01:44:03+03:00",
+ "name": "SpongeForge",
+ "author": "parker@parkervcp.com",
+ "description": "A community-driven open source Minecraft: Java Edition modding platform.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# SpongeForge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y jq curl\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! ${SERVER_JARFILE} = *\\.jar ]]; then\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\n\r\nif [ -z ${SF_VERSION} ] || [ \"$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION})\" == \"Unknown version\" ]; then\r\n echo -e \"defaulting to recommended\"\r\n SF_VERSION=\"recommended\"\r\nfi\r\n\r\nif [ \"${SF_VERSION}\" == \"recommended\" ]; then\r\n echo -e \"using recommended SpongeForge version\"\r\n SF_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/recommended | jq -r '.version')\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/recommended | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/recommended | jq -r '.dependencies.forge')\r\n echo -e \"found Forge Version ${FORGE_DOWNLOAD_VERSION}\"\r\n MC_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nelif [ \"${SF_VERSION}\" == \"latest\" ]; then\r\n echo -e \"using latest SpongForge version\"\r\n SF_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge | jq -r '.buildTypes.stable.latest.version')\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.dependencies.forge')\r\n MC_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nelse\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.dependencies.forge')\r\n echo -e \"found Forge Version ${FORGE_DOWNLOAD_VERSION}\"\r\n MC_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongeforge\/downloads\/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nfi\r\n\r\nFORGE_DL_LINK=https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}\/forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}\r\n\r\nif [ -f server.jar ] && [ $(sha1sum server.jar | awk '{ print $1 }') == $(curl -s ${FORGE_DL_LINK}-universal.jar.sha1) ]; then\r\n echo -e \"Already have the correct forge version\"\r\nelse\r\n echo -e \"Downloading forge version ${FORGE_VERSION}\"\r\n echo -e \"running: curl -s -o installer.jar -o ${FORGE_DL_LINK}-installer.jar\"\r\n curl -s -o installer.jar ${FORGE_DL_LINK}-installer.jar\r\n echo -e \"running: curl -s -o ${SERVER_JARFILE} -o ${FORGE_DL_LINK}-universal.jar\"\r\n curl -s -o ${SERVER_JARFILE} ${FORGE_DL_LINK}-universal.jar\r\n java -jar installer.jar --installServer\r\n rm installer.jar forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}-universal.jar\r\nfi\r\n\r\nif [ ! -d \/mnt\/server\/mods\/ ]; then\r\n echo -e \"making mods directory\"\r\n mkdir -p \/mnt\/server\/mods\/\r\nfi\r\n\r\nif [ -f \/mnt\/server\/mods\/spongeforge*.jar ]; then\r\n mkdir -p \/mnt\/server\/mods\/old\/\r\n mv -f \/mnt\/server\/mods\/spongeforge*.jar \/mnt\/server\/mods\/old\/spongeforge*.jar\r\nfi \r\n\r\necho -e \"running: curl -s ${SF_DL_LINK} -o \/mnt\/server\/mods\/spongeforge-${SF_VERSION}.jar\"\r\ncurl -s ${SF_DL_LINK} -o \/mnt\/server\/mods\/spongeforge-${SF_VERSION}.jar\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\r\n\r\necho -e \"Install for SpongeForge is complete\"",
+ "container": "openjdk:8-jre-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "SpongeForge Version",
+ "description": "Example 1.12.2-2825-7.1.6\r\n\r\nIf the version fails it defaults to recommended",
+ "env_variable": "SF_VERSION",
+ "default_value": "recommended",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Server Jar File",
+ "description": "The name of the Jarfile to use when running Forge Mod.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "server.jar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_java/spongevanilla/README.MD b/minecraft_java/spongevanilla/README.MD
new file mode 100644
index 00000000..611b3648
--- /dev/null
+++ b/minecraft_java/spongevanilla/README.MD
@@ -0,0 +1,10 @@
+# SpongeVanilla
+A community-driven open source Minecraft: Java Edition modding platform.
+
+## 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 |
\ No newline at end of file
diff --git a/minecraft_java/spongevanilla/egg-sponge-vanilla.json b/minecraft_java/spongevanilla/egg-sponge-vanilla.json
new file mode 100644
index 00000000..3b129848
--- /dev/null
+++ b/minecraft_java/spongevanilla/egg-sponge-vanilla.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-09-13T21:18:48-04:00",
+ "name": "SpongeVanilla",
+ "author": "parker@parkervcp.com",
+ "description": "SpongeVanilla is the implementation of the Sponge API on top of Vanilla Minecraft.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# spongeVanilla Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y jq curl\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! ${SERVER_JARFILE} = *\\.jar ]]; then\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\n## check spongevanilla version and default to recommended if it's invalid\r\nif [ -z ${SV_VERSION} ] || [ \"$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla\/downloads\/${SV_VERSION})\" == \"Unknown version\" ]; then\r\n echo -e \"defaulting to recommended\"\r\n SV_VERSION=\"recommended\"\r\nfi\r\n\r\n## handle getting download linsk for sponge\r\nif [ \"${SV_VERSION}\" == \"recommended\" ]; then\r\n echo -e \"using recommended spongevanilla version\"\r\n SV_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla\/downloads\/recommended | jq -r '.version')\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\n SV_DL_LINK=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla\/downloads\/recommended | jq -r '.artifacts.\"\".url')\r\nelif [ \"${SV_VERSION}\" == \"latest\" ]; then\r\n echo -e \"using latest SpongForge version\"\r\n SV_VERSION=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla | jq -r '.buildTypes.stable.latest.version')\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\nelse\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\n SV_DL_LINK=$(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla\/downloads\/${SV_VERSION} | jq -r '.artifacts.\"\".url')\r\nfi\r\n\r\nif [ -f ${SERVER_JARFILE} ] && [ $(sha1sum server.jar | awk '{ print $1 }') == $(curl -s https:\/\/dl-api.spongepowered.org\/v1\/org.spongepowered\/spongevanilla\/downloads\/recommended | jq -r '.artifacts.\"\".sha1') ]; then\r\n echo -e \"Already have the correct spongevanilla version\"\r\nelse\r\n echo -e \"Downloading spongevanilla version ${SV_VERSION}\"\r\n echo -e \"running: curl -s ${SV_DL_LINK} -o \/mnt\/server\/mods\/spongevanilla-${SV_VERSION}.jar\"\r\n curl -s ${SV_DL_LINK} -o \/mnt\/server\/${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -s -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_java\/server.properties\r\nfi\r\n\r\necho -e \"Install for spongevanilla is complete\"",
+ "container": "debian:stable-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "SpongeVanilla Version",
+ "description": "Example 1.12.2-7.1.6\r\n\r\nIf the version fails it defaults to recommended",
+ "env_variable": "SV_VERSION",
+ "default_value": "recommended",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Server Jar File",
+ "description": "The name of the Jarfile to use when running Mod.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "server.jar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_java/technic/README.md b/minecraft_java/technic/README.md
new file mode 100644
index 00000000..4f2e1e57
--- /dev/null
+++ b/minecraft_java/technic/README.md
@@ -0,0 +1,22 @@
+## How to import an egg
+
+If you are reading this it looks like you are looking to add an egg to your server.
+
+1. Download any of the json files located in the folders below.
+ 1. It's easiest to right click the `raw` button and save as.
+2. In your panel go to the `Nests` section in the admin part of the panel
+3. Click the green `Import Egg` button
+4. Browse to the json file you saved earlier
+5. Select what nest you want to put the egg in.
+ 1. If you want a new nest you need to create it before importing the egg.
+6. Restart the daemon on your node before creating a server using the new egg(s).
+
+# You must restart your daemon after importing an egg
+
+## Technic Eggs
+
+[Technic](/minecraft_java/technic/)
+* [Blightfall](/minecraft_java/technic/blightfall/)
+* [Hexxit](/minecraft_java/technic/hexxit/)
+* [Tekkit Legends](/minecraft_java/technic/tekkit-legends/)
+* [Attack of the B-Team](/minecraft_java/technic/attack-of-the-bteam/)
diff --git a/minecraft_java/technic/attack-of-the-bteam/README.MD b/minecraft_java/technic/attack-of-the-bteam/README.MD
new file mode 100644
index 00000000..f5bc5be3
--- /dev/null
+++ b/minecraft_java/technic/attack-of-the-bteam/README.MD
@@ -0,0 +1,11 @@
+# Minecraft: Attack of the B Team
+
+A very good 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/minecraft_java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json b/minecraft_java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json
new file mode 100644
index 00000000..f38046e3
--- /dev/null
+++ b/minecraft_java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-06-02T11:29:46+02:00",
+ "name": "Attack of the B-Team",
+ "author": "support@pterodactyl.io",
+ "description": "This modpack was designed with one thing in mind, crazy mad science! With the help of the B-Team we hand picked the wackiest mods we could find and shoved them all in a modpack for you guys. The result is Attack of the B-Team!",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar BTeam.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 \"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}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sS http:\/\/servers.technicpack.net\/Technic\/servers\/bteam\/BTeam_Server_v$MODPACK_VERSION.zip -o BTeam_Server_v$MODPACK_VERSION.zip\r\n\r\nunzip BTeam_Server_v$MODPACK_VERSION.zip\r\n\r\nrm -rf BTeam_Server_v$MODPACK_VERSION.zip",
+ "container": "alpine:3.9",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Modpack Version",
+ "description": "Version of the modpack to use",
+ "env_variable": "MODPACK_VERSION",
+ "default_value": "1.0.12c",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
diff --git a/minecraft/technic/blightfall/egg-blightfall.json b/minecraft_java/technic/blightfall/egg-blightfall.json
similarity index 85%
rename from minecraft/technic/blightfall/egg-blightfall.json
rename to minecraft_java/technic/blightfall/egg-blightfall.json
index b8ffd98a..229728f9 100644
--- a/minecraft/technic/blightfall/egg-blightfall.json
+++ b/minecraft_java/technic/blightfall/egg-blightfall.json
@@ -3,14 +3,14 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-26T20:41:27-05:00",
+ "exported_at": "2019-03-15T16:25:38+00:00",
"name": "Blightfall",
"author": "aevum@decess.us",
"description": "Blightfall is a combination modpack and adventure map about surviving on an alien planet. It uses magic mods and tech mods to create a novel gameplay experience. Can you survive on a world completely covered by Thaumcraft taint?\r\n\r\nhttps:\/\/www.technicpack.net\/modpack\/blightfall.592618",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Blightfall.jar",
"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}",
+ "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 \"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"
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sS http:\/\/servers.technicpack.net\/Technic\/servers\/blightfall\/Blightfall_Server_v$MODPACK_VERSION.zip -o Blightfall_$MODPACK_VERSION.zip\r\n\r\nunzip Blightfall_$MODPACK_VERSION.zip\r\n\r\nrm -rf Blightfall_$MODPACK_VERSION.zip",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
diff --git a/minecraft/technic/hexxit/egg-hexxit.json b/minecraft_java/technic/hexxit/egg-hexxit.json
similarity index 88%
rename from minecraft/technic/hexxit/egg-hexxit.json
rename to minecraft_java/technic/hexxit/egg-hexxit.json
index 4b6b01d0..5ca6fed8 100644
--- a/minecraft/technic/hexxit/egg-hexxit.json
+++ b/minecraft_java/technic/hexxit/egg-hexxit.json
@@ -3,14 +3,14 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-26T20:41:41-05:00",
+ "exported_at": "2019-03-15T16:25:38+00:00",
"name": "Hexxit",
"author": "aevum@decess.us",
"description": "Gear up and set forth on a campaign worthy of legend, for Hexxit has been unearthed! Dark dungeons, towering spires, weathered ruins and musty tomes lay before you. Lay claim to riches or create your own artifacts, tame beasts and carve out your own story in endless wonder. Alone or with friends, adventure awaits in Hexxit.\r\n\r\nHexxit is a new collection of mods for Minecraft that put adventure above all else, in the style of old Dungeons and Dragons campaigns. Exploration is interesting, the dangers are greater and the sense of satisfaction of clearing out a dungeon is intense. The modlist is full of quality content from some very talented individuals. Be sure to head over to the donate page and show your appreciation!\r\n\r\nhttps:\/\/www.technicpack.net\/modpack\/hexxit.552552",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Hexxit.jar",
"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}",
+ "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 \"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"
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sS http:\/\/servers.technicpack.net\/Technic\/servers\/hexxit\/Hexxit_Server_v$MODPACK_VERSION.zip -o Hexxit_$MODPACK_VERSION.zip\r\n\r\nunzip Hexxit_$MODPACK_VERSION.zip\r\n\r\nrm -rf Hexxit_$MODPACK_VERSION.zip",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
diff --git a/minecraft/technic/tekkit-legends/egg-tekkit-legends.json b/minecraft_java/technic/tekkit-legends/egg-tekkit-legends.json
similarity index 86%
rename from minecraft/technic/tekkit-legends/egg-tekkit-legends.json
rename to minecraft_java/technic/tekkit-legends/egg-tekkit-legends.json
index 7e328f26..5c6c0d6d 100644
--- a/minecraft/technic/tekkit-legends/egg-tekkit-legends.json
+++ b/minecraft_java/technic/tekkit-legends/egg-tekkit-legends.json
@@ -3,14 +3,14 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-02-26T20:41:35-05:00",
+ "exported_at": "2019-03-15T16:25:38+00:00",
"name": "Tekkit Legends",
"author": "aevum@decess.us",
"description": "The ancient power of Tekkits past return in this legendary pack! Wield the philosopher's stone, ride the rails, breed the bees, and much, much more! This pack will remind you of what you've always loved about Tekkit, while bringing you new mods to discover and enjoy!\r\n\r\nhttps:\/\/www.technicpack.net\/modpack\/tekkit-legends.735902",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar TekkitLegends.jar",
"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}",
+ "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 \"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"
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\nhttp:\/\/servers.technicpack.net\/Technic\/servers\/tekkit-legends\/Tekkit_Legends_Server_v1.1.1.zip\r\ncurl -sS http:\/\/servers.technicpack.net\/Technic\/servers\/tekkit-legends\/Tekkit_Legends_Server_v$MODPACK_VERSION.zip -o TekkitLegends_$MODPACK_VERSION.zip\r\n\r\nunzip TekkitLegends_$MODPACK_VERSION.zip\r\n\r\nrm -rf TekkitLegends_$MODPACK_VERSION.zip",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
diff --git a/minecraft_java/vanillacord/README.md b/minecraft_java/vanillacord/README.md
new file mode 100644
index 00000000..c5d91e0e
--- /dev/null
+++ b/minecraft_java/vanillacord/README.md
@@ -0,0 +1,9 @@
+# VanillaCord
+
+A patch for vanilla servers to work with BungeeCord's ip_forward setting.
+
+This uses [ME1312's fork](https://github.com/ME1312/VanillaCord) of VanillaCord which has been updated for modern Minecraft.
+
+## Note:
+
+If you've set up Spigot, Paper or some other server with BungeeCord's IP forwarding you might know that you have to set online-mode to false. Due to the way that VanillaCord works this is not necessary with this Egg, you can (and should) leave online-mode as true.
diff --git a/minecraft_java/vanillacord/egg-vanilla-cord.json b/minecraft_java/vanillacord/egg-vanilla-cord.json
new file mode 100644
index 00000000..7df2d5c5
--- /dev/null
+++ b/minecraft_java/vanillacord/egg-vanilla-cord.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-06-06T09:33:27-04: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.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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\/ash\r\n\r\napk --no-cache --update add curl jq\r\n\r\ncd \/mnt\/server\r\n\r\necho $VANILLA_VERSION\r\n\r\nLATEST_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.release'`\r\n\r\nif { [ -z \"$VANILLA_VERSION\" ] || [ \"$VANILLA_VERSION\" == \"latest\" ]; } then\r\n INSTALLING_VERSION=$LATEST_VERSION\r\nelse\r\n INSTALLING_VERSION=$VANILLA_VERSION\r\nfi\r\n\r\nMAJOR_VERSION=$(echo $INSTALLING_VERSION | sed -En 's\/^([0-9]*)\\.[0-9]*\\.[0-9]*$\/\\1\/p')\r\nMINOR_VERSION=$(echo $INSTALLING_VERSION | sed -En 's\/^[0-9]*\\.([0-9]*)\\.[0-9]*$\/\\1\/p')\r\nPATCH_VERSION=$(echo $INSTALLING_VERSION | sed -En 's\/^[0-9]*\\.[0-9]*\\.([0-9]*)$\/\\1\/p')\r\n\r\nVANILLACORD_URL=https:\/\/src.me1312.net\/jenkins\/job\/VanillaCord\/job\/1.12\/lastSuccessfulBuild\/artifact\/artifacts\/VanillaCord.jar\r\nif [ $MAJOR_VERSION -eq 1 ] && [ $MINOR_VERSION -lt 12 ]; then\r\n VANILLACORD_URL=https:\/\/src.me1312.net\/jenkins\/job\/VanillaCord\/job\/1.7.10\/lastSuccessfulBuild\/artifact\/artifacts\/VanillaCord.jar\r\nfi\r\n\r\nif { [ $MAJOR_VERSION -eq 1 ] && [ $MINOR_VERSION -eq 7 ] && [ $PATCH_VERSION -lt 10 ]; } || { [ $MAJOR_VERSION -eq 1 ] && [ $MINOR_VERSION -lt 7 ]; } then\r\n echo \"VanillaCord is only supported on Minecraft 1.7.10 or higher! You cannot use it with $INSTALLING_VERSION.\"\r\n exit 1\r\nfi\r\n\r\ncurl -o vanillacord.jar $VANILLACORD_URL\r\njava -jar vanillacord.jar $INSTALLING_VERSION\r\n\r\nrm -f vanillacord.jar\r\nrm -rf in\r\nmv out\/*.jar $SERVER_JARFILE\r\nrm -rf out",
+ "container": "openjdk:8-jre-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ },
+ {
+ "name": "Server Version",
+ "description": "The version of Minecraft Vanilla to install. Use \"latest\" to install the latest version.",
+ "env_variable": "VANILLA_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|between:3,15"
+ }
+ ]
+}
diff --git a/minecraft_pe/pocketmine_mp/egg-pocketmine-m-p.json b/minecraft_pe/pocketmine_mp/egg-pocketmine-m-p.json
deleted file mode 100644
index 48e49fc7..00000000
--- a/minecraft_pe/pocketmine_mp/egg-pocketmine-m-p.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-07-03T15:36:00-04: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 :)",
- "image": "quay.io\/pterodactyl\/core:glibc",
- "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 \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"server.log\"\r\n}",
- "stop": "stop"
- },
- "scripts": {
- "installation": {
- "script": "#!\/bin\/ash\r\n\r\napk add --no-cache curl\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"\\n downloading latest pocketmine MP build\"\r\ncurl -sSL -o PocketMine-MP.phar https:\/\/jenkins.pmmp.io\/job\/PocketMine-MP\/Stable\/artifact\/PocketMine-MP.phar\r\n\r\necho -e \"\\n downloading latest php7 build from pocketmine\"\r\ncurl -sSL -o php.binary.tar.gz https:\/\/jenkins.pmmp.io\/job\/PHP-7.2-Aggregate\/6\/artifact\/PHP-7.2-Linux-x86_64.tar.gz\r\n\r\necho -e \"\\n getting default server.properties\"\r\ncurl -sSL https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/Minecraft%20PE\/PocketmineMP\/server.properties > server.properties\r\necho -e \"\\n unpacking php7 binaries\"\r\ntar -xzvf php.binary.tar.gz\r\necho -e \"\\n removing pvp7 packages\"\r\nrm -rf \/mnt\/server\/php.binary.tar.gz\r\n\r\necho -e \"\\n creating files and folders\"\r\ntouch banned-ips.tx banned-players.txt ops.txt white-list.txt server.log\r\nmkdir -p players worlds plugins resource_packs",
- "container": "alpine:3.7",
- "entrypoint": "ash"
- }
- },
- "variables": []
-}
\ No newline at end of file
diff --git a/minecraft_proxy/typhoonlimbo/README.md b/minecraft_proxy/typhoonlimbo/README.md
new file mode 100644
index 00000000..697210e2
--- /dev/null
+++ b/minecraft_proxy/typhoonlimbo/README.md
@@ -0,0 +1,10 @@
+# TyphoonLimbo server
+Lightweight minecraft limbo server
+
+## 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 |
\ No newline at end of file
diff --git a/minecraft_proxy/typhoonlimbo/egg-typhoon-limbo.json b/minecraft_proxy/typhoonlimbo/egg-typhoon-limbo.json
new file mode 100644
index 00000000..b24d5d72
--- /dev/null
+++ b/minecraft_proxy/typhoonlimbo/egg-typhoon-limbo.json
@@ -0,0 +1,26 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-07-15T23:01:54-04:00",
+ "name": "TyphoonLimbo",
+ "author": "parker@parkervcp.com",
+ "description": "Lightweight minecraft limbo server",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_alpine",
+ "startup": "`sleep 2 && .\/TyphoonLimbo`",
+ "config": {
+ "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"listen_address\": \":{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"launched on port\"\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# TyphoonLimbo Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nexport GOPATH=$HOME\/go\r\nexport PATH=$GOROOT\/bin:$GOPATH\/bin:$PATH\r\n\r\napk add --no-cache --update git curl\r\n\r\ncd \/tmp\/\r\n\r\necho \"pulling the TyphoonLimbo pterodactyl branch\"\r\n\r\ngit clone https:\/\/github.com\/TyphoonMC\/TyphoonLimbo.git\r\ncd TyphoonLimbo\r\n\r\ngo get github.com\/TyphoonMC\/TyphoonCore\r\n\r\necho -e \"building TyphoonLimbo\"\r\ngo build\r\n\r\nmv TyphoonLimbo \/mnt\/server\/\r\n\r\nif [ -f \/mnt\/server\/config.json ]; then\r\n\techo -e \"config exists nothing to do\"\r\nelse\r\n\techo -e \"copying default config over\"\r\n\tcp config.json \/mnt\/server\/\r\nfi\r\n\r\necho -e \"install complete\"",
+ "container": "golang:1.12-alpine",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": []
+}
\ No newline at end of file
diff --git a/minecraft_proxy/velocity/README.md b/minecraft_proxy/velocity/README.md
new file mode 100644
index 00000000..c1c794dc
--- /dev/null
+++ b/minecraft_proxy/velocity/README.md
@@ -0,0 +1,10 @@
+# Velocity Minecraft Proxy
+Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.
+
+## 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 |
\ No newline at end of file
diff --git a/minecraft_proxy/velocity/egg-velocity.json b/minecraft_proxy/velocity/egg-velocity.json
new file mode 100644
index 00000000..7bfb6a83
--- /dev/null
+++ b/minecraft_proxy/velocity/egg-velocity.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-07-14T20:36:29-04:00",
+ "name": "Velocity",
+ "author": "parker@parkervcp.com",
+ "description": "Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"velocity.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"bind = \": \"bind = \\\"0.0.0.0:{{server.build.default.port}}\\\"\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Done (\"\r\n}",
+ "logs": "{}",
+ "stop": "shutdown"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nmkdir -p \/mnt\/server\/\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ -z ${VELOCITY_VERSION} ] || [ ${VELOCITY_VERSION} == \"latest\" ]; then\r\n\tVELOCITY_VERSION=\/lastStableBuild\r\nfi\r\n\r\necho -e \"Getting download link\"\r\nDOWNLOAD_ENDPOINT=$(curl https:\/\/ci.velocitypowered.com\/job\/velocity\/${VELOCITY_VERSION}\/ | grep -Eo 'href=\"[^\\\"]+\"' | grep -vE \"view|fingerprint\" | grep \".jar\" | sed -n 's\/.*href=\"\\([^\"]*\\).*\/\\1\/p')\r\nDOWNLOAD_LINK=https:\/\/ci.velocitypowered.com\/job\/velocity\/lastStableBuild\/${DOWNLOAD_ENDPOINT}\r\n\r\necho -e \"Downloading ${DOWNLOAD_LINK}\"\r\ncurl ${DOWNLOAD_LINK} -o ${SERVER_JARFILE}\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\/minecraft_proxy\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\n\r\necho -e \"install complete\"",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Velocity Version",
+ "description": "The Velocity Proxy version to download.\r\n\r\nset to 'latest ' the download the last stable build.",
+ "env_variable": "VELOCITY_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Server Jar File",
+ "description": "Server Jar File name",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "velocity.jar",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft_proxy/velocity/velocity.toml b/minecraft_proxy/velocity/velocity.toml
new file mode 100644
index 00000000..1221a696
--- /dev/null
+++ b/minecraft_proxy/velocity/velocity.toml
@@ -0,0 +1,106 @@
+# Config version. Do not change this
+config-version = "1.0"
+
+# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577.
+bind = "0.0.0.0:25577"
+
+# What should be the MOTD? This gets displayed when the player adds your server to
+# their server list. Legacy color codes and JSON are accepted.
+motd = "&3A Velocity Server"
+
+# What should we display for the maximum number of players? (Velocity does not support a cap
+# on the number of players online.)
+show-max-players = 500
+
+# Should we authenticate players with Mojang? By default, this is on.
+online-mode = true
+
+# Should we forward IP addresses and other data to backend servers?
+# Available options:
+# - "none": No forwarding will be done. All players will appear to be connecting from the
+# proxy and will have offline-mode UUIDs.
+# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this if
+# you run servers using Minecraft 1.12 or lower.
+# - "modern": Forward player IPs and UUIDs as part of the login process using Velocity's
+# native forwarding. Only applicable for Minecraft 1.13 or higher.
+player-info-forwarding-mode = "NONE"
+
+# If you are using modern IP forwarding, configure an unique secret here.
+forwarding-secret = "FrP42MxySW6Y"
+
+# Announce whether or not your server supports Forge. If you run a modded server, we
+# suggest turning this on.
+announce-forge = false
+
+[servers]
+# Configure your servers here. Each key represents the server's name, and the value
+# represents the IP address of the server to connect to.
+lobby = "127.0.0.1:30066"
+minigames = "127.0.0.1:30068"
+factions = "127.0.0.1:30067"
+
+# In what order we should try servers when a player logs in or is kicked from aserver.
+try = [
+ "lobby"
+]
+
+[forced-hosts]
+# Configure your forced hosts here.
+"minigames.example.com" = [
+ "minigames"
+]
+"lobby.example.com" = [
+ "lobby"
+]
+"factions.example.com" = [
+ "factions"
+]
+
+[advanced]
+# How large a Minecraft packet has to be before we compress it. Setting this to zero will
+# compress all packets, and setting it to -1 will disable compression entirely.
+compression-threshold = 256
+
+# How much compression should be done (from 0-9). The default is -1, which uses the
+# default level of 6.
+compression-level = -1
+
+# How fast (in milliseconds) are clients allowed to connect after the last connection? By
+# default, this is three seconds. Disable this by setting this to 0.
+login-ratelimit = 3000
+
+# Specify a custom timeout for connection timeouts here. The default is five seconds.
+connection-timeout = 5000
+
+# Specify a read timeout for connections here. The default is 30 seconds.
+read-timeout = 30000
+
+# Enables compatibility with HAProxy.
+proxy-protocol = false
+
+[query]
+# Whether to enable responding to GameSpy 4 query responses or not.
+enabled = false
+
+# If query is enabled, on what port should the query protocol listen on?
+port = 25577
+
+# This is the map name that is reported to the query services.
+map = "Velocity"
+
+# Whether plugins should be shown in query response by default or not
+show-plugins = false
+
+[metrics]
+# Whether metrics will be reported to bStats (https://bstats.org).
+# bStats collects some basic information, like how many people use Velocity and their
+# player count. We recommend keeping bStats enabled, but if you're not comfortable with
+# this, you can turn this setting off. There is no performance penalty associated with
+# having metrics enabled, and data sent to bStats can't identify your server.
+enabled = true
+
+# A unique, anonymous ID to identify this proxy with.
+id = "b12f2e77-133c-4a5f-b288-d8833be3dc4d"
+
+log-failure = false
+
diff --git a/minecraft_proxy/waterfall/config.yml b/minecraft_proxy/waterfall/config.yml
new file mode 100644
index 00000000..60295c99
--- /dev/null
+++ b/minecraft_proxy/waterfall/config.yml
@@ -0,0 +1,3 @@
+listeners:
+- query_port: 25573
+ host: 0.0.0.0:25573
\ No newline at end of file
diff --git a/minecraft_proxy/waterfall/egg-waterfall.json b/minecraft_proxy/waterfall/egg-waterfall.json
index 2adcdee6..3af57a1e 100644
--- a/minecraft_proxy/waterfall/egg-waterfall.json
+++ b/minecraft_proxy/waterfall/egg-waterfall.json
@@ -3,30 +3,30 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-09-26T12:40:31-04:00",
+ "exported_at": "2019-12-23T13:23:16-04:00",
"name": "Waterfall",
"author": "hostmaster@waterfallgaming.net",
"description": "Waterfall is a fork of the well-known BungeeCord server teleportation suite.",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
- "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].query_enabled\": true,\r\n \"listeners[0].query_port\": \"{{server.build.default.port}}\",\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}",
- "startup": "{\r\n \"done\": \"Listening on \",\r\n \"userInteraction\": [\r\n \"Listening on \/0.0.0.0:25577\"\r\n ]\r\n}",
+ "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Listening on \",\r\n \"userInteraction\": [\r\n \"Listening on \/0.0.0.0:\"\r\n ]\r\n}",
"logs": "{\r\n \"custom\": false,\r\n \"location\": \"proxy.log.0\"\r\n}",
"stop": "end"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${WATERFALL_VERSION}\" ] || [ \"${WATERFALL_VERSION}\" == \"latest\" ]; then\r\n WATERFALL_VERSION=\"lastStableBuild\"\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} https:\/\/papermc.io\/ci\/job\/Waterfall\/${WATERFALL_VERSION}\/artifact\/Waterfall-Proxy\/bootstrap\/target\/Waterfall.jar",
- "container": "alpine:3.4",
+ "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache --update curl jq\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n echo -e \"using supplied download url\"\r\n DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n if [ -z \"$VANILLA_VERSION\" ] || [ \"${MINECRAFT_VERSION}\" == \"latest\" ]; then\r\n MINECRAFT_VERSION=$(curl -s https:\/\/papermc.io\/api\/v1\/waterfall | jq -r '.versions[0]')\r\n else\r\n VER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v1\/waterfall | jq -r --arg VERSION $MINECRAFT_VERSION '.versions | contains ([$VERSION])')\r\n fi\r\n \r\n if [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n echo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n else\r\n echo -e \"Using the latest waterfall version\"\r\n MINECRAFT_VERSION=$(curl -s https:\/\/papermc.io\/api\/v1\/waterfall\/ | jq -r '.versions[0]')\r\n fi\r\n \r\n if [ ! ${BUILD_NUMBER} == \"latest\" ] ; then\r\n BUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v1\/waterfall\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all[] | IN($BUILD)' | grep true)\r\n LATEST_WATERFALL_VERSION=$(curl -s https:\/\/papermc.io\/api\/v1\/waterfall\/ | jq -r '.versions[0]')\r\n \r\n if [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n echo -e \"Build is valid. Using version ${BUILD_NUMBER}\"\r\n else\r\n echo -e \"Using the latest paper build\"\r\n BUILD_NUMBER=${LATEST_WATERFALL_VERSION}\r\n fi\r\n fi\r\n \r\n echo \"Version being downloaded: ${BUILD_NUMBER}\"\r\n echo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n echo -e \"Build: ${BUILD_NUMBER}\"\r\n DOWNLOAD_URL=https:\/\/papermc.io\/api\/v1\/waterfall\/${MINECRAFT_VERSION}\/${BUILD_NUMBER}\/download \r\nfi\r\n\r\necho -e \"running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n echo -e \"Downloading waterfall config.yml\"\r\n curl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_proxy\/waterfall\/config.yml\r\nelse\r\n echo -e \"Waterfall config.yml exists. Will not pull a new file\"\r\nfi",
+ "container": "alpine:3.10",
"entrypoint": "ash"
}
},
"variables": [
{
- "name": "Waterfall Version",
- "description": "The version of Waterfall to download and use.",
- "env_variable": "WATERFALL_VERSION",
+ "name": "Minecraft Version",
+ "description": "The version of Minecraft that water was built to support.",
+ "env_variable": "MINECRAFT_VERSION",
"default_value": "latest",
"user_viewable": 1,
"user_editable": 1,
@@ -40,6 +40,24 @@
"user_viewable": 1,
"user_editable": 1,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ },
+ {
+ "name": "Download Link",
+ "description": "A link to the server jar to download the waterfall jar.",
+ "env_variable": "DL_LINK",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Waterfall build number",
+ "description": "Default is latest.\r\n\r\nif set to latest or an invalid version will grab the latest build number.",
+ "env_variable": "BUILD_NUMBER",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
}
]
}
\ No newline at end of file
diff --git a/rdr/README.md b/rdr/README.md
new file mode 100644
index 00000000..abade62b
--- /dev/null
+++ b/rdr/README.md
@@ -0,0 +1,6 @@
+# Read Dead Redemption
+
+## RedM
+
+[RedM](https://redm.gg/)
+RedM, for Red Dead Redemption 2 on PC. Launching now, based on the CitizenFX framework and Cfx.re technology.
\ No newline at end of file
diff --git a/rdr/redm/README.md b/rdr/redm/README.md
new file mode 100644
index 00000000..469e3f07
--- /dev/null
+++ b/rdr/redm/README.md
@@ -0,0 +1,16 @@
+# Red M
+
+### From the [RedM](https://redm.gg/) Site
+RedM, for Red Dead Redemption 2 on PC. Launching now, based on the CitizenFX framework and Cfx.re technology.
+
+### Install notes
+- Only installs latest version versions are not selectable.
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 30120 |
+| ServerListing | 30110 |
+| cfx join links | 30130 |
\ No newline at end of file
diff --git a/rdr/redm/egg-red-m.json b/rdr/redm/egg-red-m.json
new file mode 100644
index 00000000..8e2c3f9d
--- /dev/null
+++ b/rdr/redm/egg-red-m.json
@@ -0,0 +1,81 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-02-01T08:00:01-05:00",
+ "name": "RedM",
+ "author": "parker@parkervcp.com",
+ "description": "A new RedM egg for the latest builds due to recent changes in RedM",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_alpine",
+ "startup": "$(pwd)\/alpine\/opt\/cfx-server\/ld-musl-x86_64.so.1 --library-path \"$(pwd)\/alpine\/usr\/lib\/v8\/:$(pwd)\/alpine\/lib\/:$(pwd)\/alpine\/usr\/lib\/\" -- $(pwd)\/alpine\/opt\/cfx-server\/FXServer +set citizen_dir $(pwd)\/alpine\/opt\/cfx-server\/citizen\/ +set sv_licenseKey {{CFX_LICENSE}} +set steam_webApiKey {{STEAM_WEBAPIKEY}} +set sv_maxplayers {{MAX_PLAYERS}} +exec server.cfg +set gamename rdr3",
+ "config": {
+ "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"endpoint_add_tcp\": \"endpoint_add_tcp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"endpoint_add_udp\": \"endpoint_add_udp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_HOSTNAME}}\\\"\",\r\n \"sv_maxclients\": \"sv_maxclients {{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"succeeded. Welcome!\"\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add openssl tar xz curl wget git file --no-cache\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\n\r\nif [ \"${CFX_VERSION}\" == \"latest\" ] || [ -z ${CFX_VERSION} ] ; then\r\n LATEST_RECOMMENDED=$(echo -e \"${RELEASE_PAGE}\" | grep \"LATEST RECOMMENDED\" -B1 | grep -Eo 'href=\".*\/*.tar.xz\"' | grep -Eo '\".*\"' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1')\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${LATEST_RECOMMENDED})\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo 'href=\".*\/*.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 latest as the version requested was invalid.\"\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. Exeting\"\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\/gta\/fivem\/server.cfg >> server.cfg\r\nfi\r\n\r\necho \"install complete\"",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "CFX license",
+ "description": "Required to start the service. Get your keys at https:\/\/keymaster.fivem.net\/",
+ "env_variable": "CFX_LICENSE",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Steam Web Api Key",
+ "description": "Use your Steam WebApiKey or set to 'none'. Get your key at https:\/\/steamcommunity.com\/dev\/apikey\/",
+ "env_variable": "STEAM_WEBAPIKEY",
+ "default_value": "none",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Max Players",
+ "description": "Set the fivem max play count",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "32",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer|between:1,32"
+ },
+ {
+ "name": "Server Hostname",
+ "description": "The name that shows up in the server browser",
+ "env_variable": "SERVER_HOSTNAME",
+ "default_value": "My new FXServer!",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "CFX version",
+ "description": "The CFX Server version that is to be installed.\r\n\r\nan example is `1383-e5ea040353ce1b8bc86e37982bf5d888938e3096`\r\n\r\nYou can the latest version from here - https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/",
+ "env_variable": "CFX_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:50"
+ },
+ {
+ "name": "Download Link",
+ "description": "This is the link to download redm from. This is only used in the install script.\r\n\r\nThe file you link to needs to be an fx.tar.zx file.\r\n\r\nExample:\r\nhttps:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/1626-8c06e8bc3ed7e6690c6c2d9e0b90e29df65b3ea6\/fx.tar.xz",
+ "env_variable": "DOWNLOAD_URL",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "string|nullable"
+ }
+ ]
+}
diff --git a/scripts/download_link_validator.sh b/scripts/download_link_validator.sh
new file mode 100644
index 00000000..10a6d69a
--- /dev/null
+++ b/scripts/download_link_validator.sh
@@ -0,0 +1,11 @@
+## this is a simple script to validate a download url actaully exists
+
+if [ ! -z "${DOWNLOAD_URL}"]; then
+ if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then
+ echo -e "link is valid. setting download link to ${DOWNLOAD_URL}"
+ DOWNLOAD_LINK=${DOWNLOAD_URL}
+ else
+ echo -e "link is invalid closing out"
+ exit 2
+ fi
+fi
\ No newline at end of file
diff --git a/scripts/file_unpacker.sh b/scripts/file_unpacker.sh
new file mode 100644
index 00000000..c5d818f5
--- /dev/null
+++ b/scripts/file_unpacker.sh
@@ -0,0 +1,16 @@
+## only needs to have the file with a file passed into it to get the filetype.
+## only supports tar.gz/xz and zip currently for unpacking.
+## The value for ${DOWNLOAD_LINK##*/} is derived from DOWNLOAD_LINK
+## if the download link is https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar then the ##*/ is server.jar
+
+FILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*/} | cut -d',' -f2 | cut -d' ' -f2)
+if [ "$FILETYPE" == "gzip" ]; then
+ tar xzvf ${DOWNLOAD_LINK##*/}
+elif [ "$FILETYPE" == "Zip" ]; then
+ unzip ${DOWNLOAD_LINK##*/}
+elif [ "$FILETYPE" == "XZ" ]; then
+ tar xvf ${DOWNLOAD_LINK##*/}
+else
+ echo -e "unknown filetype. Exeting"
+ exit 2
+fi
\ No newline at end of file
diff --git a/scripts/github_release_grabber.sh b/scripts/github_release_grabber.sh
new file mode 100644
index 00000000..14d4e70e
--- /dev/null
+++ b/scripts/github_release_grabber.sh
@@ -0,0 +1,27 @@
+## this is a simple script to use the github API for release versions.
+## this requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (match is to match the filename in some way)
+## this supports using oauth/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)
+## if you are getting hit with GitHub API limit issues then you need to have the user and token set.
+
+if [ -z "${GITHUB_USER}" ] && [ -z "${GITHUB_OAUTH_TOKEN}" ] ; then
+ echo -e "using anon api call"
+else
+ echo -e "user and oauth token set"
+ alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '
+fi
+
+## get release info and download links
+LATEST_JSON=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest")
+RELEASES=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases")
+
+if [ -z "${VERSION}" ] || [ "${VERSION}" == "latest" ]; then
+ DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})
+else
+ VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .tag_name')
+ if [ "${VERSION}" == "${VERSION_CHECK}" ]; then
+ DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})
+ else
+ echo -e "defaulting to latest release"
+ DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)
+ fi
+fi
\ No newline at end of file
diff --git a/scripts/steamcmd_installer.sh b/scripts/steamcmd_installer.sh
new file mode 100644
index 00000000..c36fa040
--- /dev/null
+++ b/scripts/steamcmd_installer.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# steamcmd Base Installation Script
+#
+# Server Files: /mnt/server
+# Image to install with is 'debian:buster-slim'
+apt -y update
+apt -y --no-install-recommends install curl lib32gcc1 ca-certificates
+
+## just in case someone removed the defaults.
+if [ "${STEAM_USER}" == "" ]; then
+ echo -e "steam user is not set.\n"
+ echo -e "Using anonymous user.\n"
+ STEAM_USER=anonymous
+ STEAM_PASS=""
+ STEAM_AUTH=""
+else
+ echo -e "user set to ${STEAM_USER}"
+fi
+
+## download and install steamcmd
+cd /tmp
+mkdir -p /mnt/server/steamcmd
+curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
+tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
+cd /mnt/server/steamcmd
+
+# SteamCMD fails otherwise for some reason, even running as root.
+# This is changed at the end of the install process anyways.
+chown -R root:root /mnt
+export HOME=/mnt/server
+
+## install game using steamcmd
+./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
+
+## set up 32 bit libraries
+mkdir -p /mnt/server/.steam/sdk32
+cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so
+
+## set up 64 bit libraries
+mkdir -p /mnt/server/.steam/sdk64
+cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so
\ No newline at end of file
diff --git a/squad/squad/egg-squad.json b/squad/squad/egg-squad.json
deleted file mode 100644
index a8735ce7..00000000
--- a/squad/squad/egg-squad.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
- "meta": {
- "version": "PTDL_v1"
- },
- "exported_at": "2018-02-21T13:00:36-05:00",
- "name": "Squad",
- "author": "brycea@rapidnetworks.org",
- "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.",
- "image": "quay.io\/pterodactyl\/core:source",
- "startup": ".\/SquadServer.sh Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}}",
- "config": {
- "files": "{}",
- "startup": "{\r\n \"done\": \"LogInit:Display: Starting Game.\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
- "stop": "^C"
- },
- "scripts": {
- "installation": {
- "script": "apt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 403240 +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so",
- "container": "ubuntu:16.04",
- "entrypoint": "bash"
- }
- },
- "variables": [
- {
- "name": "Query Port",
- "description": "Query port for your Squad server.",
- "env_variable": "QUERY_PORT",
- "default_value": "27165",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|numeric"
- }
- ]
-}
\ No newline at end of file
diff --git a/starmade/starmade/README.md b/starmade/starmade/README.md
new file mode 100644
index 00000000..33583884
--- /dev/null
+++ b/starmade/starmade/README.md
@@ -0,0 +1,10 @@
+# Starmade Server
+### From their [Homepage](https://starmadedock.net/) - [Guide](https://www.star-made.org/help/setting_up_a_server)
+The ultimate space sandbox. Participate in epic fleet battles, form alliances, strive to dominate entire galaxies and harness the universe’s resources for your industrious empire or the destruction of others. Customise your experience, the universe is yours!
+
+### Server Ports
+Ports required to run the server
+
+| Port | default |
+|---------|---------|
+| Game | 4242 |
diff --git a/starmade/starmade/egg-starmade.json b/starmade/starmade/egg-starmade.json
new file mode 100644
index 00000000..3a20b6e8
--- /dev/null
+++ b/starmade/starmade/egg-starmade.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-07-14T13:03:01+02:00",
+ "name": "starmade",
+ "author": "contact@hunters-tavern.de",
+ "description": "starmade",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128m -Xmx{{SERVER_MEMORY}}m -jar {{SERVER_JARFILE}} -server -port:{{SERVER_PORT}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"SenableGameState(1)\"\r\n}",
+ "logs": "{}",
+ "stop": "\/shutdown 0"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# starmade Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\nwget -O starter.jar http:\/\/files.star-made.org\/StarMade-Starter.jar\r\n\r\njava -jar starter.jar -nogui\r\n\r\nmv .\/StarMade\/* .\/\r\nrm -r .\/StarMade",
+ "container": "openjdk:13-ea-27-jdk-alpine3.9",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Jarfile",
+ "description": "",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "StarMade.jar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ }
+ ]
+}
diff --git a/source_servers/7_days_to_die/README.md b/steamcmd_servers/7_days_to_die/README.md
similarity index 100%
rename from source_servers/7_days_to_die/README.md
rename to steamcmd_servers/7_days_to_die/README.md
diff --git a/source_servers/7_days_to_die/egg-7-days-to-die.json b/steamcmd_servers/7_days_to_die/egg-7-days-to-die.json
similarity index 57%
rename from source_servers/7_days_to_die/egg-7-days-to-die.json
rename to steamcmd_servers/7_days_to_die/egg-7-days-to-die.json
index ba47d705..858e871d 100644
--- a/source_servers/7_days_to_die/egg-7-days-to-die.json
+++ b/steamcmd_servers/7_days_to_die/egg-7-days-to-die.json
@@ -3,12 +3,12 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-07T19:23:03-04:00",
+ "exported_at": "2019-11-06T20:06:59-05:00",
"name": "7 Days To Die",
"author": "kristoffer.norman@bahnhof.se",
"description": "7 days to die server",
- "image": "quay.io\/parkervcp\/pterodactyl-images:7daystodie",
- "startup": "-ServerPort=${{SERVER_PORT}} -ServerMaxPlayerCount=${{MAX_PLAYERS}} -GameDifficulty=${{GAME_DIFFICULTY}} -ControlPanelEnabled=false -TelnetEnabled=true -TelnetPort=8081",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "startup": ".\/7DaysToDieServer.x86_64 -configfile=serverconfig.xml -quit -batchmode -nographics -dedicated -ServerPort=${SERVER_PORT} -ServerMaxPlayerCount=${MAX_PLAYERS} -GameDifficulty=${GAME_DIFFICULTY} -ControlPanelEnabled=false -TelnetEnabled=true -TelnetPort=8081 -logfile logs\/latest.log & echo -e \"Checing on telnet connection\" && until nc -z -v -w5 127.0.0.1 8081; do echo \"Waiting for telnet connection...\"; sleep 5; done && telnet -E 127.0.0.1 8081",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Connected with 7DTD server\",\r\n \"userInteraction\": []\r\n}",
@@ -40,6 +40,33 @@
"user_viewable": 1,
"user_editable": 1,
"rules": "required|integer|between:0,5"
+ },
+ {
+ "name": "Source AppID",
+ "description": "This is the app id for 7dtd please no step on snek.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "294420",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Auto Update",
+ "description": "This is to auto update the server on start.\r\n\r\nOptions are 0 or 1\r\nDefault is 1",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|boolean"
+ },
+ {
+ "name": "ld lib path",
+ "description": "This is really annoying that more games are doing this.",
+ "env_variable": "LD_LIBRARY_PATH",
+ "default_value": ".",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
}
]
}
\ No newline at end of file
diff --git a/steamcmd_servers/README.md b/steamcmd_servers/README.md
new file mode 100644
index 00000000..5cef5d34
--- /dev/null
+++ b/steamcmd_servers/README.md
@@ -0,0 +1,54 @@
+# steamcmd servers
+
+This is a collection of servers that use steamcmd to install.
+
+## 7 Days To Die
+[7dtd](7_days_to_die/)
+
+## ARK
+[ark](ark_survival_evolved/)
+
+## ARMA
+[arma](arma/)
+* [arma 3](arma/arma3/)
+* [arma 3 headless](arma/arma3_headless_client/)
+
+## Conan Exiles
+[conan_exiles](conan_exiles/)
+
+## Don't Starve
+[dont_starve](dont_starve/)
+
+## ECO
+[ECO](eco/)
+
+## HLDS Server
+[hlds](hlds_server/)
+
+## Mordhau
+[mordhau](mordhau/)
+
+## Onset
+[onset](onset/)
+
+## Rust Staging
+[rust staging](rust_staging/)
+
+## SCP: Secret Laboratory
+[SCP: Secret Laboratory](/scpsl/)
+
+## Squad
+[squad](squad/)
+
+## Starbound
+[starbound](starbound/)
+
+## Sven coop
+[svencoop](svencoop)
+
+## Tower Unite
+[Tower Unite](tower_unite)
+
+## Unturned
+ * [RocketMod](rocketmod)
+ * [Unturned](unturned)
\ No newline at end of file
diff --git a/steamcmd_servers/ark_survival_evolved/README.md b/steamcmd_servers/ark_survival_evolved/README.md
new file mode 100644
index 00000000..094dc5d6
--- /dev/null
+++ b/steamcmd_servers/ark_survival_evolved/README.md
@@ -0,0 +1,18 @@
+# Ark: Survival Evolved
+Steam Description :
+As a man or woman stranded naked, freezing and starving on the shores of a mysterious island called ARK, you must hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements. Use your cunning and resources to kill or tame & breed the leviathan dinosaurs and other primeval creatures roaming the land, and team up with or prey on hundreds of other players to survive, dominate... and escape!
+
+## Recommended server settings
+### Minimum RAM
+This server requires about 4096M to run with no players. It is recommended to run 6144M by the ARK creators.
+
+See the following - https://ark.gamepedia.com/Dedicated_Server_Setup#Hardware
+
+## Server Ports
+
+| Port | default |
+|-------|---------|
+| Game | 7777 |
+| Query | 27015 |
+| Raw UDP | 7778 |
+| RCON | 27020 |
diff --git a/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json
new file mode 100644
index 00000000..48cb562d
--- /dev/null
+++ b/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json
@@ -0,0 +1,108 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:15:59-05:00",
+ "name": "Ark: Survival Evolved",
+ "author": "dev@shepper.fr",
+ "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": "\"cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName='{{SESSION_NAME}}'?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled={{ENABLE_RCON}} -server -log\"",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Setting breakpad minidump AppID = 346110\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +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\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## ARK specific setup.\r\n## copy steamcmd folder to the thirdparty folder for ark\r\ncp -r $(pwd) \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "App ID",
+ "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "376030",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "nullable|numeric"
+ },
+ {
+ "name": "Server Name",
+ "description": "ARK server name",
+ "env_variable": "SESSION_NAME",
+ "default_value": "ARK SERVER",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:128"
+ },
+ {
+ "name": "Server Password",
+ "description": "If specified, players must provide this password to join the server.",
+ "env_variable": "ARK_PASSWORD",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Admin Password",
+ "description": "If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.",
+ "env_variable": "ARK_ADMIN_PASSWORD",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Server Port",
+ "description": "ARK server port used by client.",
+ "env_variable": "PORT",
+ "default_value": "7777",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "name": "Use Rcon",
+ "description": "Enable or disable rcon system. (true or false)",
+ "env_variable": "ENABLE_RCON",
+ "default_value": "false",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:5"
+ },
+ {
+ "name": "Rcon Port",
+ "description": "ARK rcon port used by rcon tools.",
+ "env_variable": "RCON_PORT",
+ "default_value": "27020",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "name": "Server Map",
+ "description": "Available Maps: TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction",
+ "env_variable": "SERVER_MAP",
+ "default_value": "TheIsland",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/arma/README.md b/steamcmd_servers/arma/README.md
new file mode 100644
index 00000000..f90116a9
--- /dev/null
+++ b/steamcmd_servers/arma/README.md
@@ -0,0 +1,9 @@
+# ARMA
+
+ARMA is a series of first-person tactical military shooters, originally released for Microsoft Windows. It features large elements of realism and simulation; a blend of large-scale military conflict spread across large areas alongside the more close quartered battles.
+
+## ARMA III
+[arma 3](arma3/)
+
+## ARMA III headless client
+[arma 3 headless](arma3_headless_client/)
\ No newline at end of file
diff --git a/steamcmd_servers/arma/arma3/README.md b/steamcmd_servers/arma/arma3/README.md
new file mode 100644
index 00000000..15eb3296
--- /dev/null
+++ b/steamcmd_servers/arma/arma3/README.md
@@ -0,0 +1,20 @@
+# Arma 3
+### From their [Site](https://arma3.com/)
+Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war.
+
+### Minimum RAM warning
+This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though.
+
+### Additional settings
+Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters).
+This can help is you see the server using to many cores/threads on the server.
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 2302-2306 |
+| BattleEye | 2344-2345 |
+
+#### Mods/Plugins may require ports to be added to the server.
diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg
new file mode 100644
index 00000000..7b5a1c99
--- /dev/null
+++ b/steamcmd_servers/arma/arma3/egg-arma3-config/basic.cfg
@@ -0,0 +1,83 @@
+// ****************************************************************************
+// *
+// Arma 3 - basic.cfg *
+// Version 060116 *
+// *
+// ****************************************************************************
+
+// Defines network tuning parameters
+//
+// This file is to be passed to the -cfg parameter on the command line for the server
+// See http://community.bistudio.com/wiki/basic.cfg
+// The following settings are the suggested settings
+
+// BANDWIDTH SETTINGS
+
+// Bandwidth the server is guaranteed to have (in bps)
+// General guideline is NumberOfPlayers * 256kb
+// Default: 131072
+MinBandwidth=5120000;
+// Bandwidth the server can never go above (in bps)
+// For a single server, use full network speed; decrease when running multiple servers
+MaxBandwidth=10240000;
+
+// PACKET SETTINGS
+
+// Maximum number of packets per frame.
+// Increasing the value potentially decreases lag, but increases desync
+// Default: 128
+MaxMsgSend=2048;
+// Maximum payload of guaranteed packet (in b)
+// Small messages are packed to larger packets
+// Guaranteed packets are used for non-repetitive events, like shooting
+// Lower value means more packets are sent, so less events will get combined
+// Default: 512
+MaxSizeGuaranteed=512;
+// Maximum payload of non-guaranteed packet (in b)
+// Increasing this value may improve bandwidth requirement, but may also increase lag
+// Largest factor in desync
+// Guidance is half of MaxSizeGuaranteed
+// Default: 256
+MaxSizeNonguaranteed=256;
+// Maximal size of a packet sent over the network
+// Only necessary if ISP forces lower packet size and there are connectivity issues
+// Default: 1400
+// class sockets{maxPacketSize=1400};
+
+// SMOOTHNESS SETTINGS
+
+// Minimal error required to send network updates for far units
+// Smaller values will make for smoother movement at long ranges, but will increase network traffic
+// Default: 0.003
+MinErrorToSend=0.01;
+// Minimal error required to send network updates for near units
+// Using larger value can reduce traffic sent for near units
+// Also controls client to server traffic
+// Default: 0.01
+MinErrorToSendNear=0.02;
+
+// GEOLOCATION SETTINGS
+
+// Server latitude
+serverLatitude=52;
+serverLatitudeAuto=52;
+
+// Server Longitude
+serverLongitude=0;
+serverLongitudeAuto=0;
+// MISC
+// View Distance (not sure if this actually works)
+viewDistance=10000;
+
+// Maximum size (in b) for custom face or sound files
+// Default: 0
+MaxCustomFileSize=65536;
+// Server language
+language="English";
+steamLanguage="English";
+// Adapter
+adapter=-1;
+// Windowed mode
+Windowed=0;
+
+3D_Performance=1.000000;
\ No newline at end of file
diff --git a/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg
new file mode 100644
index 00000000..2615bf70
--- /dev/null
+++ b/steamcmd_servers/arma/arma3/egg-arma3-config/server.cfg
@@ -0,0 +1,158 @@
+// ****************************************************************************
+// *
+// Arma 3 - server.cfg *
+// Version 060117 *
+// *
+// ****************************************************************************
+
+// ArmA 3 Server Config File
+//
+// More info about parameters:
+// https://community.bistudio.com/wiki/server.cfg
+
+
+// GENERAL SETTINGS
+
+// Hostname for server.
+hostname = "Arma 3 Server";
+
+// Server password - for private servers.
+//password = "arma3pass";
+
+// Admin Password
+//passwordAdmin = "ADMINPASSWORD";
+
+// Auto-admin
+admins[] = {""};
+
+// Server Slots
+maxPlayers = 32;
+
+// Logfile
+logFile = "arma3server.log";
+
+// Minimum Required Client Build
+//requiredBuild = 95691
+
+class Missions
+{
+ class Mission1
+ {
+ template = ;
+ difficulty = "Regular";
+ class Params {};
+ };
+ class Mission2
+ {
+ template = ;
+ difficulty = "Regular";
+ class Params {};
+ };
+ class Mission3
+ {
+ template = ;
+ difficulty = "Regular";
+ class Params {};
+ };
+ class Mission4
+ {
+ template = ;
+ difficulty = "Regular";
+ class Params {};
+ };
+};
+
+// Message of the Day (MOTD)
+motd[] = {
+ "Welcome to My Arma 3 Server",
+ "TS3 Server: teamspeak.somewhere.com",
+ "Web: www.example.com"
+};
+
+// MOTD Interval (Seconds)
+motdInterval = 30;
+
+
+// VOTING
+
+// Server Mission Start
+// minimum number of clients before server starts mission
+voteMissionPlayers = 1;
+
+// Accepted Vote Threshold
+// 0.33 = 33% clients.
+voteThreshold = 0.33;
+
+// INGAME SETTINGS
+
+// Disable Voice over Net (VoN)
+// 0 = voice enabled.
+// 1 = voice disabled.
+disableVoN = 0;
+
+// VoN Codec Quality
+// 0-10 = 8kHz (narrowband).
+// 11-20 = 16kHz (wideband).
+// 21-30 = 32kHz (ultrawideband).
+vonCodecQuality = 3;
+
+// Persistent Battlefield
+// 0 = disable.
+// 1 = enable.
+persistent = 1;
+
+// Time Stamp Format
+// none, short, full
+timeStampFormat = "short";
+
+// Server Statistics
+// Set this to 0 to opt-out! More info: https://community.bistudio.com/wiki/Arma_3_Analytics
+statisticsEnabled = 1;
+
+// SERVER SECURITY/ANTI HACK
+
+// Verify Signitures for Client Addons
+// 0 = off.
+// 1 = weak protection (depricated).
+// 2 = full protection.
+verifySignatures = 2;
+
+// Secure Player ID
+// 1 = Server warning message.
+// 2 = Kick client.
+requiredSecureId = 2;
+
+// Kick Duplicate Player IDs
+kickDuplicate = 1;
+
+// BattlEye Anti-Cheat
+// 0 = disable
+// 1 = enable
+BattlEye = 1;
+
+// Allowed File Extentions
+allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"};
+allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"};
+allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"};
+
+// SCRIPTING ISSUES
+onUserConnected = "";
+onUserDisconnected = "";
+doubleIdDetected = "";
+
+// SIGNATURE VERIFICATION
+// kick = kick (_this select 0)
+// ban = ban (_this select 0)
+onUnsignedData = "kick (_this select 0)";
+onHackedData = "kick (_this select 0)";
+onDifferentData = "";
+
+// HEADLESS CLIENT SUPPORT
+// specify ip-adresses of allowed headless clients
+headlessClients[] = {"127.0.0.1", "172.18.0.1"};
+localClient[] = {"127.0.0.1", "172.18.0.1"};
+
+// BattlEye Anti-Cheat License
+// 0 = decline
+// 1 = accept
+battleyeLicense = 1;
diff --git a/steamcmd_servers/arma/arma3/egg-arma3.json b/steamcmd_servers/arma/arma3/egg-arma3.json
new file mode 100644
index 00000000..66496d91
--- /dev/null
+++ b/steamcmd_servers/arma/arma3/egg-arma3.json
@@ -0,0 +1,108 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-26T15:50:38-05:00",
+ "name": "Arma 3",
+ "author": "daave@aaathats3as.com",
+ "description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3",
+ "startup": ".\/arma3server -ip=0.0.0.0 -port={{SERVER_PORT}} -cfg={{BASIC}} -config={{CONFIG}} {{CUSTOM}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Connected to Steam servers\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game App ID",
+ "description": "Steam CMD App ID.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "233780",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Config",
+ "description": "Server config",
+ "env_variable": "CONFIG",
+ "default_value": "server.cfg",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Custom Command Line Option.",
+ "description": "Put -autoinit or related things in here :)",
+ "env_variable": "CUSTOM",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "SERVERMODS",
+ "description": "This is where you put the files that go along with the -serverMods startup option.",
+ "env_variable": "SERVERMODS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Mods",
+ "description": "This is where you put mods that go along with the -mods startup option",
+ "env_variable": "MODS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Steam User",
+ "description": "A Steam username with Arma3 on the account.",
+ "env_variable": "STEAM_USER",
+ "default_value": "anonymous",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ },
+ {
+ "name": "Steam Password",
+ "description": "Steam User Password",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Basic",
+ "description": "Basic network config",
+ "env_variable": "BASIC",
+ "default_value": "basic.cfg",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Steam Auth Code",
+ "description": "Steam Auth Code only when you're using Steam Auth",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/arma/arma3_headless_client/README.md b/steamcmd_servers/arma/arma3_headless_client/README.md
new file mode 100644
index 00000000..c674f030
--- /dev/null
+++ b/steamcmd_servers/arma/arma3_headless_client/README.md
@@ -0,0 +1,21 @@
+# Arma 3 Headless Client
+### From their [Site](https://community.bistudio.com/wiki/Arma_3_Headless_Client)
+What is a Headless Client (HC) used for?
+* Headless Client is used to offload AI calculations from the server
+* Headless Client is integrated into game client and dedicated server executable (WIndows and Linux, use -client parameter)
+* The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs in the server.cfg,
+
+### But why?
+If you host an Arma 3 Server with lots of AI in it, the Server FPS will drop fast.
+Since the server files are only 32 Bit you will need some kind of magical assistant to prevent slow AI.
+
+### Minimum RAM warning
+This server requires about 2048m to run properly. ARMA 3 is more CPU intensive though.
+
+### Additional settings
+Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters).
+This can help is you see the server using to many cores/threads on the server.
+If you want to know how to implement, take a look at the Wiki [here](https://community.bistudio.com/wiki/Arma_3_Headless_Client#Spawning_the_AI) or at a guide in the A3 Forums [here](https://forums.bohemia.net/forums/topic/178434-arma3-headless-client-guide/).
+
+### Server Ports
+Since this is basically a client, this Egg does not need a port.
\ No newline at end of file
diff --git a/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json
new file mode 100644
index 00000000..775b722a
--- /dev/null
+++ b/steamcmd_servers/arma/arma3_headless_client/egg-arma3-headless-client.json
@@ -0,0 +1,99 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-26T15:50:34-05:00",
+ "name": "Arma 3 Headless Client",
+ "author": "brainp4in@blueberry-hood-clan.de",
+ "description": "Headless Clients are used to offload AI calculations from the Arma 3 Server.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:game_arma3",
+ "startup": ".\/arma3server -client -connect={{SERVERIP}} -port={{SERVERPORT}} {{CUSTOM}} -mod=\"{{MODS}}\"",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Client connected\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"\r\n\r\n[[ -f basic.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/basic.cfg\r\n[[ -f server.cfg ]] || curl -sSLO https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/arma\/arma3\/egg-arma3-config\/server.cfg",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game App ID",
+ "description": "Steam CMD App ID.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "233780",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Server IP",
+ "description": "IP address of the Arma 3 server that should be supported by the Headless Client.",
+ "env_variable": "SERVERIP",
+ "default_value": "127.0.0.1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:30"
+ },
+ {
+ "name": "Server Port",
+ "description": "Port of the Arma 3 server that should be supported by the Headless Client.",
+ "env_variable": "SERVERPORT",
+ "default_value": "2302",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:5"
+ },
+ {
+ "name": "Custom Command Line Option.",
+ "description": "Put -autoinit or related things in here :)",
+ "env_variable": "CUSTOM",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Mods",
+ "description": "This is where you put mods that go along with the -mods startup option",
+ "env_variable": "MODS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "Steam User",
+ "description": "A Steam username with Arma3 on the account.",
+ "env_variable": "STEAM_USER",
+ "default_value": "anonymous",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ },
+ {
+ "name": "Steam Password",
+ "description": "Steam User Password",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Steam Auth Code",
+ "description": "Steam Auth Code only when you're using Steam Auth",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/conan_exiles/README.md b/steamcmd_servers/conan_exiles/README.md
new file mode 100644
index 00000000..28d4024b
--- /dev/null
+++ b/steamcmd_servers/conan_exiles/README.md
@@ -0,0 +1,15 @@
+### From their [Site](https://conanexiles.com/)
+Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war.
+
+### Minimum RAM warning
+This server requires about 4096m to run properly.
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 7777 |
+| Steam Query | 27015 |
+
+### More information can be found [here](https://forums.funcom.com/t/conan-exiles-dedicated-server-app-latest-version-1-0-21/21699)
\ No newline at end of file
diff --git a/steamcmd_servers/conan_exiles/egg-conan-exiles.json b/steamcmd_servers/conan_exiles/egg-conan-exiles.json
new file mode 100644
index 00000000..d0ddf3c0
--- /dev/null
+++ b/steamcmd_servers/conan_exiles/egg-conan-exiles.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2018-12-25T20:34:11-05:00",
+ "name": "Conan Exiles",
+ "author": "brycea@rapidnetworks.org",
+ "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.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:wine-source",
+ "startup": "wine ConanSandboxServer.exe -log",
+ "config": {
+ "files": "{}",
+ "startup": "{}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates xvfb screen\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +app_update ${APPID} validate +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n# Get First-Time Setup Configuration Files\r\necho \"#!\/bin\/sh\r\nexport WINEARCH=win64\r\nexport WINEPREFIX=\/mnt\/server\/.wine64\r\nxvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32'\r\nwine \/mnt\/server\/SpaceEngineersDedicated.exe -console\" > \/mnt\/server\/start_se.sh\r\nchmod +x \/mnt\/server\/start_se.sh",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download.",
+ "env_variable": "APPID",
+ "default_value": "443030",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,6"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/dont_starve/README.md b/steamcmd_servers/dont_starve/README.md
new file mode 100644
index 00000000..37c701d3
--- /dev/null
+++ b/steamcmd_servers/dont_starve/README.md
@@ -0,0 +1,20 @@
+# Don't Starve Together
+### From their [site](https://www.klei.com/games/dont-starve)
+Don’t Starve is an uncompromising wilderness survival game full of science and magic.
+
+You play as Wilson, an intrepid Gentleman Scientist who has been trapped by a demon and transported to a mysterious wilderness world. Wilson must learn to exploit his environment and its inhabitants if he ever hopes to escape and find his way back home.
+
+Enter a strange and unexplored world full of strange creatures, dangers, and surprises. Gather resources to craft items and structures that match your survival style. Play your way as you unravel the mysteries of this strange land.
+
+### Minimum RAM warning
+Minimum required memory to run the server is around 512mb for a single user..
+
+
+### Server Ports
+Don't Starve Together only requires a single port to run. The default is 7777
+
+| Port | default |
+|---------|---------|
+| Game | 10998 |
+
+#### Mods/Plugins may require ports to be added to the server.
diff --git a/steamcmd_servers/dont_starve/egg-don-t-starve.json b/steamcmd_servers/dont_starve/egg-don-t-starve.json
new file mode 100644
index 00000000..e5c44d3f
--- /dev/null
+++ b/steamcmd_servers/dont_starve/egg-don-t-starve.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2018-10-06T20:21:42-04:00",
+ "name": "Don't Starve",
+ "author": "parker@parkervcp.com",
+ "description": "Don\u2019t Starve is an uncompromising wilderness survival game full of science and magic.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:source",
+ "startup": "'cd bin && .\/dontstarve_dedicated_server_nullrenderer -bind_ip 0.0.0.0 -port {{SERVER_PORT}} -console -persistent_storage_root \/home\/container\/DoNotStarveTogether -conf_dir config -cluster server -players {{MAX_PLAYERS}}'",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Setting breakpad minidump AppID\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Don't Starve 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 \/mnt\/server\/logs\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\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 343050 +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\nmkdir -p ~\/DoNotStarveTogether\/config\/server\/\r\necho \"${SERVER_TOKEN}\" >> ~\/DoNotStarveTogether\/config\/server\/cluster_token.txt",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Max Players",
+ "description": "Set the maximum number of players that will be allowed to join the game. This option overrides the [GAMEPLAY] \/ max_players setting in cluster.ini.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "4",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer|between:1,31"
+ },
+ {
+ "name": "Server Token",
+ "description": "Required to run a public server. This needs to be generated from in game.",
+ "env_variable": "SERVER_TOKEN",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/eco/README.md b/steamcmd_servers/eco/README.md
new file mode 100644
index 00000000..147bda91
--- /dev/null
+++ b/steamcmd_servers/eco/README.md
@@ -0,0 +1,15 @@
+# Eco
+Steam Description
+Eco is a community-based game; the players develop laws, government, and an economy to determine the success of their world. We need extensive playtesting to get the balance of our core features just right. Early Access is the perfect fit for finding an audience for this while also funding additional development.
+
+### Server Ports
+Eco requires up to 2 ports
+
+game port (default 3000)
+web port (default 3001)
+
+
+| Port | default |
+|---------|---------------|
+| Game | 3000 |
+| Web | 3001 |
\ No newline at end of file
diff --git a/steamcmd_servers/eco/egg-eco.json b/steamcmd_servers/eco/egg-eco.json
new file mode 100644
index 00000000..49041fa0
--- /dev/null
+++ b/steamcmd_servers/eco/egg-eco.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-30T09:04:05+01:00",
+ "name": "Eco",
+ "author": "info@goover.de",
+ "description": "Eco is an online world from Strange Loop Games where players must build civilization using resources from an ecosystem that can be damaged and destroyed. The world of Eco is an incredibly reactive one, and whatever any player does in the world affects the underlying ecosystem.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5-complete",
+ "startup": "\/usr\/bin\/mono .\/EcoServer.exe -nogui",
+ "config": {
+ "files": "{\r\n \"Configs\/Network.eco\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"GameServerPort\": \"{{server.build.default.port}}\",\r\n \"WebServerPort\": \"{{server.build.env.WEB_PORT}}\",\r\n \"PublicServer\": \"{{server.build.env.PUB_SRV}}\",\r\n \"Password\": \"{{server.build.env.SRV_PWD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Server Initialization \",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "exit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "ID",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "739590",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,6"
+ },
+ {
+ "name": "Web server port",
+ "description": "port",
+ "env_variable": "WEB_PORT",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric|digits_between:1,6"
+ },
+ {
+ "name": "Public Server",
+ "description": "Public Server = true | Private Server = false",
+ "env_variable": "PUB_SRV",
+ "default_value": "false",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Server Password",
+ "description": "Password to join the Server",
+ "env_variable": "SRV_PWD",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/hlds_server/README.md b/steamcmd_servers/hlds_server/README.md
new file mode 100644
index 00000000..8f65ef99
--- /dev/null
+++ b/steamcmd_servers/hlds_server/README.md
@@ -0,0 +1,12 @@
+# HLDS Servers
+
+This is for older games like CS 1.6 (default game) and other servers that still run on the older HLDS server under id 90
+
+### Server Ports
+HLDS servers require up to 6 ports
+
+| Port | default |
+|-----------|---------|
+| Game/rcon | 27015 |
+| HLTV | 27020 |
+| VAC | 26900 |
\ No newline at end of file
diff --git a/steamcmd_servers/hlds_server/egg-custom-h-l-d-s-engine-game.json b/steamcmd_servers/hlds_server/egg-custom-h-l-d-s-engine-game.json
new file mode 100644
index 00000000..173dc848
--- /dev/null
+++ b/steamcmd_servers/hlds_server/egg-custom-h-l-d-s-engine-game.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-06-28T20:41:35-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.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "startup": ".\/hlds_run -console -game {{HLDS_GAME}} -port {{SERVER_PORT}} -sport {{VAC_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Connection to Steam servers successful\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "quit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# SRCDS 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 ${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",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using HLDS.\r\n\r\nThe HLDS server ID is 90. This should not be changed.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "90",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,6"
+ },
+ {
+ "name": "Game Name",
+ "description": "The name corresponding to the game to download and run using HLDS.\r\n\r\nall the HLDS server names are here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Server_Name_Enumeration",
+ "env_variable": "HLDS_GAME",
+ "default_value": "cstrike",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Map",
+ "description": "The default map for the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "de_dust2",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|alpha_dash"
+ },
+ {
+ "name": "VAC port",
+ "description": "Specifies the VAC port the server should use. Default is 26900.",
+ "env_variable": "VAC_PORT",
+ "default_value": "26900",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,5"
+ }
+ ]
+}
diff --git a/steamcmd_servers/mordhau/README.md b/steamcmd_servers/mordhau/README.md
new file mode 100644
index 00000000..e7aa78b7
--- /dev/null
+++ b/steamcmd_servers/mordhau/README.md
@@ -0,0 +1,66 @@
+mog#Mordhau
+Steam Description
+MORDHAU is a medieval first & third person multiplayer slasher. Enter a hectic battlefield of up to 64 players as a mercenary in a fictional, but realistic world, where you will get to experience the brutal and satisfying melee combat that will have you always coming back for more.
+
+
+### Server Ports
+Mordhau requires 3 ports
+
+game port (default 7777)
+query port (default 27015)
+Beacon (default 15000)
+
+| Port | default |
+|---------|---------------|
+| Game | 7777 |
+| Query | 27015 |
+| Beacon | 15000 |
+
+
+
+### Map Rotation / Change Config
+Lots of good information in this [thread](https://mordhau.com/forum/topic/10348/dedicated-server-hosting-guide-linux/?page=1)
+You'll need to run the server once before the Mordhau/Saved/Config/LinuxServer folder is available
+
+
+### Default Map Variable
+By default the game always starts the same game map and mode. Change this variable to start the server wth your choice of map and mode. For example , Grad/HRD_Grad OR TaigaMap/FL_Taiga
+
+Map Types
+HRD = Hoard
+SKM = Skirmish
+FL = Frontline
+FFA = Deathmatch
+BR = BattleRoyal
+TDM = Team Death Match
+
+
+
+Valid types per map
+
+Grad/
+HRD_Grad
+BR_Grad
+FFA_Grad
+FL_Grad
+SKM_Grad
+
+Contraband/
+FFA_Contraband
+SKM_Contraband
+TDM_Contraband
+
+DuelCamp/
+FFA_Camp
+FL_Camp
+HRD_Camp
+SKM_Camp
+TDM_Camp_64
+TDM_Camp
+
+MaxMap/
+FFA_MountainPeak
+FL_MountainPeak
+HRD_MountainPeak
+SKM_MountainPeak
+TDM_MountainPeak
diff --git a/steamcmd_servers/mordhau/egg-mordhau.json b/steamcmd_servers/mordhau/egg-mordhau.json
new file mode 100644
index 00000000..f923995e
--- /dev/null
+++ b/steamcmd_servers/mordhau/egg-mordhau.json
@@ -0,0 +1,99 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-09-07T20:08:55-04:00",
+ "name": "Mordhau",
+ "author": "trey@chazx.cc",
+ "description": "Mordhau is a multiplayer medieval hack 'n slash video game, developed by Slovenian independent studio Triternion, with a prominent aspect of skill-based competitive play and customization.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:game_mordhau",
+ "startup": ".\/MordhauServer.sh \/Game\/Mordhau\/Maps\/{{DEFAULT_MAP}}?MaxSlots={{MAX_PLAYERS}}? -USEALLAVAILABLECORES -Port={{SERVER_PORT}} -queryport={{QUERY_PORT}} -beaconport={{BEACON_PORT}}",
+ "config": {
+ "files": "{\r\n \"Mordhau\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"AdminPassword=\": \"AdminPassword={{server.build.env.ADMIN_PASSWORD}}\",\r\n \"ServerName=\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"ServerPassword=\": \"ServerPassword={{server.build.env.GAME_PASSWORD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Session GameSession successfully created\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Mordhau Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\n\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\ncd \/tmp\r\n\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steamcmd \/mnt\/server\/logs\r\n\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\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\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 629800 +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\n\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Max Players",
+ "description": "Max Players",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "48",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Source APP ID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "629800",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Query Port",
+ "description": "",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27015",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "name": "Admin Password",
+ "description": "Password for managing server from in game",
+ "env_variable": "ADMIN_PASSWORD",
+ "default_value": "password123",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "name": "Server Name",
+ "description": "Name to show up in server Browser",
+ "env_variable": "SERVER_NAME",
+ "default_value": "Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:40"
+ },
+ {
+ "name": "Server Password",
+ "description": "Password to get on the server",
+ "env_variable": "GAME_PASSWORD",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "name": "DEFAULT_MAP",
+ "description": "First map to load. Format Expected is \"MAPNAME\/TYPE_NAME\". Examples in Readme",
+ "env_variable": "DEFAULT_MAP",
+ "default_value": "Grad\/FL_Grad",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:40"
+ },
+ {
+ "name": "Beacon Port",
+ "description": "Beacon Port required",
+ "env_variable": "BEACON_PORT",
+ "default_value": "15000",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/onset/README.md b/steamcmd_servers/onset/README.md
new file mode 100644
index 00000000..274faf9e
--- /dev/null
+++ b/steamcmd_servers/onset/README.md
@@ -0,0 +1,20 @@
+# Onset
+From their [site](https://playonset.com/):
+Onset is an open world multiplayer sandbox without predefined goals. Create and host your very own experience in Onset using scripting functions. Whether that is Roleplay, Cops and Robbers or classic Freeroam. Or just enjoy the different gamemodes created by other players.
+
+## Recommended server settings
+### RAM
+This server requires about 100M to run.
+
+See the following - https://dev.playonset.com/wiki/DedicatedServer#Minimum_requirements_2
+
+### Disk
+This server uses about 50M of disk.
+
+## Server Ports
+
+| Port | default |
+|-------|---------|
+| Game | 7777 |
+| Query | 7776 |
+| file | 7775 |
\ No newline at end of file
diff --git a/steamcmd_servers/onset/egg-onset.json b/steamcmd_servers/onset/egg-onset.json
new file mode 100644
index 00000000..923fc507
--- /dev/null
+++ b/steamcmd_servers/onset/egg-onset.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-12T18:56:28-05:00",
+ "name": "Onset",
+ "author": "parker@parkervcp.com",
+ "description": "Onset is an open world multiplayer sandbox without predefined goals. Create and host your very own experience in Onset using scripting functions. Whether that is Roleplay, Cops and Robbers or classic Freeroam. Or just enjoy the different gamemodes created by other players.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "startup": ".\/OnsetServer",
+ "config": {
+ "files": "{\r\n \"server_config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ipaddress\": \"0.0.0.0\",\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"servername\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"password\":\"{{server.build.env.SERVER_PASSWORD}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Entering simulation\",\r\n \"userInteraction\": []\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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "App ID",
+ "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "1204170",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "ld lib path",
+ "description": "required to load server libraries.",
+ "env_variable": "LD_LIBRARY_PATH",
+ "default_value": ".",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Auto Update Server",
+ "description": "This flag will auto update the server on restart. (default is 1) \r\n\r\nSet to 1 to update\r\nSet to 0 to no update",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/source_servers/pixark/README.md b/steamcmd_servers/pixark/README.md
similarity index 100%
rename from source_servers/pixark/README.md
rename to steamcmd_servers/pixark/README.md
diff --git a/source_servers/pixark/egg-pix-a-r-k.json b/steamcmd_servers/pixark/egg-pix-a-r-k.json
similarity index 97%
rename from source_servers/pixark/egg-pix-a-r-k.json
rename to steamcmd_servers/pixark/egg-pix-a-r-k.json
index 16bb3905..219447bb 100644
--- a/source_servers/pixark/egg-pix-a-r-k.json
+++ b/steamcmd_servers/pixark/egg-pix-a-r-k.json
@@ -3,7 +3,7 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-06-07T12:39:45-04:00",
+ "exported_at": "2019-10-24T00:00:15-04:00",
"name": "PixARK",
"author": "hello@venatus.digital",
"description": "A simple Docker container with Wine to run PixARK using Pterodactyl Panel",
@@ -17,7 +17,7 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# PixARK: Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends 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\n\r\ntar -xzvf steamcmd.tar.gz -C \/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\/mnt\/server\/steamcmd\/steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir \/home\/container +app_update {{SRCDS_APPID}} +quit",
+ "script": "#!\/bin\/bash\r\n# PixARK: Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends 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\n\r\ntar -xzvf steamcmd.tar.gz -C \/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\/mnt\/server\/steamcmd\/steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir \/mnt\/server +app_update {{SRCDS_APPID}} +quit",
"container": "ubuntu:latest",
"entrypoint": "bash"
}
diff --git a/steamcmd_servers/rust_staging/README.md b/steamcmd_servers/rust_staging/README.md
new file mode 100644
index 00000000..7b577286
--- /dev/null
+++ b/steamcmd_servers/rust_staging/README.md
@@ -0,0 +1,23 @@
+### Rust Staging Branch
+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.
+
+### Modding warning
+Due to Oxide/uMod not supporting the staging branch, you will not be able to Mod this server.
+
+Wulf (Community Admin on Oxidemod/uMod):
+
+"We only release builds for the release/public branch of Rust, so if you'd like to use it on any other branch, you'd need to manually patch it yourself using our patcher tool founder under the Snapshots repo. To switch a different Rust branch, just use the -beta tag with SteamCMD and the branch name."
+
+### Server Ports
+Ports required to run the server.
+
+| Port | default |
+|---------|---------|
+| Game and Quary | 28015 UDP |
+| RCON | 28016 TCP |
+
+### Information about server updates can be found [here](https://steamdb.info/app/258550/depots/?branch=staging)
diff --git a/steamcmd_servers/rust_staging/egg-rust-staging.json b/steamcmd_servers/rust_staging/egg-rust-staging.json
new file mode 100644
index 00000000..7e6bc806
--- /dev/null
+++ b/steamcmd_servers/rust_staging/egg-rust-staging.json
@@ -0,0 +1,135 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2018-01-21T16:58:36-06:00",
+ "name": "Rust Staging",
+ "author": "root@smc.li",
+ "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.",
+ "image": "quay.io\/pterodactyl\/core:rust",
+ "startup": ".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"{{WORLD_SEED}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Server startup complete\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "quit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "apt update\r\napt -y --no-install-recommends install curl unzip lib32gcc1 ca-certificates\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 258550 -beta staging +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so",
+ "container": "ubuntu:16.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Name",
+ "description": "The name of your server in the public server list.",
+ "env_variable": "HOSTNAME",
+ "default_value": "A Rust Staging Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:40"
+ },
+ {
+ "name": "Level",
+ "description": "The world file for Rust to use.",
+ "env_variable": "LEVEL",
+ "default_value": "Procedural Map",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Description",
+ "description": "The description under your server title. Commonly used for rules & info. Use \\n for newlines.",
+ "env_variable": "DESCRIPTION",
+ "default_value": "Powered by Pterodactyl",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "URL",
+ "description": "The URL for your server. This is what comes up when clicking the \"Visit Website\" button.",
+ "env_variable": "SERVER_URL",
+ "default_value": "http:\/\/pterodactyl.io",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|url"
+ },
+ {
+ "name": "World Size",
+ "description": "The world size for a procedural map.",
+ "env_variable": "WORLD_SIZE",
+ "default_value": "3000",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ },
+ {
+ "name": "World Seed",
+ "description": "The seed for a procedural map.",
+ "env_variable": "WORLD_SEED",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum amount of players allowed in the server at once.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "50",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ },
+ {
+ "name": "Server Image",
+ "description": "The header image for the top of your server listing.",
+ "env_variable": "SERVER_IMG",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|url"
+ },
+ {
+ "name": "RCON Port",
+ "description": "Port for RCON connections.",
+ "env_variable": "RCON_PORT",
+ "default_value": "28016",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer"
+ },
+ {
+ "name": "RCON Password",
+ "description": "RCON access password.",
+ "env_variable": "RCON_PASS",
+ "default_value": "CHANGEME",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ },
+ {
+ "name": "Save Interval",
+ "description": "Sets the server’s auto-save interval in seconds.",
+ "env_variable": "SAVEINTERVAL",
+ "default_value": "60",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ },
+ {
+ "name": "Additional Arguments",
+ "description": "Add additional startup parameters to the server.",
+ "env_variable": "ADDITIONAL_ARGS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ }
+ ]
+}
diff --git a/steamcmd_servers/scpsl-dedicated/README.md b/steamcmd_servers/scpsl-dedicated/README.md
new file mode 100644
index 00000000..60411e1b
--- /dev/null
+++ b/steamcmd_servers/scpsl-dedicated/README.md
@@ -0,0 +1,31 @@
+# SCP: Secret Laboratory
+SCP: Secret Laboratory Dedicated Linux Server AddID: [996560](https://steamdb.info/app/996560/)
+
+This Server is NOT compatible with ServerMod2 or MultiAdmin
+
+
+### Minimum RAM warning
+Minimum required memory to run the server: 3096 MB
+
+
+### Server Ports
+Ports required to run the server in a table format.
+
+| Port | default |
+|---------|---------|
+| Game | 7777 |
+
+### Verification
+
+The server must be verified to be visible in the Server Browser.
+
+Before requesting verification make sure your server follows the [Verified Server Rules](https://scpslgame.com/Verified_server_rules.pdf).
+
+#### Requesting Verification
+Once ready send an email to server.verification@scpslgame.com with the following info:
+
+* The server's external IPv4 address
+* The port used by the server
+* If the server IP is static or dynamic
+
+#### Mods/Plugins may require ports to be added to the server.
diff --git a/steamcmd_servers/scpsl-dedicated/egg-scpsl.json b/steamcmd_servers/scpsl-dedicated/egg-scpsl.json
new file mode 100644
index 00000000..fff58d92
--- /dev/null
+++ b/steamcmd_servers/scpsl-dedicated/egg-scpsl.json
@@ -0,0 +1,36 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-01-29T19:54:33+01:00",
+ "name": "SCP:SL",
+ "author": "info@goover.de",
+ "description": "Egg for SCP: Secret Laboratory Dedicated Linux Server",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5-complete",
+ "startup": ".\/LocalAdmin {{SERVER_PORT}}",
+ "config": {
+ "files": "{\r\n \"config_gameplay.txt\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"server_ip\": \"0.0.0.0\",\r\n \"forward_ports\": \"false\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Waiting for players..\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n#echo 'gamedir_for_configs: true' >> \/mnt\/server\/hoster_policy.txt\r\n#chmod +x \/mnt\/server\/hoster_policy.txt\r\n\r\n#URL=$(curl https:\/\/api.github.com\/repos\/Grover-c13\/MultiAdmin\/releases\/latest | grep browser_download_url | cut -d '\"' -f 4)\r\n#wget -P \/mnt\/server\/ $URL\r\n#chmod +x \/mnt\/server\/MultiAdmin.exe\r\n\r\n#SmodVersion=$(curl https:\/\/api.github.com\/repos\/Grover-c13\/Smod2\/releases\/latest | grep tag_name | cut -d '\"' -f 4)\r\n#AssemblyURL=\"https:\/\/github.com\/Grover-c13\/Smod2\/releases\/download\/${SmodVersion}\/Assembly-CSharp.dll\"\r\n#SmodURL=\"https:\/\/github.com\/Grover-c13\/Smod2\/releases\/download\/${SmodVersion}\/Smod2.dll\"\r\n#wget -O \/mnt\/server\/SCPSL_Data\/Managed\/Smod2.dll $SmodURL\r\n#wget -O \/mnt\/server\/SCPSL_Data\/Managed\/Assembly-CSharp.dll $AssemblyURL\r\n#chmod +x \/mnt\/server\/SCPSL_Data\/Managed\/Smod2.dll\r\n#chmod +x \/mnt\/server\/SCPSL_Data\/Managed\/Assembly-CSharp.dll",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "SRCDS_APPID",
+ "description": "",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "996560",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/squad/squad/README.md b/steamcmd_servers/squad/README.md
similarity index 100%
rename from squad/squad/README.md
rename to steamcmd_servers/squad/README.md
diff --git a/steamcmd_servers/squad/egg-squad.json b/steamcmd_servers/squad/egg-squad.json
new file mode 100644
index 00000000..64730158
--- /dev/null
+++ b/steamcmd_servers/squad/egg-squad.json
@@ -0,0 +1,126 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-10-08T08:47:08-04:00",
+ "name": "Squad",
+ "author": "brycea@rapidnetworks.org",
+ "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.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": "\/home\/container\/SquadGame\/Binaries\/Linux\/SquadGameServer SquadGame Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}}",
+ "config": {
+ "files": "{\r\n \"SquadGame\/ServerConfig\/Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName=\\\"{{server.build.env.servername}}\\\"\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.maxplayers}}\",\r\n \"AllowTeamChanges\": \"AllowTeamChanges={{server.build.env.allowteamchange}}\",\r\n \"ShouldAdvertise\": \"ShouldAdvertise={{server.build.env.advertise}}\",\r\n \"NumReservedSlots\": \"NumReservedSlots={{server.build.env.reservedslots}}\",\r\n \"PreventTeamChangeIfUnbalanced\": \"PreventTeamChangeIfUnbalanced={{server.build.env.ptciu}}\",\r\n \"EnforceTeamBalance\": \"EnforceTeamBalance={{server.build.env.teambal}}\",\r\n \"RecordDemos\": \"RecordDemos={{server.build.env.recorddemos}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Engine Initialization\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n## install required packages to install squad\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates\r\n\r\n## install steamcmd\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\n\r\n## needs to be used for steamcmd to operate correctly\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install squad\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\n\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n\r\nchmod +x \/mnt\/server\/SquadGame\/Binaries\/Linux\/SquadGameServer",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Query Port",
+ "description": "Query port for your Squad server.",
+ "env_variable": "QUERY_PORT",
+ "default_value": "27165",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "name": "ld lib path",
+ "description": "this is needed for some reason",
+ "env_variable": "LD_LIBRARY_PATH",
+ "default_value": "\/home\/container\/linux64\/",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ },
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "403240",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Server Name",
+ "description": "The name for the server in the server list",
+ "env_variable": "servername",
+ "default_value": "Squad Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:30"
+ },
+ {
+ "name": "Max Players",
+ "description": "Sets the maximum number of players.",
+ "env_variable": "maxplayers",
+ "default_value": "80",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required"
+ },
+ {
+ "name": "Allow Team Change",
+ "description": "Allow players to change teams ( true \/ false )",
+ "env_variable": "allowteamchange",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Advertise Server",
+ "description": "Have the server report to the public server list ( true \/ false )",
+ "env_variable": "advertise",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Reserved Slows",
+ "description": "The number of reserved slots for admins \/ mods",
+ "env_variable": "reservedslots",
+ "default_value": "0",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Prevent Team Change If Unbalanced",
+ "description": "This will prevent players from changing teams if they're already unbalanced ( true \/ false )",
+ "env_variable": "ptciu",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Enforce Team Balance",
+ "description": "This will FORCE team balance if the teams are too uneven ( true \/ false )",
+ "env_variable": "teambal",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Record Demos",
+ "description": "This will record demos of the players ( true \/ false )",
+ "env_variable": "recorddemos",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/starbound/README.md b/steamcmd_servers/starbound/README.md
new file mode 100644
index 00000000..4329884b
--- /dev/null
+++ b/steamcmd_servers/starbound/README.md
@@ -0,0 +1,12 @@
+# Starbound
+Their desctiption:
+In Starbound, you create your own story - there’s no wrong way to play! You may choose to save the universe from the forces that destroyed your home, uncovering greater galactic mysteries in the process, or you may wish to forego a heroic journey entirely in favor of colonizing uncharted planets.
+
+### Server Ports
+Starbound requires a single port to be oepened
+
+game ports (default 21025 )
+
+| Port | default |
+|---------|---------|
+| Game | 21025 |
\ No newline at end of file
diff --git a/steamcmd_servers/starbound/egg-starbound.json b/steamcmd_servers/starbound/egg-starbound.json
new file mode 100644
index 00000000..f0c0d07a
--- /dev/null
+++ b/steamcmd_servers/starbound/egg-starbound.json
@@ -0,0 +1,81 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-17T08:01:28+01:00",
+ "name": "Starbound",
+ "author": "parker@parkervcp.com",
+ "description": "Starbound takes place in a two-dimensional, procedurally generated universe which the player is able to explore in order to obtain new weapons, armor, and items, and to visit towns and villages inhabited by various intelligent lifeforms.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:ubuntu_source",
+ "startup": ".\/starbound_server",
+ "config": {
+ "files": "{\r\n \"storage\/starbound_server.config\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"gameServerPort\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Starting UniverseServer\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Starbound specific setup.\r\ncd \/mnt\/server\/\r\n\r\n\r\n## edit sbinit config\r\nmv \/mnt\/server\/linux\/* \/mnt\/server\/\r\nrm -rf \/mnt\/server\/linux\r\nsed -i -e 's\/\\.\\.\/\\.\/g' \/mnt\/server\/sbinit.config\r\n\r\n## pull starbound_server.config\r\nmkdir -p \/mnt\/server\/storage\r\ncurl -sSL https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/steamcmd_servers\/starbound\/starbound_server.config > \/mnt\/server\/storage\/starbound_server.config\r\n\r\n## use Worksop content\r\nif [ \"${WORKSHOP}\" == \"1\" ]; then\r\n for dir in \/mnt\/server\/steamapps\/workshop\/content\/211820\/*\/\r\n do\r\n dir=${dir%*\/}\r\n echo Sym-linking mod ${dir##*\/} into the mods folder\r\n ln -r -s \/mnt\/server\/steamapps\/workshop\/content\/211820\/${dir##*\/}\/contents.pak \/mnt\/server\/mods\/${dir##*\/}.pak\r\n done\r\nfi",
+ "container": "ubuntu:18.04",
+ "entrypoint": "\/bin\/bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam User",
+ "description": "This is a required setting and cannot be set to anonymous.",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ },
+ {
+ "name": "Steam Password",
+ "description": "Steam User Password",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "211820",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "string"
+ },
+ {
+ "name": "Steam Auth",
+ "description": "Steam account auth code. Required if you have 2fa enabled.",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:5"
+ },
+ {
+ "name": "Auto Update Server",
+ "description": "This is to auto-update the game server.",
+ "env_variable": "AUTO_UPDATE",
+ "default_value": "1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|bool"
+ },
+ {
+ "name": "Use Workshop content",
+ "description": "Set to true if you want to use your subscribed Workshop content",
+ "env_variable": "WORKSHOP",
+ "default_value": "0",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|bool"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/starbound/starbound_server.config b/steamcmd_servers/starbound/starbound_server.config
new file mode 100644
index 00000000..c9785af0
--- /dev/null
+++ b/steamcmd_servers/starbound/starbound_server.config
@@ -0,0 +1,50 @@
+{
+ "allowAdminCommands" : true,
+ "allowAdminCommandsFromAnyone" : false,
+ "allowAnonymousConnections" : true,
+ "allowAssetsMismatch" : true,
+ "anonymousConnectionsAreAdmin" : false,
+ "bannedIPs" : [],
+ "bannedUuids" : [],
+ "checkAssetsDigest" : false,
+ "clearPlayerFiles" : false,
+ "clearUniverseFiles" : false,
+ "clientIPJoinable" : false,
+ "clientP2PJoinable" : true,
+ "configurationVersion" : {
+ "basic" : 2,
+ "server" : 4
+ },
+ "crafting" : {
+ "filterHaveMaterials" : false
+ },
+ "gameServerBind" : "::",
+ "gameServerPort" : 21025,
+ "interactiveHighlight" : true,
+ "inventory" : {
+ "pickupToActionBar" : true
+ },
+ "maxPlayers" : 8,
+ "maxTeamSize" : 4,
+ "monochromeLighting" : false,
+ "playerBackupFileCount" : 3,
+ "queryServerBind" : "::",
+ "queryServerPort" : 21025,
+ "rconServerBind" : "::",
+ "rconServerPassword" : "",
+ "rconServerPort" : 21026,
+ "rconServerTimeout" : 1000,
+ "runQueryServer" : false,
+ "runRconServer" : false,
+ "safeScripts" : true,
+ "scriptInstructionLimit" : 10000000,
+ "scriptInstructionMeasureInterval" : 10000,
+ "scriptProfilingEnabled" : false,
+ "scriptRecursionLimit" : 100,
+ "serverFidelity" : "automatic",
+ "serverName" : "A Starbound Server",
+ "serverOverrideAssetsDigest" : null,
+ "serverUsers" : {
+ },
+ "tutorialMessages" : true
+}
\ No newline at end of file
diff --git a/steamcmd_servers/svencoop/README.md b/steamcmd_servers/svencoop/README.md
new file mode 100644
index 00000000..af43edf9
--- /dev/null
+++ b/steamcmd_servers/svencoop/README.md
@@ -0,0 +1,12 @@
+# Sven Co-op
+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.
+
+### Server Ports
+Sven co-op requires a single port to be opened
+
+game ports (default 27015 )
+
+| Port | default |
+|---------|---------|
+| Game | 27015 |
+| VAC | 26900 |
diff --git a/steamcmd_servers/svencoop/egg-sven-co-op.json b/steamcmd_servers/svencoop/egg-sven-co-op.json
new file mode 100644
index 00000000..c341b5a7
--- /dev/null
+++ b/steamcmd_servers/svencoop/egg-sven-co-op.json
@@ -0,0 +1,81 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-11-14T21:43:14+01: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.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/svends_run -console -port {{SERVER_PORT}} +maxplayers {{SC_PLAYERS}} +map {{SC_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{\r\n \"svencoop\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"hostname\": \"hostname \\\"{{env.SC_NAME}}\\\"\",\r\n \"sv_password\": \"sv_password \\\"{{env.SC_PASSWORD}}\\\"\",\r\n \"\/\/sv_password\": \"sv_password \\\"{{env.SC_PASSWORD}}\\\"\",\r\n \"sv_region\": \"sv_region {{env.SC_REGION}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Connection to Steam servers successful.\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "quit"
+ },
+ "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",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Default Map",
+ "description": "The default map for the server.",
+ "env_variable": "SC_MAP",
+ "default_value": "svencoop1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum amount of players that can play on the server at once.",
+ "env_variable": "SC_PLAYERS",
+ "default_value": "12",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric|between:2,32"
+ },
+ {
+ "name": "Server Name",
+ "description": "The name your server will appear as on the in Sven Co-op in-game server list.",
+ "env_variable": "SC_NAME",
+ "default_value": "Sven Co-op server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:40"
+ },
+ {
+ "name": "Password",
+ "description": "Password required to join the server. Leave blank to disable.",
+ "env_variable": "SC_PASSWORD",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "name": "Region",
+ "description": "The region your server is in. This is used in Steam's server browser, so players can look for servers near by. This does not restrict players from connecting to your server.\r\n\r\n-1: Do not list server in the server browser.\r\n0: USA east coast.\r\n1: USA west coast.\r\n2: South America (continent)\r\n3: Europe.\r\n4: Asia.\r\n5: Australia (continent, aka Oceania)\r\n6: Middle East.\r\n7: Africa.\r\n255: International.",
+ "env_variable": "SC_REGION",
+ "default_value": "255",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric|between:-1,255"
+ },
+ {
+ "name": "Source AppID",
+ "description": "Required for game to update on server restart. Do not modify this.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "276060",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/steamcmd_servers/tower_unite/README.md b/steamcmd_servers/tower_unite/README.md
new file mode 100644
index 00000000..f43f9408
--- /dev/null
+++ b/steamcmd_servers/tower_unite/README.md
@@ -0,0 +1,11 @@
+# Tower Unite
+Their desctiption:
+Every aspect of Tower Unite allows for online multiplayer interaction. It is a living and evolving online game world, driven by the community. Play games online with your friends, or make new friends from across the globe.
+
+### Server Ports
+Tower Unite requires a single port to be opened
+
+| Port | default |
+|---------|---------|
+| Game | 7778 |
+| Query | 27016 |
diff --git a/steamcmd_servers/tower_unite/egg-tower-unite.json b/steamcmd_servers/tower_unite/egg-tower-unite.json
new file mode 100644
index 00000000..43f7687b
--- /dev/null
+++ b/steamcmd_servers/tower_unite/egg-tower-unite.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-02-08T01:46:57+01:00",
+ "name": "Tower Unite",
+ "author": "teamwuffy@gmail.com",
+ "description": "Tower Unite\r\n\r\nDefault Port: 7778\r\nDefault Query Port: 27016\r\n\r\nConfig Path: Tower\/Saved\/Config\/TowerServer.ini",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/Tower\/Binaries\/Linux\/TowerServer-Linux-Shipping -log -Port={{SERVER_PORT}} -MULTIHOME=0.0.0.0 -TowerServerINI=..\/..\/Saved\/Config\/TowerServer.ini",
+ "config": {
+ "files": "{\r\n \"Tower\/Saved\/Config\/TowerServer.ini\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"MaxPlayers\": \"{{server.build.env.SERVER_MAX_PLAYER}}\",\r\n \"ServerTitle\": \"{{server.build.env.SERVER_TITLE}}\",\r\n \"SteamLoginToken\": \"{{server.build.env.STEAM_LOGIN_TOKEN}}\",\r\n \"AdminSteamID\": \"{{server.build.env.STEAM_ADMIN_ID}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Match State Changed from EnteringMap to WaitingToStart\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Tower Unite Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --install-recommends install curl ca-certificates lib32gcc1\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\n\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\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 439660 validate +quit\r\n\r\ncd mnt\/server\r\n\r\nmkdir -p Tower\/Saved\/Config\r\nmkdir -p Tower\/Binaries\/Linux\r\n\r\nmv \/mnt\/server\/steamcmd\/linux64\/steamclient.so \/mnt\/server\/Tower\/Binaries\/Linux\r\n\r\ncat <> Tower\/Saved\/Config\/TowerServer.ini\r\n[\/script\/towernetworking.dedicatedserveroptions]\r\nMaxPlayers=$SERVER_MAX_PLAYER\r\nServerTitle=$SERVER_TITLE\r\nSteamLoginToken=$STEAM_LOGIN_TOKEN\r\n\r\n[Administration]\r\nAdminSteamID=$STEAM_ADMIN_ID\r\nEOF",
+ "container": "ubuntu:18.10",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam Login Token",
+ "description": "Login and generate a token for the app-id: 394690\r\nhttps:\/\/steamcommunity.com\/dev\/managegameservers",
+ "env_variable": "STEAM_LOGIN_TOKEN",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:100"
+ },
+ {
+ "name": "Steam Admin ID",
+ "description": "Note that your admin id is only a number!",
+ "env_variable": "STEAM_ADMIN_ID",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer|max:76561202255233023"
+ },
+ {
+ "name": "Server Title",
+ "description": "",
+ "env_variable": "SERVER_TITLE",
+ "default_value": "Tower Unite Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:512"
+ },
+ {
+ "name": "Max Players",
+ "description": "",
+ "env_variable": "SERVER_MAX_PLAYER",
+ "default_value": "40",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|integer|max:512"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/unturned/rocketmod/README.md b/steamcmd_servers/unturned/rocketmod/README.md
similarity index 84%
rename from unturned/rocketmod/README.md
rename to steamcmd_servers/unturned/rocketmod/README.md
index b4386da3..d2ad1551 100644
--- a/unturned/rocketmod/README.md
+++ b/steamcmd_servers/unturned/rocketmod/README.md
@@ -1,4 +1,4 @@
-# Unturned
+# Unturned - RocketMod
Steam Description
You're one of the few not yet turned zombie. Keeping it that way will be a challenge.
@@ -6,6 +6,8 @@ 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.
+Unturned 3 implementation of the RocketMod — .NET Game Server Plugin Framework
+
### Server Ports
Rocketmod requires 2 ports to run properly.
game port (default 8907)
diff --git a/unturned/rocketmod/egg-rocketmod.json b/steamcmd_servers/unturned/rocketmod/egg-rocketmod.json
similarity index 62%
rename from unturned/rocketmod/egg-rocketmod.json
rename to steamcmd_servers/unturned/rocketmod/egg-rocketmod.json
index 8a406e96..acaf657f 100644
--- a/unturned/rocketmod/egg-rocketmod.json
+++ b/steamcmd_servers/unturned/rocketmod/egg-rocketmod.json
@@ -7,7 +7,7 @@
"name": "RocketMod",
"author": "isaac@isaacs.site",
"description": "The RocketMod server mod for Unturned.",
- "image": "tenten8401\/pterodactyl-unturned",
+ "image": "registry.gitlab.com\/tenten8401\/pterodactyl-unturned",
"startup": "mono RocketLauncher.exe unturned",
"config": {
"files": "{\r\n \"Servers\/unturned\/Server\/Commands.dat\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Port\": \"Port {{server.build.default.port}}\"\r\n }\r\n}\r\n}",
@@ -17,29 +17,38 @@
},
"scripts": {
"installation": {
- "script": "apt 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\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformBitness 32 +login \"${STEAM_USER}\" \"${STEAM_PASS}\" +force_install_dir \/mnt\/server +app_update 304930 +quit\r\n\r\nmkdir -p \/mnt\/server\/Servers\/unturned\/Server\r\necho \"Port 27015\" > \/mnt\/server\/Servers\/unturned\/Server\/Commands.dat\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so",
+ "script": "apt 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\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformBitness 32 +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update 304930 +quit\r\n\r\nmkdir -p \/mnt\/server\/Servers\/unturned\/Server\r\necho \"Port 27015\" > \/mnt\/server\/Servers\/unturned\/Server\/Commands.dat\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so",
"container": "ubuntu:16.04",
"entrypoint": "bash"
}
},
"variables": [
{
- "name": "Account Name",
- "description": "A Steam username w\/ Unturned on the account.",
+ "name": "Steam User",
+ "description": "A Steam username with Unturned on the account.",
"env_variable": "STEAM_USER",
- "default_value": "",
+ "default_value": "anonymous",
"user_viewable": 0,
"user_editable": 0,
- "rules": "required"
+ "rules": "required|string"
},
{
- "name": "Account Password",
- "description": "The password for the Steam account.",
+ "name": "Steam Password",
+ "description": "Steam User Password",
"env_variable": "STEAM_PASS",
"default_value": "",
"user_viewable": 0,
"user_editable": 0,
- "rules": "required"
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Steam Auth Code",
+ "description": "Steam Auth Code only when you're using Steam Auth",
+ "env_variable": "STEAM_AUTH",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
}
]
-}
+}
\ No newline at end of file
diff --git a/steamcmd_servers/unturned/unturned/README.md b/steamcmd_servers/unturned/unturned/README.md
new file mode 100644
index 00000000..209522f2
--- /dev/null
+++ b/steamcmd_servers/unturned/unturned/README.md
@@ -0,0 +1,16 @@
+# Unturned
+
+Steam Description
+You're one of the few not yet turned zombie. Keeping it that way will be a challenge.
+- Go in guns blazing and attract the attention of everything, living and dead.
+- 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.
+
+### Server Ports
+Rocketmod requires 2 ports to run properly.
+
+| Port | default |
+|---------|---------|
+| Game | 27015 |
+| Game +1 | 27016 |
+| Game +2 | 27017 |
\ No newline at end of file
diff --git a/steamcmd_servers/unturned/unturned/egg-unturned.json b/steamcmd_servers/unturned/unturned/egg-unturned.json
new file mode 100644
index 00000000..ca38ecfc
--- /dev/null
+++ b/steamcmd_servers/unturned/unturned/egg-unturned.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-01-18T18:06:35-05:00",
+ "name": "Unturned",
+ "author": "parker@parkervcp.com",
+ "description": "The RocketMod server mod for Unturned.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
+ "startup": "wget https:\/\/github.com\/RocketMod\/Rocket.Unturned\/releases\/download\/4.9.3.0\/Rocket.Unturned.zip && unzip -o Rocket.Unturned.zip && .\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Loading level: 100%\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}",
+ "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 '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\ncp -v linux64\/steamclient.so \/mnt\/server\/Unturned_Headless_Data\/Plugins\/x86_64\/steamclient.so",
+ "container": "debian:buster-slim",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam App ID",
+ "description": "Steam App ID require for install and startup update",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "1110390",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "ld lib path",
+ "description": "This is needed to load specific libraries",
+ "env_variable": "LD_LIBRARY_PATH",
+ "default_value": ".\/Unturned_Headless_Data\/Plugins\/x86_64\/",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ },
+ {
+ "name": "Steam User",
+ "description": "Should be left blank for anon user",
+ "env_variable": "STEAM_USER",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Steam Password",
+ "description": "",
+ "env_variable": "STEAM_PASS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/minecraft/README.md b/stock-eggs/minecraft/README.md
new file mode 100644
index 00000000..89d19035
--- /dev/null
+++ b/stock-eggs/minecraft/README.md
@@ -0,0 +1,6 @@
+# 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.
\ No newline at end of file
diff --git a/stock-eggs/minecraft/egg-bungeecord.json b/stock-eggs/minecraft/egg-bungeecord.json
new file mode 100644
index 00000000..d527024f
--- /dev/null
+++ b/stock-eggs/minecraft/egg-bungeecord.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2017-11-03T22:15:10-05:00",
+ "name": "Bungeecord",
+ "author": "support@pterodactyl.io",
+ "description": "For a long time, Minecraft server owners have had a dream that encompasses a free, easy, and reliable way to connect multiple Minecraft servers together. BungeeCord is the answer to said dream. Whether you are a small server wishing to string multiple game-modes together, or the owner of the ShotBow Network, BungeeCord is the ideal solution for you. With the help of BungeeCord, you will be able to unlock your community's full potential.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].query_enabled\": true,\r\n \"listeners[0].query_port\": \"{{server.build.default.port}}\",\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Listening on \",\r\n \"userInteraction\": [\r\n \"Listening on \/0.0.0.0:25577\"\r\n ]\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"proxy.log.0\"\r\n}",
+ "stop": "end"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\n# Bungeecord Installation Script\n#\n# Server Files: \/mnt\/server\napk update\napk add curl\n\ncd \/mnt\/server\n\nif [ -z \"${BUNGEE_VERSION}\" ] || [ \"${BUNGEE_VERSION}\" == \"latest\" ]; then\n BUNGEE_VERSION=\"lastStableBuild\"\nfi\n\ncurl -o ${SERVER_JARFILE} https:\/\/ci.md-5.net\/job\/BungeeCord\/${BUNGEE_VERSION}\/artifact\/bootstrap\/target\/BungeeCord.jar",
+ "container": "alpine:3.9",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Bungeecord Version",
+ "description": "The version of Bungeecord to download and use.",
+ "env_variable": "BUNGEE_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|alpha_num|between:1,6"
+ },
+ {
+ "name": "Bungeecord Jar File",
+ "description": "The name of the Jarfile to use when running Bungeecord.",
+ "env_variable": "SERVER_JARFILE",
+ "default_value": "bungeecord.jar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ }
+ ]
+}
diff --git a/minecraft/forge/forge-enhanced/egg-forge--enhanced.json b/stock-eggs/minecraft/egg-forge-minecraft.json
similarity index 56%
rename from minecraft/forge/forge-enhanced/egg-forge--enhanced.json
rename to stock-eggs/minecraft/egg-forge-minecraft.json
index c4d2d08b..2e8b43bf 100644
--- a/minecraft/forge/forge-enhanced/egg-forge--enhanced.json
+++ b/stock-eggs/minecraft/egg-forge-minecraft.json
@@ -3,9 +3,9 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-08-02T16:56:12-04:00",
- "name": "Forge-Enhanced",
- "author": "parker@parkervcp.com",
+ "exported_at": "2019-02-07T07:47:35-05:00",
+ "name": "Forge Minecraft",
+ "author": "support@pterodactyl.io",
"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.",
"image": "quay.io\/pterodactyl\/core:java",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
@@ -17,8 +17,8 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n INSTALLER_JAR=$(curl -sl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/ | grep -A50 Recommended | grep installer.jar | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | tail -1)\r\n UNIVERSAL_JAR=$(curl -sl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/ | grep -A50 Recommended | grep universal.jar | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | tail -1)\r\nelse\r\n INSTALLER_JAR=$(curl -sl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/index_$MC_VERSION.html | grep -A50 Recommended | grep installer.jar | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | tail -1)\r\n UNIVERSAL_JAR=$(curl -sl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/index_$MC_VERSION.html | grep -A50 Recommended | grep universal.jar | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | tail -1)\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting installer from $INSTALLER_JAR\"\r\ncurl -Sl $INSTALLER_JAR -o installer.jar\r\n\r\necho -e \"getting universal jar from $UNIVERSAL_JAR\"\r\ncurl -Sl $UNIVERSAL_JAR -o server.jar\r\n\r\njava -jar installer.jar --installServer\r\nrm -rf installer.jar\r\n\r\necho \"Install complete\"",
- "container": "frolvlad\/alpine-oraclejdk8:cleaned",
+ "script": "#!\/bin\/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n FORGE_VERSION=$(echo $(curl -sSl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/ | grep -A2 Latest | grep small) | grep -o -e '[1].[0-9]*.[0-9]* - [0-9]*.[0-9]*.[0-9]*.[0-9]*' | sed 's\/ \/\/g')\r\nelse\r\n FORGE_VERSION=$(echo $(curl -sl http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/index_$MC_VERSION.html | grep -A2 Latest | grep small) | grep -o -e '[1].[0-9]*.[0-9]* - [0-9]*.[0-9]*.[0-9]*.[0-9]*' | sed 's\/ \/\/g')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\ncurl -sS http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\ncurl -sS http:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -o $SERVER_JARFILE\r\n\r\necho -e \"\\nInstalling forge server usint the installer jar file.\\n\"\r\njava -jar installer.jar --installServer\r\n\r\necho -e \"\\nDeleting installer jar file and cleaning up.\\n\"\r\nrm -rf installer.jar",
+ "container": "openjdk:8-alpine",
"entrypoint": "ash"
}
},
@@ -33,8 +33,8 @@
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
},
{
- "name": "Forge Version",
- "description": "The version of minecraft you want to download forge for.\r\n\r\nExample 1.7.10",
+ "name": "Minecraft version",
+ "description": "The version of minecraft that you want to run. Example (1.10.2).",
"env_variable": "MC_VERSION",
"default_value": "latest",
"user_viewable": 1,
diff --git a/stock-eggs/minecraft/egg-paper.json b/stock-eggs/minecraft/egg-paper.json
new file mode 100644
index 00000000..86208f68
--- /dev/null
+++ b/stock-eggs/minecraft/egg-paper.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-02-27T22:23:55-05:00",
+ "name": "Paper",
+ "author": "parker@pterodactyl.io",
+ "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "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 \"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": "{}",
+ "stop": "stop"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache --update curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n echo -e \"using supplied download url\"\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\/v1\/paper | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | IN($VERSION)' | grep true`\r\n LATEST_PAPER_VERSION=`curl -s https:\/\/papermc.io\/api\/v1\/paper | jq -r '.versions' | jq -r '.[0]'`\r\n \r\n if [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n echo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n else\r\n echo -e \"Using the latest paper version\"\r\n MINECRAFT_VERSION=${LATEST_PAPER_VERSION}\r\n fi\r\n \r\n BUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all[] | IN($BUILD)' | grep true`\r\n LATEST_PAPER_BUILD=`curl -s https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION} | jq -r '.builds.latest'`\r\n \r\n if [ \"${BUILD_EXISTS}\" == \"true\" ] || [ ${BUILD_NUMBER} == \"latest\" ]; then\r\n echo -e \"Build is valid. Using version ${BUILD_NUMBER}\"\r\n else\r\n echo -e \"Using the latest paper build\"\r\n BUILD_NUMBER=${LATEST_PAPER_BUILD}\r\n fi\r\n \r\n echo \"Version being downloaded\"\r\n echo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n echo -e \"Build: ${BUILD_NUMBER}\"\r\n DOWNLOAD_URL=https:\/\/papermc.io\/api\/v1\/paper\/${MINECRAFT_VERSION}\/${BUILD_NUMBER}\/download \r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\necho -e \"Downloading MC server.properties\"\r\ncurl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft_java\/server.properties",
+ "container": "alpine:3.9",
+ "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": 1,
+ "user_editable": 0,
+ "rules": "nullable|string|max:20"
+ },
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "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": 0,
+ "user_editable": 0,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Build Number",
+ "description": "The build number for the paper 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": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/minecraft/spigot/taco-spigot/egg-taco-spigot.json b/stock-eggs/minecraft/egg-sponge--sponge-vanilla.json
similarity index 56%
rename from minecraft/spigot/taco-spigot/egg-taco-spigot.json
rename to stock-eggs/minecraft/egg-sponge--sponge-vanilla.json
index 1b226a51..2bbfba23 100644
--- a/minecraft/spigot/taco-spigot/egg-taco-spigot.json
+++ b/stock-eggs/minecraft/egg-sponge--sponge-vanilla.json
@@ -3,10 +3,10 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-03-10T00:34:01-06:00",
- "name": "Taco Spigot",
- "author": "hostmaster@waterfallgaming.net",
- "description": "A even-higher higher performance PaperSpigot fork that adds new features.",
+ "exported_at": "2017-11-03T22:20:03-05:00",
+ "name": "Sponge (SpongeVanilla)",
+ "author": "support@pterodactyl.io",
+ "description": "SpongeVanilla is the SpongeAPI implementation for Vanilla Minecraft.",
"image": "quay.io\/pterodactyl\/core:java-glibc",
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
@@ -17,29 +17,29 @@
},
"scripts": {
"installation": {
- "script": "#!\/bin\/ash\r\n# Taco Spigot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${DL_VERSION}\" ] || [ \"${DL_VERSION}\" == \"latest\" ]; then\r\n DL_VERSION=\"lastSuccessfulBuild\"\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} https:\/\/ci.techcable.net\/job\/TacoSpigot\/${DL_VERSION}\/artifact\/build\/TacoSpigot.jar",
- "container": "alpine:3.4",
+ "script": "#!\/bin\/ash\n# Sponge Installation Script\n#\n# Server Files: \/mnt\/server\n\napk update\napk add curl\n\ncd \/mnt\/server\n\ncurl -sSL \"https:\/\/repo.spongepowered.org\/maven\/org\/spongepowered\/spongevanilla\/${SPONGE_VERSION}\/spongevanilla-${SPONGE_VERSION}.jar\" -o ${SERVER_JARFILE}",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
"variables": [
+ {
+ "name": "Sponge Version",
+ "description": "The version of SpongeVanilla to download and use.",
+ "env_variable": "SPONGE_VERSION",
+ "default_value": "1.11.2-6.1.0-BETA-21",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|regex:\/^([a-zA-Z0-9.\\-_]+)$\/"
+ },
{
"name": "Server Jar File",
- "description": "The name of the server jarfile to run the server with.",
+ "description": "The name of the Jarfile to use when running SpongeVanilla.",
"env_variable": "SERVER_JARFILE",
"default_value": "server.jar",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
- },
- {
- "name": "TacoSpigot Version",
- "description": "The version of TacoSpigot to download, Use \"latest\" for latest.",
- "env_variable": "DL_VERSION",
- "default_value": "latest",
- "user_viewable": 1,
- "user_editable": 1,
- "rules": "required|string|between:3,7"
}
]
}
diff --git a/stock-eggs/minecraft/egg-vanilla-minecraft.json b/stock-eggs/minecraft/egg-vanilla-minecraft.json
new file mode 100644
index 00000000..f613c815
--- /dev/null
+++ b/stock-eggs/minecraft/egg-vanilla-minecraft.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-25T19:55:01-05:00",
+ "name": "Vanilla Minecraft",
+ "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.",
+ "image": "quay.io\/pterodactyl\/core:java",
+ "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
+ "config": {
+ "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
+ "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\/ash\r\n# Vanilla MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add curl --no-cache --update jq\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nLATEST_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.release'`\r\n\r\necho -e \"latest version is $LATEST_VERSION\"\r\n\r\nif [ -z \"$VANILLA_VERSION\" ] || [ \"$VANILLA_VERSION\" == \"latest\" ]; then\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $LATEST_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nelse\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $VANILLA_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nfi\r\n\r\nDOWNLOAD_URL=$(curl ${MANIFEST_URL} | jq .downloads.server | jq -r '. | .url')\r\n\r\necho -e \"running: curl -o ${SERVER_JARFILE} $DOWNLOAD_URL\"\r\ncurl -o ${SERVER_JARFILE} $DOWNLOAD_URL\r\n\r\necho -e \"Install Complete\"",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
+ },
+ {
+ "name": "Server Version",
+ "description": "The version of Minecraft Vanilla to install. Use \"latest\" to install the latest version.",
+ "env_variable": "VANILLA_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|between:3,15"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source/README.md b/stock-eggs/rust/README.md
similarity index 100%
rename from stock-eggs/source/README.md
rename to stock-eggs/rust/README.md
diff --git a/stock-eggs/rust/egg-rust.json b/stock-eggs/rust/egg-rust.json
new file mode 100644
index 00000000..9a43d0f5
--- /dev/null
+++ b/stock-eggs/rust/egg-rust.json
@@ -0,0 +1,144 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-03-25T10:30:58-04:00",
+ "name": "Rust",
+ "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.",
+ "image": "quay.io\/pterodactyl\/core:rust",
+ "startup": ".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"{{WORLD_SEED}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Server startup complete\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "quit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "apt update\r\napt -y --no-install-recommends install curl unzip lib32gcc1 ca-certificates\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 258550 +quit\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so",
+ "container": "ubuntu:16.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Name",
+ "description": "The name of your server in the public server list.",
+ "env_variable": "HOSTNAME",
+ "default_value": "A Rust Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:40"
+ },
+ {
+ "name": "OxideMod",
+ "description": "Set whether you want the server to use and auto update OxideMod or not. Valid options are \"1\" for true and \"0\" for false.",
+ "env_variable": "OXIDE",
+ "default_value": "0",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|boolean"
+ },
+ {
+ "name": "Level",
+ "description": "The world file for Rust to use.",
+ "env_variable": "LEVEL",
+ "default_value": "Procedural Map",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Description",
+ "description": "The description under your server title. Commonly used for rules & info. Use \\n for newlines.",
+ "env_variable": "DESCRIPTION",
+ "default_value": "Powered by Pterodactyl",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "URL",
+ "description": "The URL for your server. This is what comes up when clicking the \"Visit Website\" button.",
+ "env_variable": "SERVER_URL",
+ "default_value": "http:\/\/pterodactyl.io",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|url"
+ },
+ {
+ "name": "World Size",
+ "description": "The world size for a procedural map.",
+ "env_variable": "WORLD_SIZE",
+ "default_value": "3000",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ },
+ {
+ "name": "World Seed",
+ "description": "The seed for a procedural map.",
+ "env_variable": "WORLD_SEED",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum amount of players allowed in the server at once.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "40",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ },
+ {
+ "name": "Server Image",
+ "description": "The header image for the top of your server listing.",
+ "env_variable": "SERVER_IMG",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|url"
+ },
+ {
+ "name": "RCON Port",
+ "description": "Port for RCON connections.",
+ "env_variable": "RCON_PORT",
+ "default_value": "28016",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer"
+ },
+ {
+ "name": "RCON Password",
+ "description": "RCON access password.",
+ "env_variable": "RCON_PASS",
+ "default_value": "CHANGEME",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:64"
+ },
+ {
+ "name": "Additional Arguments",
+ "description": "Add additional startup parameters to the server.",
+ "env_variable": "ADDITIONAL_ARGS",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string"
+ },
+ {
+ "name": "Save Interval",
+ "description": "Sets the server\u2019s auto-save interval in seconds.",
+ "env_variable": "SAVEINTERVAL",
+ "default_value": "60",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source-engine/README.md b/stock-eggs/source-engine/README.md
new file mode 100644
index 00000000..a4deb544
--- /dev/null
+++ b/stock-eggs/source-engine/README.md
@@ -0,0 +1,70 @@
+# 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](/source_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 |
\ No newline at end of file
diff --git a/stock-eggs/source/ark/egg-ark--survival-evolved.json b/stock-eggs/source-engine/egg-ark--survival-evolved.json
similarity index 56%
rename from stock-eggs/source/ark/egg-ark--survival-evolved.json
rename to stock-eggs/source-engine/egg-ark--survival-evolved.json
index ad08c705..1017fefb 100644
--- a/stock-eggs/source/ark/egg-ark--survival-evolved.json
+++ b/stock-eggs/source-engine/egg-ark--survival-evolved.json
@@ -3,26 +3,35 @@
"meta": {
"version": "PTDL_v1"
},
- "exported_at": "2018-07-07T06:35:40-04:00",
+ "exported_at": "2018-10-29T20:51:32+01:00",
"name": "Ark: Survival Evolved",
- "author": "support@pterodactyl.io",
+ "author": "dev@shepper.fr",
"description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK",
"image": "quay.io\/pterodactyl\/core:source",
- "startup": ".\/ShooterGame\/Binaries\/Linux\/ShooterGameServer TheIsland?listen?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?MaxPlayers={{SERVER_MAX_PLAYERS}}?QueryPort={{QUERY_PORT}}?bRawScokets?RCONPort={{RCON_PORT}}",
+ "startup": "\"cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName='{{SESSION_NAME}}'?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{PORT}}?MaxPlayers={{SERVER_MAX_PLAYERS}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled={{ENABLE_RCON}} -server -log\"",
"config": {
- "files": "{\r\n \"ShooterGame\/Saved\/Config\/LinuxServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"SessionName=\": \"SessionName={{server.build.env.SESSION_NAME}}\",\r\n \"RCONPort=\": \"RCONPort={{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}",
+ "files": "{}",
"startup": "{\r\n \"done\": \"Setting breakpad minidump AppID = 346110\",\r\n \"userInteraction\": []\r\n}",
- "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}",
- "stop": "quit"
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
},
"scripts": {
"installation": {
- "script": "#!\/bin\/bash\r\n# ARK: 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\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\n\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\n\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 ${SRCDS_APPID} +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\nHOME=\/mnt\/server\r\nln -s ~\/Steam\/steamapps ~\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux",
- "container": "ubuntu:18.04",
+ "script": "#!\/bin\/bash\r\n# ARK: 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\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\n\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\n\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 376030 +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\n\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\n\r\ncd \/mnt\/server",
+ "container": "ubuntu:16.04",
"entrypoint": "bash"
}
},
"variables": [
+ {
+ "name": "Server Name",
+ "description": "ARK server name",
+ "env_variable": "SESSION_NAME",
+ "default_value": "ARK SERVER",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:128"
+ },
{
"name": "Server Password",
"description": "If specified, players must provide this password to join the server.",
@@ -36,10 +45,46 @@
"name": "Admin Password",
"description": "If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.",
"env_variable": "ARK_ADMIN_PASSWORD",
- "default_value": "APa55word",
+ "default_value": "",
"user_viewable": 1,
"user_editable": 1,
- "rules": "nullable|alpha_dash|between:1,100"
+ "rules": "nullable|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Server Port",
+ "description": "ARK server port used by client.",
+ "env_variable": "PORT",
+ "default_value": "7777",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "name": "Use Rcon",
+ "description": "Enable or disable rcon system. (true or false)",
+ "env_variable": "ENABLE_RCON",
+ "default_value": "false",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:5"
+ },
+ {
+ "name": "Rcon Port",
+ "description": "ARK rcon port used by rcon tools.",
+ "env_variable": "RCON_PORT",
+ "default_value": "27020",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
+ },
+ {
+ "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": 1,
+ "user_editable": 1,
+ "rules": "required|numeric"
},
{
"name": "Maximum Players",
@@ -51,40 +96,22 @@
"rules": "required|numeric|digits_between:1,4"
},
{
- "name": "Game ID",
- "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "name": "App ID",
+ "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.",
"env_variable": "SRCDS_APPID",
"default_value": "376030",
- "user_viewable": 0,
- "user_editable": 0,
- "rules": "required|string|max:20"
- },
- {
- "name": "Query Port",
- "description": "This is the steam query port.",
- "env_variable": "QUERY_PORT",
- "default_value": "27015",
"user_viewable": 1,
"user_editable": 0,
- "rules": "required|string|max:20"
+ "rules": "nullable|numeric"
},
{
- "name": "Session Name",
- "description": "The name that shows up in the server list",
- "env_variable": "SESSION_NAME",
- "default_value": "ARK Server",
+ "name": "Server Map",
+ "description": "Available Maps: TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction",
+ "env_variable": "SERVER_MAP",
+ "default_value": "TheIsland",
"user_viewable": 1,
"user_editable": 1,
- "rules": "required|string|max:64"
- },
- {
- "name": "RCON Port",
- "description": "This is the rcon port for the server",
- "env_variable": "RCON_PORT",
- "default_value": "27020",
- "user_viewable": 1,
- "user_editable": 0,
"rules": "required|string|max:20"
}
]
-}
\ No newline at end of file
+}
diff --git a/stock-eggs/source-engine/egg-counter--strike--global-offensive.json b/stock-eggs/source-engine/egg-counter--strike--global-offensive.json
new file mode 100644
index 00000000..191aa99e
--- /dev/null
+++ b/stock-eggs/source-engine/egg-counter--strike--global-offensive.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:52:19-05:00",
+ "name": "Counter-Strike: Global Offensive",
+ "author": "support@pterodactyl.io",
+ "description": "Counter-Strike: Global Offensive is a multiplayer first-person shooter video game developed by Hidden Path Entertainment and Valve Corporation.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/srcds_run -game csgo -console -port {{SERVER_PORT}} +ip 0.0.0.0 +map {{SRCDS_MAP}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Connection to Steam servers successful\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Map",
+ "description": "The default map for the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "de_dust2",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|alpha_dash"
+ },
+ {
+ "name": "Steam Account Token",
+ "description": "The Steam Account Token required for the server to be displayed publicly.",
+ "env_variable": "STEAM_ACC",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|alpha_num|size:32"
+ },
+ {
+ "name": "Source AppID",
+ "description": "Required for game to update on server restart. Do not modify this.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "740",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source-engine/egg-custom-source-engine-game.json b/stock-eggs/source-engine/egg-custom-source-engine-game.json
new file mode 100644
index 00000000..aae3b3f3
--- /dev/null
+++ b/stock-eggs/source-engine/egg-custom-source-engine-game.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:54:26-05:00",
+ "name": "Custom Source Engine Game",
+ "author": "support@pterodactyl.io",
+ "description": "This option allows modifying the startup arguments and other details to run a custom SRCDS based game on the panel.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"gameserver Steam ID\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,6"
+ },
+ {
+ "name": "Game Name",
+ "description": "The name corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_GAME",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|alpha_dash|between:1,100"
+ },
+ {
+ "name": "Map",
+ "description": "The default map for the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|alpha_dash"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source-engine/egg-garrys-mod.json b/stock-eggs/source-engine/egg-garrys-mod.json
new file mode 100644
index 00000000..17940e8f
--- /dev/null
+++ b/stock-eggs/source-engine/egg-garrys-mod.json
@@ -0,0 +1,90 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:56:42-05:00",
+ "name": "Garrys Mod",
+ "author": "support@pterodactyl.io",
+ "description": "Garrys Mod, is a sandbox physics game created by Garry Newman, and developed by his company, Facepunch Studios.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/srcds_run -game garrysmod -console -port {{SERVER_PORT}} +ip 0.0.0.0 +host_workshop_collection {{WORKSHOP_ID}} +map {{SRCDS_MAP}} +gamemode {{GAMEMODE}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}} +maxplayers {{MAX_PLAYERS}} -tickrate {{TICKRATE}}",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"gameserver Steam ID\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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# Creating needed default files for the game\r\ncd \/mnt\/server\/garrysmod\/lua\/autorun\/server\r\necho '\r\n-- Docs: https:\/\/wiki.garrysmod.com\/page\/resource\/AddWorkshop\r\n-- Place the ID of the workshop addon you want to be downloaded to people who join your server, not the collection ID\r\n-- Use https:\/\/beta.configcreator.com\/create\/gmod\/resources.lua to easily create a list based on your collection ID\r\n\r\nresource.AddWorkshop( \"\" )\r\n' > workshop.lua\r\n\r\ncd \/mnt\/server\/garrysmod\/cfg\r\necho '\r\n\/\/ Please do not set RCon in here, use the startup parameters.\r\n\r\nhostname\t\t\"New Gmod Server\"\r\nsv_password\t\t\"\"\r\nsv_loadingurl \"\"\r\n\r\n\/\/ Steam Server List Settings\r\nsv_region \"255\"\r\nsv_lan \"0\"\r\nsv_max_queries_sec_global \"30000\"\r\nsv_max_queries_window \"45\"\r\nsv_max_queries_sec \"5\"\r\n\r\n\/\/ Server Limits\r\nsbox_maxprops\t\t100\r\nsbox_maxragdolls\t5\r\nsbox_maxnpcs\t\t10\r\nsbox_maxballoons\t10\r\nsbox_maxeffects\t\t10\r\nsbox_maxdynamite\t10\r\nsbox_maxlamps\t\t10\r\nsbox_maxthrusters\t10\r\nsbox_maxwheels\t\t10\r\nsbox_maxhoverballs\t10\r\nsbox_maxvehicles\t20\r\nsbox_maxbuttons\t\t10\r\nsbox_maxsents\t\t20\r\nsbox_maxemitters\t5\r\nsbox_godmode\t\t0\r\nsbox_noclip\t\t 0\r\n\r\n\/\/ Network Settings - Please keep these set to default.\r\n\r\nsv_minrate\t\t75000\r\nsv_maxrate\t\t0\r\ngmod_physiterations\t2\r\nnet_splitpacket_maxrate\t45000\r\ndecalfrequency\t\t12 \r\n\r\n\/\/ Execute Ban Files - Please do not edit\r\nexec banned_ip.cfg \r\nexec banned_user.cfg \r\n\r\n\/\/ Add custom lines under here\r\n' > server.cfg",
+ "container": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Map",
+ "description": "The default map for the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "gm_flatgrass",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|alpha_dash"
+ },
+ {
+ "name": "Steam Account Token",
+ "description": "The Steam Account Token required for the server to be displayed publicly.",
+ "env_variable": "STEAM_ACC",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|string|alpha_num|size:32"
+ },
+ {
+ "name": "Source AppID",
+ "description": "Required for game to update on server restart. Do not modify this.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "4020",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Workshop ID",
+ "description": "The ID of your workshop collection (the numbers at the end of the URL)",
+ "env_variable": "WORKSHOP_ID",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "nullable|integer"
+ },
+ {
+ "name": "Gamemode",
+ "description": "The gamemode of your server.",
+ "env_variable": "GAMEMODE",
+ "default_value": "sandbox",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum amount of players allowed on your game server.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "32",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer|max:128"
+ },
+ {
+ "name": "Tickrate",
+ "description": "The tickrate defines how fast the server will update each entities location.",
+ "env_variable": "TICKRATE",
+ "default_value": "22",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer|max:100"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source-engine/egg-insurgency.json b/stock-eggs/source-engine/egg-insurgency.json
new file mode 100644
index 00000000..7f0c76be
--- /dev/null
+++ b/stock-eggs/source-engine/egg-insurgency.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:57:32-05:00",
+ "name": "Insurgency",
+ "author": "support@pterodactyl.io",
+ "description": "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.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{}",
+ "startup": "{\"done\": \"gameserver Steam ID\", \"userInteraction\": []}",
+ "logs": "{\"custom\": true, \"location\": \"logs\/latest.log\"}",
+ "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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "237410",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|regex:\/^(237410)$\/"
+ },
+ {
+ "name": "Game Name",
+ "description": "The name corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_GAME",
+ "default_value": "insurgency",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|regex:\/^(insurgency)$\/"
+ },
+ {
+ "name": "Default Map",
+ "description": "The default map to use when starting the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "sinjar",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^(\\w{1,20})$\/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source-engine/egg-team-fortress2.json b/stock-eggs/source-engine/egg-team-fortress2.json
new file mode 100644
index 00000000..159e7bf9
--- /dev/null
+++ b/stock-eggs/source-engine/egg-team-fortress2.json
@@ -0,0 +1,54 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T10:58:48-05:00",
+ "name": "Team Fortress 2",
+ "author": "support@pterodactyl.io",
+ "description": "Team Fortress 2 is a team-based first-person shooter multiplayer video game developed and published by Valve Corporation. It is the sequel to the 1996 mod Team Fortress for Quake and its 1999 remake.",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"gameserver Steam ID\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "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 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## 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": "ubuntu:18.04",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Game ID",
+ "description": "The ID corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_APPID",
+ "default_value": "232250",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|regex:\/^(232250)$\/"
+ },
+ {
+ "name": "Game Name",
+ "description": "The name corresponding to the game to download and run using SRCDS.",
+ "env_variable": "SRCDS_GAME",
+ "default_value": "tf",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|regex:\/^(tf)$\/"
+ },
+ {
+ "name": "Default Map",
+ "description": "The default map to use when starting the server.",
+ "env_variable": "SRCDS_MAP",
+ "default_value": "cp_dustbowl",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^(\\w{1,20})$\/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/stock-eggs/source/ark/README.md b/stock-eggs/source/ark/README.md
deleted file mode 100644
index 0ccd9589..00000000
--- a/stock-eggs/source/ark/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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.
-
-### 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
\ No newline at end of file
diff --git a/stock-eggs/terraria/README.md b/stock-eggs/terraria/README.md
new file mode 100644
index 00000000..ab8485b0
--- /dev/null
+++ b/stock-eggs/terraria/README.md
@@ -0,0 +1,14 @@
+# Terraria
+
+## Minimum RAM warning
+You may want to assign a minimum of 768 mb of RAM to a server as it will use around 650 mb to generate the world on the first start.
+
+
+## Required Server Ports
+Terraria only requires a single port to run. The default is 7777
+
+| Port | default |
+|---------|---------|
+| Game | 7777 |
+
+#### Plugins may require ports to be added to the server.
\ No newline at end of file
diff --git a/stock-eggs/terraria/egg-terraria-server--t-shock.json b/stock-eggs/terraria/egg-terraria-server--t-shock.json
new file mode 100644
index 00000000..9381890d
--- /dev/null
+++ b/stock-eggs/terraria/egg-terraria-server--t-shock.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2018-01-21T17:01:31-06:00",
+ "name": "Terraria Server (TShock)",
+ "author": "support@pterodactyl.io",
+ "description": "TShock is a server modification for Terraria, written in C#, and based upon the Terraria Server API. It uses JSON for configuration management, and offers several features not present in the Terraria Server normally.",
+ "image": "quay.io\/pterodactyl\/core:mono",
+ "startup": null,
+ "config": {
+ "files": "{\"tshock\/config.json\":{\"parser\": \"json\", \"find\":{\"ServerPort\": \"{{server.build.default.port}}\", \"MaxSlots\": \"{{server.build.env.MAX_SLOTS}}\"}}}",
+ "startup": "{\"done\": \"Type 'help' for a list of commands\", \"userInteraction\": []}",
+ "logs": "{\"custom\": false, \"location\": \"ServerLog.txt\"}",
+ "stop": "exit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\n# TShock Installation Script\n#\n# Server Files: \/mnt\/server\napk update\napk add curl unzip\n\ncd \/tmp\n\ncurl -sSLO https:\/\/github.com\/NyxStudios\/TShock\/releases\/download\/v${T_VERSION}\/tshock_${T_VERSION}.zip\n\nunzip -o tshock_${T_VERSION}.zip -d \/mnt\/server",
+ "container": "alpine:3.9",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "TShock Version",
+ "description": "Which version of TShock to install and use.",
+ "env_variable": "T_VERSION",
+ "default_value": "4.3.22",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([0-9_\\.-]{5,10})$\/"
+ },
+ {
+ "name": "Maximum Slots",
+ "description": "Total number of slots to allow on the server.",
+ "env_variable": "MAX_SLOTS",
+ "default_value": "20",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,3"
+ }
+ ]
+}
diff --git a/stock-eggs/voice-servers/README.md b/stock-eggs/voice-servers/README.md
new file mode 100644
index 00000000..40aed5be
--- /dev/null
+++ b/stock-eggs/voice-servers/README.md
@@ -0,0 +1,29 @@
+# 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.
\ No newline at end of file
diff --git a/stock-eggs/voice-servers/egg-mumble-server.json b/stock-eggs/voice-servers/egg-mumble-server.json
new file mode 100644
index 00000000..e6256259
--- /dev/null
+++ b/stock-eggs/voice-servers/egg-mumble-server.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2018-01-21T17:01:44-06:00",
+ "name": "Mumble Server",
+ "author": "support@pterodactyl.io",
+ "description": "Mumble is an open source, low-latency, high quality voice chat software primarily intended for use while gaming.",
+ "image": "quay.io\/pterodactyl\/core:glibc",
+ "startup": ".\/murmur.x86 -fg",
+ "config": {
+ "files": "{\"murmur.ini\":{\"parser\": \"ini\", \"find\":{\"logfile\": \"murmur.log\", \"port\": \"{{server.build.default.port}}\", \"host\": \"0.0.0.0\", \"users\": \"{{server.build.env.MAX_USERS}}\"}}}",
+ "startup": "{\"done\": \"Server listening on\", \"userInteraction\": [ \"Generating new server certificate\"]}",
+ "logs": "{\"custom\": true, \"location\": \"logs\/murmur.log\"}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\n# Mumble Installation Script\n#\n# Server Files: \/mnt\/server\napk update\napk add tar curl\n\ncd \/tmp\n\ncurl -sSLO https:\/\/github.com\/mumble-voip\/mumble\/releases\/download\/${MUMBLE_VERSION}\/murmur-static_x86-${MUMBLE_VERSION}.tar.bz2\n\ntar -xjvf murmur-static_x86-${MUMBLE_VERSION}.tar.bz2\ncp -r murmur-static_x86-${MUMBLE_VERSION}\/* \/mnt\/server",
+ "container": "alpine:3.9",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Maximum Users",
+ "description": "Maximum concurrent users on the mumble server.",
+ "env_variable": "MAX_USERS",
+ "default_value": "100",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,5"
+ },
+ {
+ "name": "Server Version",
+ "description": "Version of Mumble Server to download and use.",
+ "env_variable": "MUMBLE_VERSION",
+ "default_value": "1.2.19",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|regex:\/^([0-9_\\.-]{5,8})$\/"
+ }
+ ]
+}
diff --git a/stock-eggs/voice-servers/egg-teamspeak3-server.json b/stock-eggs/voice-servers/egg-teamspeak3-server.json
new file mode 100644
index 00000000..d96ee5c4
--- /dev/null
+++ b/stock-eggs/voice-servers/egg-teamspeak3-server.json
@@ -0,0 +1,45 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-31T18:49:40-05:00",
+ "name": "Teamspeak3 Server",
+ "author": "support@pterodactyl.io",
+ "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
+ "startup": ".\/ts3server default_voice_port={{SERVER_PORT}} query_port={{SERVER_PORT}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} license_accepted=1",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"listening on 0.0.0.0:\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/ts3.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n# TS3 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache tar curl jq\r\n\r\nif [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then\r\n TS_VERSION=$(wget https:\/\/teamspeak.com\/versions\/server.json -qO - | jq -r '.linux.x86_64.version')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n\r\necho -e \"getting files from http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\"\r\ncurl http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar xj --strip-components=1",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Version",
+ "description": "The version of Teamspeak 3 to use when running the server.",
+ "env_variable": "TS_VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:6"
+ },
+ {
+ "name": "File Transfer Port",
+ "description": "The Teamspeak file transfer port",
+ "env_variable": "FILE_TRANSFER",
+ "default_value": "30033",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|integer|between:1,65535"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/terraria/README.md b/terraria/README.md
new file mode 100644
index 00000000..1a8469da
--- /dev/null
+++ b/terraria/README.md
@@ -0,0 +1,13 @@
+# Terraria
+
+## Minimum RAM warning
+You may want to assign a minimum of 768 mb of RAM to a server as it will use around 650 mb to generate the world on the first start.
+
+## Required Server Ports
+tModloader, like Terraria, only requires a single port to run. The default is 7777
+
+| Port | default |
+|---------|---------|
+| Game | 7777 |
+
+#### Plugins may require ports to be added to the server.
diff --git a/terraria/tmodloader/README.md b/terraria/tmodloader/README.md
new file mode 100644
index 00000000..4fa490da
--- /dev/null
+++ b/terraria/tmodloader/README.md
@@ -0,0 +1,29 @@
+# tModLoader
+### From their [GitHub](https://github.com/tModLoader/tModLoader)
+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+.
+
+### Install notes
+Due to rate limiting the console on the panel 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
+You may want to assign a minimum of 768 mb of RAM to a server as it will use around 650 mb to generate the world on the first start.
+
+
+### Server Ports
+tModloader, like Terraria, only requires a single port to run. The default is 7777
+
+| Port | default |
+|---------|---------|
+| Game | 7777 |
+
+#### Plugins may require ports to be added to the server.
+
+### Extra Information
+
+If you want to download mods in the console, the startup command has to be changed.
+
+New startup:
+`./tModLoaderServer -ip 0.0.0.0 -port ${SERVER_PORT} -maxplayers ${MAX_PLAYERS} -savedirectory ~/ -tmlsavedirectory ~/saves -modpath ~/mods`
+
+This will remove the autocreate function, and will thus allow you to download mods and generate world.
+Afterwards, you can change it back with the correct world name to start automatic. Word name is set in the configuration panel.
\ No newline at end of file
diff --git a/terraria/tmodloader/egg-t-modloader.json b/terraria/tmodloader/egg-t-modloader.json
new file mode 100644
index 00000000..c18d8edb
--- /dev/null
+++ b/terraria/tmodloader/egg-t-modloader.json
@@ -0,0 +1,99 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-12-08T11:10:18-05:00",
+ "name": "tModloader",
+ "author": "parker@parkervcp.com",
+ "description": "tModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:debian_mono-5",
+ "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port ${SERVER_PORT} -maxplayers ${MAX_PLAYERS} -world ~\/saves\/Worlds\/${WORLD_NAME}.wld -worldname ${WORLD_NAME} -autocreate ${WORLD_SIZE} -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods",
+ "config": {
+ "files": "{}",
+ "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{}",
+ "stop": "exit"
+ },
+ "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\napk add --no-cache curl wget jq file unzip\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_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux)\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i linux)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i linux)\r\n fi\r\nfi\r\n\r\n## clean terraria version\r\nCLEAN_VERSION=$(echo ${TERRARIA_VERSION} | sed 's\/\\.\/\/g')\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exeting\"\r\n exit 2 \r\nfi\r\n\r\necho -e \"Downloading terraria server files\"\r\nwget http:\/\/terraria.org\/server\/terraria-server-${CLEAN_VERSION}.zip\r\n\r\necho -e \"Unpacking server files\"\r\nunzip terraria-server-$(echo ${CLEAN_VERSION} | sed 's\/\\.\/\/g').zip\r\ncp -R ${CLEAN_VERSION}\/Linux\/* .\/\r\n\r\nchmod +x TerrariaServer.bin.x86_64\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf ${CLEAN_VERSION}",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "tModloader Version",
+ "description": "The version of tModloader that is to be used.",
+ "env_variable": "VERSION",
+ "default_value": "latest",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Terraria version",
+ "description": "the version of Terraria that is to be used.\r\n\r\nYou can use the full version number or the file number. (ex. 1.3.5.3 or 1353)\r\n\r\nGet version numbers here - https:\/\/terraria.gamepedia.com\/Server#Downloads",
+ "env_variable": "TERRARIA_VERSION",
+ "default_value": "1.3.5.3",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "World Name",
+ "description": "The name for the world file.",
+ "env_variable": "WORLD_NAME",
+ "default_value": "world",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Max Players",
+ "description": "The maximum number of players a server will hold.",
+ "env_variable": "MAX_PLAYERS",
+ "default_value": "8",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|numeric|digits_between:1,3"
+ },
+ {
+ "name": "World Size",
+ "description": "Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).",
+ "env_variable": "WORLD_SIZE",
+ "default_value": "1",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|numeric|digits_between:1,3"
+ },
+ {
+ "name": "GitHub User",
+ "description": "GitHub user to use for api calls.\r\n\r\nThis only needs to be set if you hit the GitHub API too often across multiple servers.",
+ "env_variable": "GITHUB_USER",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "GitHub OAuth Token",
+ "description": "This can be either an OAuth or a Personal Access Token.\r\n\r\nThis is required for the install is you set a user.",
+ "env_variable": "GITHUB_OAUTH_TOKEN",
+ "default_value": "",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "string|nullable"
+ },
+ {
+ "name": "GitHub Package",
+ "description": "This is to make automating this kind of thing easier.\r\n\r\nDo not edit if you don't know what you are doing.",
+ "env_variable": "GITHUB_PACKAGE",
+ "default_value": "tModLoader\/tModLoader",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|string"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/terraria/tshock/README.md b/terraria/tshock/README.md
index 998d8bec..fec56632 100644
--- a/terraria/tshock/README.md
+++ b/terraria/tshock/README.md
@@ -12,4 +12,13 @@ TShock, like Terraria, only requires a single port to run. The default is 7777
|---------|---------|
| Game | 7777 |
-Plugins may require ports to be added to the server.
\ No newline at end of file
+#### Plugins may require ports to be added to the server.
+
+### Extra Information
+If you want to download mods in the console, the startup command has to be changed.
+
+New startup:
+`mono TerrariaServer.exe -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}}`
+
+This will remove the autocreate function, and will thus allow you to download mods and generate world.
+Afterwards, you can change it back with the correct world name to start automatic. Word name is set in the configuration panel.
\ No newline at end of file
diff --git a/terraria/tshock/egg-tshock.json b/terraria/tshock/egg-tshock.json
index 99a0348f..a13bf77f 100644
--- a/terraria/tshock/egg-tshock.json
+++ b/terraria/tshock/egg-tshock.json
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Vanilla T-shock Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho -e \"Downloading and installing ${TSHOCK_VERSION}\"\r\n\r\necho -e \"running wget https:\/\/github.com\/Pryaxis\/TShock\/releases\/download\/v${TSHOCK_VERSION}\/tshock_${TSHOCK_VERSION}.zip\"\r\nwget https:\/\/github.com\/Pryaxis\/TShock\/releases\/download\/v${TSHOCK_VERSION}\/tshock_${TSHOCK_VERSION}.zip\r\n\r\nunzip tshock_${TSHOCK_VERSION}.zip",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},
@@ -60,4 +60,4 @@
"rules": "required|string|max:20"
}
]
-}
\ No newline at end of file
+}
diff --git a/tycoon_games/openttd/README.md b/tycoon_games/openttd/README.md
new file mode 100644
index 00000000..90f44417
--- /dev/null
+++ b/tycoon_games/openttd/README.md
@@ -0,0 +1,10 @@
+# OpenTTD (https://www.openttd.org)
+
+OpenTTD is a business simulation game in which players try to earn money via transporting passengers and freight by road, rail, water and air. It is an open-source remake and expansion of the 1995 Chris Sawyer video game Transport Tycoon Deluxe
+
+## Server Ports
+
+| Port | Default |
+|---------|---------|
+| Game | 3797 |
+| Admin | 3977 |
diff --git a/tycoon_games/openttd/egg-open-t-t-d-server.json b/tycoon_games/openttd/egg-open-t-t-d-server.json
new file mode 100644
index 00000000..89b5bb1b
--- /dev/null
+++ b/tycoon_games/openttd/egg-open-t-t-d-server.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2020-01-30T20:47:45-05: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.",
+ "image": "quay.io\/parkervcp\/pterodactyl-images:base_ubuntu",
+ "startup": ".\/openttd -D",
+ "config": {
+ "files": "{\r\n \"openttd.cfg\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"network.server_port\": \"{{server.build.default.port}}\",\r\n \"network.server_name\": \"{{server.build.env.srv_name}}\",\r\n \"network.lan_internet\": 0,\r\n \"network.server_advertise\": \"{{server.build.env.srv_advertise}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"[net] Map generated, starting game\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}",
+ "stop": "exit"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/ash\r\n\r\napk add --no-cache wget binutils xz\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting file from: https:\/\/proxy.binaries.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-ubuntu-bionic-amd64.deb\"\r\n\r\nwget https:\/\/proxy.binaries.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-ubuntu-bionic-amd64.deb -O openttd.deb\r\n\r\nar -x openttd.deb\r\n\r\ntar -xvf data.tar.xz\r\n\r\nmv usr\/share\/games\/openttd\/* .\/\r\n\r\nmv usr\/games\/openttd .\/\r\n\r\nchmod +x openttd\r\n\r\nwget https:\/\/binaries.openttd.org\/extra\/opengfx\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip -O opengfx.zip\r\n\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\n\r\nrm 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\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg",
+ "container": "alpine:3.10",
+ "entrypoint": "ash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Server Name",
+ "description": "The name shown in the serverlist",
+ "env_variable": "srv_name",
+ "default_value": "OpenTTD Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "Show in masterlist?",
+ "description": "Show the server in the serverlist on the client, true or false",
+ "env_variable": "srv_advertise",
+ "default_value": "true",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:5"
+ },
+ {
+ "name": "OpenTTD Version",
+ "description": "The version of OpenTTD i.e. 1.9.1",
+ "env_variable": "OPENTTD_VERSION",
+ "default_value": "1.9.1",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ },
+ {
+ "name": "OpenGFX Version",
+ "description": "The OpenGFX Version i.e. 0.5.5",
+ "env_variable": "OPENGFX_VERSION",
+ "default_value": "0.5.5",
+ "user_viewable": 1,
+ "user_editable": 0,
+ "rules": "required|string|max:20"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tycoon_games/openttd/openttd.cfg b/tycoon_games/openttd/openttd.cfg
new file mode 100644
index 00000000..79c6f26c
--- /dev/null
+++ b/tycoon_games/openttd/openttd.cfg
@@ -0,0 +1,466 @@
+[misc]
+display_opt = SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS|SHOW_COMPETITOR_SIGNS
+fullscreen = false
+support8bpp = no
+graphicsset =
+soundsset =
+musicset =
+videodriver =
+musicdriver =
+sounddriver =
+blitter =
+language = english.lng
+resolution = 640,480
+screenshot_format =
+savegame_format =
+rightclick_emulate = false
+small_font =
+medium_font =
+large_font =
+mono_font =
+small_size = 0
+medium_size = 0
+large_size = 0
+mono_size = 0
+small_aa = false
+medium_aa = false
+large_aa = false
+mono_aa = false
+sprite_cache_size_px = 128
+player_face = 0
+transparency_options = 0
+transparency_locks = 0
+invisibility_options = 0
+keyboard =
+keyboard_caps =
+last_newgrf_count = 0
+gui_zoom = 2
+
+[difficulty]
+max_no_competitors = 0
+number_towns = 2
+industry_density = 5
+max_loan = 300000
+initial_interest = 2
+vehicle_costs = 0
+competitor_speed = 2
+vehicle_breakdowns = 1
+subsidy_multiplier = 2
+construction_cost = 0
+terrain_type = 1
+quantity_sea_lakes = 0
+economy = false
+line_reverse_mode = false
+disasters = false
+town_council_tolerance = 0
+
+[game_creation]
+town_name = english
+landscape = temperate
+snow_line_height = 15
+starting_year = 1950
+land_generator = 1
+oil_refinery_limit = 32
+tgen_smoothness = 1
+variety = 0
+generation_seed = 3410929700
+tree_placer = 2
+heightmap_rotation = 0
+se_flat_world_height = 1
+map_x = 8
+map_y = 8
+water_borders = 15
+custom_town_number = 1
+custom_sea_level = 2
+min_river_length = 16
+river_route_random = 5
+amount_of_rivers = 2
+
+[vehicle]
+road_side = right
+train_acceleration_model = 1
+roadveh_acceleration_model = 1
+train_slope_steepness = 3
+roadveh_slope_steepness = 7
+max_train_length = 7
+smoke_amount = 1
+never_expire_vehicles = false
+max_trains = 500
+max_roadveh = 500
+max_aircraft = 200
+max_ships = 300
+wagon_speed_limits = true
+disable_elrails = false
+freight_trains = 1
+plane_speed = 4
+dynamic_engines = true
+plane_crashes = 2
+extend_vehicle_life = 0
+servint_ispercent = false
+servint_trains = 150
+servint_roadveh = 150
+servint_ships = 360
+servint_aircraft = 100
+
+[construction]
+max_heightlevel = 30
+build_on_slopes = true
+command_pause_level = 1
+terraform_per_64k_frames = 4194304
+terraform_frame_burst = 4096
+clear_per_64k_frames = 4194304
+clear_frame_burst = 4096
+tree_per_64k_frames = 4194304
+tree_frame_burst = 4096
+autoslope = true
+extra_dynamite = true
+max_bridge_length = 64
+max_bridge_height = 12
+max_tunnel_length = 64
+train_signal_side = 1
+road_stop_on_town_road = true
+road_stop_on_competitor_road = true
+raw_industry_construction = 0
+industry_platform = 1
+freeform_edges = true
+extra_tree_placement = 2
+
+[station]
+never_expire_airports = false
+station_spread = 12
+modified_catchment = true
+adjacent_stations = true
+distant_join_stations = true
+
+[economy]
+town_layout = 0
+allow_town_roads = true
+found_town = 0
+allow_town_level_crossings = true
+station_noise_level = false
+inflation = true
+multiple_industry_per_town = false
+bribe = true
+exclusive_rights = true
+fund_buildings = true
+fund_roads = true
+give_money = true
+smooth_economy = true
+allow_shares = false
+feeder_payment_share = 75
+town_growth_rate = 2
+larger_towns = 4
+initial_city_size = 2
+mod_road_rebuild = true
+dist_local_authority = 20
+town_noise_population[0] = 800
+town_noise_population[1] = 2000
+town_noise_population[2] = 4000
+infrastructure_maintenance = false
+
+[linkgraph]
+recalc_interval = 4
+recalc_time = 16
+distribution_pax = 0
+distribution_mail = 0
+distribution_armoured = 0
+distribution_default = 0
+accuracy = 16
+demand_distance = 100
+demand_size = 100
+short_path_saturation = 80
+
+[pf]
+forbid_90_deg = false
+roadveh_queue = true
+pathfinder_for_trains = 2
+pathfinder_for_roadvehs = 2
+pathfinder_for_ships = 2
+reverse_at_signals = false
+wait_oneway_signal = 15
+wait_twoway_signal = 41
+wait_for_pbs_path = 30
+reserve_paths = false
+path_backoff_interval = 20
+opf.pf_maxlength = 4096
+opf.pf_maxdepth = 48
+npf.npf_max_search_nodes = 10000
+npf.npf_rail_firstred_penalty = 1000
+npf.npf_rail_firstred_exit_penalty = 10000
+npf.npf_rail_lastred_penalty = 1000
+npf.npf_rail_station_penalty = 100
+npf.npf_rail_slope_penalty = 100
+npf.npf_rail_curve_penalty = 100
+npf.npf_rail_depot_reverse_penalty = 5000
+npf.npf_rail_pbs_cross_penalty = 300
+npf.npf_rail_pbs_signal_back_penalty = 1500
+npf.npf_buoy_penalty = 200
+npf.npf_water_curve_penalty = 100
+npf.npf_road_curve_penalty = 100
+npf.npf_crossing_penalty = 300
+npf.npf_road_drive_through_penalty = 800
+npf.npf_road_dt_occupied_penalty = 800
+npf.npf_road_bay_occupied_penalty = 1500
+npf.maximum_go_to_depot_penalty = 2000
+yapf.disable_node_optimization = false
+yapf.max_search_nodes = 10000
+yapf.rail_firstred_twoway_eol = false
+yapf.rail_firstred_penalty = 1000
+yapf.rail_firstred_exit_penalty = 10000
+yapf.rail_lastred_penalty = 1000
+yapf.rail_lastred_exit_penalty = 10000
+yapf.rail_station_penalty = 1000
+yapf.rail_slope_penalty = 200
+yapf.rail_curve45_penalty = 100
+yapf.rail_curve90_penalty = 600
+yapf.rail_depot_reverse_penalty = 5000
+yapf.rail_crossing_penalty = 300
+yapf.rail_look_ahead_max_signals = 10
+yapf.rail_look_ahead_signal_p0 = 500
+yapf.rail_look_ahead_signal_p1 = -100
+yapf.rail_look_ahead_signal_p2 = 5
+yapf.rail_pbs_cross_penalty = 300
+yapf.rail_pbs_station_penalty = 800
+yapf.rail_pbs_signal_back_penalty = 1500
+yapf.rail_doubleslip_penalty = 100
+yapf.rail_longer_platform_penalty = 800
+yapf.rail_longer_platform_per_tile_penalty = 0
+yapf.rail_shorter_platform_penalty = 4000
+yapf.rail_shorter_platform_per_tile_penalty = 0
+yapf.road_slope_penalty = 200
+yapf.road_curve_penalty = 100
+yapf.road_crossing_penalty = 300
+yapf.road_stop_penalty = 800
+yapf.road_stop_occupied_penalty = 800
+yapf.road_stop_bay_occupied_penalty = 1500
+yapf.maximum_go_to_depot_penalty = 2000
+
+[order]
+no_servicing_if_no_breakdowns = true
+improved_load = true
+selectgoods = true
+serviceathelipad = true
+gradual_loading = true
+
+[script]
+settings_profile = easy
+script_max_opcode_till_suspend = 10000
+
+[ai]
+ai_in_multiplayer = true
+ai_disable_veh_train = false
+ai_disable_veh_roadveh = false
+ai_disable_veh_aircraft = false
+ai_disable_veh_ship = false
+
+[locale]
+currency = GBP
+units_velocity = metric
+units_power = metric
+units_weight = metric
+units_volume = metric
+units_force = si
+units_height = metric
+digit_group_separator =
+digit_group_separator_currency =
+digit_decimal_separator =
+
+[gui]
+autosave = monthly
+threaded_saves = true
+date_format_in_default_names = long
+show_finances = true
+auto_scrolling = 0
+reverse_scroll = false
+smooth_scroll = false
+left_mouse_btn_scrolling = false
+right_mouse_wnd_close = false
+measure_tooltip = true
+errmsg_duration = 5
+hover_delay_ms = 250
+osk_activation = double
+toolbar_pos = 1
+statusbar_pos = 1
+window_snap_radius = 10
+window_soft_limit = 20
+zoom_min = 0
+zoom_max = 5
+population_in_label = true
+link_terraform_toolbar = false
+smallmap_land_colour = 0
+liveries = 2
+prefer_teamchat = false
+scrollwheel_scrolling = 0
+scrollwheel_multiplier = 5
+pause_on_newgame = false
+advanced_vehicle_list = 1
+timetable_in_ticks = false
+timetable_arrival_departure = true
+quick_goto = false
+loading_indicators = 1
+default_rail_type = 0
+enable_signal_gui = true
+coloured_news_year = 2000
+drag_signals_density = 4
+drag_signals_fixed_distance = false
+semaphore_build_before = 1950
+vehicle_income_warn = true
+order_review_system = 2
+lost_vehicle_warn = true
+disable_unsuitable_building = true
+new_nonstop = false
+stop_location = 2
+keep_all_autosave = false
+autosave_on_exit = false
+max_num_autosaves = 16
+auto_euro = true
+news_message_timeout = 2
+show_track_reservation = false
+default_signal_type = 1
+cycle_signal_types = 2
+station_numtracks = 1
+station_platlength = 5
+station_dragdrop = true
+station_show_coverage = false
+persistent_buildingtools = true
+expenses_layout = false
+station_gui_group_order = 0
+station_gui_sort_by = 0
+station_gui_sort_order = 0
+missing_strings_threshold = 25
+graph_line_thickness = 3
+show_date_in_logs = false
+settings_restriction_mode = 0
+developer = 1
+newgrf_developer_tools = false
+ai_developer_tools = false
+scenario_developer = false
+newgrf_show_old_versions = false
+newgrf_default_palette = 1
+console_backlog_timeout = 100
+console_backlog_length = 100
+network_chat_box_width_pct = 40
+network_chat_box_height = 25
+network_chat_timeout = 20
+
+[sound]
+news_ticker = true
+news_full = true
+new_year = true
+confirm = true
+click_beep = true
+disaster = true
+vehicle = true
+ambient = true
+
+[music]
+playlist = 0
+music_vol = 127
+effect_vol = 127
+custom_1 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+custom_2 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+playing = false
+shuffle = false
+
+[news_display]
+arrival_player = full
+arrival_other = summarized
+accident = full
+company_info = full
+open = summarized
+close = summarized
+economy = full
+production_player = summarized
+production_other = off
+production_nobody = off
+advice = full
+new_vehicles = full
+acceptance = full
+subsidies = summarized
+general = full
+
+[network]
+commands_per_frame = 2
+max_commands_in_queue = 16
+bytes_per_frame = 8
+bytes_per_frame_burst = 256
+max_init_time = 100
+max_join_time = 500
+max_download_time = 1000
+max_password_time = 2000
+max_lag_time = 500
+pause_on_join = true
+server_port =
+server_admin_port = 3977
+server_admin_chat = true
+server_advertise = true
+lan_internet = 0
+client_name =
+server_password =
+rcon_password =
+admin_password =
+default_company_pass =
+server_name =
+connect_to_ip =
+network_id =
+autoclean_companies = false
+autoclean_unprotected = 12
+autoclean_protected = 36
+autoclean_novehicles = 0
+max_companies = 15
+max_clients = 25
+max_spectators = 15
+restart_game_year = 0
+min_active_clients = 0
+server_lang = ANY
+reload_cfg = false
+last_host =
+last_port = 0
+no_http_content_downloads = false
+
+[currency]
+rate = 1
+separator = .
+to_euro = 0
+prefix = ""
+suffix = " credits"
+
+[company]
+engine_renew = false
+engine_renew_months = 6
+engine_renew_money = 100000
+renew_keep_length = false
+
+[server_bind_addresses]
+
+[servers]
+
+[bans]
+
+[ai_players]
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+none = start_date=730
+
+[game_scripts]
+none =
+
+[version]
+version_string = 1.8.0
+version_number = 18086D62
+
+[newgrf]
+
+[newgrf-static]
diff --git a/unreal_engine/tower_unite/README.md b/unreal_engine/tower_unite/README.md
new file mode 100644
index 00000000..f43f9408
--- /dev/null
+++ b/unreal_engine/tower_unite/README.md
@@ -0,0 +1,11 @@
+# Tower Unite
+Their desctiption:
+Every aspect of Tower Unite allows for online multiplayer interaction. It is a living and evolving online game world, driven by the community. Play games online with your friends, or make new friends from across the globe.
+
+### Server Ports
+Tower Unite requires a single port to be opened
+
+| Port | default |
+|---------|---------|
+| Game | 7778 |
+| Query | 27016 |
diff --git a/unreal_engine/tower_unite/egg-tower-unite.json b/unreal_engine/tower_unite/egg-tower-unite.json
new file mode 100644
index 00000000..43f7687b
--- /dev/null
+++ b/unreal_engine/tower_unite/egg-tower-unite.json
@@ -0,0 +1,63 @@
+{
+ "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+ "meta": {
+ "version": "PTDL_v1"
+ },
+ "exported_at": "2019-02-08T01:46:57+01:00",
+ "name": "Tower Unite",
+ "author": "teamwuffy@gmail.com",
+ "description": "Tower Unite\r\n\r\nDefault Port: 7778\r\nDefault Query Port: 27016\r\n\r\nConfig Path: Tower\/Saved\/Config\/TowerServer.ini",
+ "image": "quay.io\/pterodactyl\/core:source",
+ "startup": ".\/Tower\/Binaries\/Linux\/TowerServer-Linux-Shipping -log -Port={{SERVER_PORT}} -MULTIHOME=0.0.0.0 -TowerServerINI=..\/..\/Saved\/Config\/TowerServer.ini",
+ "config": {
+ "files": "{\r\n \"Tower\/Saved\/Config\/TowerServer.ini\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"MaxPlayers\": \"{{server.build.env.SERVER_MAX_PLAYER}}\",\r\n \"ServerTitle\": \"{{server.build.env.SERVER_TITLE}}\",\r\n \"SteamLoginToken\": \"{{server.build.env.STEAM_LOGIN_TOKEN}}\",\r\n \"AdminSteamID\": \"{{server.build.env.STEAM_ADMIN_ID}}\"\r\n }\r\n }\r\n}",
+ "startup": "{\r\n \"done\": \"Match State Changed from EnteringMap to WaitingToStart\",\r\n \"userInteraction\": []\r\n}",
+ "logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
+ "stop": "^C"
+ },
+ "scripts": {
+ "installation": {
+ "script": "#!\/bin\/bash\r\n# Tower Unite Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --install-recommends install curl ca-certificates lib32gcc1\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\n\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\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 439660 validate +quit\r\n\r\ncd mnt\/server\r\n\r\nmkdir -p Tower\/Saved\/Config\r\nmkdir -p Tower\/Binaries\/Linux\r\n\r\nmv \/mnt\/server\/steamcmd\/linux64\/steamclient.so \/mnt\/server\/Tower\/Binaries\/Linux\r\n\r\ncat <> Tower\/Saved\/Config\/TowerServer.ini\r\n[\/script\/towernetworking.dedicatedserveroptions]\r\nMaxPlayers=$SERVER_MAX_PLAYER\r\nServerTitle=$SERVER_TITLE\r\nSteamLoginToken=$STEAM_LOGIN_TOKEN\r\n\r\n[Administration]\r\nAdminSteamID=$STEAM_ADMIN_ID\r\nEOF",
+ "container": "ubuntu:18.10",
+ "entrypoint": "bash"
+ }
+ },
+ "variables": [
+ {
+ "name": "Steam Login Token",
+ "description": "Login and generate a token for the app-id: 394690\r\nhttps:\/\/steamcommunity.com\/dev\/managegameservers",
+ "env_variable": "STEAM_LOGIN_TOKEN",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:100"
+ },
+ {
+ "name": "Steam Admin ID",
+ "description": "Note that your admin id is only a number!",
+ "env_variable": "STEAM_ADMIN_ID",
+ "default_value": "",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|integer|max:76561202255233023"
+ },
+ {
+ "name": "Server Title",
+ "description": "",
+ "env_variable": "SERVER_TITLE",
+ "default_value": "Tower Unite Server",
+ "user_viewable": 1,
+ "user_editable": 1,
+ "rules": "required|string|max:512"
+ },
+ {
+ "name": "Max Players",
+ "description": "",
+ "env_variable": "SERVER_MAX_PLAYER",
+ "default_value": "40",
+ "user_viewable": 0,
+ "user_editable": 0,
+ "rules": "required|integer|max:512"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/xonotic/xonotic/egg-xonotic.json b/xonotic/xonotic/egg-xonotic.json
index 82892145..4fa357c9 100644
--- a/xonotic/xonotic/egg-xonotic.json
+++ b/xonotic/xonotic/egg-xonotic.json
@@ -18,7 +18,7 @@
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Vanilla Xonotic Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add rsync --no-cache\r\n\r\ncd \/mnt\/server\r\n\r\nwget http:\/\/dl.xonotic.org\/xonotic-0.8.2.zip\r\n\r\nunzip xonotic-0.8.2.zip\r\n\r\nmv Xonotic\/* .\/\r\n\r\n.\/misc\/tools\/rsync-updater\/update-to-autobuild.sh\r\n\r\nrm -rf COPYING Makefile *glx* *glx *sdl* *sdl *linux32* *exe *.app *.sh bin* GPL* Docs\/ gmqcc\/ source\/ misc\/ Xonotic\/ xonotic-0.8.2.zip",
- "container": "alpine:3.7",
+ "container": "alpine:3.9",
"entrypoint": "ash"
}
},