adding PTERODACTYL Dragonwilds egg and readmes

This commit is contained in:
2026-04-05 21:46:09 +00:00
parent 868a31475a
commit bf2f315b1b
3 changed files with 218 additions and 2 deletions

View File

@@ -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. 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.

18
eggs/README.md Normal file
View File

@@ -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.

View File

@@ -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"
}
]
}