Fresh Installation
A comprehensive guide for setting up Pyrodactyl using Docker
This comprehensive guide walks you through setting up Pyrodactyl using Docker, from scratch to a fully functional system.
The guide for migration has moved to a new page.
For Pyrodactyl-specific issues, please use Pyrodactyl GitHub Discussions or join our Discord community at discord.gg/FGWKZT5dxv for support.
Windows is currently only supported for development purposes.
Prerequisites
- Linux system with root access
- Docker Engine and Docker Compose installed
- Docker expertise and basic system administration skills
- Consider Portainer for easier Docker management
- Avoid using Snap-based Docker installations on Ubuntu
- Enable Docker auto-start on boot
Panel Installation
-
Download and configure the docker-compose file (template).
- Modify all placeholder variables under
x-common
- Adjust exposed ports if needed (add 443 if you want to use HTTPS)
- Modify all placeholder variables under
-
Create a new folder (e.g. pyrodactyl-panel) on your server in a safe location, and move or upload your edited compose file into it. Rename the file to docker-compose.yml.
-
In terminal, cd into the directory, and run the following command to start the panel:
docker compose up -d
-
Run the command below, and go through its prompts to create an admin user:
docker compose exec panel php artisan p:user:make
-
Check that the panel is accessible using the IP address or domain of your server.
Panel Configuration
-
Access the panel via your server's IP/domain and login to your previously created user
-
Navigate to admin panel (three dots menu → Admin)
-
Navigate to Locations, make a new location. It can have any name
-
Navigate to Nodes, create a new node
- FQDN is the domain or IP address (if you're not using HTTPS) of the server you're going to use as a backend
- You should make sure the daemon ports are free on your backend server
-
On the new node, go to the:
- Configuration tab: Copy the contents to /etc/pterodactyl/config.yml on your backend server
- Allocation tab: Add some allocations to use for your servers. The IP should be 0.0.0.0. If you want to show a different IP in the UI (e.g. a subdomain), add an alias. You can input a range of ports like 25565-26000
Wings Installation
In addition to the Pyrodactyl panel, you'll need Pterodactyl Wings as a backend for your servers, which we will also use Docker for. You can have multiple Wings instances on different servers, but for now, we're setting up just one.
-
Run the commands below to setup the compose for Wings:
mkdir pyrodactyl-wings && cd pyrodactyl-wings wget https://github.com/pterodactyl/wings/raw/develop/docker-compose.example.yml -O docker-compose.yml
-
Run the following command to start Wings:
docker compose up -d
-
Verify Wings status:
docker ps | grep wings
-
If applicable, allow wings in your firewall:
- If using
ufw
:ufw allow 2022 ufw allow 8080
- If using
iptables
:iptables -A INPUT -p tcp --dport 8080 -j ACCEPT iptables -A INPUT -p tcp --dport 2022 -j ACCEPT
- If using
Post-Installation Steps
Email Configuration
For user password reset emails, etc, you'll need an SMTP server. For this, you can use:
You can configure SFTP settings in Admin Panel → Settings.
DDoS protection
If you're planning to have your server publicly accessible, your server could be vulnerable to DDoS attacks. Although not covered here due to its complexity, consider using:
The goal is to not have your server's IP address on any of your known domains.
Troubleshooting
If issues arise:
- Test with vanilla Pterodactyl by changing panel image to
ghcr.io/pterodactyl/panel:latest
- Debug issues
- Switch back to Pyrodactyl image when resolved