GuidesPterodactyl guides2 min read

Pterodactyl 500 Debugging

An HTTP 500 only tells you that the panel crashed while handling the request. After an addon install, the usual causes are wrong ownership, unwritable cache directories, stale Laravel caches, or a queue worker still running old code. Work through these in order.

Check ownership

The panel files should belong to the webserver account. Debian and Ubuntu usually use www-data:www-data; Arch commonly uses http:http.

For Debian and Ubuntu:

bash
chown -R www-data:www-data /var/www/pterodactyl/*

For Arch Linux:

bash
chown -R http:http /var/www/pterodactyl/*

Replace the path and service account if your setup differs.

Fix writable directories

Laravel must be able to write to storage and bootstrap/cache:

bash
cd /var/www/pterodactyl
chmod -R 755 storage/* bootstrap/cache/

Clear Laravel's caches

An addon can leave compiled routes, views, or configuration out of sync. Clear them:

bash
cd /var/www/pterodactyl
php artisan optimize:clear
php artisan view:clear
php artisan config:clear
php artisan route:clear
php artisan cache:clear

Restart the queue worker

Queue workers stay alive between deployments. Restart them so they load the new code:

bash
cd /var/www/pterodactyl
php artisan queue:restart

Read the actual error

If the panel still fails, the Laravel log should contain the real exception. This command uploads the latest 150 lines to Pteropaste:

bash
tail -n 150 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | nc pteropaste.com 99

Read the output before sharing the link. Logs can contain hostnames, usernames, tokens, and addon configuration. Redact anything private.