Server Model Overview
Servers are the core resource in Pterodactyl. Each server (fromapp/Models/Server.php:153-176) contains:
Creating a New Server
Configure Core Details
Name and Owner
- Server Name: Descriptive name (1-191 characters)
- Owner: Select the user who will own this server
- External ID: Optional identifier for external systems
- Description: Optional server description
Select Deployment Location
Location and Node
- Choose a Location to filter available nodes
- Select a specific Node or use auto-deployment
- System will automatically select a viable node if available
Configure Resource Limits
Resource Allocation
- Memory: RAM in MB (minimum 0 for unlimited)
- Swap: Swap space in MB (-1 for unlimited)
- Disk Space: Storage in MB (minimum 0)
- CPU Limit: Percentage (0 for unlimited)
- CPU Threads: Specific thread pinning (e.g., “0,1,2” or “0-2”)
- IO Weight: Block IO weight (10-1000)
Set Feature Limits
Additional Limits
- Database Limit: Maximum databases (null for unlimited)
- Allocation Limit: Maximum IP allocations (null for unlimited)
- Backup Limit: Maximum backups (0 for none, null for unlimited)
Choose Nest and Egg
Game Configuration
- Select a Nest (e.g., Minecraft, Source Engine)
- Choose an Egg within the nest (e.g., Paper, Vanilla)
- The egg determines the server’s startup configuration
Configure Startup Settings
Docker and Startup
- Docker Image: Pre-filled from egg, or use custom image
- Startup Command: Modify if needed (from egg template)
- Environment Variables: Configure egg-specific variables
Network Allocation
IP and Port
- Select the primary Allocation (IP:Port)
- Optionally add additional allocations
Server Status States
Servers can be in various states (fromapp/Models/Server.php:122-126):
- Installing: Server is being set up
- Install Failed: Installation encountered an error
- Reinstall Failed: Reinstallation failed
- Suspended: Server is suspended (cannot start)
- Restoring Backup: Server is restoring from backup
- null: Normal operational state
Resource Configuration
Memory and Swap
- Memory: RAM allocated in MB
0= Unlimited- Recommended: At least 512MB for most games
- Swap: Virtual memory in MB
-1= Unlimited swap0= No swap- Recommended: Equal to memory or 0
CPU Allocation
- CPU Limit: Percentage of total CPU
100= One full core200= Two full cores0= Unlimited
- Threads: Pin to specific CPU threads
"0,1,2"= Threads 0, 1, and 2"0-4"= Threads 0 through 4- Leave blank for no pinning
Disk Space
- Disk: Storage limit in MB
0= Unlimited (use with caution)- Recommended: Allocate based on game requirements
IO Weight
- IO Weight: Block I/O priority (10-1000)
- Default:
500 - Higher = More I/O priority
- Useful for high-performance servers
- Default:
OOM Killer
By default, servers have OOM (Out of Memory) killer disabled:Disabling OOM killer allows servers to use swap space instead of being terminated.
Custom Docker Images
You can override the egg’s default Docker image:- Select the egg first
- Choose Custom Image from the dropdown
- Enter the full image name (e.g.,
ghcr.io/pterodactyl/yolks:java_17)
app/Http/Controllers/Admin/Servers/CreateServerController.php:72-76:
Server Installation Process
When a server is created:Skipping Install Scripts
You can skip the installation script:- Check Skip Egg Install Script during creation
- Sets
skip_scripts = true - Useful for pre-configured images
Editing an Existing Server
Administrators can modify all aspects of a server:Build Configuration
- Memory, swap, disk, CPU limits
- IO weight
- OOM killer setting
- Database, allocation, and backup limits
Startup Configuration
- Docker image
- Startup command
- Environment variables
Server Details
- Server name and description
- Owner assignment
- External ID
Network Allocations
- Add/remove IP allocations
- Change primary allocation
- Configure port assignments
Server Suspension
Suspending a server:- Sets
status = 'suspended' - Stops the server if running
- Prevents server from starting
- Owner loses access to control panel
app/Models/Server.php:218-221):
Server Transfers
Servers can be transferred between nodes:- Select target node
- Choose new allocation
- Transfer begins in background
- Server data is synced to new node
- Server is moved atomically
Server Relationships
Each server has relationships to:- Owner (User): The user who owns the server
- Node: The physical/virtual node hosting the server
- Nest: The game category (e.g., Minecraft)
- Egg: The specific game configuration (e.g., Paper)
- Allocation: Primary IP and port
- Allocations: All assigned IPs and ports
- Databases: MySQL databases for the server
- Backups: Server backups
- Schedules: Automated tasks
- Subusers: Additional users with access
- Mounts: Mounted directories
Deleting a Server
Before deleting:- Ensure server is stopped
- Back up any important data
- Navigate to server detail page
- Select Delete Server
- Confirm deletion
- Stop the server
- Delete the container
- Remove all server files
- Delete database records
- Free up allocations
Auto-Deployment
When creating a server, you can use auto-deployment:- Don’t select a specific node
- System finds a viable node automatically
- Based on resource availability and location
- Throws exception if no viable node found
Best Practices
- Resource Planning: Don’t over-allocate node resources
- Swap Configuration: Set swap to 0 or equal to memory
- Backup Limits: Set reasonable backup limits to prevent disk abuse
- Database Limits: Limit databases to prevent excessive MySQL connections
- Regular Monitoring: Check server performance and adjust resources
- Test Installations: Verify egg install scripts work correctly
Next Steps
Node Management
Configure nodes to host your servers
Nests & Eggs
Understand game configurations and templates
