
Pterodactyl and Pelican are both open source game server management panels. Pelican started as a fork of Pterodactyl and is now a separate project with its own team. Pterodactyl is still developed too: 1.x is its stable line, and Pterodactyl 2.0 has been in open beta since 14 October 2026. Versions and status in this article were checked on 29 October 2026 on both projects' sites and GitHub release pages.
Quick Comparison
| Feature | Pterodactyl | Pelican |
|---|---|---|
| Status | Stable 1.x (1.15.2, 21 October 2026), 2.0 in open beta | 1.0 release candidate (1.0.0-rc.2, 22 October 2026) |
| Licence | MIT (Panel and Wings) | AGPLv3 (Panel), MIT (Wings) |
| Language | PHP (Laravel) | PHP (Laravel) |
| Node agent | Wings | Wings (compatible) |
| Docker | Required | Required |
| Eggs | Large ecosystem | Compatible with Pterodactyl eggs |
| Themes | Blueprint or custom CSS on 1.x, built-in themes and extensions in the 2.0 beta | Plugin system with themes |
| API | Full REST API | Full REST API |
| Database | MySQL or MariaDB | SQLite, MySQL, MariaDB or PostgreSQL |
| Community | Very large | Growing |
| New features | Yes, in the 2.0 beta (extensions, themes, egg catalog, tags) | Yes |
Why Pelican Exists
Pelican's team forked Pterodactyl over what Pelican's FAQ calls a "difference of visions, directions, and opinions". They rebuilt the admin and client areas in Filament on modern Laravel and added a plugin system, admin roles and more database choices (Pelican comparison page). Pterodactyl did not stop: 1.x still gets releases, such as the 1.15.2 security release on 21 October 2026, and the 2.0 open beta adds extensions, themes, an egg catalog and tags. Its release notes say to try 2.0 on a test panel first and keep production panels on 1.x for now.
Two points are often mixed up:
Licensing. Pterodactyl is MIT licensed, for the Panel and for Wings, on both the 1.x and 2.0 branches. Pelican is the project that changed licence: when it forked, it relicensed its Panel from MIT to AGPLv3, while Pelican Wings stays MIT. Under Pelican's AGPLv3, a host that changes the Panel's source files, keeps those changes closed and runs the panel publicly has to open source the changes or buy a commercial licence. Plugins and themes do not count as changes to the Panel. So if your business depends on closed modifications to the panel code, the licence points to Pterodactyl, not away from it.
Security. In June 2025 Pterodactyl fixed a critical flaw, CVE-2025-49132, in its /locales/locale.json endpoint. It let anyone run code on the panel's server without logging in, and from there read the .env file, the database and the files of the servers the panel manages. The fix shipped in 1.11.11, so any older panel needs an update. Both projects publish security advisories on GitHub, and both shipped serious fixes in 2026, including two remote code execution fixes in Pelican's beta33 and beta35. Whichever panel you run, stay on the latest release: Pelican only supports its newest release and does not backport fixes (Pelican versioning).
Should You Migrate?
New installations: Both panels are actively developed. Pterodactyl 1.15 is the stable choice today, and its 2.0 beta is meant for test panels for now. Pelican is at the 1.0 release candidate stage and already ships plugins, admin roles, passkeys and SQLite or PostgreSQL support. Pick Pelican for those features if its AGPLv3 terms suit you, and Pterodactyl for the MIT licence and its stable 1.x line.
Existing Pterodactyl: No urgency. Pterodactyl 1.x still works and still gets releases, including security fixes. Check your themes and panel modifications before you switch: they do not carry over to Pelican, so each one needs a Pelican plugin instead.
Migration Path
Pelican's migration guide upgrades your Pterodactyl database in place. Users, servers, nodes, eggs, databases, backups, schedules, subusers and API keys carry over, and game servers keep running with their files. You need Pterodactyl 1.11.4 or newer and PHP 8.4 or newer.
- Back up your database,
/var/www/pterodactyland/etc/pterodactyl. The migration changes the database and cannot be undone. - Download the migration script and run its checks. They change nothing and tell you what to fix first.
- Run the migration. It installs Pelican in
/var/www/pelican, copies your.env, upgrades the database and sets up the queue worker and cron job. Then point your web server at/var/www/pelican/publicand disable the Pterodactyl site. - Run the Wings script on every node. It swaps in Pelican Wings and keeps your existing config and server files.
# on the panel server
curl -fsSLo migrate-panel.sh https://pelican.dev/migrate-panel.sh
sudo bash migrate-panel.sh --check
sudo bash migrate-panel.sh
# on every node
curl -fsSLo migrate-wings.sh https://pelican.dev/migrate-wings.sh
sudo bash migrate-wings.sh
Nests and locations become tags, and old ptla_ and ptlc_ API keys keep working. The nests and locations API endpoints are gone, so check your billing module before you switch. Eggs carry over, and Pelican says the original Pterodactyl eggs will keep working.
Staying on Pterodactyl? Its 1.x to 2.0 upgrade is a separate path. It needs Panel 1.12.0 or newer and PHP 8.3 or newer, installs 2.0 in a new directory next to 1.x, and also replaces nests with tags. 2.0 removes the Application API's nest endpoints, so update your billing module first. The guide says to test the upgrade on a copy of your panel, and our Pterodactyl 2.0 beta guide shows how to do that on a separate VPS.
Installing Pelican Panel on a VPS
If you are starting fresh, here is a walkthrough for deploying Pelican on a Linux VPS with the panel behind a Cloudflare Tunnel, based on Pelican's own Docker, Cloudflare Tunnel and Wings guides. The tunnel serves the panel over HTTPS without opening an inbound port for it. It does not hide the whole server: Wings needs its own reachable hostname, and SFTP and the game ports are still reached on the VPS's own IP.
Prerequisites
- A fresh Linux VPS running Ubuntu 22.04 or 24.04.
- A domain name connected to a free Cloudflare account.
- SSH access to your server.
For the VPS itself, our Premium VPS is KVM with full root access and Linux images including Ubuntu, on a Ryzen 9 9950X with DDR5 in an EU data center, with shared vCores and dedicated RAM.
Step 1: Prepare the Environment
Connect to your VPS via SSH as the root user and update the system:
apt update -y && apt upgrade -y
Install dependencies:
apt install -y curl wget git unzip tar
Step 2: Install Docker
Pelican's docs offer two ways to install the panel: natively, with PHP 8.4 or 8.5 and a web server, or with its Docker image. The Cloudflare Tunnel guide builds on the Docker image, so that is the route here. Pelican's Docker page still calls Docker deployment a work in progress and recommends the native install for now, so read both before you choose.
Install Docker CE:
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
Pelican also supports SQLite, and the Docker image uses it by default, so smaller deployments can skip MariaDB entirely.
Step 3: Set Up a Cloudflare Tunnel
Instead of opening ports and managing SSL certificates with Certbot, route the panel's traffic through a Cloudflare Tunnel:
- Open the Cloudflare dashboard and go to Networking > Tunnels (Networks > Tunnels in the older Zero Trust dashboard).
- Click Create a tunnel, select Cloudflared and name the tunnel (for example, "pelican").
- On the install screen, copy only the token, the long string after
--token. You do not install cloudflared on the VPS itself: Docker runs it next to the panel. - Under Routes, add a Published application (a public hostname in older dashboards): set the subdomain (
panel) and your domain (yourdomain.com), the Service type toHTTPand the URL topanel:80, which is the panel container's name and port.
On the VPS, create a folder with a .env file that holds the token:
mkdir -p /opt/pelican && cd /opt/pelican
echo "TUNNEL_TOKEN=paste-your-tunnel-token-here" > .env
Then create compose.yml next to it. This is the file from Pelican's tunnel guide, with your hostname and email filled in:
services:
panel:
image: ghcr.io/pelican/panel:latest
restart: always
networks:
- default
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- pelican-data:/pelican-data
- pelican-logs:/var/www/html/storage/logs
environment:
XDG_DATA_HOME: /pelican-data
APP_URL: "https://panel.yourdomain.com"
ADMIN_EMAIL: "you@yourdomain.com"
BEHIND_PROXY: "true"
TRUSTED_PROXIES: "172.20.0.0/16"
cloudflared:
image: cloudflare/cloudflared:latest
restart: always
networks:
- default
command: tunnel --no-autoupdate run
environment:
TUNNEL_TOKEN: ${TUNNEL_TOKEN}
volumes:
pelican-data:
pelican-logs:
networks:
default:
ipam:
config:
- subnet: 172.20.0.0/16
Start it, check the tunnel and save the encryption key the panel generates on its first start:
docker compose up -d
docker compose logs cloudflared
docker compose logs panel | grep 'Generated app key:'
The cloudflared log should show Registered tunnel connection. Keep a copy of the app key somewhere other than the VPS: without it, the encrypted data in the panel cannot be read. Then open https://panel.yourdomain.com/installer to finish the setup, including your admin account.
Cloudflare now handles SSL for the panel, and no inbound port is open for it.
Step 4: Configure and Start Wings
Wings is the daemon that talks to Docker and physically creates game server containers. Each container gets its own isolated resources, so one server cannot consume memory or CPU allocated to another.
- Download Pelican Wings on the VPS:
mkdir -p /etc/pelican /var/run/wings
curl -L -o /usr/local/bin/wings "https://github.com/pelican/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
chmod u+x /usr/local/bin/wings
- Log into your Pelican Panel in a browser and open the admin area.
- Go to Nodes and click Create New. Pelican has no Locations: it groups nodes and eggs with tags instead.
- Give the node its own hostname, for example
node1.yourdomain.com. Wings cannot share the panel's tunnel hostname, because the browser opens the console connection straight to Wings. Pelican's tunnel guide gives two options: expose Wings directly, or route a second tunnel hostname to Wings on port 8080 and choose HTTPS with (reverse) proxy when you create the node. If you expose Wings directly, it needs its own SSL certificate, because Pelican's Wings guide says Wings must use SSL when the panel does. If Wings goes through Cloudflare, uploads larger than 100 MB fail on the Free and Pro plans. - Open the node's Configuration tab, copy the generated config and save it as
/etc/pelican/config.ymlon your VPS, or use the Auto Deploy Command button. - Run
wings --debugonce to check for errors, stop it with CTRL+C, and save thewings.serviceunit from Pelican's Installing Wings page in/etc/systemd/system/.
Start the service:
systemctl enable --now wings
SFTP (port 2022 by default) and the game ports do not pass through an HTTP tunnel, so open them in the VPS firewall. Your panel is now live and managing game servers through Docker.
FAQ
Is Pterodactyl dead? No. The 1.x line is stable and still gets releases (1.15.2 came out on 21 October 2026), and Pterodactyl 2.0 has been in open beta since 14 October 2026 with extensions, themes and an egg catalog.
Is Pelican better than Pterodactyl? It depends on what you need. Pelican already has plugins, admin roles, passkeys and a choice of SQLite, MySQL, MariaDB or PostgreSQL, but it is still at the release candidate stage and its Panel is AGPLv3. Pterodactyl 1.x is the MIT licensed stable line, and its 2.0 beta adds extensions and themes.
Which licence does each panel use? Pterodactyl is MIT licensed. Pelican's Panel is AGPLv3 and Pelican Wings is MIT.
Can I use Pterodactyl eggs in Pelican? Yes. Most Pterodactyl eggs work in Pelican.
Do I need to migrate right now? No. Migrate when convenient.
Related: Pelican panel guide, Pterodactyl themes guide, Pterodactyl VPS setup