From bf2f315b1bc184525df717cde906645f668cbff7 Mon Sep 17 00:00:00 2001 From: wompmacho Date: Sun, 5 Apr 2026 21:46:09 +0000 Subject: [PATCH] adding PTERODACTYL Dragonwilds egg and readmes --- README.md | 28 ++++- eggs/README.md | 18 +++ eggs/egg-runescape-dragonwilds.json | 174 ++++++++++++++++++++++++++++ 3 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 eggs/README.md create mode 100644 eggs/egg-runescape-dragonwilds.json diff --git a/README.md b/README.md index 3fcf2c9..dadb5f4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,27 @@ -# Docker Compose Files +# Infrastructure & Service Configurations -This is a collection of my docker compose files. Some are in use, some are old and just kept for historical purposes. Sometimes I like to revisit things when new features are added or I have more time to dig deeper. \ No newline at end of file +This repository serves as a centralized collection of configurations, deployment scripts, and environment definitions for various services and applications. It includes production configurations, historical archives, and experimental setups. + +## Repository Structure + +### [Docker Compose](./docker_compose/) + +Contains `docker-compose.yaml` files and associated configurations for containerized services. Each subdirectory represents a standalone service or stack. + +### [Eggs](./eggs/) + +Specialized configuration files (JSON) for [Pterodactyl Panel](https://pterodactyl.io/) "Eggs". These define the environment, installation scripts, and startup parameters for game servers and other specialized applications. + +For more details on how to import and use these, see the [Eggs README](./eggs/README.md). + +## Future Scope + +This repository is intended to expand into a comprehensive hub for all configuration types beyond Docker and Pterodactyl, including: +- Kubernetes manifests +- Ansible playbooks +- Terraform modules +- Custom application configurations + +## Usage + +Refer to the individual `README.md` files within subdirectories for specific installation and usage instructions. diff --git a/eggs/README.md b/eggs/README.md new file mode 100644 index 0000000..c303724 --- /dev/null +++ b/eggs/README.md @@ -0,0 +1,18 @@ +# Pterodactyl Eggs Configuration + +This directory contains JSON export files for custom Pterodactyl Panel "Eggs". + +These files define the installation scripts, startup parameters, Docker images, and environment variables required to host various game servers and applications on a Pterodactyl node. + +## Usage + +To use these configurations: +1. Log in to your Pterodactyl Admin Panel. +2. Navigate to **Nests** in the administrative sidebar. +3. Select an existing nest or create a new one for your custom games. +4. Click on the **Import Egg** button. +5. Upload the relevant `.json` file from this directory. + +## Available Eggs + +* `egg-runescape-dragonwilds.json` - Configuration for a RuneScape: Dragonwilds dedicated server. diff --git a/eggs/egg-runescape-dragonwilds.json b/eggs/egg-runescape-dragonwilds.json new file mode 100644 index 0000000..97cf7b1 --- /dev/null +++ b/eggs/egg-runescape-dragonwilds.json @@ -0,0 +1,174 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-05-18T12:00:00+00:00", + "name": "RuneScape: Dragonwilds (wompmacho)", + "author": "michael@wompmacho.com", + "description": "On RuneScape\u2019s forgotten continent of Ashenfall, dragons have awoken. Gather, build, skill and craft to survive in this co-operative survival crafting game.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io/ptero-eggs/steamcmd:debian": "ghcr.io/ptero-eggs/steamcmd:debian" + }, + "file_denylist": [], + "startup": "INI=\"RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini\"; mkdir -p \"$(dirname \"$INI\")\"; GUID=$(grep -i \"ServerGuid=\" \"$INI\" 2>/dev/null | cut -d= -f2 | tr -d '\\r'); printf \"[SectionsToSave]\\nbCanSaveAllSections=true\\n\\n[/Script/Dominion.DedicatedServerSettings]\\nAdminPassword=%s\\nOwnerId=%s\\nWorldPassword=%s\\nServerName=%s\\nDefaultWorldName=%s\\nServerGuid=%s\\nbLostXpOnDeath=%s\\nbFriendlyFire=%s\\nDifficulty=%s\\nbDropItemsOnDeath=%s\\n\" \"{{DV_ADMIN_PASSWORD}}\" \"{{DV_OWNER_ID}}\" \"{{DV_WORLD_PASSWORD}}\" \"{{DV_SERVER_NAME}}\" \"{{DV_WORLD_NAME}}\" \"$GUID\" \"{{DV_LOST_XP_ON_DEATH}}\" \"{{DV_FRIENDLY_FIRE}}\" \"{{DV_DIFFICULTY}}\" \"{{DV_DROP_ITEMS_ON_DEATH}}\" > \"$INI\"; ./RSDragonwilds/Binaries/Linux/RSDragonwildsServer-Linux-Shipping RSDragonwilds -Port={{SERVER_PORT}} -QueryPort={{DV_QUERY_PORT}} -MultiHome=0.0.0.0 -ini:Game:[/Script/Engine.GameSession]:MaxPlayers={{DV_MAX_PLAYERS}} {{EXTRA_ARGS}}", + "config": { + "files": "{}", + "startup": "{\n \"done\": \"START SESSION - Success\"\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!/bin/bash\n# SteamCMD Base Installation Script\n\napt -y update\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\n\n# Variables\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\n echo -e \"Using anonymous Steam login\"\n STEAM_USER=anonymous\n STEAM_PASS=\"\"\n STEAM_AUTH=\"\"\nfi\n\ncd /tmp\nmkdir -p /mnt/server/steamcmd\ncurl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz\n\ntar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd\nmkdir -p /mnt/server/steamapps\ncd /mnt/server/steamcmd\n\nexport HOME=/mnt/server\n\n# Install server\n./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} validate +quit\n\n# Fix steam libraries\nmkdir -p /mnt/server/.steam/sdk32\ncp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so\n\nmkdir -p /mnt/server/.steam/sdk64\ncp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so\n\n# Permissions for Sentry Crash Handler\nchmod +x /mnt/server/RSDragonwilds/Plugins/Developer/Sentry/Binaries/Linux/crashpad_handler 2>/dev/null || true\n\n# Seed DedicatedServer.ini with correct headers\nmkdir -p /mnt/server/RSDragonwilds/Saved/Config/LinuxServer\ncat <<'EOF' > /mnt/server/RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini\n;METADATA=(Diff=true, UseCommands=true)\n[SectionsToSave]\nbCanSaveAllSections=true\n\n[/Script/Dominion.DedicatedServerSettings]\nAdminPassword=\nOwnerId=\nWorldPassword=\nServerName=\nDefaultWorldName=\nEOF\n\necho \"-----------------------------------------\"\necho \"Installation completed\"\necho \"-----------------------------------------\"", + "container": "ghcr.io/ptero-eggs/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Owner ID", + "description": "Your RuneScape: Dragonwilds Player ID (Required for server startup)", + "env_variable": "DV_OWNER_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name of your server", + "env_variable": "DV_SERVER_NAME", + "default_value": "A Dragonwilds Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "The password used to access server management in-game", + "env_variable": "DV_ADMIN_PASSWORD", + "default_value": "ChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Default World Name", + "description": "The name of the world to create/load", + "env_variable": "DV_WORLD_NAME", + "default_value": "MyWorld", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "World Password", + "description": "Optional world password. Leave empty for public access.", + "env_variable": "DV_WORLD_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "Steam query port (UDP)", + "env_variable": "DV_QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players allowed on the server", + "env_variable": "DV_MAX_PLAYERS", + "default_value": "6", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Lost XP on Death", + "description": "Whether players lose XP upon death. (True/False)", + "env_variable": "DV_LOST_XP_ON_DEATH", + "default_value": "False", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Friendly Fire", + "description": "Whether friendly fire is enabled. (true/false)", + "env_variable": "DV_FRIENDLY_FIRE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "The game difficulty. Options: Standard, Hard.", + "env_variable": "DV_DIFFICULTY", + "default_value": "Standard", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Drop Items on Death", + "description": "Whether players drop items upon death. (True/False)", + "env_variable": "DV_DROP_ITEMS_ON_DEATH", + "default_value": "True", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "Enable automatic updates on server startup", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Extra Arguments", + "description": "Additional server startup arguments", + "env_variable": "EXTRA_ARGS", + "default_value": "-log -unattended -NoCrashDialog", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Steam App ID", + "description": "Steam App ID for Dragonwilds server", + "env_variable": "SRCDS_APPID", + "default_value": "4019830", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file