Skip to main content

Migration addon (v3.x → v4)

Automated utility to migrate your Jexactyl/Pterodactyl panel to Jexactyl v4.


🚀 Quick Start

Run the migration script in one command:

bash <(curl -s http://jexactyl.freeutka.xyz/migrate.sh)

📖 Full migration guide (How script works)

1. Backup your Panel

While this migration is designed to be as simple as possible, we strongly advise you to back up all data.

# Backs up the file structure and .env key
cp -R /var/www/jexactyl /var/www/jexactyl-backup

# Dump the MySQL database
mysqldump -u root -p panel > /var/www/jexactyl-backup/panel.sql

2. Mark Panel as unavailable

php artisan down

3. Download Jexactyl

# Download the latest Jexactyl v4 release
curl -L -o panel.tar.gz https://github.com/Jexactyl/Jexactyl/releases/download/v4.0.0-rc1/panel.tar.gz

# Extract files
tar -xzvf panel.tar.gz && rm -f panel.tar.gz
chmod -R 755 storage/* bootstrap/cache

4. Apply temporary fixes

Edit app/Console/Commands/Environment/EmailSettingsCommand.php:

- Jexactyl\Traits\Commands\EnvironmentWriterTrait
+ Everest\Traits\Commands\EnvironmentWriterTrait

Remove old migrations:

rm database/migrations/2024_03_30_211213_create_tickets_table.php
rm database/migrations/2024_03_30_211447_create_ticket_messages_table.php
rm database/migrations/2024_04_15_203406_add_theme_table.php
rm database/migrations/2024_05_01_124250_add_deployable_column_to_nodes_table.php

5. Update Composer dependencies

composer install --no-dev --optimize-autoloader

6. Clear cache

php artisan optimize:clear

7. Update database

php artisan migrate --seed --force

8. Reassign permissions

# Debian/Ubuntu (NGINX/Apache)
chown -R www-data:www-data /var/www/jexactyl/*

# CentOS (NGINX)
chown -R nginx:nginx /var/www/jexactyl/*

# CentOS (Apache)
chown -R apache:apache /var/www/jexactyl/*

9. Restart Queue Workers

php artisan queue:restart

10. Bring Panel online

php artisan up