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
1
Navigate to Nests
Go to Admin Panel → Nests → Create New
2
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
3
Create Nest
Click Create to save the nest
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
1
Navigate to Nest
Click on the nest where you want to add an egg
2
Click Create New Egg
Select Create New Egg button
3
Basic Information
Egg Details
- Name: Egg name (e.g., “Paper”, “Vanilla”)
- Description: What this egg provides
- Author: Your email address
4
Docker Configuration
Docker ImagesSpecify available Docker images (one per line):Format:
Display Name|image:tag or just image:tag5
Startup Configuration
Startup CommandDefine the command to start the server:Use
{{VARIABLE}} for environment variables6
Configuration Files
Config Parsing (JSON)Define how config files should be parsed:
7
Stop Configuration
Define the stop command:Or for graceful shutdown:
8
Install Script
Installation Script (Bash)Create a script to install the server:
9
Environment Variables
Add variables users can configure (next section)
10
Create Egg
Click Create to save the egg
Docker 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
1
Navigate to Egg Variables
Click on an egg, then go to Variables tab
2
Add New Variable
Click New Variable
3
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
4
Save Variable
Click Create Variable
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:1
Get Egg JSON
Download egg from:
- Pterodactyl Eggs Repo
- Export from another Panel
- Create custom JSON
2
Navigate to Nest
Go to the nest where you want to import
3
Import Egg
Click Import Egg and upload the JSON file
4
Verify Configuration
Review the imported egg settings and adjust as needed
Exporting Eggs
To share eggs with others:1
Navigate to Egg
Click on the egg you want to export
2
Export
Look for the export option
3
Save JSON
Download the JSON file
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
