Skip to main content

Installation Guide

This guide will walk you through installing Pterodactyl Panel and the Wings daemon. Follow each step carefully to ensure a successful installation.
This installation assumes you have a fresh server meeting all system requirements. Installing on an existing server with other applications may cause conflicts.

Overview

Pterodactyl installation consists of three main components:
1

Panel Installation

Install the web interface and management system
2

Wings Installation

Install the server control daemon on game server nodes
3

Configuration

Connect Wings to the Panel and configure your first server

Prerequisites

Before beginning, ensure you have:
  • A server meeting system requirements
  • Root or sudo access to the server
  • A domain name pointing to your server IP
  • Basic knowledge of Linux command line
It’s recommended to run the Panel and Wings on separate servers in production. However, they can be installed on the same machine for testing.

Part 1: Panel Installation

Step 1: Install Dependencies

First, update your system and install required dependencies.

Step 2: Install Composer

Composer is required to install PHP dependencies.
Verify installation:

Step 3: Download Panel Files

Create the directory for the Panel and download the files.

Step 4: Configure Database

Secure your MySQL installation and create the Panel database.
When prompted, set a strong root password and answer ‘Y’ to all security questions.
Now create the Panel database and user:
Replace yourStrongPassword with a secure password. Never use the root MySQL user for the Panel.

Step 5: Install Panel Dependencies

Install PHP dependencies using Composer.
This process may take several minutes depending on your server’s speed.

Step 6: Environment Configuration

