Merge remote-tracking branch 'origin/master' into add/vu

This commit is contained in:
Mac
2022-10-13 20:59:33 +05:30
Unverified
92 changed files with 4569 additions and 819 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
name: 🐛 Bug Report
description: Report an issue for an egg
title: "[Bug]: "
labels: [Bug]
description: Report an Egg issue
title: "[Bug]: <Egg Name>"
labels: ["bug", "not confirmed"]
body:
- type: markdown
attributes:
+5 -6
View File
@@ -1,12 +1,12 @@
name: 🥚 Egg Request
description: Suggest a server to build an egg for
title: "[Egg Request]: "
labels: [Egg Request]
title: "[Egg Request]: <Software/Game>"
labels: ["egg request"]
body:
- type: markdown
attributes:
value: |
Make sure there are no existing egg requests by searching the [repository issues](https://github.com/parkervcp/eggs/issues?q=is%3Aissue+is%3Aopen+label%3A%22Egg+Request%22). Please understand how Pterodactyl works when you are requesting an egg. (ie. docker-compose doesn't work for a pterodactyl server)
Make sure there are no existing egg requests by searching the [repository issues](https://github.com/parkervcp/eggs/labels/egg%20request). Please understand how Pterodactyl works when you are requesting an egg. (ie. docker-compose doesn't work for a pterodactyl server)
- type: dropdown
id: expand
attributes:
@@ -27,7 +27,7 @@ body:
id: download-link
attributes:
label: Links for the download
description: This needs to be an official link and not one that is hosted on some forum page or a personal Github page.
description: This needs to be an official link and not one that is hosted on some forum page or a personal Github page. Docker image is not a viable option.
validations:
required: true
validations:
@@ -36,7 +36,6 @@ body:
id: instruction-link
attributes:
label: Links for the install docs
description: Link to install instructions or documentation based on which the server can be created
placeholder: Install the server, start it, play
description: Link to installation instructions or documentation covering required dependencies and configuration for the server creation. Docker image is not installation documentation!
validations:
required: true
@@ -0,0 +1,88 @@
name: 🐛 Install Bug Report
description: Report an Egg install issue
title: "[Install Bug]: <Egg Name>"
labels: ["install bug", "not confirmed"]
body:
- type: markdown
attributes:
value: |
If you see any of the following, go to [Discord](https://discord.gg/pterodactyl) and report your error in a support channel.
* `A fatal error was encountered while starting this server.`
* `No server egg configuration could be located; aborting startup.`
Make sure there are no existing bug reports by searching the the issues for [install bugs](https://github.com/parkervcp/eggs/labels/install%20bug).
- type: input
id: panel-version
attributes:
label: Panel Version
description: Version number of your Panel (latest is not a version)
placeholder: 1.x.x
validations:
required: true
- type: input
id: wings-version
attributes:
label: Wings Version
description: Version number of your Wings (latest is not a version)
placeholder: 1.x.x
validations:
required: true
- type: input
id: service
attributes:
label: Service
description: Service you are experiencing issues with
placeholder: minecraft/factorio/etc
validations:
required: true
- type: dropdown
id: modified
attributes:
label: Modified
description: Did you add or change things, this includes startup configs/install scripts/variables
options:
- Yes, I modified the egg (will provide details below)
- No, I did not modify the egg
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: What did you expect to happen
placeholder: Install the server, start it, play
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual Behavior
description: What actually happened instead
placeholder: Server crashed with error X
validations:
required: true
- type: textarea
id: reproduce-steps
attributes:
label: Steps To Reproduce
description: Step by step what to do to cause the issue
placeholder: |
Step 1 Set version to latest
Step 2 install
Step 3 Receive error X or Y
validations:
required: true
- type: input
id: install-logs
attributes:
label: Install logs
description: |
Run the command below on the SSH terminal of your Wings machine and provide the link to logs.
```
tail -n 1000 $(ls -Alrt /var/log/pterodactyl/install/*.log | tail -1 | sed 's/ */ /g' | cut -s -d' ' -f9) | nc pteropaste.com 99
```
placeholder: |
https://pteropaste.com/exampleLogs
validations:
required: true
+14 -12
View File
@@ -1,22 +1,24 @@
### All Submissions:
# Description
* [ ] Have you followed the guidelines in our Contributing document?
<!-- Please explain what is being changed or added as a short overview for this PR. Also, link existing relevant issues if they exist with resolves # -->
## Checklist for all submissions
<!-- insert X into the brackets to mark it as done. You can click preview to make the links appear clickable. -->
* [ ] Have you followed the guidelines in our [Contributing document](https://github.com/parkervcp/eggs/blob/master/CONTRIBUTING.md)?
* [ ] Have you checked to ensure there aren't other open [Pull Requests](../pulls) for the same update/change?
* [ ] Have you tested and reviewed your changes with confidence that everything works?
* [ ] Did you branch your changes and PR from that branch and not from your master branch?
* If not, why?:
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
<!-- You can erase the new egg submission template if you're not adding a completely new egg -->
### New Server Submissions:
## New egg Submissions
1. [ ] Does your submission pass tests (server is connectable)?
2. [ ] Does your server use a custom docker image?
2. [ ] Does your egg 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?
3. [ ] Have you added the egg to the main README.md and any other README files in subdirectories of the egg (e.g /game_eggs) according to the alphabetical order?
4. [ ] Have you added a unique README.md for the egg you are adding according to the alphabetical order?
+30 -14
View File
@@ -1,39 +1,51 @@
# So you want to make an Egg
# How to contribute
## General rules
You can contribute by either creating a new pull request or testing [existing pull requests](https://github.com/parkervcp/eggs/pulls) and commenting on whether the egg works for you or not. Testing is very important and helpful!
## General rules for eggs
1. Keep it simple.
We don't need 8 miles of install script.
We don't need 8 miles of the install script.
2. Keep it Small.
Only use what is absolutely needed.
2. Keep it small.
Only use what is absolutely needed. The [Yolks install images](https://github.com/parkervcp/yolks#installation-images) already contain the most basic packages that speeds up the installation process.
3. Try to stay in the stock containers.
If you need something in a container, open a PR in [my yolks repo](https://github.com/parkervcp/yolks) where I can review and pull it up to the main repo. In addition, there is a larger quantity of [images here](https://github.com/parkervcp/images) for you to use that have not been migrated to Yolks yet.
3. Use the stock images.
If you need something in an image, open a PR in [my yolks repo](https://github.com/parkervcp/yolks) where it can be reviewed and built. Self-hosted or third-party images won't be accepted for security reasons.
4. Don't be afraid to submit PR's to the egg repo.
I don't bite. I will work with you on the egg and the required things to run it.
I don't bite. I will work with you on the egg and the required things to run it. Feel free to open a draft PR if you don't quite have the egg finished yet by yourself.
### Sources for working on a new egg
Look at existing eggs to see how they work. In most cases, you can take the existing egg as your new template. There's a brief documentation on how to [create eggs](https://pterodactyl.io/community/config/eggs/creating_a_custom_egg.html) and [Docker images](https://pterodactyl.io/community/config/eggs/creating_a_custom_image.html).
Use existing Docker images for your egg. You can find them in [Parkers Yolks fork](https://github.com/parkervcp/yolks) and [Pterodactyl Yolks](https://github.com/pterodactyl/yolks).
We have a collection of [existing install script snippets](https://github.com/parkervcp/eggs/tree/master/scripts) that you can use.
## Step 1
### Be aware of the pterodactyl install process
The Pterodactyl install process is fairly simple once you know.
The Pterodactyl install process is fairly simple once you know it.
```md
1. Spin up install container
This uses a volume mount on /mnt/server for the server files.
This can pull or set up all that is needed to run the server.
Creates a new container using an install image that's run as root.
Uses a volume mount on `/mnt/server` for the server files, which is the working directory during installation.
The volume will be later mounted as `/home/container` for the server container. Any files outside of `/mnt/server` will be gone after installation.
Install script can pull files or set up all that is needed to run the server, such as writing files, directories or compiling apps.
It is regularly used to just download the files required. Such as server files and configs.
2. Stop install container
2. Stop and destroy install container
3. Start a new container with the server files in /home/container
This is where the server is actually run.
This is where the server is actually run. No root privileges.
Any dependencies installed during the install process are gone.
The container that is started should have everything you need.
No packages can be installed. Any required dependencies must exist in the used Docker image.
```
## Step 2
@@ -49,4 +61,8 @@ This is to maintain a clean repo that others can pull and be fully aware of what
### Make a branch and do your work in there
I have been getting messy PR's due to people always PRing from their master branch. Please make a seperate branch and PR from there.
I have been getting messy PR's due to people always PRing from their master branch. Please make a separate branch and PR from there.
## Step 4
Open a new pull request and fill in the template. Make sure that the readme files have been updated to include the new egg.
+40 -11
View File
@@ -29,15 +29,9 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [ATL Bot](/bots/discord/atlbot) Node JS
* [Bastion](/bots/discord/bastion) Node JS
* [CorpBot](/bots/discord/corpbot) Python
* [discordgo](bots/discord/discordgo) Golang generic
* [discord.java](bots/discord/discord.java) Java generic
* [discord.js](bots/discord/discord.js) Node JS generic
* [discord.py](bots/discord/discord.py) Python generic
* [discord.rs](bots/discord/discord.rs) Rust generic
* [Dynamica](/bots/discord/dynamica) Node JS
* [fragbot](/bots/discord/fragbot) Golang
* [JMusicBot](/bots/discord/jmusicbot) Java
* [nodemon.js](bots/discord/nodemon.js) Nodemon JS generic
* [parkertron](/bots/discord/parkertron) Golang
* [pixel-bot](/bots/discord/pixelbot) Python
* [Redbot](/bots/discord/redbot) Python
@@ -56,6 +50,18 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [JTS3ServerMod](/bots/teamspeak3/jts3servermod)
## [Generic Languages](/generic)
* [dart](/generic/dart/)
* [deno](/generic/deno/)
* [golang](/generic/golang/)
* [java](/generic/java/)
* [lua](/generic/lua/)
* [nodejs](/generic/nodejs/)
* [nodemon](/generic/nodemon/)
* [python](/generic/python/)
* [rust](/generic/rust/)
## [Database](/database)
### In-Memory Databases
@@ -64,6 +70,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Redis 5](/database/redis/redis-5)
* [Redis 6](/database/redis/redis-6)
* [Redis 7](/database/redis/redis-7)
### noSQL
@@ -85,8 +92,9 @@ If you are reading this it looks like you are looking to add an egg to your serv
[Among Us](game_eggs/among_us)
* [Impostor Server](game_eggs/among_us/impostor_server)
* [BetterCrewLink Server](game_eggs/among_us/bettercrewlink_server)
* [CrewLink Server](game_eggs/among_us/crewlink_server)
* [Impostor Server](game_eggs/among_us/impostor_server)
[BeamNG.drive](game_eggs/beamng)
@@ -107,6 +115,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Vanilla](game_eggs/factorio/factorio)
* [ModUpdate](game_eggs/factorio/factorio-modupdate)
* [Clusterio](game_eggs/factorio/clusterio)
[Grand Theft Auto](game_eggs/gta)
@@ -122,12 +131,14 @@ If you are reading this it looks like you are looking to add an egg to your serv
* GTA
* [GTAC](game_eggs/gta/gtac)
[League Sandbox](game_eggs/leaguesandbox)
[Los Angeles Crimes](game_eggs/losangelescrimes)
[Mindustry](game_eggs/mindustry)
* [Mindustry](game_eggs/mindustry/mindustry)
[League Sandbox](game_eggs/leaguesandbox)
[Minetest](game_eggs/minetest) (including MTG)
* [Minetest](game_eggs/minetest/minetest)
@@ -141,7 +152,6 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [PocketMine MP](game_eggs/minecraft/bedrock/pocketmine_mp)
* [Java](game_eggs/minecraft/java) Servers for Java Minecraft
* [Airplane](game_eggs/minecraft/java/airplane)
* [Cuberite](game_eggs/minecraft/java/cuberite)
* [Fabric](game_eggs/minecraft/java/fabric)
* [Feather](game_eggs/minecraft/java/feather)
@@ -159,11 +169,13 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Technic](game_eggs/minecraft/java/technic)
* [VanillaCord](game_eggs/minecraft/java/vanillacord)
* [Crossplay](game_eggs/minecraft/crossplay/) servers for crossplay between Bedrock and Java edition
* [Purpur-GeyserMC-Floodgate](game_eggs/minecraft/crossplay/purpur-geysermc-floodgate/)
* [Proxies](game_eggs/minecraft/proxy) Minecraft Server Proxies
* [Java](game_eggs/minecraft/proxy/java)
* [FlameCord](game_eggs/minecraft/proxy/java/flamecord)
* [Travertine](game_eggs/minecraft/proxy/java/travertine)
* [TyphoonLimbo](game_eggs/minecraft/proxy/java/typhoonlimbo)
* [Velocity](game_eggs/minecraft/proxy/java/velocity)
* [Waterfall](game_eggs/minecraft/proxy/java/waterfall)
* [Bedrock](game_eggs/minecraft/proxy/bedrock)
@@ -196,6 +208,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Assetto Corsa](game_eggs/steamcmd_servers/assetto_corsa)
* [Avorion](game_eggs/steamcmd_servers/avorion)
* [Barotrauma](game_eggs/steamcmd_servers/barotrauma)
* [Black Mesa](game_eggs/steamcmd_servers/black_mesa)
* [Citadel: Forged with Fire](game_eggs/steamcmd_servers/citadel)
* [Conan Exiles](game_eggs/steamcmd_servers/conan_exiles)
* [Craftopia](game_eggs/steamcmd_servers/craftopia)
@@ -215,6 +228,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Mordhau](game_eggs/steamcmd_servers/mordhau)
* [No More Room in Hell](game_eggs/steamcmd_servers/nmrih)
* [Onset](game_eggs/steamcmd_servers/onset)
* [Open Fortress](game_eggs/steamcmd_servers/open_fortress)
* [Pavlov VR](game_eggs/steamcmd_servers/pavlov_vr)
* [PixARK](game_eggs/steamcmd_servers/pixark)
* [Post Scriptum](game_eggs/steamcmd_servers/post_scriptum)
@@ -228,6 +242,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [Satisfactory](game_eggs/steamcmd_servers/satisfactory)
* [SCP: Secret Laboratory](game_eggs/steamcmd_servers/scpsl)
* [dedicated](game_eggs/steamcmd_servers/scpsl/dedicated)
* [exiled](game_eggs/steamcmd_servers/scpsl/exiled)
* [multiadmin](game_eggs/steamcmd_servers/scpsl/multiadmin)
* [Soldat](game_eggs/steamcmd_servers/soldat)
* [Space Engineers](game_eggs/steamcmd_servers/space_engineers)
@@ -311,8 +326,22 @@ If you are reading this it looks like you are looking to add an egg to your serv
* [haste-server](/software/haste-server)
### LanguageTool
* [languagetool](/software/languagetool)
### Owncast
* [owncast](/software/owncast)
### RabbitMQ
* [rabbitmq](/software/rabbitmq)
### Reposilite
* [Reposilite](/software/reposilite)
### 5e Tools
* [5e Tools](/software/5e-tools)
-20
View File
@@ -17,21 +17,6 @@ Give awesome perks to your Discord server!
[corpnewt/CorpBot.py](https://github.com/corpnewt/CorpBot.py)
A very clumsy python bot for discord
### [DiscordJS](discord.js)
[discord.js](https://discord.js.org/)
A generic discord.js egg for running discord bots.
### [DiscordPY](discord.py)
[discord.py](https://discordpy.readthedocs.io/en/latest/)
A generic discord.py egg for running discord bots.
### [discordgo](discordgo)
[discordgo](https://github.com/bwmarrin/discordgo)
A generic go application egg.
### [FragBot](fragbot)
[fragforce/fragbot](https://github.com/fragforce/fragbot)
@@ -42,11 +27,6 @@ The bot that runs as the fragforce `@Fragbot` offering looking-for-group service
[jagrosh/MusicBot](https://github.com/jagrosh/MusicBot)
A Discord music bot that's easy to set up and run yourself!
### [nodemon](nodemon.js)
[nodemon](https://nodemon.io/)
A nodemon javascript egg for running and automatically restarting the node application when file changes in the directory are detected
### [parkertron](parkertron)
[parkervcp/parkertron](https://github.com/parkervcp/parkertron)
-3
View File
@@ -1,3 +0,0 @@
# discord.rs generic
This egg is designed to run any generic Rust application with cargo, allowing users to pull their own Rust discord bot from a GitHub repository.
-7
View File
@@ -1,7 +0,0 @@
# luvit generic
This egg was designed to allow a user to pull their own lua discord bot from a repo and run it with luvit.
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.
+5
View File
@@ -6,6 +6,11 @@ Listen to your favorite music together with all of your friends
Welcome the Simple, Elegant & great sounding TS3- and Discord-Bot!
## First startup
On first startup wait until this message in the console appears: `TSClient quit.` Then press restart.
Now the SinusBot will fully startup and you can login to the WebUI.
## Server Ports
1 port is required to run SinusBot.
+11 -10
View File
@@ -1,28 +1,28 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-02-06T02:44:05+02:00",
"exported_at": "2022-10-01T12:31:15+02:00",
"name": "Sinusbot",
"author": "support@pterodactyl.io",
"description": "Musicbot for Discord and Teamspeak.",
"features": null,
"images": [
"quay.io\/parkervcp\/pterodactyl-images:bot_sinusbot"
],
"docker_images": {
"sinusbot": "ghcr.io\/parkervcp\/yolks:bot_sinusbot"
},
"file_denylist": [],
"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}",
"startup": "{\r\n \"done\": \"Initialization complete\",\r\n \"userInteraction\": []\r\n}",
"logs": "{\r\n \"custom\": true,\r\n \"location\": \"logs\/latest.log\"\r\n}",
"startup": "{\r\n \"done\": \"Initialization complete\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\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-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp",
"script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\nwget -qO - https:\/\/www.sinusbot.com\/dl\/sinusbot.current.tar.bz2 | tar xj\r\n\r\n#Download Latest TeamSpeak Client\r\nTS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.version')\r\nTS_DL_LINK=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n.\/TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64\/xcbglintegrations\/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"\/home\/container\/TeamSpeak3-Client-linux_amd64\/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"\/home\/container\/youtube-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"install finished\"",
"container": "ubuntu:18.04",
"entrypoint": "bash"
}
@@ -32,10 +32,11 @@
"name": "Password",
"description": "Password for admin account.",
"env_variable": "OVERRIDE_PASSWORD",
"default_value": "CHANGEME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
}
]
}
+31 -37
View File
@@ -1,25 +1,29 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1"
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2020-12-16T19:18:24+02:00",
"exported_at": "2022-10-02T18:28:42+02:00",
"name": "PhantomBot",
"author": "mail@wuffy.eu",
"description": "PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.",
"features": null,
"image": "quay.io\/parkervcp\/pterodactyl-images:debian_openjdk-11",
"docker_images": {
"ghcr.io\/parkervcp\/yolks:java_11": "ghcr.io\/parkervcp\/yolks:java_11"
},
"file_denylist": [],
"startup": "java --add-opens java.base\/java.lang=ALL-UNNAMED -Djava.security.policy=config\/security -Dinteractive -Xms1m -Dfile.encoding=UTF-8 -jar PhantomBot.jar",
"config": {
"files": "{\r\n \"config\/botlogin.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"baseport\": \"{{server.build.default.port}}\",\r\n \"channel\": \"{{server.build.env.CHANNEL_NAME}}\",\r\n \"owner\": \"{{server.build.env.CHANNEL_OWNER}}\",\r\n \"apioauth\": \"{{server.build.env.USER_OAUTH_TOKEN}}\",\r\n \"oauth\": \"{{server.build.env.BOT_OAUTH_TOKEN}}\",\r\n \"paneluser\": \"{{server.build.env.WEBPANEL_USERNAME}}\",\r\n \"panelpassword\": \"{{server.build.env.WEBPANEL_PASSWORD}}\",\r\n \"user\": \"{{server.build.env.BOT_TWITCH_USERNAME}}\",\r\n \"youtubekey\": \"{{server.build.env.YOUTUBE_API_KEY}}\",\r\n \"discord_token\": \"{{server.build.env.DISCORD_BOT_TOKEN}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Connecting to Twitch WS-IRC Server\",\r\n \"userInteraction\": []\r\n}",
"logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}",
"files": "{\r\n \"config\/botlogin.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"baseport\": \"{{server.build.default.port}}\",\r\n \"channel\": \"{{server.build.env.CHANNEL_NAME}}\",\r\n \"owner\": \"{{server.build.env.CHANNEL_OWNER}}\",\r\n \"paneluser\": \"{{server.build.env.WEBPANEL_USERNAME}}\",\r\n \"panelpassword\": \"{{server.build.env.WEBPANEL_PASSWORD}}\",\r\n \"user\": \"{{server.build.env.BOT_TWITCH_USERNAME}}\",\r\n \"youtubekey\": \"{{server.build.env.YOUTUBE_API_KEY}}\",\r\n \"discord_token\": \"{{server.build.env.DISCORD_BOT_TOKEN}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Joined \"\r\n}",
"logs": "{}",
"stop": "exit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# PhantomBot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y --no-install-recommends install curl ca-certificates unzip\r\n\r\ncd \/tmp\r\n\r\n# Fetching latest github release\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"master\" ]; then\r\n echo -e \"Using latest Github Master version\"\r\n DOWNLOAD_URL=https:\/\/raw.githubusercontent.com\/PhantomBot\/nightly-build\/master\/PhantomBot-nightly-lin.zip\r\nelse\r\n if [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest release version\"\r\n RELEASE_VERSION=$(curl -s \"https:\/\/github.com\/PhantomBot\/PhantomBot\/releases\/latest\" | grep -o '[0-9].[0-9].[0-9]')\r\n fi\r\n DOWNLOAD_URL=https:\/\/github.com\/PhantomBot\/PhantomBot\/releases\/download\/v${RELEASE_VERSION}\/PhantomBot-${RELEASE_VERSION}.zip\r\nfi\r\n\r\n# Download files\r\ncd \/mnt\/server\r\ncurl -LJO ${DOWNLOAD_URL}\r\nunzip -o PhantomBot-*.zip\r\n\r\n# Move unzipped files into the server folder\r\ncp -f -r .\/PhantomBot-*\/* \/mnt\/server\/\r\n\r\n# Creating default config\r\nif [ ! -f \/mnt\/server\/config\/botlogin.txt ]; then\r\n echo -e \"Creating config\/botlogin.txt\"\r\n cat << EOF > \/mnt\/server\/config\/botlogin.txt\r\n #PhantomBot Configuration File\r\n #\r\n # Here is a list wiht all config values:\r\n # https:\/\/community.phantom.bot\/t\/settings-for-botlogin-txt\/78\r\n #\r\n apioauth=\r\n baseport=\r\n channel=\r\n oauth=\r\n owner=\r\n panelpassword=\r\n paneluser=\r\n user=\r\n youtubekey=\r\n discord_token=\r\nEOF\r\nfi",
"container": "debian:buster-slim",
"script": "#!\/bin\/bash\r\n# PhantomBot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y --no-install-recommends install curl wget ca-certificates unzip\r\n\r\ncd \/tmp\r\n\r\n# Fetching latest github release\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"master\" ]; then\r\n echo -e \"Using latest Github Master version\"\r\n DOWNLOAD_URL=https:\/\/raw.githubusercontent.com\/PhantomBot\/nightly-build\/master\/PhantomBot-nightly-lin.zip\r\nelse\r\n if [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest release version\"\r\n RELEASE_VERSION=$(curl -s \"https:\/\/api.github.com\/repos\/PhantomBot\/PhantomBot\/releases\/latest\" | grep -e '\"tag_name\"' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/' | sed 's\/^.\/\/')\r\n fi\r\n DOWNLOAD_URL=https:\/\/github.com\/PhantomBot\/PhantomBot\/releases\/download\/v${RELEASE_VERSION}\/PhantomBot-${RELEASE_VERSION}-lin.zip\r\n echo -e \"${DOWNLOAD_URL}\"\r\nfi\r\n\r\n# Download files\r\ncd \/mnt\/server\r\nwget ${DOWNLOAD_URL} -O PhantomBot.zip\r\n\r\n# Unzip files and delete the archive\r\nunzip -o PhantomBot.zip\r\nrm PhantomBot.zip\r\n\r\n# Move unzipped files into the server folder and delete the folder \r\ncp -f -r .\/PhantomBot-*\/* \/mnt\/server\/\r\nrm -rf PhantomBot-*\/\r\n\r\n# Creating default config\r\nif [ ! -f \/mnt\/server\/config\/botlogin.txt ]; then\r\n echo -e \"Creating config\/botlogin.txt\"\r\n cat << EOF > \/mnt\/server\/config\/botlogin.txt\r\n #PhantomBot Configuration File\r\n #\r\n # Here is a list wiht all config values:\r\n # https:\/\/community.phantom.bot\/t\/settings-for-botlogin-txt\/78\r\n #\r\n apioauth=\r\n baseport=\r\n channel=\r\n oauth=\r\n owner=\r\n panelpassword=\r\n paneluser=\r\n user=\r\n youtubekey=\r\n discord_token=\r\nEOF\r\nfi\r\necho \"install finished\"",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
@@ -31,7 +35,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:9"
"rules": "required|string|max:9",
"field_type": "text"
},
{
"name": "Twitch Channel Name",
@@ -40,7 +45,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26"
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Channel Owner",
@@ -49,25 +55,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26"
},
{
"name": "Bot OAuth Token",
"description": "Please note, this OAuth token needs to be generated while you're logged in into the bot's Twitch account.\r\nIf you're not logged in as the bot, please go to https:\/\/twitch.tv\/ and login as the bot.\r\nGet the bot's OAuth token here: https:\/\/twitchapps.com\/tmi\/",
"env_variable": "BOT_OAUTH_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
},
{
"name": "Your OAuth Token",
"description": "Please note, this OAuth token needs to be generated while you're logged in into your caster account.\r\nIf you're not logged in as the caster, please go to https:\/\/twitch.tv\/ and login as the caster.\r\nGet the your OAuth token here: https:\/\/phantombot.github.io\/PhantomBot\/oauth\/",
"env_variable": "USER_OAUTH_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Bot Twitch Username",
@@ -76,7 +65,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26"
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Webpanel Username",
@@ -85,7 +75,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
"rules": "required|string|max:64",
"field_type": "text"
},
{
"name": "Webpanel Password",
@@ -94,25 +85,28 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:2000"
"rules": "required|string|max:2000",
"field_type": "text"
},
{
"name": "Youtube API Key",
"description": "https:\/\/community.phantom.bot\/t\/acquire-youtube-api-key\/222",
"description": "https:\/\/phantombot.dev\/guides\/#guide=content\/integrations\/youtubesetup",
"env_variable": "YOUTUBE_API_KEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:64"
"rules": "max:128",
"field_type": "text"
},
{
"name": "Discord Bot Token",
"description": "https:\/\/community.phantom.bot\/t\/discord-integration-setup\/64",
"description": "https:\/\/phantombot.dev\/guides\/#guide=content\/integrations\/discordintegrationsetup",
"env_variable": "DISCORD_BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:64"
"rules": "max:128",
"field_type": "text"
}
]
}
}
+5 -5
View File
@@ -1,23 +1,23 @@
# databases
# Databases
## In-Memory Databases
### [redis](/redis/)
### [redis](redis)
https://redis.io/
## NoSQL
### [mongodb](/nosql/mongodb/)
### [mongodb](nosql/mongodb)
https://www.mongodb.com/
## SQL Databases
### [mariadb](/sql/mariadb/)
### [mariadb](sql/mariadb)
https://mariadb.org/
### [postgres](/sql/postgres/)
### [postgres](sql/postgres)
https://www.postgresql.org/
+4
View File
@@ -4,6 +4,10 @@
MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.
### MongoDB free monitoring.
To disable the message about free monitoring you can run `db.disableFreeMonitoring()`.
## Minimum RAM warning
MongoDB requires approximately 1GB of RAM per 100.000 assets. If the system has to start swapping memory to disk, this will have a severely negative impact on performance, and should be avoided.
+14 -6
View File
@@ -1,13 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1"
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2020-10-30T13:01:44+00:00",
"exported_at": "2022-08-28T13:33:51+02:00",
"name": "MongoDB",
"author": "parker@parkervcp.com",
"description": "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for my butt era.",
"image": "quay.io\/parkervcp\/pterodactyl-images:db_mongo-4",
"features": null,
"docker_images": {
"MongoDB_4": "ghcr.io\/parkervcp\/yolks:mongodb_4",
"MongoDB_5": "ghcr.io\/parkervcp\/yolks:mongodb_5"
},
"file_denylist": [],
"startup": "mongod --fork --dbpath \/home\/container\/mongodb\/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath \/home\/container\/logs\/mongo.log -f \/home\/container\/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done && mongo --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongo --eval \"db.getSiblingDB('admin').shutdownServer()\" 127.0.0.1:${SERVER_PORT}",
"config": {
"files": "{}",
@@ -30,16 +36,18 @@
"default_value": "admin",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Mongo Admin Password",
"description": "",
"env_variable": "MONGO_USER_PASS",
"default_value": "aP@55word",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
}
]
}
@@ -0,0 +1,52 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-09-27T08:58:45-04:00",
"name": "MongoDB 6",
"author": "parker@parkervcp.com",
"description": "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for my butt era.",
"features": null,
"docker_images": {
"MongoDB_6": "ghcr.io\/parkervcp\/yolks:mongodb_6"
},
"file_denylist": [],
"startup": "mongod --fork --dbpath \/home\/container\/mongodb\/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath \/home\/container\/logs\/mongo.log -f \/home\/container\/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done; mongosh --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongosh --eval \"db.getSiblingDB('admin').shutdownServer()\" 127.0.0.1:${SERVER_PORT}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"child process started successfully\"\r\n}",
"logs": "{}",
"stop": "exit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash \r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\ncp \/etc\/mongod.conf.orig \/mnt\/server\/mongod.conf\r\n\r\nmkdir mongodb logs\r\n\r\nmongod --port 27017 --dbpath \/mnt\/server\/mongodb\/ --logpath \/mnt\/server\/logs\/mongo.log --fork\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})\"\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').shutdownServer()\"",
"container": "mongo:6-focal",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Mongo Admin Username",
"description": "The MongoDB Admin user",
"env_variable": "MONGO_USER",
"default_value": "admin",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Mongo Admin Password",
"description": "",
"env_variable": "MONGO_USER_PASS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}
+4
View File
@@ -4,6 +4,10 @@
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
## Server Startup
You must first authenticate before trying to execute commands, to do this run `AUTH <YOUR_PASSWORD_HERE>` (without the `<>`). This should be the same as the password set in the `SERVER_PASSWORD` variable.
## Minimum RAM warning
It's recommended to have 4gb of RAM for redis
+1 -1
View File
@@ -13,7 +13,7 @@
"ghcr.io\/parkervcp\/yolks:redis_6": "ghcr.io\/parkervcp\/yolks:redis_6"
},
"file_denylist": [],
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Configuration loaded\"\r\n}",
+23
View File
@@ -0,0 +1,23 @@
# Redis
## From their [Website](https://redis.io/)
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
## Server Startup
You must first authenticate before trying to execute commands, to do this run `AUTH <YOUR_PASSWORD_HERE>` (without the `<>`). This should be the same as the password set in the `SERVER_PASSWORD` variable.
## Minimum RAM warning
It's recommended to have 4gb of RAM for redis
See here <https://docs.redislabs.com/latest/rs/administering/designing-production/hardware-requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 6379 |
+42
View File
@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-10-02T16:30:14+01:00",
"name": "Redis-7",
"author": "parker@parkervcp.com",
"description": "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:redis_7": "ghcr.io\/parkervcp\/yolks:redis_7"
},
"file_denylist": [],
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Configuration loaded\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/redis\/redis-7\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"",
"container": "alpine:3.10",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Redis Password",
"description": "The password redis should use to secure the server.",
"env_variable": "SERVER_PASSWORD",
"default_value": "P@55w0rd",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -14,8 +14,6 @@
* [MCGalaxy](game_eggs/classicube/mcgalaxy)
[Call of Duty 4X](cod/cod4x)
[ET Legacy](enemy_territory/etlegacy)
[Factorio](factorio)
@@ -39,6 +37,8 @@
* GTA
* [GTAC](gta/gtac)
[Los Angeles Crimes](losangelescrimes)
[League Sandbox](leaguesandbox)
[Mindustry](mindustry)
@@ -52,7 +52,6 @@
* [PocketMine MP](minecraft/bedrock/pocketmine_mp)
* [Java](minecraft/java) Servers for Java Minecraft
* [Airplane](minecraft/java/airplane)
* [Cuberite](minecraft/java/cuberite)
* [CusreForge Generic](minecraft/java/forge/curseforge-generic)
* [Fabric](minecraft/java/fabric)
@@ -81,7 +80,6 @@
* [Java](minecraft/proxy/java)
* [FlameCord](minecraft/proxy/java/flamecord)
* [Travertine](minecraft/proxy/java/travertine)
* [TyphoonLimbo](minecraft/proxy/java/typhoonlimbo)
* [Velocity](minecraft/proxy/java/velocity)
* [VIAaas](minecraft/proxy/java/viaaas)
* [Waterfall](minecraft/proxy/java/waterfall)
@@ -112,6 +110,7 @@
* [Assetto Corsa](steamcmd_servers/assetto_corsa)
* [Avorion](steamcmd_servers/avorion)
* [Barotrauma](steamcmd_servers/barotrauma)
* [Black Mesa](steamcmd_servers/black_mesa)
* [Citadel: Forged with Fire](steamcmd_servers/citadel)
* [Conan Exiles](steamcmd_servers/conan_exiles)
* [CryoFall](steamcmd_servers/cryofall)
@@ -130,6 +129,7 @@
* [Mordhau](steamcmd_servers/mordhau)
* [No More Room in Hell](steamcmd_servers/nmrih)
* [Onset](steamcmd_servers/onset)
* [Open Fortress](steamcmd_servers/open_fortress)
* [Pavlov VR](steamcmd_servers/pavlov_vr)
* [PixARK](steamcmd_servers/pixark)
* [Post Scriptum](steamcmd_servers/post_scriptum)
+49 -13
View File
@@ -7,7 +7,7 @@
"exported_at": "2021-12-22T09:10:34+00:00",
"name": "BeamMP Servers",
"author": "noah@noahserver.online",
"description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point throug which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.",
"description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point through which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:debian"
@@ -15,45 +15,81 @@
"file_denylist": [],
"startup": ".\/BeamMP-Server",
"config": {
"files": "{\r\n \"Server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers = {{server.build.env.MAX_PLAYER}}\",\r\n \"Port\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTH}}\\\"\"\r\n }\r\n }\r\n}",
"files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.NAME}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"[INFO] Vehicle data network online\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "mkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nrm -f BeamMP-Server\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i Server-linux)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -L ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\necho \"# This is the BeamMP Server Configuration File v0.60\r\nDebug = false # true or false to enable debug console output\r\nPrivate = true # Private?\r\nPort = 30814 # Port to run the server on UDP and TCP\r\nCars = 1 # Max cars for every player\r\nMaxPlayers = 10 # Maximum Amount of Clients\r\nMap = \\\"\/levels\/gridmap\/info.json\\\" # Default Map\r\nName = \\\"BeamMP New Server\\\" # Server Name\r\nDesc = \\\"BeamMP Default Description\\\" # Server Description\r\nuse = \\\"Resources\\\" # Resource file name\r\nAuthKey = \\\"\\\" # Auth Key\" > Server.cfg",
"script": "#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i Server-linux)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -L ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"[HTTP]\r\n# Recommended to keep enabled. With SSL the server will serve https and requires valid key and cert files\r\nUseSSL = true\r\n# Enables the internal HTTP server\r\nHTTPServerEnabled = false\r\nSSLKeyPath = \\\".\/.ssl\/HttpServer\/key.pem\\\"\r\nHTTPServerPort = 8080\r\nSSLCertPath = \\\".\/.ssl\/HttpServer\/cert.pem\\\"\r\n\r\n[General]\r\n# If SendErrors is `true`, the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to `false`\r\nSendErrorsShowMessage = true\r\nName = \\\"BeamMP Server\\\"\r\nPort = 30814\r\nResourceFolder = \\\"Resources\\\"\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = \\\"\\\"\r\nPrivate = true\r\nMaxPlayers = 10\r\nDebug = false\r\nDescription = \\\"BeamMP Default Description\\\"\r\nMaxCars = 1\r\nMap = \\\"\/levels\/gridmap_v2\/info.json\\\"\r\n# You can turn on\/off the SendErrors message you get on startup here\r\nSendErrors = true\" > ServerConfig.toml",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Version to install",
"description": "Latest or invalid versions would default to latest. See all versions visit https:\/\/github.com\/BeamMP\/BeamMP-Server\/releases",
"name": "Server Name",
"description": "The name of your server. This is what appears on the server list.",
"env_variable": "NAME",
"default_value": "BeamMP Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
},
{
"name": "BeamMP Server Version",
"description": "The BeamMP server version to be installed. Latest or invalid versions will default to latest. See all available versions at https:\/\/github.com\/BeamMP\/BeamMP-Server\/releases",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32"
"rules": "required|string|max:8"
},
{
"name": "Authentication Key",
"description": "BeamMP Server Key (https:\/\/beamng-mp.com\/k\/keys)",
"env_variable": "AUTH",
"description": "The authentication key for your server. A key can be obtained from the BeamMP keymaster at https:\/\/beamng-mp.com\/k\/dashboard",
"env_variable": "AUTHKEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:50"
"rules": "required|string|max:64"
},
{
"name": "Max Players",
"description": "The maximum number of allowed players",
"env_variable": "MAX_PLAYER",
"description": "The maximum number of players allowed on the server.",
"env_variable": "MAX_PLAYERS",
"default_value": "6",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32"
"rules": "required|integer|max:100"
},
{
"name": "Private",
"description": "Should the server be private?",
"env_variable": "PRIVATE",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "Max Cars",
"description": "The maximum number of cars allowed to be spawned per player.",
"env_variable": "MAX_CARS",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|max:4"
},
{
"name": "Map",
"description": "The map for your server. Stock maps are listed below.\r\n\r\n\/levels\/gridmap_v2\/info.json\r\n\/levels\/automation_test_track\/info.json\r\n\/levels\/east_coast_usa\/info.json\r\n\/levels\/hirochi_raceway\/info.json\r\n\/levels\/italy\/info.json\r\n\/levels\/jungle_rock_island\/info.json\r\n\/levels\/industrial\/info.json\r\n\/levels\/small_island\/info.json\r\n\/levels\/smallgrid\/info.json\r\n\/levels\/utah\/info.json\r\n\/levels\/west_coast_usa\/info.json\r\n\/levels\/driver_training\/info.json\r\n\/levels\/derby\/info.json",
"env_variable": "MAP",
"default_value": "\/levels\/gridmap_v2\/info.json",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
}
]
}
}
-162
View File
@@ -1,162 +0,0 @@
# Call of Duty 4X
## Game files mounting
The server does **not** contain the base game files, but they are necessary to use the server.
While the server itself is open-source, the game files are copyrighted and you will need to own a legitimate copy of the game (Call of Duty 4: Modern Warfare)
in order to provide the game files to the server.
More information here: <https://github.com/callofduty4x/CoD4x_Server#setting-up-a-call-of-duty-4-server-with-cod4x-18>
## Correctly mounting the game files
In order to give the server access to the needed game files you will need to create a new mount.
Let's say you copied the game files to your node into the directory `/home/pterodactyl/serverfiles/cod4x` (you can choose any directory you want of course).
The directory structure will look like this: <details>
```md
/home/pterodactyl/serverfiles/cod4x
├── main
│ ├── iw_00.iwd
│ ├── iw_01.iwd
│ ├── iw_02.iwd
│ ├── iw_03.iwd
│ ├── iw_04.iwd
│ ├── iw_05.iwd
│ ├── iw_06.iwd
│ ├── iw_07.iwd
│ ├── iw_08.iwd
│ ├── iw_09.iwd
│ ├── iw_10.iwd
│ ├── iw_11.iwd
│ ├── iw_12.iwd
│ ├── iw_13.iwd
│ ├── localized_english_iw00.iwd
│ ├── localized_english_iw01.iwd
│ ├── localized_english_iw02.iwd
│ ├── localized_english_iw03.iwd
│ ├── localized_english_iw04.iwd
│ ├── localized_english_iw05.iwd
│ └── localized_english_iw06.iwd
└── zone
└── english
├── ac130.ff
├── aftermath.ff
├── airlift.ff
├── airplane.ff
├── ambush.ff
├── armada.ff
├── blackout.ff
├── bog_a.ff
├── bog_b.ff
├── cargoship.ff
├── code_post_gfx.ff
├── code_post_gfx_mp.ff
├── common.ff
├── common_mp.ff
├── coup.ff
├── hunted.ff
├── icbm.ff
├── jeepride.ff
├── killhouse.ff
├── launchfacility_a.ff
├── launchfacility_b.ff
├── localized_code_post_gfx_mp.ff
├── localized_common_mp.ff
├── mp_backlot.ff
├── mp_backlot_load.ff
├── mp_bloc.ff
├── mp_bloc_load.ff
├── mp_bog.ff
├── mp_bog_load.ff
├── mp_broadcast.ff
├── mp_broadcast_load.ff
├── mp_carentan.ff
├── mp_carentan_load.ff
├── mp_cargoship.ff
├── mp_cargoship_load.ff
├── mp_citystreets.ff
├── mp_citystreets_load.ff
├── mp_convoy.ff
├── mp_convoy_load.ff
├── mp_countdown.ff
├── mp_countdown_load.ff
├── mp_crash.ff
├── mp_crash_load.ff
├── mp_crash_snow.ff
├── mp_crash_snow_load.ff
├── mp_creek.ff
├── mp_creek_load.ff
├── mp_crossfire.ff
├── mp_crossfire_load.ff
├── mp_farm.ff
├── mp_farm_load.ff
├── mp_killhouse.ff
├── mp_killhouse_load.ff
├── mp_overgrown.ff
├── mp_overgrown_load.ff
├── mp_pipeline.ff
├── mp_pipeline_load.ff
├── mp_shipment.ff
├── mp_shipment_load.ff
├── mp_showdown.ff
├── mp_showdown_load.ff
├── mp_strike.ff
├── mp_strike_load.ff
├── mp_vacant.ff
├── mp_vacant_load.ff
├── scoutsniper.ff
├── simplecredits.ff
├── sniperescape.ff
├── ui.ff
├── ui_mp.ff
├── village_assault.ff
└── village_defend.ff
3 directories, 93 files
```
</details>
First of all add the directory of the mount to the config.yml (in `/etc/pterodactyl`) of your node.
```md
allowed_mounts:
- /home/pterodactyl/serverfiles
```
After you've done this, restart wings with `systemctl restart wings`.
Now you simply create a mount in the Pterodactyl Panel with the following settings:
1. Set the source to `/home/pterodactyl/serverfiles/cod4x`
2. Set the target to any directory you want (but not something in `/home/container`, I suggest something like `/mnt/gamefiles/cod4`)
3. Set read-only to "true" ("false" will also work, but then you risk that one instance overwrites files for all other instances)
4. For the rest of the settings you can decide what works best for you
5. Create the mount
6. Add the correct node to the list of nodes for the mount
7. Add the CoD4X egg to the list of eggs for the mount
### Correctly configuring the servers
In order for the server to find the game files you have to set "Game file path" variable in the server to the same directory that you used in the "target" field of the mount.
When you start the server for the first time it will prompt you to mount the game files under the configured path.
1. In the admin interface open your server
2. Go to the tab "Mounts"
3. Klick on the green "+" button on the correct mount in order to mount the game files
4. Restart the server
**Congratulations!** Your server should be able to find the game files and start.
## Default Server Ports
The default is 28960, but the server will automatically use the port defined in the allocation.
| Port | default |
|---------|---------|
| Game | 28960 |
### Plugins may require ports to be added to the server
@@ -1,104 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-05-04T10:23:27+02:00",
"name": "Call of Duty 4X",
"author": "admin@grimsi.de",
"description": "A client and server modification for Call of Duty 4: Modern Warfare with the aim to fix bugs and enhance gameplay!",
"features": null,
"images": [
"quay.io\/parkervcp\/pterodactyl-images:base_debian"
],
"file_denylist": [],
"startup": "if [ ! -d \"{{GAME_FILE_PATH}}\" ]; then echo \"CoD 4 game files not found. Maybe they are not mounted?\"; echo \"In order for the server to start mount the game files here: {{GAME_FILE_PATH}}\"; while true; do sleep 2; done; fi; .\/cod4x18_dedrun +exec server.cfg +set dedicated \"{{SERVER_NETWORK_MODE}}\" +set sv_maxclients \"{{MAX_PLAYERS}}\" +set net_ip 0.0.0.0 +set net_port \"{{SERVER_PORT}}\" +set fs_basepath \"{{GAME_FILE_PATH}}\" +set fs_homepath . +map_rotate",
"config": {
"files": "{\r\n \"main\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"rcon_password\": \"rcon_password \\\"{{server.build.env.ADMIN_PASSWORD}}\\\"\",\r\n \"g_password\": \"g_password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"sv_authtoken\": \"sv_authtoken \\\"{{server.build.env.SERVER_AUTH_TOKEN}}\\\"\",\r\n \"sv_mapRotation\": \"sv_mapRotation \\\"{{server.build.env.MAP_ROTATION}}\\\"\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"By using this software you agree to the usage conditions\",\r\n \"userInteraction\": []\r\n}",
"logs": "{}",
"stop": "quit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# CoD 4X Installation script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nDOWNLOAD_LINK=https:\/\/cod4x.me\/downloads\/cod4x_server-linux.zip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\/\r\n\r\n## this is a simple script to validate a download url actually exists and is reachable\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"Download-URL is reachable.\"\r\n else \r\n echo -e \"Could not reach ${DOWNLOAD_LINK}.\"\r\n echo -e \"Aborting installation...\"\r\n exit 1\r\n fi\r\nfi\r\n\r\n# Download the server binaries\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"Unpacking server files\"\r\nunzip ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"Moving server files to \/mnt\/server\"\r\nmv .\/cod4x-linux-server\/* .\r\n\r\necho -e \"Cleaning up downloaded files.\"\r\nrm ${DOWNLOAD_LINK##*\/}\r\nrm -rf .\/cod4x-linux-server\r\n\r\necho -e \"Installing required runtime libs.\"\r\nmv .\/runtime\/libstdc++.so.6 .\r\n\r\necho -e \"Generating config file\"\r\ncat <<EOF > .\/main\/server.cfg\r\nsv_hostname \"${SERVER_NAME}\"\r\ng_password \"${SERVER_PASSWORD}\"\r\nrcon_password \"${ADMIN_PASSWORD}\"\r\n\r\nsv_punkbuster \"0\"\r\nsv_cheats \"0\"\r\nsv_voice \"0\"\r\nscr_teambalance \"1\"\r\ng_allowvote \"1\"\r\n\r\nsv_authorizemode \"0\"\r\nsv_authtoken \"${SERVER_AUTH_TOKEN}\"\r\n\r\nsv_floodProtect \"1\"\r\n\r\nsv_mapRotation \"${MAP_ROTATION}\"\r\nEOF\r\n\r\necho -e \"running 'chmod +x .\/cod4x18_dedrun'\"\r\nchmod +x .\/cod4x18_dedrun\r\n\r\necho -e \"Installation complete\"",
"container": "quay.io\/matthewp\/pterodactyl:alpine-install",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Server Name",
"description": "Hostname of the server.",
"env_variable": "SERVER_NAME",
"default_value": "Pterodactyl CoD 4X Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:40"
},
{
"name": "Server Password",
"description": "Password of the server.",
"env_variable": "SERVER_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20"
},
{
"name": "Admin Password",
"description": "RCON password for the server.",
"env_variable": "ADMIN_PASSWORD",
"default_value": "password123",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|min:8|max:20"
},
{
"name": "Server Slots",
"description": "Amount of players that can play on the server.",
"env_variable": "MAX_PLAYERS",
"default_value": "32",
"user_viewable": true,
"user_editable": false,
"rules": "required|digits_between:1,3|min:1"
},
{
"name": "Game File Path",
"description": "Path to the CoD 4 game files (has to be the same as the \"target\" of the mount)",
"env_variable": "GAME_FILE_PATH",
"default_value": "\/mnt\/gamefiles\/cod4",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|max:40"
},
{
"name": "Map Rotation",
"description": "Map rotation in Quake format.",
"env_variable": "MAP_ROTATION",
"default_value": "gametype war map mp_crossfire",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:1000"
},
{
"name": "Server Network Mode",
"description": "1 for LAN only, 2 for public",
"env_variable": "SERVER_NETWORK_MODE",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|digits:1|min:1|max:2"
},
{
"name": "Server Authentication Token",
"description": "Token needed to list your server on the public masterserver. Generate here: https:\/\/cod4master.cod4x.me\/index.php?token_generator=true",
"env_variable": "SERVER_AUTH_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|size:40"
}
]
}
+49
View File
@@ -0,0 +1,49 @@
# Clusterio
*A Note on terminology. The developers of Clustorio are using the rather outdated Master/Slave terms for Primary/Secondary or Management/Processing nodes. We will use them in this guide and egg to avoid confusion, but would prefer a more modern set of terminology.*
## Introduction
Clusterio (https://github.com/clusterio/clusterio) is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio.
It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests.
But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named [Subspace Storage](https://github.com/clusterio/subspace_storage).
By itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers.
Plugins do the work of modding in the visible changes into the game, see the [Plugins section](#plugins) for ready-made plugins you can install into a Clusterio cluster.
## Features
- Clustered Factorio server management allowing you manage the running of Factorio servers across a fleet of physical servers from both a web interface and a command line interface.
- User list management for synchronizing in-game admins, whitelisted users, and bans to all the servers in the cluster.
- Integrated support for exporting statistics for the whole cluster to Prometheus via a single metrics endpoint.
- Extensive plugin support for adding your own cross server features to Factorio using Clusterio's communication backbone.
## Setup
Clusterio uses a Master/Slave system setup, with the Master server running the Web UI and controlling which Slaves run which Instances.
The Master server runs a web server that needs to be reachable for cluster management by the user, and by the other nodes to manage them.
The Slave server runs the factorio server, and will need any mods manually importing at this time, including the Factorio mods for the Clustorio Library(https://mods.factorio.com/mod/clusterio_lib) and Subspace Storage(https://mods.factorio.com/mod/subspace_storage).
Both only require a single port each.
Server Mode controls if the server is a master or slave, and each varaible is labeled as required for Master, Slave or All. Please ensure you fill in all required variables.
Set up the master server first, and from there you can generate the Master URL and Master Token required for the slave servers to connect.
Additional configuration options can be found in config-master.json and config-slave.json as relevant.
Changes to the Cluster will only be written out to the database on a graceful stop.
## Server Ports
Clusterio requires a single port
| Port | default |
|------------|------------|
| Master HTTP| 8081 |
| Slave Game | 34197 |
@@ -0,0 +1,116 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-10-05T19:06:42-04:00",
"name": "Clusterio",
"author": "psychoalex@thevcbc.com",
"description": "Clusterio is a clustered Factorio server manager that provides the tooling for implementing cross server interactions in Factorio. It was previously best known for implementing cross server transfer and cloud storage of items via teleporter chests. But this functionality has been pulled out of Clusterio into its own plugin for Clusterio named Subspace Storage.\r\n\r\nBy itself Clusterio doesn't change the gameplay in any way, you could even use Clusterio to manage completely vanilla Factorio servers. Plugins do the work of modding in the visible changes into the game, see the Plugins section for ready-made plugins you can install into a Clusterio cluster.\r\n\r\nA Note on terminology. The developers of Clustorio are using the rather outdated Master\/Slave terms for Primary\/Secondary or Management\/Processing nodes. We will use them in this guide and egg to avoid confusion, but would prefer a more modern set of terminology.",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17",
"ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16",
"ghcr.io\/parkervcp\/yolks:nodejs_15": "ghcr.io\/parkervcp\/yolks:nodejs_15",
"ghcr.io\/parkervcp\/yolks:nodejs_14": "ghcr.io\/parkervcp\/yolks:nodejs_14",
"ghcr.io\/parkervcp\/yolks:nodejs_12": "ghcr.io\/parkervcp\/yolks:nodejs_12"
},
"file_denylist": [],
"startup": "exec .\/node_modules\/.bin\/clusterio{{SERVER_MODE}} run",
"config": {
"files": "{\r\n \"config-master.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.http_port\": \"{{server.build.default.port}}\",\r\n \"groups[0].fields.name\": \"{{server.build.env.CLUSTER_NAME}}\"\r\n }\r\n },\r\n \"config-slave.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"groups[0].fields.master_url\": \"{{server.build.env.MASTER_URL}}\",\r\n \"groups[0].fields.master_token\": \"{{server.build.env.MASTER_TOKEN}}\",\r\n \"groups[0].fields.public_address\": \"{{server.build.default.ip}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Started\"\r\n}",
"logs": "{}",
"stop": "^c"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Clusterio Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\ncase \"${SERVER_MODE}\" in\r\n\r\n \"master\")\r\n echo -e \"Initialising Clustorio In Master mode\"\r\n npm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --admin \"${ADMIN_STRING}\" --public-address \"${SERVER_IP}\":\"${SERVER_PORT}\" --plugins ${PLUGINS}\r\n\t;;\r\n\r\n \"slave\")\r\n echo -e \"Initialising Clustorio In Slave mode\"\r\n\tnpm init \"@clusterio\" --allow-install-as-root --mode \"${SERVER_MODE}\" --download-headless --log-level \"${LOG_LEVEL}\" --slave-name \"${SLAVE_NAME}\" --public-address \"${SERVER_IP}\" --master-url \"${MASTER_URL}\" --master-token \"${MASTER_TOKEN}\" --plugins ${PLUGINS}\r\n ;;\r\n \r\nesac\r\n\r\necho -e \"install complete\"\r\nexit 0",
"container": "node:14-buster-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Server Mode",
"description": "Set's the cluster operation mode of the server, can be either \"master\" or \"slave\". This is better thought of as Management or Gameserver nodes.\r\n\r\nRequired on:\r\nAll",
"env_variable": "SERVER_MODE",
"default_value": "master",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:master,slave",
"field_type": "text"
},
{
"name": "Log Level",
"description": "Options: \"none\", \"fatal\", \"error\", \"warn\", \"audit\", \"info\", \"verbose\"\r\n\r\nRequired on:\r\nAll",
"env_variable": "LOG_LEVEL",
"default_value": "info",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:none,fatal,error,warn,audit,info,verbose",
"field_type": "text"
},
{
"name": "Server Admin",
"description": "Superadmin account name\r\n\r\nRequired on:\r\nMaster",
"env_variable": "ADMIN_STRING",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64",
"field_type": "text"
},
{
"name": "Slave Name",
"description": "Slave name in the Master Web UI\r\n\r\nRequired on:\r\nSlave",
"env_variable": "SLAVE_NAME",
"default_value": "Your Sub-Server",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Master URL",
"description": "Connection URL to the Master server, can be an internal address if you have allocated an additional internal port to the Master Server.\r\n\r\nExample: http:\/\/yourip:yourport\/\r\n\r\nRequired on:\r\nSlave",
"env_variable": "MASTER_URL",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:64",
"field_type": "text"
},
{
"name": "Master Token",
"description": "Authentication token used to connect to the Master server, Must be generated through the Master Web UI after setting up and logging into the Master Web UI using the admin auth token generated when setting up the Master.\r\n\r\nRequired on:\r\nSlave",
"env_variable": "MASTER_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:256",
"field_type": "text"
},
{
"name": "Plugins",
"description": "Clusterio Plugins to install, space separate list.\r\n\r\nExample:\r\n@clusterio\/plugin-global_chat\r\n@clusterio\/plugin-research_sync\r\n@clusterio\/plugin-statistics_exporter\r\n\r\nCurrent available clusterio plugins include:\r\n@clusterio\/plugin-global_chat\r\n@clusterio\/plugin-research_sync\r\n@clusterio\/plugin-statistics_exporter\r\n@clusterio\/plugin-subspace_storage (requires the mod to be installed on the slave)\r\n@clusterio\/plugin-player_auth\r\n@clusterio\/plugin-inventory_sync\r\n@hornwitser\/server_select\r\n\r\nRequired on:\r\nAll",
"env_variable": "PLUGINS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:512",
"field_type": "text"
},
{
"name": "Cluster Name",
"description": "The Name of your Cluster Master server.\r\n\r\nRequired:\r\nMaster",
"env_variable": "CLUSTER_NAME",
"default_value": "Your Cluster",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
}
]
}
+1 -1
View File
@@ -5,7 +5,7 @@
Pterodactyl will not be providing support for FiveM. You are free to run a FiveM server but no support will be provided in the Pterodactyl Discord, check the discord annoucement below for details.
Worth a read if you plan on running a FiveM server
[Pterodactyl Discord Announcement](https://ptb.discord.com/channels/122900397965705216/124919575534895105/869733533495746560)
[Pterodactyl Discord Announcement](https://discord.com/channels/122900397965705216/124919575534895105/869733533495746560)
## From the [FiveM](https://fivem.net/) Site
+33
View File
@@ -0,0 +1,33 @@
# Los Angeles Crimes
This egg makes it easy for you to create a public server in the game [Los Angeles Crimes](https://play.google.com/store/apps/details?id=com.MA.LAC&hl=in&gl=US).
I made it because I was confused about how to create a server manually which requires using a vpn and so on... But here such a method is not needed. This egg uses a Linux Server that has been provided by the Game Developer.
## Game Description
Los Angeles Crimes lets you play, create, and discover a variety of immersive worlds created by a global community!
Features:
- Free roam, team death-match, zombie survival, car race & soccer
- Third-person & first-person view
- Active-ragdoll and realistic physics
- LAN support
- PS4 controller support (Bluetooth)
Website: https://lacrimesonline.com/
## Minimum Requirement
1024MB Ram and 1024MB Disk is enough to run the server. Better to add ram & disk as this is a public server and dozens of people can join.
## Server Port
> **The LAC server can only run on port 7777. So the server port in the pterodactyl panel that you will use must be 7777.**
| Port | Default |
|---|---|
| Public Server | 7777 |
## To Do
- [ ] Can change version.
# Contributors
- [JastinXyz](https://github.com/JastinXyz)
@@ -0,0 +1,41 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2022-04-27T11:33:59+07:00",
"name": "LAC-Online Public Server",
"author": "jastinlt16@gmail.com",
"description": "To make the Los Angeles Crimes public server. Los Angeles Crimes lets you play, create, and discover a variety of immersive worlds created by a global community!",
"features": null,
"images": [
"quay.io\/parkervcp\/pterodactyl-images:ubuntu_source"
],
"file_denylist": [],
"startup": ".\/LAC_Linux_v{{VER}}.x86_64",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Done!\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\ncd \/mnt\/server &&\r\n\r\n# installing dependencies\r\napt-get update -y &&\r\napt-get install -y wget screen unzip libc6-i386 lib32stdc++6 &&\r\n\r\n# delete the previous file (if it is in the file manager)\r\nrm -f LAC_Linux_v${VER}.x86_64 && rm -rf LAC_Linux_v${VER}_Data &&\r\n\r\n# Using another version still under development!\r\n#echo \"checking the given version file and download it... v${VER}.\"\r\n#wget https:\/\/dl.lacrimesonline.com\/builds\/LAC_v${VER}\/LAC_Linux_Server_v${VER}.zip -O LAC_Linux_Server_v${VER}.zip || echo \"VERSION v${VER} IS NOT FOUND! Use v1.6 instead...\" && exit 1\r\n\r\nwget https:\/\/dl.lacrimesonline.com\/builds\/LAC_v${VER}\/LAC_Linux_Server_v${VER}.zip -O LAC_Linux_Server_v${VER}.zip &&\r\necho \"successfully downloaded v${VER} files.!\" &&\r\n\r\n# Extracting & remove the zip file\r\nunzip .\/LAC_Linux_Server_v${VER}.zip &&\r\nrm -f .\/LAC_Linux_Server_v${VER}.zip &&\r\n\r\n# Make the main file executable....\r\nchmod +x LAC_Linux_v${VER}.x86_64 &&\r\n\r\necho \"INSTALATION COMPLETE!\"",
"container": "ubuntu:18.04",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Version",
"description": "The build version is available at https:\/\/dl.lacrimesonline.com\/builds\/. Just write a numeric version like 1.6, don't use any other characters than numbers and periods. If the entered version is incorrect\/non-existent it will use version 1.6 (for now). After replacing it, then reinstall this server. [ THIS FEATURE IS STILL IN DEVELOPMENT ]",
"env_variable": "VER",
"default_value": "1.6",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
}
]
}
-2
View File
@@ -13,7 +13,6 @@ Its set in infinitely-generated worlds of wide open terrain - icy mountains,
## [Java](java) Servers for Java Minecraft
* [Airplane](java/airplane)
* [Cuberite](java/cuberite)
* [Fabric](java/fabric)
* [Feather](java/feather)
@@ -44,7 +43,6 @@ Its set in infinitely-generated worlds of wide open terrain - icy mountains,
* [Java](proxy/java)
* [FlameCord](proxy/java/flamecord)
* [Travertine](proxy/java/travertine)
* [TyphoonLimbo](proxy/java/typhoonlimbo)
* [Velocity](proxy/java/velocity)
* [VIAaas](proxy/java/viaaas)
* [Waterfall](proxy/java/waterfall)
@@ -0,0 +1,19 @@
# Purpur-Geyser-Floodgate
Purpur-GeyserMC-Floodgate is a drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features, with the addition of GeyserMC and Floodgate
[Purpur GitHub](https://github.com/PurpurMC/Purpur)
[Purpur Website](https://purpurmc.org/)
[GeyserMC/Floodgate Website](https://geysermc.org/)
[GeyserMC GitHub](https://github.com/GeyserMC/Geyser)
[Floodgate GitHub](https://github.com/GeyserMC/Floodgate/)
## Server Ports
The minecraft server requires a single port for access (default 25565). GeyserMC requires an additional port (default 19132). Any other plugins you add may require extra ports to enabled for the server.
| Port | default |
|----------|---------|
| Java | 25565 |
| Bedrock | 19132 |
@@ -0,0 +1,66 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-12-18T19:20:26-05:00",
"name": "Purpur-Geyser-Floodgate",
"author": "purpur@birdflop.com",
"description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features, with the addition of GeyserMC and Floodgate",
"features": [
"eula",
"java_version",
"pid_limit"
],
"images": [
"ghcr.io\/pterodactyl\/yolks:java_17",
"ghcr.io\/pterodactyl\/yolks:java_16",
"ghcr.io\/pterodactyl\/yolks:java_11",
"ghcr.io\/pterodactyl\/yolks:java_8"
],
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true --add-modules=jdk.incubator.vector -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}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=purpur\r\n\r\n# Download paths for Geyser and Floodgate. Do not change!!\r\nGEYSER_DOWNLOAD_URL=https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/Geyser\/job\/master\/lastSuccessfulBuild\/artifact\/bootstrap\/spigot\/target\/Geyser-Spigot.jar\r\nFLOODGATE_DOWNLOAD_URL=https:\/\/ci.opencollab.dev\/job/GeyserMC\/job/Floodgate\/job/master\/lastSuccessfulBuild\/artifact\/spigot\/build\/libs\/floodgate-spigot.jar\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.purpurmc.org\/v2\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.purpurmc.org\/v2\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.purpurmc.org\/v2\/${PROJECT}\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.purpurmc.org\/v2\/${PROJECT}\/${MINECRAFT_VERSION} | jq -r '.builds.latest'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.purpurmc.org\/v2\/${PROJECT}\/${MINECRAFT_VERSION}\/${BUILD_NUMBER}\/download\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Downloading the requested purpur buid with curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\nmkdir -p \/mnt\/server\/plugins\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\necho -e \"Downloading last successful build with curl -o plugins\/geyser-spigot ${GEYSER_DOWNLOAD_URL}\"\r\ncurl -o plugins\/geyser-spigot.jar ${GEYSER_DOWNLOAD_URL}\r\n\r\necho -e \"Downloading last successful build with curl -o plugins\/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}\"\r\ncurl -o plugins\/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n\techo -e \"Downloading MC server.properties\"\r\n\tcurl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Minecraft Version",
"description": "The version of Minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.",
"env_variable": "MINECRAFT_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
},
{
"name": "Server Jar File",
"description": "The name of the .jar file to run the server with.",
"env_variable": "SERVER_JARFILE",
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/|max:80"
},
{
"name": "Build Number",
"description": "The build number for the Purpur release.\r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest-stable.\r\n\r\nAccepted values: 'latest-stable' 'latest-successful'",
"env_variable": "BUILD_NUMBER",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
}
]
}
-5
View File
@@ -110,11 +110,6 @@ This is a direct fork of the default spigot service with the added benefit of be
- (It's noted that building the jar is intensive and time consuming)
### [Airplane](airplane)
[Airplane Github](https://github.com/TECHNOVE/Airplane)
A stable, optimized and well supported Paper fork.
## Sponge Powered
### [SpongeForge](spongeforge)
@@ -1,15 +0,0 @@
# Airplane
A stable, optimized, well supported Paper fork.
[Airplane Github](https://github.com/TECHNOVE/Airplane)
## Minimum RAM warning
Approximately 2048MB
## Server Ports
| Port | default |
|---------|---------|
| Game | 25565 |
@@ -1,66 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-12-09T13:31:17-05:00",
"name": "Airplane",
"author": "info@ttr3.eu",
"description": "A stable, optimized and fast Paper fork.\r\nhttps:\/\/github.com\/TECHNOVE\/Airplane",
"features": [
"eula",
"java_version",
"pid_limit"
],
"images": [
"ghcr.io\/pterodactyl\/yolks:java_17",
"ghcr.io\/pterodactyl\/yolks:java_16",
"ghcr.io\/pterodactyl\/yolks:java_11",
"ghcr.io\/pterodactyl\/yolks:java_8"
],
"file_denylist": [],
"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": "apt update\r\napt -y install wget\r\ncd \/mnt\/server\r\nif [ -z \"$BUILDVERSION\" ] || [ \"$BUILDVERSION\" == \"latest\" ]; then\r\n wget https:\/\/ci.tivy.ca\/job\/Airplane-${VER}\/lastSuccessfulBuild\/artifact\/launcher-airplane.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https:\/\/ci.tivy.ca\/job\/Airplane-${VER}\/${BUILDVERSION}\/artifact\/launcher-airplane.jar -O ${SERVER_JARFILE}\r\nfi",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Server file name",
"description": "Here you can set the server jar's name",
"env_variable": "SERVER_JARFILE",
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
},
{
"name": "Minecraft Version",
"description": "Here you can set the server's version (1.17 or 1.16)",
"env_variable": "VER",
"default_value": "1.17",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
},
{
"name": "Build version",
"description": "Here you can set which build version you want to use from Airplane release\r\n(You can see the version from this site https:\/\/ci.tivy.ca)\r\n\r\nExample: https:\/\/ci.tivy.ca\/job\/Airplane-1.17\/(Build version)\/artifact\/launcher-airplane.jar",
"env_variable": "BUILDVERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
}
]
}
+4
View File
@@ -11,3 +11,7 @@ The minecraft server requires a single port for access (default 25565) but plugi
| Port | default |
|-------|---------|
| Game | 25565 |
## Notes
Providing a Minecraft version of ``latest`` or an empty value will default to 1.18.2 as this is the latest version that Magma supports at this time.
There is no API to query to find the true latest supported version.
+16 -12
View File
@@ -1,10 +1,10 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-05-22T00:20:47-04:00",
"exported_at": "2022-09-28T18:19:11+00:00",
"name": "Magma",
"author": "support@pterodactyl.io",
"description": "Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability.",
@@ -13,11 +13,12 @@
"java_version",
"pid_limit"
],
"images": [
"ghcr.io\/pterodactyl\/yolks:java_8",
"ghcr.io\/pterodactyl\/yolks:java_11",
"ghcr.io\/pterodactyl\/yolks:java_17"
],
"docker_images": {
"Java 17": "ghcr.io\/pterodactyl\/yolks:java_17",
"Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
"Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
"Java 8": "ghcr.io\/pterodactyl\/yolks:java_8"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
@@ -28,8 +29,8 @@
},
"scripts": {
"installation": {
"script": "apt update\r\napt install -y curl jq\r\n\r\nif [[ ! -d \/mnt\/server ]]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\n# get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/1.16.5\/latest\")\r\n\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION = \"latest\"\r\nfi\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq -r .link | grep -i installer.jar)\r\nelif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/${TAG_VERSION}\")\r\n DOWNLOAD_LINK=$(echo ${CUSTOM_JSON} | jq -r .link | grep -i installer.jar)\r\nelif [[ \"${MC_VERSION}\" == \"1.12\" ]]; then\r\n CUSTOM_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/1.12\/${TAG_VERSION}\")\r\n DOWNLOAD_LINK=$(echo ${CUSTOM_JSON} | jq -r .link | grep -i server.jar)\r\nelse\r\n echo -e \"Specified ${MC_VERSION} version not found. Defaulting to latest\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .link)\r\nfi\r\n\r\n# validate download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nfunction downloadMagma {\r\n echo -e \"running: curl -sSL -o installer.jar ${DOWNLOAD_LINK}\"\r\n curl -sSL -o installer.jar -sSL ${DOWNLOAD_LINK}\r\n}\r\n\r\nif [[ $MC_VERSION =~ ^1\\.(16|17|18|19|20|21|22|23) ]] || [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]] ; then\r\n downloadMagma\r\n echo -e \"1.16.5 or newer version detected. Running installer\"\r\n java -jar installer.jar --installServer || { echo -e \"install failed\" exit 4; }\r\n mv forge-*.jar $SERVER_JARFILE\r\n echo -e \"Deleting installer.jar file.\\n\"\r\n rm -rf *installer.jar\r\nelse\r\n downloadMagma\r\n echo -e \"Older magma version detected. Skipping installer\"\r\n mv installer.jar $SERVER_JARFILE\r\nfi\r\n\r\necho -e \"Install Complete\"",
"container": "openjdk:8-jdk-slim",
"script": "apt update\r\napt install -y curl jq\r\n\r\ncd \/mnt\/server\/\r\n\r\n# Hard coded latest version as the magma API doesn't have an endpoint to query for it\r\nLATEST_VERSION=\"1.18.2\"\r\n\r\n# Default TAG_VERSION if empty\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION=\"latest\"\r\nfi\r\n\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n MC_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\necho \"Attempting to install Magma - Version ${MC_VERSION} - Tag ${TAG_VERSION}\"\r\n\r\nif [[ \"${TAG_VERSION}\" == \"latest\" ]]; then\r\n # Didn't ask for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\")\r\nelse\r\n # Asked for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\/${TAG_VERSION}\")\r\nfi\r\n\r\nDOWNLOAD_LINK=$(echo ${VERSION_JSON} | jq -r .link)\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n \r\n # Validate that link works\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"No download URL found. Terminating install.\"\r\n exit 2\r\nfi\r\n\r\n\r\n# Download server.jar\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\necho -e \"Install Complete\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -41,7 +42,8 @@
"default_value": "server.jar",
"user_viewable": true,
"user_editable": false,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
"field_type": "text"
},
{
"name": "Minecraft Version",
@@ -50,7 +52,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20"
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Tag Version",
@@ -59,7 +62,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20"
"rules": "nullable|string|max:20",
"field_type": "text"
}
]
}
@@ -6,6 +6,7 @@
* [Blightfall](/game_eggs/minecraft/java/technic/blightfall/)
* [Hexxit](/game_eggs/minecraft/java/technic/hexxit/)
* [Tekkit](/game_eggs/minecraft/java/technic/Tekkit/)
* [Tekkit 2](/game_eggs/minecraft/java/technic/Tekkit-2/)
* [Tekkit Classic](/game_eggs/minecraft/java/technic/tekkit-classic/)
* [Tekkit Legends](/game_eggs/minecraft/java/technic/tekkit-legends/)
* [The 1.7.10 Pack](/game_eggs/minecraft/java/technic/the-1-7-10-pack/)
@@ -0,0 +1,9 @@
# Minecraft: Tekkit 2
## 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 |
@@ -0,0 +1,46 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-08-29T15:07:44+02:00",
"name": "Tekkit 2",
"author": "josdekurk@gmail.com",
"description": "Those of you who are nostalgic for the early days of Tekkit (now known as Tekkit Classic), will love what awaits you in Tekkit 2!\r\n\r\nWith a collection of nostalgic mods and plenty of new improvements, Tekkit 2 is sure to capture the feeling of possibility and consequence that you felt while exploring the world of machines and contraptions that made the original fun. Keep an eye out for classics such as IndustrialCraft, ProjectE (Equivalent Exchange), Project Red (RedPower) and BuildCraft, alongside additions such as Galacticraft and Tekkit Jaffa Cakes! The world is yours to bend and exploit to your will, whether through alchemy or sprawling factories and mines.\r\n\r\nWhat fresh horrors will you create?",
"features": [
"eula",
"java_version"
],
"docker_images": {
"Java8": "ghcr.io\/pterodactyl\/yolks:java_8",
"Java11": "ghcr.io\/pterodactyl\/yolks:java_11"
},
"file_denylist": [],
"startup": "java -server -Xms128M -Xmx{{SERVER_MEMORY}}M -Dfml.queryResult=confirm -jar forge.jar nogui",
"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\": \"Server tick complete! \"\r\n}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Tekkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl zip unzip\r\n\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sSL https:\/\/servers.technicpack.net\/Technic\/servers\/tekkit-2\/Tekkit-2_Server_$MODPACK_VERSION.zip -o Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nunzip -o Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nrm -rf Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nrm RestoreBackup.bat\r\n\r\nrm LaunchServer.bat\r\n\r\nrm LaunchServer.sh\r\n\r\nrm RestoreBackup.sh\r\n\r\nmv forge-1.12.2-*.jar forge.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\/game_eggs\/minecraft\/java\/server.properties\r\nfi\r\n\r\necho \"done\"",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Modpack Version",
"description": "",
"env_variable": "MODPACK_VERSION",
"default_value": "v1.0.5",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:10",
"field_type": "text"
}
]
}
-1
View File
@@ -3,7 +3,6 @@
* [Java](/game_eggs/minecraft/proxy/java/)
* [FlameCord](/game_eggs/minecraft/proxy/java/flamecord)
* [Travertine](/game_eggs/minecraft/proxy/java/travertine)
* [TyphoonLimbo](/game_eggs/minecraft/proxy/java/typhoonlimbo)
* [Velocity](/game_eggs/minecraft/proxy/java/velocity)
* [VIAaaS](/game_eggs/minecraft/proxy/java/viaaas)
* [Waterfall](/game_eggs/minecraft/proxy/java/waterfall)
-4
View File
@@ -9,10 +9,6 @@ FlameCord is a patch for Travertine to fix possible exploits and add useful func
[Travertine](https://papermc.io/downloads#Travertine)
Waterfall, with additional support for Minecraft 1.7.10.
#### TyphoonLimbo
[TyphoonLimbo](https://github.com/TyphoonMC/TyphoonLimbo)
A limbo server is a fallback server able to handle a massive amount of simultaneous connections. The player spawns into the void then waits here. It can be used to keep players connected to a network after a lobby crashed or as an afk server.
#### Velocity
[Velocity](https://velocitypowered.com)
Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.
@@ -1,10 +0,0 @@
# TyphoonLimbo server
A limbo server is a fallback server able to handle a massive amount of simultaneous connections. The player spawns into the void then waits here. It can be used to keep players connected to a network after a lobby crashed or as an afk 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 |
@@ -1,33 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-11-25T23:59:39+00:00",
"name": "TyphoonLimbo",
"author": "parker@parkervcp.com",
"description": "Lightweight minecraft limbo server",
"features": [
"pid_limit"
],
"images": [
"ghcr.io\/parkervcp\/yolks:debian"
],
"file_denylist": [],
"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\/bash\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\napt update\r\napt install -y 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.14-buster",
"entrypoint": "bash"
}
},
"variables": []
}
@@ -29,7 +29,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\n\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\n VELOCITY_VERSION=\"latest\"\r\nfi\r\n\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\n echo -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\n\r\n VER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\n LATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\n\r\n if [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\n else\r\n\r\n echo -e \"Using the latest ${PROJECT} version\"\r\n VELOCITY_VERSION=${LATEST_VERSION}\r\n fi\r\n BUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\n LATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\n\r\n if [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\n else\r\n echo -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\n BUILD_NUMBER=${LATEST_BUILD}\r\n fi\r\n\r\n JAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n echo \"Version being downloaded\"\r\n echo -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\n echo -e \"Build: ${BUILD_NUMBER}\"\r\n echo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\r\n DOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\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\nif [[ -f velocity.toml ]]; then\r\n echo -e \"velocity config file exists\"\r\nelse\r\n echo -e \"downloading velocity config file.\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\n\r\nfi\r\necho -e \"install complete\"",
"script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\nVELOCITY_VERSION=\"latest\"\r\nfi\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\necho -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\nDOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\nVER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\nLATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\nif [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} version\"\r\nVELOCITY_VERSION=${LATEST_VERSION}\r\nfi\r\nBUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\nif [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\nBUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\nJAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\nif [[ -f ${SERVER_JARFILE} ]]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\nif [[ -f velocity.toml ]]; then\r\necho -e \"velocity config file exists\"\r\nelse\r\necho -e \"downloading velocity config file.\"\r\ncurl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\nif [[ -f forwarding.secret ]]; then\r\necho -e \"velocity forwarding secret file already exists\"\r\nelse\r\necho -e \"creating forwarding secret file\"\r\ntouch forwarding.secret\r\ndate +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\necho -e \"install complete\"",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
@@ -72,4 +72,4 @@
"rules": "required|string|max:20"
}
]
}
}
@@ -1,19 +1,28 @@
# Config version. Do not change this
config-version = "1.0"
config-version = "2.5"
# 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"
motd = "&#09add3A 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 the proxy enforce the new public key security standard? By default, this is on.
force-key-authentication = true
# If client's ISP/AS sent from this proxy is different from the one from Mojang's
# authentication server, the player is kicked. This disallows some VPN and proxy
# connections but is a weak form of protection.
prevent-client-proxy-connections = false
# 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
@@ -26,17 +35,22 @@ prevent-client-proxy-connections = false
# - "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 = "legacy"
# If you are using modern or BungeeGuard IP forwarding, configure an unique secret here.
forwarding-secret = ""
# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here.
# The file is expected to be UTF-8 encoded and not empty.
forwarding-secret-file = "forwarding.secret"
# Announce whether or not your server supports Forge. If you run a modded server, we
# suggest turning this on.
#
# If your network runs one modpack consistently, consider using ping-passthrough = "mods"
# instead for a nicer display in the server list.
announce-forge = false
# If enabled (default is false) and the proxy is in online mode, Velocity will kick
# any existing player who is online if a duplicate connection attempt is made.
kick-existing-players = false
# Should Velocity pass server list ping requests to a backend server?
# Available options:
# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png
@@ -52,84 +66,90 @@ kick-existing-players = false
# configuration is used if no servers could be contacted.
ping-passthrough = "DISABLED"
# If not enabled (default is true) player IP addresses will be replaced by <ip address withheld> in logs
enable-player-address-logging = true
[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"
# In what order we should try servers when a player logs in or is kicked from aserver.
try = ["lobby"]
factions = "127.0.0.1:30067"
# 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"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"
# In what order we should try servers when a player logs in or is kicked from a server.
try = [
"lobby"
]
[forced-hosts]
"minigames.example.com" = ["minigames"]
# Configure your forced hosts here.
"lobby.example.com" = ["lobby"]
"factions.example.com" = ["factions"]
# Configure your forced hosts here.
"lobby.example.com" = [
"lobby"
]
"factions.example.com" = [
"factions"
]
"minigames.example.com" = [
"minigames"
]
[advanced]
# Specify a custom timeout for connection timeouts here. The default is five seconds.
connection-timeout = 5000
# Enables BungeeCord plugin messaging channel support on Velocity.
bungee-plugin-message-channel = true
# Specify a read timeout for connections here. The default is 30 seconds.
read-timeout = 30000
# Enables compatibility with HAProxy.
proxy-protocol = false
# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
tcp-fast-open = true
# Shows ping requests to the proxy from clients.
show-ping-requests = false
# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly
# loses connection to the server without an explicit disconnect message by attempting to fall the
# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You
# can disable this setting to use the BungeeCord behavior.
failover-on-unexpected-server-disconnect = true
# How much compression should be done (from 0-9). The default is -1, which uses the
# default level of 6.
compression-level = -1
# Declares the proxy commands to 1.13+ clients.
announce-proxy-commands = true
# Enables the logging of commands
log-command-executions = false
# 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 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
# 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's PROXY protocol. If you don't know what this is for, then
# don't enable it.
haproxy-protocol = false
# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
tcp-fast-open = false
# Enables BungeeCord plugin messaging channel support on Velocity.
bungee-plugin-message-channel = true
# Shows ping requests to the proxy from clients.
show-ping-requests = false
# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly
# loses connection to the server without an explicit disconnect message by attempting to fall the
# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You
# can disable this setting to use the BungeeCord behavior.
failover-on-unexpected-server-disconnect = true
# Declares the proxy commands to 1.13+ clients.
announce-proxy-commands = true
# Enables the logging of commands
log-command-executions = false
# Enables logging of player connections when connecting to the proxy, switching servers
# and disconnecting from the proxy.
log-player-connections = true
[query]
# If query is enabled, on what port should the query protocol listen on?
port = 25577
# Whether plugins should be shown in query response by default or not
show-plugins = false
# This is the map name that is reported to the query services.
map = "Velocity"
# Whether to enable responding to GameSpy 4 query responses or not.
enabled = false
# Whether to enable responding to GameSpy 4 query responses or not.
enabled = false
[metrics]
# A unique, anonymous ID to identify this proxy with.
id = ""
log-failure = false
# 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 = false
# If query is enabled, on what port should the query protocol listen on?
port = 25577
# Legacy color codes and JSON are accepted in all messages.
[messages]
generic-connection-error = "&cAn internal error occurred in your connection."
already-connected = "&cYou are already connected to this proxy!"
online-mode-only = "&cThis server only accepts connections from online-mode clients.\n\n&7Did you change your username? Sign out of Minecraft, sign back in, and try again."
# Prefix when the player is disconnected from a server.
# First argument '%s': the server name
disconnect-prefix = "&cCan't connect to %s: "
no-available-servers = "&cThere are no available servers."
# Prefix when the player gets kicked from a server.
# First argument '%s': the server name
kick-prefix = "&cKicked from %s: "
moved-to-new-server-prefix = "&cThe server you were on kicked you: "
# 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
+15
View File
@@ -0,0 +1,15 @@
# Medal of Honor: Allied Assault
Medal of Honor: Allied Assault is a first-person shooter video game developed by 2015, Inc.
### Server Ports
| Port | default |
| ---- | ------- |
| Game | 12203 |
This egg uses the Unofficial MoH:AA 1.12 Patch that addes several features and security updates to allow a fair multiplayer experience.
Ones the server is installed you can check the File Manager for `Medal of Honor Reborn Patch Documentation RC3.5.1.pdf` for more information.
Check the `main/server.cfg` in the File Manager for more configuration options.
+104
View File
@@ -0,0 +1,104 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-09-29T23:01:20+02:00",
"name": "mohaa",
"author": "th3dilli@gmx.at",
"description": null,
"features": null,
"images": [
"ghcr.io\/parkervcp\/games:mohaa"
],
"file_denylist": [],
"startup": ".\/mohaa_lnxded +set sv_punkbuster 0 +set fs_basepath {{BASE_PATH}} +set fs_outputpath {{LOG_DIR}} +set dedicated 2 +set sv_maxclients {{SERVER_MAXCLIENTS}} +set net_ip 0.0.0.0 +set net_port {{SERVER_PORT}} +exec server.cfg",
"config": {
"files": "{\r\n \"main\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"seta sv_hostname\": \"seta sv_hostname \\\"{{env.SERVER_NAME}}\\\"\",\r\n \"seta sv_maxClients\": \"seta sv_maxClients \\\"{{env.SERVER_MAXCLIENTS}}\\\"\",\r\n \"seta rconPassword\": \"seta rconPassword \\\"{{env.RCON_PASSWORD}}\\\"\",\r\n \"seta g_password\": \"seta g_password \\\"{{env.SERVER_PASSWORD}}\\\"\",\r\n \"Map\": \"Map {{env.SERVER_MAP}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\",\r\n \"userInteraction\": []\r\n}",
"logs": "{}",
"stop": "quit"
},
"scripts": {
"installation": {
"script": "apk --no-cache add curl\r\n\r\nif [[ ! -d \/mnt\/server\/ ]]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nDOWNLOAD_URL=https:\/\/linuxgsm.download\/MedalofHonorAlliedAssault\/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main\/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main\/server.cfg\r\n\r\necho -e \"running 'chmod +x .\/mohaa_lnxded'\"\r\nchmod +x .\/mohaa_lnxded",
"container": "alpine:3.4",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "SERVER_MAXCLIENTS",
"description": "",
"env_variable": "SERVER_MAXCLIENTS",
"default_value": "14",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer"
},
{
"name": "CONFIG_URL",
"description": "URL from where to get the initial server.cfg",
"env_variable": "CONFIG_URL",
"default_value": "https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/mohaa\/game_eggs\/mohaa\/server.cfg",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "SERVER_NAME",
"description": "The name of the server",
"env_variable": "SERVER_NAME",
"default_value": "MOHAA Server running on Pterodactyl",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "RCON_PASSWORD",
"description": "Admin password for rcon",
"env_variable": "RCON_PASSWORD",
"default_value": "ADMINPASSWORD",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "SERVER_MAP",
"description": "Select the map\r\n\r\nobj\/obj_team2\r\ndm\/mohdm7\r\ndm\/mohdm1\r\ndm\/mohdm3\r\ndm\/mohdm2\r\ndm\/mohdm6",
"env_variable": "SERVER_MAP",
"default_value": "dm\/mohdm7",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "LOG_DIR",
"description": "",
"env_variable": "LOG_DIR",
"default_value": "\/home\/container\/Logs",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "BASE_PATH",
"description": "",
"env_variable": "BASE_PATH",
"default_value": "\/home\/container",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "SERVER_PASSWORD",
"description": "",
"env_variable": "SERVER_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
}
]
}
+109
View File
@@ -0,0 +1,109 @@
// General Settings
seta sv_hostname "SERVERNAME"
seta sv_maxRate "10000" // DO NOT SET OVER 15000 OR YOUR ACCOUNT WILL BE LOCKED!
seta sv_timeout "200" //amount of time before assuming a disconnected state
seta sv_precache "1"
seta sv_fps "19" //max frame rate to clients - increasing will raise pings
seta sv_maxClients "14"
seta sv_allowDownload "0"
seta sv_reconnectlimit "3"
seta sv_zombietime "1"
seta g_inactivity "180"
seta g_forcerespawn "30"
seta g_syncronousclients "0"
seta sv_chatter "1"
// Server Passwords
seta rconPassword "ADMINPASSWORD"
seta g_password ""
seta sv_privateClients "" //LOCKED SERVER PASSWORD
seta sv_privatePassword "" //PRIVATE SLOTS PASSWORD
// Server Network Settings
set sv_flood_waitdelay "10" //not too sure on this, possibly time before flooder is allowed to type again (default)
set sv_flood_persecond "4" //messages per second to be considered a flood ?? (default)
set sv_flood_msgs "4" // ?? (default)
net_noipx "1" //Disallows IPX connections, TCP only (network protocol)
// Logs
//Logging
seta logfile "3"
seta g_log "mohserver.log"
seta g_logSync "0"
// Extras
seta sv_maxPing "1000"
seta sv_minPing "0"
seta sv_floodProtect "1"
// Game Type Settings - ATTN-May be overwritten by MOH config file below
// Set the type of game: 1=Deathmatch 2= Team match 3 = OBJ 4 = Roundbased
seta g_gametype "3"
seta timelimit "10"
seta fraglimit "0"
set g_ft_settings "cvar: meltgun scanvis"
set g_extgametype_mohdm1 ctf // Free-For-All for Southern France
set g_extgametype_mohdm2 ft // Team-Match on Destroyed Village
set g_extgametype_mohdm3 ftctf // Freeze-Tag on Remagen
set g_extgametype_mohdm4 ftctf // Freeze-Tag on Crossroads
set g_extgametype_mohdm5 ftdem // Round-Based-Match on Snowy Park
set g_extgametype_mohdm6 ftdem // Demolition on Stalingrad
set g_extgametype_mohdm7 ft// Capture-The-Flag on Algiers
set g_extgametype_obj_team1 ftobj // Freeze-Tag-Objective on The Hunt
set g_extgametype_obj_team2 ftobj // Objective-Match on V2 Rocket Facility
set g_extgametype_obj_team3 ftctf // Capture-The-Flag on Omaha Beach
set g_extgametype_obj_team4 ftobj // Freeze-Tag-Objective on The Bridge
// seta capturelimit "6"
seta sv_gamespy "1" // Show our server in gamespy
// Game Play Default Settings
//seta g_gravity "800"
//seta g_knockback "1000"
//seta g_quadfactor "3"
//seta g_speed "320"
//seta g_weaponRespawn "5"
//seta g_weaponTeamRespawn "30" //respawn time in seconds for team games
//seta dmflags "0" // 8 (no falling damage) 16 (fixed FOV) 32 (no footsteps)
// Match Settings
seta g_doWarmup "0"
seta g_warmup "20"
// Team Preferences
seta g_teamAutoJoin "0"
seta g_teamForceBalance "1"
// seta g_friendlyFire "0"
seta g_teamdamage "0" // FF on or Off 1 = on
// Voting
seta g_allowVote "1"
// Master Servers
seta sv_master1 "mohmaster.2015.com"
seta sv_master2 "master0.gamespy.com"
seta sv_master3 "master1.gamespy.com"
set g_mef_settings "meltgun: on"
// Banned Players
seta g_filterBan "1"
seta sv_maplist "obj/obj_team2 dm/mohdm7 dm/mohdm1 dm/mohdm3 dm/mohdm2 dm/mohdm6"
Map dm/mohdm7
+8
View File
@@ -28,6 +28,10 @@ This is a collection of servers that use SteamCMD to install.
[Barotrauma](barotrauma)
## Black Mesa
[Black Mesa](black_mesa)
## Citadel: Forged with Fire
[citadel](citadel)
@@ -96,6 +100,10 @@ This is a collection of servers that use SteamCMD to install.
[Onset](onset)
## Open Fortress
[Open Fortress](open_fortress)
## Pavlov VR
[Pavlov VR](pavlov_vr)
@@ -0,0 +1,17 @@
# Black Mesa
## From their [Website](https://www.crowbarcollective.com/games/black-mesa)
Black Mesa is a 2020 first-person shooter game. It is a third-party remake of Half-Life (1998) made in the Source game engine.
## Server Ports
BlackMessa servers require 2 ports to be open, the SourceTV port can also be opened for spectators.
| Port | default |
|-----------|---------|
| Game/rcon | 27015 |
| SourceTV | 27020 |
| ClientPort | 27005 |
## Steam Download [SteamStore](https://store.steampowered.com/app/362890/Black_Mesa/)
@@ -0,0 +1,92 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-08-07T17:56:38+02:00",
"name": "Black Mesa",
"author": "avalongamecs@gmail.com",
"description": "Black Mesa is a 2020 first-person shooter game. It is a third-party remake of Half-Life (1998) made in the Source game engine.",
"features": null,
"docker_images": {
"quay.io\/pterodactyl\/core:source": "quay.io\/pterodactyl\/core:source"
},
"file_denylist": [],
"startup": ".\/srcds_run -game {{SRCDS_GAME}} -strictportbind -ip 0.0.0.0 -port {{SERVER_PORT}} +clientport {{SRCDS_CPORT}} +tv_port {{SRCDS_STV}} +map {{SRCDS_MAP}} +servercfgfile server.cfg -maxplayers {{MAX_PLAYERS}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"gameserver Steam ID\"\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 'debian:buster-slim'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Game ID",
"description": "nmrih id",
"env_variable": "SRCDS_APPID",
"default_value": "346680",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Game Name",
"description": "game name",
"env_variable": "SRCDS_GAME",
"default_value": "bms",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Default Map",
"description": "default map",
"env_variable": "SRCDS_MAP",
"default_value": "dm_crossfire",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:25",
"field_type": "text"
},
{
"name": "Client port",
"description": "client port",
"env_variable": "SRCDS_CPORT",
"default_value": "27005",
"user_viewable": true,
"user_editable": false,
"rules": "required|regex:\/^(\\w{1,20})$\/",
"field_type": "text"
},
{
"name": "Source TV",
"description": "source TV",
"env_variable": "SRCDS_STV",
"default_value": "27020",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Max Players",
"description": "The maximum amount of players allowed on your game server.",
"env_variable": "MAX_PLAYERS",
"default_value": "32",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|max:128",
"field_type": "text"
}
]
}
@@ -0,0 +1,86 @@
; Game World Data Setting - name, difficulty, gameMode
; name : world name
; difficulty 0- Easy, 1- Normal(default), 2- Hard, 3- VeryHard
; gameMode 1- NormalWorld(default), 2- CreativeWorld_Build, 3- CreativeWorld_Play
; Server Setting - port : used when not using steam lobby function
; maxPlayerNumber : maximum number of player can join into the server(1 ~ 127)
; usePassword : using server password(1- True / 0- False)
; serverPassword : setting server password up to 8 digit number pin
; Graphics Setting - vSyncCount, maxFPS, grassBend, clothSimOption
; vSyncCount : vertical sync, 0- disable, 1- once per frame 2- per two frame
; maxFPS : max frames per second, set to -1 for unlimited fps
; grassBend : enable Grass Bend(1- True / 0- False)
; ClothSimOption : cloth simulation, 1- animate everybody's, 2- animate nobody's
; Save Setting - autoSaveSec, autoSavePerHour
; autoSaveSec : autoSavePer ** second, to disable, set to -1
; autoSavePerHour : enable autoSavePerHour(1- True / 0- False)
; savePath : relative path base on ServerSetting.ini folder or absolute path
; Creative Mode Setting -
; quickCraft : crafting without checking item cost(1- True / 0- False)
; ageLevel : age Level of the game world, effect crafting recipe
; islandLevel : island level override, effect monster and dungeon level, set to -1 to disable override
; noDeath : player character would not dead(1- True / 0- False)
; noDamage : player character would not take damage(1- True / 0- False)
; noHunger : player character would not be hungry(1- True / 0- False)
; infinitStamina : player character has infinit stamina(1- True / 0- False)
; forceDayTime : game world day time override, 0 to 24, set to -1 to disable
; buildingIgnoreDamage : building would not take damage(1- True / 0- False)
; noBuild : player can not place new building(1- True / 0- False)
; Creative Mode Player Status Override - apply at gameStart
; Level : override character level, set to 0 to disable
; Health : override character health, set to 0 to disable
; Mana : override character mana, set to 0 to disable
; Stamina : override character stamia, set to 0 to disable
; Money : override character money
; SkillPoint : override character skill point
; EnchantPoint : override character enchant point
[GameWorld]
name=NoName
difficulty=1
gameMode=1
[Host]
port=6587
maxPlayerNumber=7
usePassword=0
serverPassword=00000000
bindAddress=0.0.0.0
[Graphics]
vSyncCount=0
maxFPS=60
grassBend=0
clothSimOption=2
[Save]
autoSaveSec=300
autoSavePerHour=1
savePath=DedicatedServerSave/
[CreativeModeSetting]
quickCraft=1
ageLevel=7
islandLevel=-1
noDeath=1
noDamage=1
noHunger=1
infinitStamina=1
forceDayTime=-1
buildingIgnoreDamage=0
noBuild=0
[CreativeModePlStatus]
Level=0
Health=0
Mana=0
Stamina=0
Money=1000
SkillPoint=0
EnchantPoint=0
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-07-19T15:47:00+02:00",
"exported_at": "2022-10-07T17:08:45+02:00",
"name": "Craftopia",
"author": "info@goover.de",
"description": "Craftopia is the brand new multiplayer survival action game made in Japan. We combined many features we find enjoyable, such as hunting, farming, hack-and-slash, building, automation to develop this game.",
@@ -17,14 +17,14 @@
"file_denylist": [],
"startup": ".\/Craftopia.x86_64",
"config": {
"files": "{\r\n \"ServerSetting.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"GameWorld.name=\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"Host.port=\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"files": "{\r\n \"ServerSetting.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"GameWorld.name\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"Host.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"World is loaded!\"\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so",
"script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\ncd \/mnt\/server\r\nFILE=\/mnt\/server\/ServerSetting.ini\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file exist\"\r\nelse \r\n echo \"Config file does not exist, making one\"\r\n cd \/mnt\/server\r\n curl -sSL -o ServerSetting.ini https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/craftopia\/ServerSetting.ini\r\nfi\r\n\r\necho \"install finished\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
@@ -0,0 +1,14 @@
# Open Fortress
## From their [Website](https://openfortress.fun/)
Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.
## Server Ports
Open Fortress servers require 1 port to be open, the SourceTV port can also be opened for spectators.
| Port | default |
|-----------|---------|
| Game/rcon | 27015 |
| SourceTV | 27020 |
File diff suppressed because one or more lines are too long
@@ -0,0 +1,134 @@
"GameInfo"
{
game "Open Fortress"
title ""
title2 ""
gamelogo "1"
developer "https://github.com/AgitationSkeleton/open_fortress/blob/master/credits.txt"
developer_url "https://github.com/KaidemonLP/Open-Fortress-Source"
manual ""
type "multiplayer_only"
hasportals "0" // gameui.dll
hashdcontent "0" // gameui.dll
nomodels "0" // gameui.dll
nohimodel "0" // gameui.dll
nocrosshair "0" // gameui.dll
advcrosshair "1" // gameui.dll
nodifficulty "1" // gameui.dll
supportsvr "0" // engine.dll + gameui.dll
bots "0" // gameui.dll
nodegraph "1" // engine.dll
perfwizard "0" // unused
SupportsDX8 "0" // unused
SupportsDX9 "1" // unused
SupportsDX10 "0" // unused
SupportsDX11 "0" // unused
SupportsXbox "0" // unused
SupportsXbox360 "0" // unused
SupportsXboxOne "0" // unused
SupportsPS3 "0" // unused
SupportsPS4 "0" // unused
icon "resource/game"
GameData "ofd_fic2.fgd"
InstancePath "maps/instances/"
hidden_maps
{
"test_speakers" 1
"test_hardware" 1
"background01" 1
"background02" 1
"background03" 1
"background04" 1
"background05" 1
"background06" 1
"background07" 1
"background08" 1
"background09" 1
"background12" 1
"background15" 1
"ep1_c17_00" 1
"ep1_c17_00a" 1
"ep1_c17_01" 1
"ep1_c17_01a" 1
"ep1_c17_02" 1
"ep1_c17_02a" 1
"ep1_c17_02b" 1
"ep1_c17_05" 1
"ep1_c17_06" 1
"ep1_citadel_00" 1
"ep1_citadel_00_demo" 1
"ep1_citadel_01" 1
"ep1_citadel_02" 1
"ep1_citadel_02b" 1
"ep1_citadel_03" 1
"ep1_citadel_04" 1
"ep1_background01" 1
"ep1_background01a" 1
"ep1_background02" 1
"ep2_outland_01" 1
"ep2_outland_01a" 1
"ep2_outland_02" 1
"ep2_outland_03" 1
"ep2_outland_04" 1
"ep2_outland_05" 1
"ep2_outland_06" 1
"ep2_outland_06a" 1
"ep2_outland_07" 1
"ep2_outland_08" 1
"ep2_outland_09" 1
"ep2_outland_10" 1
"ep2_outland_10a" 1
"ep2_outland_11" 1
"ep2_outland_11a" 1
"ep2_outland_11b" 1
"ep2_outland_12" 1
"ep2_outland_12a" 1
"ep2_background01" 1
"ep2_background02" 1
"ep2_background02a" 1
"ep2_background03" 1
"credits" 1
"vst_lostcoast" 1
"test" 1
"sdk_vehicles" 1
}
FileSystem
{
SteamAppId 243750
SearchPaths
{
game+mod |gameinfo_path|custom/*
game+game_write+mod+mod_write+default_write_path |gameinfo_path|.
gamebin |gameinfo_path|bin
// The lines below until the BREAK comment are responsible for the game resources to work properly
// in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,
// Source SDK and OF) in the same drive letter/partition. If you have a different storage configuration,
// feel free to modify the paths below between quotes (example: D:\Steam\steamapps\common\Team Fortress 2\tf).
game "/home/container/tf2/tf/tf2_misc.vpk"
game "/home/container/tf2/tf/tf2_sound_misc.vpk"
game "/home/container/tf2/tf/tf2_sound_vo_english.vpk"
game "/home/container/tf2/tf/tf2_textures.vpk"
game "/home/container/tf2/tf"
game "/home/container/tf2/hl2/hl2_textures.vpk"
game "/home/container/tf2/hl2/hl2_sound_vo_english.vpk"
game "/home/container/tf2/hl2/hl2_sound_misc.vpk"
// The hl2 folder here is from Source SDK Base 2013 Multiplayer.
game "|all_source_engine_paths|hl2\hl2_misc.vpk"
game "|all_source_engine_paths|hl2"
// ========== BREAK ==========
platform |all_source_engine_paths|platform/platform_misc.vpk
platform |all_source_engine_paths|platform
game+download |gameinfo_path|download
}
}
}
@@ -12,7 +12,7 @@
"steam_disk_space"
],
"images": [
"ghcr.io\/pterodactyl\/games:source"
"ghcr.io\/parkervcp\/games:source"
],
"file_denylist": [],
"startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -steamport1 {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"",
@@ -99,11 +99,11 @@ ___
___
### Installation/System Requirements
*Note (9/20/22): Update 6 drastically increased RAM requirement. Servers given less than minimum have a high chance of crashing.*
| | Bare Minimum | Recommended |
|---------|---------|---------|
| Processor | Recent x86/64 (AMD/Intel) processor. No 32 bit or ARM support. | Favours higher single-core performance over multiple cores. |
| RAM | 4096 MiB | 6144-8192 MiB (especially for 4 players or large save files) |
| RAM | 10240-12288 MiB | 16384-24576 MiB (especially for 4 players or large save files) |
| Storage | 5 GB | 7-10 GB (or more, depending on save size or frequency) |
| Network | 0.512 Mbit/s | 1-5 Mbit/s ([may require server *and* client config tweeks](https://satisfactory.fandom.com/wiki/Multiplayer#Temporary_lag_solution)) |
| Host OS | Most stable Linux OS branches should work | Using the latest kernel version for your installed OS can prevent some edge-case installation/boot issues. |
@@ -1,19 +1,19 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-07-02T04:25:07+03:00",
"exported_at": "2022-08-20T08:17:48+02: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.",
"features": [
"steam_disk_space"
],
"images": [
"quay.io\/parkervcp\/pterodactyl-images:ubuntu_source"
],
"docker_images": {
"ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source"
},
"file_denylist": [],
"startup": ".\/starbound_server",
"config": {
@@ -24,8 +24,8 @@
},
"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\/game_eggs\/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": "debian:buster-slim",
"script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\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\/game_eggs\/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 # Removes the trailing slash from the full path\r\n dir=${dir%*\/}\r\n echo Sym-linking mod ${dir##*\/} files into the mods folder\r\n INDEX=0\r\n for pakfile in ${dir}\/*.pak\r\n do\r\n ln -r -s $pakfile \/mnt\/server\/mods\/${dir##*\/}_${INDEX}.pak\r\n INDEX=$((INDEX+1))\r\n done\r\n done\r\nfi",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@@ -37,7 +37,8 @@
"default_value": "",
"user_viewable": false,
"user_editable": false,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Steam Password",
@@ -46,7 +47,8 @@
"default_value": "",
"user_viewable": false,
"user_editable": false,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Game ID",
@@ -55,7 +57,8 @@
"default_value": "211820",
"user_viewable": true,
"user_editable": false,
"rules": "string"
"rules": "string",
"field_type": "text"
},
{
"name": "Steam Auth",
@@ -64,7 +67,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:5"
"rules": "nullable|string|max:5",
"field_type": "text"
},
{
"name": "Auto Update Server",
@@ -73,7 +77,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Use Workshop content",
@@ -82,7 +87,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
}
]
}
@@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-11-25T23:18:02+00:00",
"exported_at": "2022-08-08T17:51:35+02:00",
"name": "The Forest",
"author": "admin@softwarenoob.com",
"description": "As the lone survivor of a passenger jet crash, you find yourself in a mysterious forest battling to stay alive against a society of cannibalistic mutants. Build, explore, survive in this terrifying first-person survival horror simulator.",
"features": [
"steam_disk_space"
],
"images": [
"ghcr.io\/parkervcp\/yolks:wine_latest"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest"
},
"file_denylist": [],
"startup": "xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 \/home\/container\/TheForestDedicatedServer.exe -batchmode -nographics -nosteamclient -savefolderpath \/home\/container\/TheForestDedicatedServer_Data -configfilepath \/home\/container\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg |grep -v 'RenderTexture.Create failed: format unsupported - 2.'",
"startup": "winetricks sound=disabled; export WINEDEBUG=-all; xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 \/home\/container\/TheForestDedicatedServer.exe -batchmode -nographics -nosteamclient -savefolderpath \/home\/container\/TheForestDedicatedServer_Data -configfilepath \/home\/container\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg |grep -v 'RenderTexture.Create failed: format unsupported - 2.'",
"config": {
"files": "{\r\n \"\/TheForestDedicatedServer_Data\/forest\/config\/config.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"serverIP\": \"serverIP 0.0.0.0\",\r\n \"serverSteamPort\": \"serverSteamPort {{server.build.env.STEAM_PORT}}\",\r\n \"serverGamePort\": \"serverGamePort {{server.build.default.port}}\",\r\n \"serverQueryPort\": \"serverQueryPort {{server.build.env.QUERY_PORT}}\",\r\n \"serverName\": \"serverName {{server.build.env.SERVER_NAME}}\",\r\n \"serverPlayers\": \"serverPlayers {{server.build.env.MAX_PLAYERS}}\",\r\n \"serverPassword\": \"serverPassword {{server.build.env.SERVER_PASS}}\",\r\n \"serverPasswordAdmin\": \"serverPasswordAdmin {{server.build.env.ADMIN_PASS}}\",\r\n \"serverSteamAccount\": \"serverSteamAccount {{server.build.env.STEAM_ACC}}\",\r\n \"enableVAC\": \"enableVAC {{server.build.env.VAC}}\",\r\n \"difficulty\": \"difficulty {{server.build.env.SERVER_DIFFICULTY}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Game autosave started\"\r\n}",
@@ -37,7 +37,8 @@
"default_value": "556450",
"user_viewable": false,
"user_editable": false,
"rules": "required|numeric|digits_between:1,6"
"rules": "required|numeric|digits_between:1,6",
"field_type": "text"
},
{
"name": "Server Name",
@@ -46,7 +47,8 @@
"default_value": "Pterodactyl Forest Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
"rules": "required|string|max:64",
"field_type": "text"
},
{
"name": "Steam Port",
@@ -55,7 +57,8 @@
"default_value": "8766",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "[Connection Port] Query Port",
@@ -64,7 +67,8 @@
"default_value": "27016",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Max Players",
@@ -73,7 +77,8 @@
"default_value": "10",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Difficulty",
@@ -82,7 +87,8 @@
"default_value": "Normal",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:Peaceful,Normal,Hard"
"rules": "required|string|in:Peaceful,Normal,Hard",
"field_type": "text"
},
{
"name": "Steam Account Token",
@@ -91,7 +97,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Server Password",
@@ -100,7 +107,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20"
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Admin Password",
@@ -109,7 +117,8 @@
"default_value": "cHanGetHePaSwWord",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Enable VAC",
@@ -118,7 +127,8 @@
"default_value": "off",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:3"
"rules": "required|string|max:3",
"field_type": "text"
},
{
"name": "Windows Install",
@@ -127,7 +137,8 @@
"default_value": "1",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|in:1"
"rules": "required|string|in:1",
"field_type": "text"
},
{
"name": "Auto-Update",
@@ -136,7 +147,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
}
]
}
@@ -12,7 +12,7 @@
"steam_disk_space"
],
"images": [
"quay.io\/pterodactyl\/core:source"
"ghcr.io/pterodactyl/games:source"
],
"file_denylist": [],
"startup": ".\/Tower\/Binaries\/Linux\/TowerServer-Linux-Shipping -log -Port={{SERVER_PORT}} -MULTIHOME=0.0.0.0 -TowerServerINI=..\/..\/Saved\/Config\/TowerServer.ini",
@@ -24,8 +24,8 @@
},
"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 <<EOF >> 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",
"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 lib32gcc-s1\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 <<EOF >> 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": "ghcr.io/pterodactyl/installers:debian",
"entrypoint": "bash"
}
},
@@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-02-18T11:17:53+01:00",
"exported_at": "2022-09-29T21:43:06+00:00",
"name": "Valheim",
"author": "magi1053@outlook.com",
"description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.",
"features": [
"steam_disk_space"
],
"images": [
"ghcr.io\/parkervcp\/games:source"
],
"docker_images": {
"ghcr.io\/parkervcp\/games:valheim": "ghcr.io\/parkervcp\/games:valheim"
},
"file_denylist": [],
"startup": ".\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!",
"startup": ".\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" $( [[ ${ENABLE_CROSSPLAY} -eq 1 ]] && echo \" -crossplay \") > >(sed -uE \"{{FILTER}}\") & trap \"{{STOP}}\" 15; wait $!",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"DungeonDB Start\"\r\n}",
@@ -37,7 +37,8 @@
"default_value": "My Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:60"
"rules": "required|string|max:60",
"field_type": "text"
},
{
"name": "Server Password",
@@ -46,7 +47,8 @@
"default_value": "secret",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:5|max:20"
"rules": "required|string|min:5|max:20",
"field_type": "text"
},
{
"name": "World Name",
@@ -55,7 +57,8 @@
"default_value": "Dedicated",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "App ID",
@@ -64,7 +67,8 @@
"default_value": "896660",
"user_viewable": true,
"user_editable": false,
"rules": "nullable|numeric"
"rules": "nullable|numeric",
"field_type": "text"
},
{
"name": "LD Library Path",
@@ -73,7 +77,8 @@
"default_value": ".\/linux64",
"user_viewable": false,
"user_editable": false,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Console Filter",
@@ -82,7 +87,8 @@
"default_value": "\/^\\(Filename:.*Line:[[:space:]]+[[:digit:]]+\\)$\/d; \/^([[:space:]]+)?$\/d",
"user_viewable": false,
"user_editable": false,
"rules": "string"
"rules": "string",
"field_type": "text"
},
{
"name": "Shutdown Command",
@@ -91,16 +97,28 @@
"default_value": "kill -2 $!; wait;",
"user_viewable": false,
"user_editable": false,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Auto Update",
"description": "",
"description": "Enable automatic updates.",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "boolean"
"rules": "boolean",
"field_type": "text"
},
{
"name": "Enable Crossplay",
"description": "Enable crossplay support",
"env_variable": "ENABLE_CROSSPLAY",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "boolean",
"field_type": "text"
},
{
"name": "Beta Branch",
@@ -109,7 +127,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:30"
"rules": "max:30",
"field_type": "text"
},
{
"name": "Betapassword",
@@ -118,7 +137,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:30"
"rules": "max:30",
"field_type": "text"
}
]
}
@@ -1,28 +1,28 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-01-22T05:44:42-05:00",
"exported_at": "2022-10-05T12:17:20+02:00",
"name": "Terraria Vanilla",
"author": "iamkubi@gmail.com",
"description": "Dig, fight, explore, build! Nothing is impossible in this action-packed adventure game.",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:debian"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/TerrariaServer.bin.x86_64 -config serverconfig.txt",
"config": {
"files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"worldpath\": \"\/home\/container\/saves\/Worlds\",\r\n \"worldname\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"world\": \"\/home\/container\/saves\/Worlds\/{{server.build.env.WORLD_NAME}}.wld\",\r\n \"difficulty\": \"{{server.build.env.WORLD_DIFFICULTY}}\",\r\n \"autocreate\": \"{{server.build.env.WORLD_SIZE}}\",\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.SERVER_MOTD}}\"\r\n }\r\n }\r\n}",
"files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"worldpath\": \"\/home\/container\/saves\/Worlds\",\r\n \"worldname\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"world\": \"\/home\/container\/saves\/Worlds\/{{server.build.env.WORLD_NAME}}.wld\",\r\n \"difficulty\": \"{{server.build.env.WORLD_DIFFICULTY}}\",\r\n \"autocreate\": \"{{server.build.env.WORLD_SIZE}}\",\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"maxplayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.SERVER_MOTD}}\",\r\n \"seed\": \"{{server.build.env.WORLD_SEED}}\",\r\n \"password\": \"{{server.build.env.PASSWORD}}\",\r\n \"npcstream\": \"{{server.build.env.NPCSTREAM}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}",
"logs": "{}",
"stop": "exit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Vanilla Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget file unzip\r\n\r\nDOWNLOAD_LINK=invalid\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ \"${TERRARIA_VERSION}\" == \"latest\" ] || [ \"${TERRARIA_VERSION}\" == \"\" ] ; then\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/terraria.gamepedia.com\/Server#Downloads | grep '>Terraria Server ' | grep -Eoi '<a [^>]+>' | grep -Eo 'href=\\\"[^\\\\\\\"]+\\\"' | grep -Eo '(http|https):\\\/\\\/[^\\\"]+' | tail -1 | cut -d'?' -f1)\r\nelse\r\n CLEAN_VERSION=$(echo ${TERRARIA_VERSION} | sed 's\/\\.\/\/g')\r\n echo -e \"Downloading terraria server files\"\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/terraria.gamepedia.com\/Server#Downloads | grep '>Terraria Server ' | grep -Eoi '<a [^>]+>' | grep -Eo 'href=\\\"[^\\\\\\\"]+\\\"' | grep -Eo '(http|https):\\\/\\\/[^\\\"]+' | grep \"${CLEAN_VERSION}\" | cut -d'?' -f1)\r\nfi \r\n\r\n## this is a simple script to validate a download url actaully exists\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid.\"\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nCLEAN_VERSION=$(echo ${DOWNLOAD_LINK##*\/} | cut -d'-' -f3 | cut -d'.' -f1)\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"Unpacking server files\"\r\nunzip ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"\"\r\ncp -R ${CLEAN_VERSION}\/Linux\/* .\/\r\nchmod +x TerrariaServer.bin.x86_64\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf ${CLEAN_VERSION}\r\n\r\necho -e \"Generating config file\"\r\ncat <<EOF > serverconfig.txt\r\nworldpath=\/home\/container\/saves\/Worlds\r\nworldname=default\r\nworld=\/home\/container\/saves\/Worlds\/default.wld\r\ndifficulty=3\r\nautocreate=1\r\nport=7777\r\nmaxplayers=8\r\nEOF\r\n\r\nmkdir -p \/mnt\/server\/saves\/Worlds\r\n\r\necho -e \"Install complete\"",
"script": "#!\/bin\/bash\r\n# Vanilla Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget file unzip\r\n\r\nDOWNLOAD_LINK=invalid\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ \"${TERRARIA_VERSION}\" == \"latest\" ] || [ \"${TERRARIA_VERSION}\" == \"\" ] ; then\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/terraria.wiki.gg\/wiki\/Server#Downloads | grep '>Terraria Server ' | grep -Eoi '<a [^>]+>' | grep -Eo 'href=\\\"[^\\\\\\\"]+\\\"' | grep -Eo '(http|https):\\\/\\\/[^\\\"]+' | tail -1 | cut -d'?' -f1)\r\nelse\r\n CLEAN_VERSION=$(echo ${TERRARIA_VERSION} | sed 's\/\\.\/\/g')\r\n echo -e \"Downloading terraria server files\"\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/terraria.wiki.gg\/wiki\/Server#Downloads | grep '>Terraria Server ' | grep -Eoi '<a [^>]+>' | grep -Eo 'href=\\\"[^\\\\\\\"]+\\\"' | grep -Eo '(http|https):\\\/\\\/[^\\\"]+' | grep \"${CLEAN_VERSION}\" | cut -d'?' -f1)\r\nfi \r\n\r\n## this is a simple script to validate a download url actaully exists\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid.\"\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\nCLEAN_VERSION=$(echo ${DOWNLOAD_LINK##*\/} | cut -d'-' -f3 | cut -d'.' -f1)\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"Unpacking server files\"\r\nunzip ${DOWNLOAD_LINK##*\/}\r\n\r\necho -e \"\"\r\ncp -R ${CLEAN_VERSION}\/Linux\/* .\/\r\nchmod +x TerrariaServer.bin.x86_64\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf ${CLEAN_VERSION}\r\n\r\necho -e \"Generating config file\"\r\ncat <<EOF > serverconfig.txt\r\nworldpath=\/home\/container\/saves\/Worlds\r\nworldname=default\r\nworld=\/home\/container\/saves\/Worlds\/default.wld\r\ndifficulty=3\r\nautocreate=1\r\nport=7777\r\nmaxplayers=8\r\nEOF\r\n\r\nmkdir -p \/mnt\/server\/saves\/Worlds\r\n\r\necho -e \"Install complete\"",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
@@ -30,12 +30,13 @@
"variables": [
{
"name": "Terraria version",
"description": "the version of Terraria that is to be used.\r\n\r\nYou can use the full version number or the file number. (ex. 1.3.5.3 or 1353)\r\n\r\nGet version numbers here - https:\/\/terraria.gamepedia.com\/Server#Downloads",
"description": "the version of Terraria that is to be used.\r\n\r\nYou can use the full version number or the file number. (ex. 1.3.5.3 or 1353)\r\n\r\nGet version numbers here - https:\/\/terraria.wiki.gg\/wiki\/Server#Downloads",
"env_variable": "TERRARIA_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "World Name",
@@ -44,7 +45,8 @@
"default_value": "world",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Max Players",
@@ -53,7 +55,8 @@
"default_value": "8",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|max:255"
"rules": "required|numeric|max:255",
"field_type": "text"
},
{
"name": "World Size",
@@ -62,7 +65,8 @@
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|in:1,2,3"
"rules": "required|numeric|in:1,2,3",
"field_type": "text"
},
{
"name": "Difficulty",
@@ -71,7 +75,8 @@
"default_value": "3",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|in:0,1,2,3"
"rules": "required|numeric|in:0,1,2,3",
"field_type": "text"
},
{
"name": "MOTD",
@@ -80,7 +85,38 @@
"default_value": "Welcome!",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:128"
"rules": "required|string|max:128",
"field_type": "text"
},
{
"name": "World Seed",
"description": "The Seed to use when creating the World",
"env_variable": "WORLD_SEED",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Password",
"description": "The password which should be used.",
"env_variable": "PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "NPCStream",
"description": "Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off.",
"env_variable": "NPCSTREAM",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|int|between:0,60",
"field_type": "text"
}
]
}
+46
View File
@@ -0,0 +1,46 @@
# Generic Language
### [Dart](dart)
[dart](https://dart.dev/)
A generic dart egg
### [Deno](deno)
[deno](https://deno.land/)
A generic deno egg
### [Golang](golang)
[golang](https://go.dev/)
A generic go egg
### [Java](java)
[java](https://www.java.com/en/)
A generic java egg
### [Lua](lua)
[lua](https://www.lua.org/)
A generic luvit/lua egg
### [Node JS](nodejs)
[nodejs](https://nodejs.org)
A generic node.js egg
### [nodemon](nodemon)
[nodemon](https://nodemon.io/)
A nodemon javascript egg for running and automatically restarting the node application when file changes in the directory are detected
### [Python](python)
[python](https://www.python.org/)
A generic python egg
### [Rust](python)
[rust](https://www.rust-lang.org/)
A generic rust egg
+22
View File
@@ -0,0 +1,22 @@
# dart generic
This egg is designed to run any generic Dart application, allowing users to pull their own Dart discord bot from a Github repository.
There is an option to allow a user to upload their own files to run a bot.
The startup configs and commands may need changing to actually function properly.
## Configuration
The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png)
You can use arrays to have multiple different values when different bots are being used
```json
{
"done":[
"change this text 1",
"change this text 2"
]
}
+92
View File
@@ -0,0 +1,92 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-07-07T16:11:46-07:00",
"name": "dart generic",
"author": "alden@knoban.com",
"description": "A generic dart CLI egg.\r\n\r\nThis will clone a dart CLI application. it defaults to master if no branch is specified.\r\n\r\nInstalls the pubspec.yaml packages on run. If you set user_upload then I assume you know what you are doing.",
"features": null,
"docker_images": {
"ghcr.io/parkervcp/yolks:dart_2.17": "ghcr.io/parkervcp/yolks:dart_2.17"
},
"file_denylist": [],
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; dart pub get; dart run",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"change this part\"\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Dart CLI Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl file unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git dart cli repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"container": "debian:bullseye-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Git Repo Address",
"description": "GitHub Repo to clone\r\n\r\nI.E. https:\/\/github.com\/kNoAPP\/repo_name",
"env_variable": "GIT_ADDRESS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Install Branch",
"description": "The branch of the bot to install.",
"env_variable": "BRANCH",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "User Uploaded Files",
"description": "Skip all the install stuff if you are letting a user upload files.\r\n\r\n0 = false (default)\r\n1 = true",
"env_variable": "USER_UPLOAD",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Auto Update",
"description": "Pull the latest files on startup when using a GitHub repo.",
"env_variable": "AUTO_UPDATE",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Git Username",
"description": "Username to auth with git.",
"env_variable": "USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Access Token",
"description": "Password to use with git.\r\n\r\nIt's best practice to use a Personal Access Token.\r\nhttps:\/\/github.com\/settings\/tokens\r\nhttps:\/\/gitlab.com\/-\/profile\/personal_access_tokens",
"env_variable": "ACCESS_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
}
]
}
@@ -1,17 +1,22 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1"
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2020-10-11T12:12:50-04:00",
"name": "discordgo generic",
"exported_at": "2022-07-25T14:20:37-04:00",
"name": "golang generic",
"author": "parker@parkervcp.com",
"description": "A generic golang egg.\r\n\r\nMeant to be customized before it is used.",
"image": "quay.io\/parkervcp\/pterodactyl-images:base_debian",
"description": "A generic golang egg that compiles the application and saves an executable\r\n\r\nMeant to be customized before it is used.",
"features": null,
"docker_images": {
"ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/${EXECUTABLE}",
"config": {
"files": "{}",
"startup": "{}",
"startup": "{\r\n \"done\": \"change this part\"\r\n}",
"logs": "{}",
"stop": "^C"
},
@@ -28,18 +33,20 @@
"description": "Go package to get and build",
"env_variable": "GO_PACKAGE",
"default_value": "",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string"
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Executable",
"description": "This is the executable from the bot build.",
"description": "This is the executable from the build.",
"env_variable": "EXECUTABLE",
"default_value": "",
"user_viewable": 1,
"user_editable": 0,
"rules": "required|string"
"user_viewable": true,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
}
]
}
}
@@ -5,7 +5,7 @@
"update_url": null
},
"exported_at": "2021-07-21T18:23:17+03:00",
"name": "Discord Java",
"name": "Generic Java",
"author": "sneaky@sneakyhub.com",
"description": "Creates a container that runs java.",
"features": null,
+22
View File
@@ -0,0 +1,22 @@
# luvit generic
This egg was designed to allow a user to pull their own lua code from a repo and run it with luvit.
There is an option to allow a user to upload their own files to run an app.
The startup configs and commands may need changing to actually function properly.
## Configuration
The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png)
You can use arrays to have multiple different values when different bots are being used
```json
{
"done":[
"change this text 1",
"change this text 2"
]
}
@@ -7,7 +7,7 @@
"exported_at": "2022-01-22T05:40:57-05:00",
"name": "luvit generic",
"author": "parker@parkervcp.com",
"description": "A generic luvit egg This will clone a git repo for a bot. It defaults to master if no branch is specified.\r\n\r\nSupports the discordia lua framework.",
"description": "A generic luvit egg This will clone a git repo. It defaults to master if no branch is specified.\r\n\r\nSupports the discordia lua framework.",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:debian"
@@ -22,7 +22,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n## luvit generic install script\r\n\r\napt update\r\napt install -y git curl jq file unzip\r\n\r\n## get git files\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install luvit for install time\r\ncurl -L https:\/\/github.com\/luvit\/lit\/raw\/master\/get-lit.sh | sh\r\n\r\n## Install luvit packages\r\n.\/lit install ${LIT_PACKAGES}",
"script": "#!\/bin\/bash\r\n## luvit generic install script\r\n\r\napt update\r\napt install -y git curl jq file unzip\r\n\r\n## get git files\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install luvit for install time\r\ncurl -L https:\/\/github.com\/luvit\/lit\/raw\/master\/get-lit.sh | sh\r\n\r\n## Install luvit packages\r\n.\/lit install ${LIT_PACKAGES}",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
@@ -74,10 +74,10 @@
"rules": "nullable|string"
},
{
"name": "Bot lua file",
"name": "lua file",
"description": "The Lua file to run",
"env_variable": "LUA_FILE",
"default_value": "bot.lua",
"default_value": "app.lua",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
@@ -1,24 +1,23 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-10-22T07:43:48-04:00",
"name": "discord.js generic",
"exported_at": "2022-07-25T14:13:08-04:00",
"name": "node.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.",
"description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:nodejs_18",
"ghcr.io\/parkervcp\/yolks:nodejs_17",
"ghcr.io\/parkervcp\/yolks:nodejs_16",
"ghcr.io\/parkervcp\/yolks:nodejs_15",
"ghcr.io\/parkervcp\/yolks:nodejs_14",
"ghcr.io\/parkervcp\/yolks:nodejs_12"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17",
"ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16",
"ghcr.io\/parkervcp\/yolks:nodejs_15": "ghcr.io\/parkervcp\/yolks:nodejs_15",
"ghcr.io\/parkervcp\/yolks:nodejs_14": "ghcr.io\/parkervcp\/yolks:nodejs_14",
"ghcr.io\/parkervcp\/yolks:nodejs_12": "ghcr.io\/parkervcp\/yolks:nodejs_12"
},
"file_denylist": [],
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{BOT_JS_FILE}}",
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"change this part\"\r\n}",
@@ -27,7 +26,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# NodeJS Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"container": "node:14-buster-slim",
"entrypoint": "bash"
}
@@ -40,16 +39,18 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Install Branch",
"description": "The branch of the bot to install.",
"description": "The branch to install.",
"env_variable": "BRANCH",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "User Uploaded Files",
@@ -58,7 +59,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Auto Update",
@@ -67,16 +69,18 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Bot js file",
"description": "The file that starts the bot.",
"env_variable": "BOT_JS_FILE",
"name": "JS file",
"description": "The file that starts the app",
"env_variable": "JS_FILE",
"default_value": "index.js",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Additional Node packages",
@@ -85,7 +89,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Username",
@@ -94,7 +99,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Access Token",
@@ -103,7 +109,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Uninstall Node packages",
@@ -112,7 +119,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
}
]
}
}
@@ -6,7 +6,7 @@
},
"exported_at": "2021-08-26T23:09:55-04:00",
"name": "nodemon",
"author": "nick@blackfortmc.com",
"author": "nick@blackforthosting.com",
"description": "Nodemon javascript egg that automatically restarts the node application when file changes in the directory are detected\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.",
"features": null,
"images": [
@@ -1,23 +1,23 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-10-19T13:22:35-04:00",
"name": "discord.py generic",
"exported_at": "2022-07-25T14:17:50-04:00",
"name": "python generic",
"author": "parker@parkervcp.com",
"description": "A Discord bot written in Python using discord.py\r\n\r\nhttps:\/\/github.com\/Ispira\/pixel-bot",
"description": "A Generic Python Egg for Pterodactyl\r\n\r\nTested with: https:\/\/github.com\/Ispira\/pixel-bot",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:python_3.10",
"ghcr.io\/parkervcp\/yolks:python_3.9",
"ghcr.io\/parkervcp\/yolks:python_3.8",
"ghcr.io\/parkervcp\/yolks:python_3.7",
"ghcr.io\/parkervcp\/yolks:python_2.7"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:python_3.10": "ghcr.io\/parkervcp\/yolks:python_3.10",
"ghcr.io\/parkervcp\/yolks:python_3.9": "ghcr.io\/parkervcp\/yolks:python_3.9",
"ghcr.io\/parkervcp\/yolks:python_3.8": "ghcr.io\/parkervcp\/yolks:python_3.8",
"ghcr.io\/parkervcp\/yolks:python_3.7": "ghcr.io\/parkervcp\/yolks:python_3.7",
"ghcr.io\/parkervcp\/yolks:python_2.7": "ghcr.io\/parkervcp\/yolks:python_2.7"
},
"file_denylist": [],
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z {{PY_PACKAGES}} ]]; then pip install -U --prefix .local {{PY_PACKAGES}}; fi; if [[ -f \/home\/container\/${REQUIREMENTS_FILE} ]]; then pip install -U --prefix .local -r ${REQUIREMENTS_FILE}; fi; \/usr\/local\/bin\/python \/home\/container\/{{BOT_PY_FILE}}",
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z {{PY_PACKAGES}} ]]; then pip install -U --prefix .local {{PY_PACKAGES}}; fi; if [[ -f \/home\/container\/${REQUIREMENTS_FILE} ]]; then pip install -U --prefix .local -r ${REQUIREMENTS_FILE}; fi; \/usr\/local\/bin\/python \/home\/container\/{{PY_FILE}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"change this part\"\r\n}",
@@ -26,7 +26,7 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Python Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\nexport HOME=\/mnt\/server\r\n\r\necho \"Installing python requirements into folder\"\r\nif [[ ! -z ${PY_PACKAGES} ]]; then\r\n pip install -U --prefix .local ${PY_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/requirements.txt ]; then\r\n pip install -U --prefix .local -r ${REQUIREMENTS_FILE}\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"script": "#!\/bin\/bash\r\n# Python App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git python repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\nexport HOME=\/mnt\/server\r\n\r\necho \"Installing python requirements into folder\"\r\nif [[ ! -z ${PY_PACKAGES} ]]; then\r\n pip install -U --prefix .local ${PY_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/requirements.txt ]; then\r\n pip install -U --prefix .local -r ${REQUIREMENTS_FILE}\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"container": "python:3.8-slim",
"entrypoint": "bash"
}
@@ -39,7 +39,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Branch",
@@ -48,7 +49,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "User Uploaded Files",
@@ -57,7 +59,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Auto Update",
@@ -66,16 +69,18 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Bot py file",
"description": "The file that starts the bot.",
"env_variable": "BOT_PY_FILE",
"default_value": "bot.py",
"name": "App py file",
"description": "The file that starts the App.",
"env_variable": "PY_FILE",
"default_value": "app.py",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
},
{
"name": "Additional Python packages",
@@ -84,7 +89,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Username",
@@ -93,7 +99,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Access Token",
@@ -102,7 +109,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Requirements file",
@@ -111,7 +119,8 @@
"default_value": "requirements.txt",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
}
]
}
+18
View File
@@ -0,0 +1,18 @@
# rust generic
This egg is designed to run any generic Rust application with cargo, allowing users to pull their own Rust discord bot from a GitHub repository.
## Configuration
The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running.
![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png)
You can use arrays to have multiple different values when different bots are being used
```json
{
"done":[
"change this text 1",
"change this text 2"
]
}
@@ -1,25 +1,25 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-04-17T16:56:51+01:00",
"name": "discord.rs generic",
"author": "ethan.coward@icloud.com",
"exported_at": "2022-10-01T18:32:46+01:00",
"name": "rust generic",
"author": "ethan@ethancoward.dev",
"description": "Creates a container that runs rust with cargo.",
"features": null,
"images": [
"ghcr.io\/parkervcp\/yolks:rust_1.31",
"ghcr.io\/parkervcp\/yolks:rust_1.56",
"ghcr.io\/parkervcp\/yolks:rust_1.60",
"ghcr.io\/parkervcp\/yolks:rust_latest"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:rust_latest": "ghcr.io\/parkervcp\/yolks:rust_latest",
"ghcr.io\/parkervcp\/yolks:rust_1.60": "ghcr.io\/parkervcp\/yolks:rust_1.60",
"ghcr.io\/parkervcp\/yolks:rust_1.56": "ghcr.io\/parkervcp\/yolks:rust_1.56",
"ghcr.io\/parkervcp\/yolks:rust_1.31": "ghcr.io\/parkervcp\/yolks:rust_1.31"
},
"file_denylist": [],
"startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; cargo run --release",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": [\r\n \"Finished\"\r\n ]\r\n}",
"startup": "{\r\n \"done\": [\r\n \"change this part\"\r\n ]\r\n}",
"logs": "{}",
"stop": "^C"
},
@@ -38,7 +38,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Branch",
@@ -47,7 +48,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Auto Update",
@@ -56,7 +58,8 @@
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Git Username",
@@ -65,7 +68,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Access Token",
@@ -74,16 +78,8 @@
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Bot Token",
"description": "The discord token used to run your bot. Sets to the environment variable `DISCORD_TOKEN`\r\n\r\nAlternatively, you can use a .env file",
"env_variable": "DISCORD_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
}
]
}
}
+9
View File
@@ -0,0 +1,9 @@
# LanguageTool
LanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, [and more than 20 other languages](https://languagetool.org/languages/). It finds many errors that a simple spell checker cannot find.
View https://languagetool.org for more information.
Requires one prt for comunication.
Try `addr:port/v2/check?language=en-US&text=this+is+a+test` to test
@@ -0,0 +1,41 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2022-04-06T17:26:12+02:00",
"name": "LanguageTool",
"author": "thomasruhl@live.de",
"description": "This egg installs a LanguageTool server\r\n\r\nLanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. It finds many errors that a simple spell checker cannot find.\r\n\r\nView https:\/\/languagetool.org for more information.",
"features": null,
"images": [
"ghcr.io\/pterodactyl\/yolks:java_8"
],
"file_denylist": [],
"startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin \\\"*\\\" --public --config config.properties",
"config": {
"files": "{\r\n \"config.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"languageModel\": \"models\/\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Server started\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\napk add --no-cache unzip # to make shure the unzipper is working properly\r\nmkdir -p \/mnt\/server\r\nmkdir -p \/mnt\/server\/models\r\ntouch config.properties\r\n\r\n# if TRAIN_MODELS has content install them\r\nif [ -n TRAIN_MODELS ]; then\r\n\r\n content=$(curl -L https:\/\/languagetool.org\/download\/ngram-data\/)\r\n\r\n links=$(echo \"$content\" | grep -o '<a href=\"[^\"]*\\.zip\">' | sed 's\/<a href=\"\/\/' | sed 's\/\">\/\/')\r\n echo $links\r\n\r\n cd \/mnt\/server\/models\r\n for model in $TRAIN_MODELS; do\r\n echo \"$model\"\r\n for link in $links; do\r\n # echo \" $link\"\r\n if [[ $link == *\"-$model-\"* ]]; then\r\n fullLink=\"https:\/\/languagetool.org\/download\/ngram-data\/$link\"\r\n echo \"Downloading $fullLink\"\r\n echo \"this could take some while\"\r\n curl $fullLink --output $model.zip\r\n echo \"unziping $model.zip\"\r\n unzip $model.zip\r\n rm $model.zip\r\n fi\r\n done\r\n done\r\nfi\r\n\r\n# main languagetool install\r\ncd \/mnt\/server\r\n\r\necho \"downloading languagetool\"\r\ncurl https:\/\/languagetool.org\/download\/LanguageTool-stable.zip --output download.zip\r\necho unziping\r\nunzip download.zip\r\necho moving files\r\n\r\ncp -r LanguageTool-*\/* .\r\n\r\nrm -rf LanguageTool-*\r\nrm download.zip -rf\r\n\r\necho Finished install",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Include traindata",
"description": "This uses many gigabytes of disk space. \r\n\r\nSeparate each value with spaces. For example, \"de en\". \r\n\r\nView all available models at https:\/\/languagetool.org\/download\/ngram-data\/",
"env_variable": "TRAIN_MODELS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
}
]
}
+51
View File
@@ -0,0 +1,51 @@
# Owncast
## From the [Owncast](https://owncast.online) website
Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
## Installation
Follow the common egg installation guide to install the egg on your Pterodactyl instance.
When setting up a server, the version set in the varaible will be used, default is 0.0.11.
## Configuration
Configuring Owncast in Pterodactyl can be done by using the command line switches:
* -backupdir string
* Directory where backups will be written to
* -database string
* Path to the database file.
* -enableDebugFeatures
* Enable additional debugging options.
* -enableVerboseLogging
* Enable additional logging.
* -logdir string
* Directory where logs will be written to
* -restoreDatabase string
* Restore an Owncast database backup
* -rtmpport int
* Set listen port for the RTMP server
* -streamkey string
* Set your stream key/admin password
* -webserverip string
* Force web server to listen on this IP address
* -webserverport string
* Force the web server to listen on a specific port
## Update support
The egg _should_ keep the `data` folder when reinstalling, to prevent destroying the configuration by accident.
If you want to reset the server completly, remove the `data` directory manually before reinstalling.
### Server Ports
Ports required to run the server in a table format.
| Port | default |
| --------------- | ------- |
| Webserver | 8090 |
| RTMP | 8091 |
+95
View File
@@ -0,0 +1,95 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2022-03-31T11:32:42+01:00",
"name": "owncast.online",
"author": "psychoalex@thevcbc.com",
"description": "Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.",
"features": null,
"images": [
"ghcr.io\/pterodactyl\/yolks:debian"
],
"file_denylist": [],
"startup": ".\/owncast -webserverport {{SERVER_PORT}} -rtmpport {{RTMP_PORT}} -streamkey {{STREAM_KEY}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"The web admin interface is available at \/admin.\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n\r\n#Make Server Dir\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\ncd \/mnt\/server\/\r\n\r\n#Get Dependencies\r\napt-get -y update\r\napt-get -y install curl unzip tar jq\r\n\r\n#Get Owncast Install Files\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho Download URL is: ${DOWNLOAD_URL}\r\n\r\ncurl -L ${DOWNLOAD_URL} --output .\/owncast_installer.zip\r\n\r\n#curl -L https:\/\/github.com\/owncast\/owncast\/releases\/download\/v${OWNCAST_VERSION}\/owncast-${OWNCAST_VERSION}-linux-64bit.zip --output .\/owncast_installer.zip\r\n\r\n#Unzip Install Files\r\nunzip -o -q .\/owncast_installer.zip\r\nrm .\/owncast_installer.zip",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "RTMP Port",
"description": "The port that is used to receive the stream data.",
"env_variable": "RTMP_PORT",
"default_value": "8091",
"user_viewable": true,
"user_editable": false,
"rules": "required|integer"
},
{
"name": "Stream\/Admin Key",
"description": "This is used to authenticate to the web admin interface, as well as to authenticate your stream.",
"env_variable": "STREAM_KEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:32|max:128"
},
{
"name": "Owncast Version",
"description": "The version of Owncast that you would like to install, from https:\/\/github.com\/owncast\/owncast\/releases\r\nAs an Example - \"v0.0.11\" for a specific version or \"latest\" for the most up to date version.",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
},
{
"name": "Github Repository",
"description": "Used to identify the github repository to pull the release from.",
"env_variable": "GITHUB_PACKAGE",
"default_value": "owncast\/owncast",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|max:120"
},
{
"name": "Github File Match",
"description": "Used to identify the specific asset under a release for download.",
"env_variable": "MATCH",
"default_value": "linux-64bit",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|max:20"
},
{
"name": "Github User",
"description": "Required if you are doing more calls than the github anonymous API user allows.",
"env_variable": "GITHUB_USER",
"default_value": "",
"user_viewable": false,
"user_editable": false,
"rules": "nullable|string|max:20"
},
{
"name": "Github Oauth Token",
"description": "Required if you are doing more calls than the github anonymous API user allows.",
"env_variable": "GITHUB_OAUTH_TOKEN",
"default_value": "",
"user_viewable": false,
"user_editable": false,
"rules": "nullable|string|max:128"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
# [Reposilite](https://github.com/dzikoysk/reposilite)
Lightweight and easy-to-use repository management software dedicated for Maven based artifacts in the JVM ecosystem.
## Server Ports
One port needs to be allocated to run Reposilite.
+45
View File
@@ -0,0 +1,45 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-06-12T18:45:04+02:00",
"name": "Reposilite",
"author": "mk@kcra.me",
"description": "Lightweight and easy-to-use repository management software dedicated for Maven based artifacts in the JVM ecosystem.",
"features": null,
"docker_images": {
"ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8",
"ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11",
"ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16",
"ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17"
},
"file_denylist": [],
"startup": "java -Xmx{{SERVER_MEMORY}}M -Dreposilite.port={{SERVER_PORT}} -jar reposilite.jar --port {{SERVER_PORT}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Done (\"\r\n}",
"logs": "{}",
"stop": "stop"
},
"scripts": {
"installation": {
"script": "#!\/bin\/sh\r\n# Switch to mounted directory\r\ncd \/mnt\/server\r\n# Find latest Reposilite version, if needed\r\nif [ \"$REPOSILITE_VERSION\" == \"latest\" ]; then\r\n REPOSILITE_VERSION=$(grep -oPm1 \"(?<=<latest>)[^<]+\" <<< \"$(curl -s https:\/\/maven.reposilite.com\/releases\/org\/panda-lang\/reposilite\/maven-metadata.xml)\")\r\nfi\r\n# Check if -all suffixed jar is available\r\nstatus_code=$(curl --write-out '%{http_code}' -X HEAD -s -o \/dev\/null https:\/\/maven.reposilite.com\/releases\/org\/panda-lang\/reposilite\/${REPOSILITE_VERSION}\/reposilite-${REPOSILITE_VERSION}-all.jar)\r\n# Download new Reposilite\r\nif [ \"$status_code\" == 200 ]; then\r\n curl -o reposilite.jar https:\/\/maven.reposilite.com\/releases\/org\/panda-lang\/reposilite\/${REPOSILITE_VERSION}\/reposilite-${REPOSILITE_VERSION}-all.jar\r\nelse\r\n curl -o reposilite.jar https:\/\/maven.reposilite.com\/releases\/org\/panda-lang\/reposilite\/${REPOSILITE_VERSION}\/reposilite-${REPOSILITE_VERSION}.jar\r\nfi",
"container": "ghcr.io\/pterodactyl\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Reposilite version",
"description": "The version of Reposilite.",
"env_variable": "REPOSILITE_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}
+2 -2
View File
@@ -4,7 +4,7 @@
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2022-07-08T16:16:10+02:00",
"exported_at": "2022-10-07T04:56:20-04:00",
"name": "Minio S3",
"author": "accounts@bofanodes.io",
"description": "MinIO is a cloud storage server compatible with Amazon S3, released under Apache License v2. As an object store, MinIO can store unstructured data such as photos, videos, log files, backups and container images. The maximum size of an object is 5TB.",
@@ -16,7 +16,7 @@
"startup": ".\/minio.sh",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"guide\"\r\n}",
"startup": "{\r\n \"done\": \"guide\",\r\n \"done\": \"Documentation:\"\r\n}",
"logs": "{}",
"stop": "^C"
},
+1 -1
View File
@@ -7,7 +7,7 @@
"exported_at": "2021-04-11T13:56:42+02:00",
"name": "Lavalink",
"author": "damuffin36@gmail.com",
"description": "Standalone audio sending node based on Lavaplayer and JDA-Audio. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/Frederikam\/Lavalink",
"description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/freyacodes\/Lavalink",
"features": null,
"images": [
"ghcr.io/parkervcp/yolks:java_11"