diff --git a/.github/ISSUE_TEMPLATE/egg-request.yml b/.github/ISSUE_TEMPLATE/egg-request.yml index 731f4cfd..1f58b59d 100644 --- a/.github/ISSUE_TEMPLATE/egg-request.yml +++ b/.github/ISSUE_TEMPLATE/egg-request.yml @@ -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 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2192084d..417c9009 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,22 +1,24 @@ -### All Submissions: +# Description -* [ ] Have you followed the guidelines in our Contributing document? + + +## Checklist for all submissions + + + +* [ ] 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?: - + -### 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? diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67d02ffe..783aad05 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. diff --git a/README.md b/README.md index a7378440..24431af2 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,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) @@ -122,12 +123,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) @@ -196,6 +199,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 +219,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 +233,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 +317,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) diff --git a/bots/discord/nodemon.js/egg-nodemon.json b/bots/discord/nodemon.js/egg-nodemon.json index 6a903e3a..43925a41 100644 --- a/bots/discord/nodemon.js/egg-nodemon.json +++ b/bots/discord/nodemon.js/egg-nodemon.json @@ -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": [ diff --git a/database/README.md b/database/README.md index 9efc7435..a3021c4d 100644 --- a/database/README.md +++ b/database/README.md @@ -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/ diff --git a/database/nosql/mongodb/egg-mongo-d-b.json b/database/nosql/mongodb/egg-mongo-d-b.json index 311f157b..f324983d 100644 --- a/database/nosql/mongodb/egg-mongo-d-b.json +++ b/database/nosql/mongodb/egg-mongo-d-b.json @@ -1,13 +1,20 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "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", + "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 && 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,7 +37,8 @@ "default_value": "admin", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Mongo Admin Password", @@ -39,7 +47,8 @@ "default_value": "aP@55word", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" } ] } diff --git a/game_eggs/README.md b/game_eggs/README.md index 25753821..5c7716bc 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -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) @@ -112,6 +112,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 +131,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) diff --git a/game_eggs/beamng/beammp/beammp.json b/game_eggs/beamng/beammp/beammp.json index 83c088a5..40eb5fd4 100644 --- a/game_eggs/beamng/beammp/beammp.json +++ b/game_eggs/beamng/beammp/beammp.json @@ -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" } ] -} +} \ No newline at end of file diff --git a/game_eggs/cod/cod4x/README.md b/game_eggs/cod/cod4x/README.md deleted file mode 100644 index a1b5047c..00000000 --- a/game_eggs/cod/cod4x/README.md +++ /dev/null @@ -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: - -## 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:
- -```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 -``` - -
- -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 diff --git a/game_eggs/cod/cod4x/egg-call-of-duty4-x.json b/game_eggs/cod/cod4x/egg-call-of-duty4-x.json deleted file mode 100644 index 3c295eeb..00000000 --- a/game_eggs/cod/cod4x/egg-call-of-duty4-x.json +++ /dev/null @@ -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 < .\/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" - } - ] -} \ No newline at end of file diff --git a/game_eggs/gta/fivem/README.md b/game_eggs/gta/fivem/README.md index 12f44451..151897eb 100644 --- a/game_eggs/gta/fivem/README.md +++ b/game_eggs/gta/fivem/README.md @@ -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 diff --git a/game_eggs/losangelescrimes/README.md b/game_eggs/losangelescrimes/README.md new file mode 100644 index 00000000..5829770b --- /dev/null +++ b/game_eggs/losangelescrimes/README.md @@ -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) diff --git a/game_eggs/losangelescrimes/egg-l-a-c--online-public-server.json b/game_eggs/losangelescrimes/egg-l-a-c--online-public-server.json new file mode 100644 index 00000000..0505673d --- /dev/null +++ b/game_eggs/losangelescrimes/egg-l-a-c--online-public-server.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/game_eggs/mohaa/README.md b/game_eggs/mohaa/README.md new file mode 100644 index 00000000..5c61607b --- /dev/null +++ b/game_eggs/mohaa/README.md @@ -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. diff --git a/game_eggs/mohaa/egg-mohaa.json b/game_eggs/mohaa/egg-mohaa.json new file mode 100644 index 00000000..832621d3 --- /dev/null +++ b/game_eggs/mohaa/egg-mohaa.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/game_eggs/mohaa/server.cfg b/game_eggs/mohaa/server.cfg new file mode 100644 index 00000000..48a6edd2 --- /dev/null +++ b/game_eggs/mohaa/server.cfg @@ -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 diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index d6085c8a..c607f914 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -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) diff --git a/game_eggs/steamcmd_servers/black_mesa/README.md b/game_eggs/steamcmd_servers/black_mesa/README.md new file mode 100644 index 00000000..3a1e3980 --- /dev/null +++ b/game_eggs/steamcmd_servers/black_mesa/README.md @@ -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/) diff --git a/game_eggs/steamcmd_servers/black_mesa/egg-black-mesa.json b/game_eggs/steamcmd_servers/black_mesa/egg-black-mesa.json new file mode 100644 index 00000000..f58682a5 --- /dev/null +++ b/game_eggs/steamcmd_servers/black_mesa/egg-black-mesa.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "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" + } + ] +} diff --git a/game_eggs/steamcmd_servers/open_fortress/README.md b/game_eggs/steamcmd_servers/open_fortress/README.md new file mode 100644 index 00000000..1d488524 --- /dev/null +++ b/game_eggs/steamcmd_servers/open_fortress/README.md @@ -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 | diff --git a/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json new file mode 100644 index 00000000..e3bbd203 --- /dev/null +++ b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json @@ -0,0 +1,74 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2022-07-18T08:23:04-04:00", + "name": "Open Fortress", + "author": "espeon@espeon.dev", + "description": "Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:games_source": "ghcr.io\/parkervcp\/yolks:games_source" + }, + "file_denylist": [], + "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart -debug +maxplayers {{MAXPLAYERS}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"gameserver Steam ID\"\r\n}", + "logs": "{}", + "stop": "quit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates p7zip-full wget\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## install tf2 content using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server\/tf2 +app_update 232250 ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download OpenFortress\r\ncd \/mnt\/server\r\nmv bin bin_dontdeleteme\r\nwget https:\/\/git.sr.ht\/~welt\/murse\/refs\/download\/v0.2.1\/murse-v0.2.1-linux-amd64.tar.gz -O murse.tgz 2> \/dev\/null\r\ntar xvfz murse.tgz\r\nrm -rf murse.tgz\r\nchmod +x murse\r\n.\/murse upgrade -u https:\/\/toast1.openfortress.fun\/toast -c $(curl https:\/\/toast1.openfortress.fun\/toast\/reithreads) asdrggvead\/open_fortress\r\nmv \/mnt\/server\/asdrggvead\/open_fortress \/mnt\/server\/open_fortress\r\nrm -rf asdrggvead\r\nmv bin_dontdeleteme bin\r\n## add fixed gameinfo\r\ncd \/mnt\/server\/open_fortress\r\nrm -rf gameinfo.txt\r\ncat >> gameinfo.txt << EOF\r\n\"GameInfo\"\r\n{\r\ngame \"Open Fortress\"\r\ntitle \"\"\r\ntitle2 \"\"\r\ngamelogo \"1\"\r\ndeveloper \"https:\/\/github.com\/AgitationSkeleton\/open_fortress\/blob\/master\/credits.txt\"\r\ndeveloper_url\t\"https:\/\/github.com\/KaidemonLP\/Open-Fortress-Source\"\r\nmanual \"\"\r\ntype \"multiplayer_only\"\r\nhasportals \"0\" \/\/ gameui.dll\r\nhashdcontent\t\"0\" \/\/ gameui.dll\r\nnomodels \"0\" \/\/ gameui.dll\r\nnohimodel \"0\" \/\/ gameui.dll\r\nnocrosshair \"0\" \/\/ gameui.dll\r\nadvcrosshair \"1\" \/\/ gameui.dll\r\nnodifficulty\t\"1\" \/\/ gameui.dll\r\nsupportsvr \"0\" \/\/ engine.dll + gameui.dll\r\nbots \"0\" \/\/ gameui.dll\r\nnodegraph \"1\" \/\/ engine.dll\r\nperfwizard \"0\" \/\/ unused\r\nSupportsDX8 \"0\" \/\/ unused\r\nSupportsDX9 \"1\" \/\/ unused\r\nSupportsDX10\t\"0\" \/\/ unused\r\nSupportsDX11\t\"0\" \/\/ unused\r\nSupportsXbox\t\"0\" \/\/ unused\r\nSupportsXbox360\t\"0\" \/\/ unused\r\nSupportsXboxOne\t\"0\" \/\/ unused\r\nSupportsPS3 \"0\" \/\/ unused\r\nSupportsPS4 \"0\" \/\/ unused\r\nicon \"resource\/game\"\r\nGameData \"ofd_fic2.fgd\"\r\nInstancePath\t\"maps\/instances\/\"\r\nhidden_maps\r\n{\r\n\"test_speakers\" 1\r\n\"test_hardware\" 1\r\n\"background01\" 1\r\n\"background02\" 1\r\n\"background03\" 1\r\n\"background04\" 1\r\n\"background05\" 1\r\n\"background06\" 1\r\n\"background07\" 1\r\n\"background08\" 1\r\n\"background09\" 1\r\n\"background12\" 1\r\n\"background15\" 1\r\n\"ep1_c17_00\" 1\r\n\"ep1_c17_00a\" 1\r\n\"ep1_c17_01\" 1\r\n\"ep1_c17_01a\" 1\r\n\"ep1_c17_02\" 1\r\n\"ep1_c17_02a\" 1\r\n\"ep1_c17_02b\" 1\r\n\"ep1_c17_05\" 1\r\n\"ep1_c17_06\" 1\r\n\"ep1_citadel_00\"\t1\r\n\"ep1_citadel_00_demo\" 1\r\n\"ep1_citadel_01\"\t1\r\n\"ep1_citadel_02\"\t1\r\n\"ep1_citadel_02b\"\t1\r\n\"ep1_citadel_03\"\t1\r\n\"ep1_citadel_04\"\t1\r\n\"ep1_background01\"\t1\r\n\"ep1_background01a\"\t1\r\n\"ep1_background02\"\t1\r\n\"ep2_outland_01\"\t1\r\n\"ep2_outland_01a\"\t1\r\n\"ep2_outland_02\"\t1\r\n\"ep2_outland_03\"\t1\r\n\"ep2_outland_04\"\t1\r\n\"ep2_outland_05\"\t1\r\n\"ep2_outland_06\"\t1\r\n\"ep2_outland_06a\"\t1\r\n\"ep2_outland_07\"\t1\r\n\"ep2_outland_08\"\t1\r\n\"ep2_outland_09\"\t1\r\n\"ep2_outland_10\"\t1\r\n\"ep2_outland_10a\"\t1\r\n\"ep2_outland_11\"\t1\r\n\"ep2_outland_11a\"\t1\r\n\"ep2_outland_11b\"\t1\r\n\"ep2_outland_12\"\t1\r\n\"ep2_outland_12a\"\t1\r\n\"ep2_background01\"\t1\r\n\"ep2_background02\"\t1\r\n\"ep2_background02a\"\t1\r\n\"ep2_background03\"\t1\r\n\"credits\" 1\r\n\"vst_lostcoast\" 1\r\n\"test\" 1\r\n\"sdk_vehicles\" 1\r\n}\r\nFileSystem\r\n{\r\nSteamAppId 243750\r\nSearchPaths\r\n{\r\ngame+mod |gameinfo_path|custom\/*\r\ngame+game_write+mod+mod_write+default_write_path |gameinfo_path|.\r\ngamebin |gameinfo_path|bin\r\n\/\/ The lines below until the BREAK comment are responsible for the game resources to work properly\r\n\/\/ in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,\r\n\/\/ Source SDK and OF) in the same drive letter\/partition. If you have a different storage configuration,\r\n\/\/ feel free to modify the paths below between quotes (example: D:\\Steam\\steamapps\\common\\Team Fortress 2\\tf).\r\ngame \"\/home\/container\/tf2\/tf\/tf2_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_misc.vpk\"\r\n\/\/ The hl2 folder here is from Source SDK Base 2013 Multiplayer.\r\ngame \"|all_source_engine_paths|hl2\\hl2_misc.vpk\"\r\ngame \"|all_source_engine_paths|hl2\"\r\n\/\/ ========== BREAK ==========\r\nplatform |all_source_engine_paths|platform\/platform_misc.vpk\r\nplatform |all_source_engine_paths|platform\r\ngame+download |gameinfo_path|download\r\n}\r\n}\r\n}\r\nEOF\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s datacache_srv.so datacache.so\r\nln -s dedicated_srv.so dedicated.so\r\nln -s engine_srv.so engine.so\r\nln -s materialsystem_srv.so materialsystem.so\r\nln -s replay_srv.so replay.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s vphysics_srv.so vphysics.so\r\n## more symlink fixes\r\ncd \/mnt\/server\/open_fortress\/bin\r\nln -s server.so server_srv.so", + "container": "ubuntu:18.04", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Game ID", + "description": "The ID corresponding to the game to download and run using SRCDS.", + "env_variable": "SRCDS_APPID", + "default_value": "244310", + "user_viewable": true, + "user_editable": false, + "rules": "required|regex:\/^(244310)$\/", + "field_type": "text" + }, + { + "name": "Game Name", + "description": "The name corresponding to the game to download and run using SRCDS.", + "env_variable": "SRCDS_GAME", + "default_value": "open_fortress", + "user_viewable": true, + "user_editable": false, + "rules": "required|regex:\/^(open_fortress)$\/", + "field_type": "text" + }, + { + "name": "Default Map", + "description": "The default map to use when starting the server.", + "env_variable": "SRCDS_MAP", + "default_value": "dm_2fort", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^(\\w{1,20})$\/", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum amount of players allowed on the server.", + "env_variable": "MAXPLAYERS", + "default_value": "24", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/open_fortress/gameinfo.txt b/game_eggs/steamcmd_servers/open_fortress/gameinfo.txt new file mode 100644 index 00000000..c3aadb27 --- /dev/null +++ b/game_eggs/steamcmd_servers/open_fortress/gameinfo.txt @@ -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 + + } + } +} diff --git a/game_eggs/steamcmd_servers/starbound/egg-starbound.json b/game_eggs/steamcmd_servers/starbound/egg-starbound.json index 6a890b4d..f2620735 100644 --- a/game_eggs/steamcmd_servers/starbound/egg-starbound.json +++ b/game_eggs/steamcmd_servers/starbound/egg-starbound.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "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" } ] } diff --git a/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json b/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json index 23b736c0..f0b2f4a8 100644 --- a/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json +++ b/game_eggs/steamcmd_servers/the_forest/egg-the-forest.json @@ -1,21 +1,21 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-11-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" } ] } diff --git a/game_eggs/steamcmd_servers/tower_unite/egg-tower-unite.json b/game_eggs/steamcmd_servers/tower_unite/egg-tower-unite.json index 733cba6c..963f1a2f 100644 --- a/game_eggs/steamcmd_servers/tower_unite/egg-tower-unite.json +++ b/game_eggs/steamcmd_servers/tower_unite/egg-tower-unite.json @@ -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 <> 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 <> 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" } }, diff --git a/software/languagetool/README.md b/software/languagetool/README.md new file mode 100644 index 00000000..7c5a6602 --- /dev/null +++ b/software/languagetool/README.md @@ -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 diff --git a/software/languagetool/egg-languagetool.json b/software/languagetool/egg-languagetool.json new file mode 100644 index 00000000..026432e4 --- /dev/null +++ b/software/languagetool/egg-languagetool.json @@ -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 '' | 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" + } + ] +} \ No newline at end of file diff --git a/software/owncast/README.md b/software/owncast/README.md new file mode 100644 index 00000000..a1262166 --- /dev/null +++ b/software/owncast/README.md @@ -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 | diff --git a/software/owncast/egg-owncast-online.json b/software/owncast/egg-owncast-online.json new file mode 100644 index 00000000..f134c898 --- /dev/null +++ b/software/owncast/egg-owncast-online.json @@ -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" + } + ] +} diff --git a/software/reposilite/README.md b/software/reposilite/README.md new file mode 100644 index 00000000..739545bb --- /dev/null +++ b/software/reposilite/README.md @@ -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. diff --git a/software/reposilite/egg-reposilite.json b/software/reposilite/egg-reposilite.json new file mode 100644 index 00000000..585d78bc --- /dev/null +++ b/software/reposilite/egg-reposilite.json @@ -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 \"(?<=)[^<]+\" <<< \"$(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" + } + ] +} \ No newline at end of file diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index 5fee7eba..d846af2e 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -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"