Native to Docker Migration
Guide for migrating from native Pterodactyl installation to Hydrodactyl with Docker
Migrating from Pterodactyl (Native → Docker)
Once you switch to Hydrodactyl, switching back to Pterodactyl is not supported and may cause errors as Hydrodactyl modifies the Pterodactyl Database Schema. Provided below is how you can make a backup of your Panel Database if you need to switch back. (Replace panel with the database name you use)
# If using MySQL
mysqldump -u root -p --opt panel > ./panel.sql
# If using MariaDB
mariadb-dump -u root -p --opt panel > ./panel.sqlPrerequisites
- 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
Hydrodactyl Installation
-
Create a new folder (e.g.
hydrodactyl-panel) on your server in a safe location, and switch to it. -
Download and configure the docker-compose.example.yml
-
Modify placeholder variables under
x-common -
If you are using built-in HTTPS, add port 443 (to the
portssection under thepanelcontainer) and set theLE_EMAILvariable (in thepanelsection underx-common) to a registered Let's Encrypt email address. -
Copy the following environment variables from your Pterodactyl
.envto yourdocker-compose.yml:APP_KEY APP_URL DB_CONNECTION DB_HOST DB_PORT DB_DATABASE DB_USERNAME DB_PASSWORD HASHIDS_SALT HASHIDS_LENGTH # (if it's not 8)The following are only applicable if email is set up:
MAIL_MAILER MAIL_HOST MAIL_PORT MAIL_USERNAME MAIL_PASSWORD MAIL_ENCRYPTION MAIL_FROM_ADDRESS MAIL_FROM_NAME APP_SERVICE_AUTHOR MAIL_DRIVER -
If your database is running on the same machine as your panel, set it to listen on the IP
172.17.0.1, and change theDB_HOSTenvironment variable to172.17.0.1. -
Rename
docker-compose.example.ymltodocker-compose.yml -
Run the following command to start the panel:
docker compose up -d
Your panel is now running! You can access it at the same URL as before, and use the same user accounts.