Concept Overview
Nests
A Nest is a collection of related eggs, typically grouped by game type or server software:- Minecraft: All Minecraft-related servers
- Source Engine: Valve Source games (CS:GO, TF2, Garry’s Mod)
- Voice Servers: TeamSpeak, Discord bots
- Generic: Generic applications and software
Eggs
An Egg is a specific server configuration within a nest:- Minecraft Nest → Vanilla, Paper, Forge, Spigot eggs
- Source Engine Nest → CS:GO, TF2, L4D2 eggs
- Docker images to use
- Installation scripts
- Startup commands
- Configuration files
- Environment variables
Nest Structure
Fromapp/Models/Nest.php:38-41:
Nest Validation
Fromapp/Models/Nest.php:43-47:
Egg Structure
Eggs are complex configurations (fromapp/Models/Egg.php:90-108):
Managing Nests
Creating a Nest
Fill in Details
Nest Information
- Name: Descriptive name (e.g., “Minecraft”, “Source Engine”)
- Description: Optional description of the nest
- Author: Email address of the creator
Viewing a Nest
Clicking on a nest shows:- All eggs in the nest
- Number of servers using each egg
- Ability to create new eggs
- Import/export functionality
app/Http/Controllers/Admin/Nests/NestController.php:69-74:
Deleting a Nest
Managing Eggs
Creating an Egg
Basic Information
Egg Details
- Name: Egg name (e.g., “Paper”, “Vanilla”)
- Description: What this egg provides
- Author: Your email address
Docker Configuration
Docker ImagesSpecify available Docker images (one per line):Format:
Display Name|image:tag or just image:tagStartup Configuration
Startup CommandDefine the command to start the server:Use
{{VARIABLE}} for environment variablesDocker Image Format
Fromapp/Http/Controllers/Admin/Nests/EggController.php:114-127:
Egg Variables
Variables allow users to customize their servers. Each variable has:- Name: Display name
- Description: Help text
- Environment Variable: The
{{VAR_NAME}}used in configs - Default Value: Pre-filled value
- User Viewable: Can users see this variable?
- User Editable: Can users change this variable?
- Validation Rules: Laravel validation rules
Creating a Variable
Configure Variable
Variable Settings
- Name:
Server Version - Description:
Which server version to install - Environment Variable:
SERVER_VERSION - Default Value:
latest - Validation Rules:
required|string|max:20 - User Viewable: Yes
- User Editable: Yes
Variable Usage
Variables can be used in:- Startup Command:
java -jar {{SERVER_JARFILE}} - Install Script:
VERSION={{SERVER_VERSION}} - Config Files: Parsed and replaced automatically
Configuration Inheritance
Eggs can inherit configuration from other eggs:Config Inheritance
Setconfig_from to another egg’s ID to inherit:
- Configuration file parsing
- Startup configuration
- Log configuration
- Stop command
app/Models/Egg.php:197-204:
Script Inheritance
Setcopy_script_from to copy installation scripts from another egg.
Inheritance is useful for creating variations of existing eggs without duplicating configuration.
Egg Features
Special features can be enabled (fromapp/Models/Egg.php:79-80):
EULA Feature
For Minecraft servers:FastDL Feature
For Source Engine servers:File Denylist
Prevent users from editing sensitive files:Importing Eggs
You can import eggs from JSON files:Get Egg JSON
Download egg from:
- Pterodactyl Eggs Repo
- Export from another Panel
- Create custom JSON
Exporting Eggs
To share eggs with others:
The export version is defined as (from
app/Models/Egg.php:68):
Install Script Container
The installation script runs in a separate container:- script_container: Docker image for installation
- script_entry: Entrypoint command (usually
bash) - script_is_privileged: Run as privileged container
Configuration Parsers
Supported configuration file parsers:- properties: Java .properties files
- file: Simple find/replace
- yaml: YAML configuration
- json: JSON configuration
- ini: INI files
Best Practices
- Use Inheritance: Don’t duplicate configurations
- Validate Variables: Always add validation rules
- Clear Descriptions: Help users understand variables
- Test Thoroughly: Test eggs before deploying to production
- Use Official Images: Prefer pterodactyl/yolks
- Version Control: Keep egg JSON files in version control
- Document Changes: Add update notes when modifying eggs
Common Eggs Repository
The community maintains eggs at: https://github.com/parkervcp/eggs This includes eggs for:- Minecraft (Vanilla, Paper, Forge, Fabric, Bedrock)
- Source Engine (CS:GO, TF2, Garry’s Mod)
- Voice Servers (TeamSpeak, Mumble)
- Discord Bots
- Game Servers (Rust, ARK, Valheim)
- And many more
Troubleshooting
Install Failed
Problem: Server installation fails Solutions:- Check install script logs
- Verify Docker image is accessible
- Test install script locally
- Check variable values are correct
Server Won’t Start
Problem: Server starts but immediately stops Solutions:- Check startup command syntax
- Verify environment variables
- Review server logs
- Test Docker image manually
Config Not Updating
Problem: Configuration changes don’t apply Solutions:- Verify config_files JSON is valid
- Check file paths are correct
- Ensure parser is appropriate for file type
- Test parsing rules
Next Steps
Server Creation
Deploy servers using your eggs
Mounts
Share files across servers with mounts
