Migrating from Pterodactyl
Import your users, nodes, eggs, allocations, and servers from a Pterodactyl panel into Skyport.
Skyport includes an automatic migration script that reads your Pterodactyl MySQL database and imports everything into a Skyport panel running on the same machine.
What gets migrated
Section titled “What gets migrated”| Pterodactyl | → | Skyport | Notes |
|---|---|---|---|
| Users | → | Users | Passwords preserved (bcrypt hashes) — users can log in immediately |
| Locations | → | Locations | Country extracted from “City, CC” format |
| Nodes | → | Nodes | FQDN, ports, and SSL settings mapped |
| Nests + Eggs | → | Cargo | Nests are flattened — each egg becomes a cargo |
| Allocations | → | Allocations | All bind IPs, ports, and aliases |
| Servers | → | Servers | Imported as offline — need skyportd enrollment to go online |
What does NOT migrate
Section titled “What does NOT migrate”- Server files and volumes — you will need to copy these manually from Wings to skyportd (see below)
- Schedules, backups, and databases — these are not yet supported in Skyport
- API keys and subusers — Skyport has a different permission model
- Mounts — not yet supported
Prerequisites
Section titled “Prerequisites”Before migrating:
- Install the Skyport panel on the same machine as your Pterodactyl panel (or a machine that can access the Pterodactyl MySQL database)
- The Pterodactyl panel should be at one of:
/var/www/pterodactyl,/var/www/pelican, or/var/www/panel - The Pterodactyl MySQL database must be accessible
Running the migration
Section titled “Running the migration”bash <(curl -fsSL https://raw.githubusercontent.com/skyportsh/installer/main/migrate-panel.sh)The script will:
- Auto-detect your Pterodactyl installation
- Read the database credentials from Pterodactyl’s
.env - Show a summary of what will be migrated
- Ask for confirmation before making any changes
- Import all data into the Skyport database
After migration
Section titled “After migration”1. Enroll skyportd on each node
Section titled “1. Enroll skyportd on each node”The migration imports node records, but the nodes need to be enrolled with skyportd. For each node:
- Generate a configuration token in the Skyport admin panel
- Install and configure skyportd on the node machine:
bash <(curl -fsSL https://raw.githubusercontent.com/skyportsh/installer/main/install-daemon.sh)2. Migrate server volumes
Section titled “2. Migrate server volumes”Server files live on the node machines. To migrate them from Wings to skyportd:
# On each node, copy the server volumes# Wings default: /var/lib/pterodactyl/volumes/<server-uuid>/# skyportd default: /etc/skyportd/volumes/<server-id>/
# Example for a server with ID 1:cp -a /var/lib/pterodactyl/volumes/<pterodactyl-server-uuid>/ /etc/skyportd/volumes/1/chown -R root:root /etc/skyportd/volumes/1/You can find the Pterodactyl server UUID in the old panel’s database or admin area.
3. Verify user access
Section titled “3. Verify user access”Users can log in with their existing Pterodactyl passwords — the bcrypt hashes are preserved during migration. Admin users retain their admin status.
4. Switch DNS
Section titled “4. Switch DNS”Once everything is verified, point your domain from the old Pterodactyl panel to the new Skyport panel.
Running migration on a different machine
Section titled “Running migration on a different machine”If Skyport is installed on a different machine than Pterodactyl, you can still migrate by making the Pterodactyl MySQL database accessible remotely. The migration script reads the database credentials from Pterodactyl’s .env file, so you would need to:
- Install Skyport on the new machine
- Copy Pterodactyl’s
.envto a temporary location on the new machine (or create a dummy/var/www/pterodactyl/.envwith the correctDB_*values pointing to the remote MySQL) - Run the migration script
Troubleshooting
Section titled “Troubleshooting””No Pterodactyl installation found”
Section titled “”No Pterodactyl installation found””The script looks for an artisan file and .env at /var/www/pterodactyl, /var/www/pelican, and /var/www/panel. If your installation is elsewhere, create a symlink:
ln -s /your/actual/path /var/www/pterodactyl“Cannot connect to Pterodactyl database”
Section titled ““Cannot connect to Pterodactyl database””Verify the database credentials in Pterodactyl’s .env are correct and that MySQL is running.
Servers show as “offline”
Section titled “Servers show as “offline””This is expected. Servers are imported as offline because they need skyportd enrollment before they can be managed. Follow the “Enroll skyportd” steps above.
Duplicate FQDN warning
Section titled “Duplicate FQDN warning”If multiple Pterodactyl nodes share the same FQDN (e.g., different ports on the same host), Skyport appends the daemon port to make each FQDN unique.