Nests and Eggs are the core configuration system in Pterodactyl that define how different game servers are installed and run. Understanding this system is crucial for customizing and adding new game types.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pterodactyl/panel/llms.txt
Use this file to discover all available pages before exploring further.
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