Generate the environment file and application key.
Now configure the environment:
You’ll be prompted to enter:
  • Author Email: Your email address for Let’s Encrypt
  • Application URL: Your Panel URL (e.g., https://panel.example.com)
  • Timezone: Your timezone (e.g., America/New_York)
  • Cache Driver: Select redis (recommended)
  • Session Driver: Select redis (recommended)
  • Queue Driver: Select redis (recommended)
Next, configure database settings:
Enter the database credentials:
  • Database Host: 127.0.0.1
  • Database Port: 3306
  • Database Name: panel
  • Username: pterodactyl
  • Password: The password you set earlier

Step 7: Database Setup

Run database migrations to set up the Panel schema.

Step 8: Create Admin User

Create your first administrator account.
Enter:
  • Email: Your email address
  • Username: Your username
  • First Name: Your first name
  • Last Name: Your last name
  • Password: A strong password
  • Admin: yes

Step 9: Set Permissions

Set the correct ownership and permissions.

Step 10: Configure Queue Worker

Create a systemd service for the queue worker.
Paste the following:
Enable and start the service:

Step 11: Configure Cron Job

Add a cron job for scheduled tasks.
Add this line:

Step 12: Configure Web Server

Configure NGINX or Apache to serve the Panel.
Remove the default configuration:
Create the Panel configuration:
Paste the following (replace panel.example.com with your domain):
Enable the configuration:
Test and restart NGINX:

Step 13: Install SSL Certificate

Install Certbot and obtain an SSL certificate.
Obtain the certificate:
Certbot will automatically configure SSL and set up auto-renewal.

Panel Installation Complete!

You should now be able to access your Panel at https://panel.example.com. Log in with the admin account you created.

Part 2: Wings Installation

Wings must be installed on every server where you want to run game servers. This can be the same server as the Panel or separate machines.

Step 1: Install Docker

Install Docker on your Wings node.
Verify Docker is running:
Enable swap to prevent out-of-memory issues.

Step 3: Download Wings

Download the Wings binary.

Step 4: Create Node in Panel

Before configuring Wings, you need to create a node in the Panel.
1

Access Admin Panel

Log in to your Panel and navigate to the Admin area
2

Create Location

Go to LocationsCreate New and create a location (e.g., “US East”)
3

Create Node

Go to NodesCreate New and fill in:
  • Name: A descriptive name (e.g., “Node-1”)
  • Location: Select the location you created
  • FQDN: Your node’s domain or IP (e.g., node1.example.com)
  • Communicate Over SSL: Enable if using HTTPS
  • Behind Proxy: Enable if behind a proxy
  • Memory: Total RAM to allocate to servers
  • Disk Space: Total disk space to allocate
4

Get Configuration

After creating the node, go to the Configuration tab and copy the configuration file

Step 5: Configure Wings

Create the Wings configuration file.
Paste the configuration from the Panel (Step 4). It should look similar to:
Ensure the remote URL points to your Panel URL and matches exactly (including https:// and no trailing slash).

Step 6: Create Wings Service

Create a systemd service for Wings.
Paste:
Enable and start Wings:
Check status:

Step 7: Configure Firewall

Open necessary ports for Wings.

Step 8: Verify Connection

In your Panel, navigate to AdminNodes and check if the node shows as online with a green heart icon.
If the node appears offline, check:
  • Wings service is running: systemctl status wings
  • Firewall allows port 8080
  • The remote URL in config.yml is correct
  • Wings logs: journalctl -u wings -n 50

Part 3: Creating Your First Server

Now that both Panel and Wings are installed, create your first game server.

Step 1: Import Eggs

Eggs are server templates. Import default eggs:
1

Download Eggs

Visit pterodactyl-eggs repository and download eggs for your desired games
2

Import to Panel

Go to AdminNests → Select a nest → Import Egg and upload the JSON file
The Panel comes with some default eggs, but the community repository has many more options.

Step 2: Create Allocations

Allocations are IP:Port combinations for game servers.
  1. Go to AdminNodes → Select your node → Allocation
  2. Enter:
    • IP Address: Your server’s IP
    • Ports: Port range (e.g., 25565-25665)
  3. Click Submit

Step 3: Create Server

1

Navigate to Servers

Go to AdminServersCreate New
2

Core Details

  • Server Name: Name your server
  • Server Owner: Select a user
  • Description: Optional description
3

Allocation

  • Node: Select your node
  • Default Allocation: Select an available allocation
4

Application Feature Limits

Configure database and backup limits
5

Resource Management

  • Memory: Allocated RAM (MB)
  • Disk Space: Allocated disk (MB)
  • CPU Limit: CPU percentage (100 = 1 core)
6

Nest Configuration

  • Nest: Select game category (e.g., Minecraft)
  • Egg: Select server type (e.g., Paper)
  • Docker Image: Default is usually fine
  • Startup Command: Customize if needed
7

Create Server

Click Create Server and wait for installation

Step 4: Access Server

Once created, access your server:
  1. Go to the client area (not admin)
  2. Click on your server
  3. Use the console to start/stop and manage your server

Troubleshooting

Panel Issues

This occurs when assets aren’t built. If using pre-built releases, ensure you extracted all files correctly.For development:
Check the queue worker status:
View logs:
Verify database credentials in /var/www/pterodactyl/.envTest connection:

Wings Issues

Check Wings status:
View logs:
Verify:
  • Port 8080 is accessible from Panel
  • SSL configuration matches Panel settings
  • remote URL in config.yml is correct
Check Wings logs:
Verify:
  • Docker is running: systemctl status docker
  • Disk space available: df -h
  • Permissions on /var/lib/pterodactyl
Verify:
  • Wings is running
  • Port 2022 is open in firewall
  • Using Panel username and password
  • SFTP address is node_address:2022

Post-Installation

Security Hardening

1

Enable 2FA

Enable Two-Factor Authentication for all admin accounts
2

Configure Firewall

Ensure only necessary ports are open
3

Regular Updates

Keep Panel, Wings, and system packages updated
4

Backup Strategy

Configure automated backups for database and server files

Optimization

  • Configure Redis for better performance
  • Set up queue workers for background processing
  • Enable OPcache for PHP performance
  • Consider CDN for static assets (large installations)
  • Monitor resource usage and scale as needed

Updating

To update Pterodactyl:
Always backup your database and configuration files before updating!

Next Steps

Official Documentation

Read the complete documentation for advanced configuration

Community Discord

Join the community for support and discussions

API Documentation

Learn how to integrate with the Pterodactyl API

Community Eggs

Browse hundreds of community-maintained server eggs

Support

If you encounter issues:
  1. Check the official documentation
  2. Search existing GitHub issues
  3. Join the Discord server for community help
  4. Review logs for error messages
When asking for help, always provide:
  • Panel and Wings versions
  • Operating system and version
  • Error messages from logs
  • Steps to reproduce the issue