Skip to content

PhpMyAdmin ​

Database management for Pterodactyl Panel with one-click auto-login.


Features ​

  • Auto-Login: Automatically signs users into phpMyAdmin for their database.
  • No Core Edits: Native extension package (.pteroext) that does not modify core panel files.
  • Multi-Node Support: Works with local and remote database hosts.
  • Secure: Session cookies are isolated and decrypted safely.
  • Easy Install: Upload through the panel admin UI or the terminal.

Requirements ​

RequirementSupported Versions
Pterodactyl Panel2.0.0-dev / 2.0.0-alpha / 2.0.0-beta or newer
PHP8.3 or newer
DatabaseMySQL 5.7+, MySQL 8.0+, MariaDB 10.3+
DockerRequired to run the phpMyAdmin container

1. Extension Installation ​

Option A: Admin Web Interface ​

  1. In your panel, go to Admin > Extensions.
  2. Click Install Extension in the top right.
  3. Upload phpmyadmin-1.0.0.pteroext (or .zip).
  4. Enable the extension when prompted.

Option B: Terminal (CLI) ​

Upload phpmyadmin-1.0.0.pteroext to your panel directory and run:

bash
cd /var/www/pterodactyl
php artisan p:extension:install phpmyadmin-1.0.0.pteroext --enable

2. Docker Setup ​

Automated Setup ​

Run this command on your panel server:

bash
cd /var/www/pterodactyl
php artisan phpmyadmin:install-docker

INFO

This command automatically deploys the phpmyadmin/phpmyadmin:latest container on port 8085 and sets up routing.

Manual Setup ​

If you prefer running Docker manually:

bash
docker run -d \
  --name pterodactyl-pma \
  --restart always \
  -p 127.0.0.1:8085:80 \
  -e PMA_ARBITRARY=1 \
  -e PMA_ABSOLUTE_URI=https://your-panel-domain.com/pma/ \
  phpmyadmin/phpmyadmin:latest

3. Nginx Reverse Proxy Setup ​

Add this block inside the HTTPS server { ... } block in /etc/nginx/sites-available/pterodactyl.conf:

nginx
location ^~ /pma/ {
    proxy_pass http://127.0.0.1:8085/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_hide_header X-Frame-Options;
    add_header X-Frame-Options "SAMEORIGIN";
}

Test and reload Nginx:

bash
nginx -t && systemctl reload nginx

4. Panel Configuration ​

  1. In your panel, go to Admin > Extensions > phpMyAdmin > Settings.
  2. Configure phpMyAdmin URL:
    • If using reverse proxy: enter /pma (or https://your-domain.com/pma/).
    • If using a subdomain: enter https://pma.your-domain.com.
  3. Click Save Settings.

5. Database Routing ​

Database connections are routed automatically:

  • Local Databases (127.0.0.1 / localhost): Routed to 172.17.0.1 so the container can reach your local MySQL server.
  • Remote Nodes: Connects using the Database Host IP set in Admin > Databases.
  • Arbitrary Servers: PMA_ARBITRARY=1 allows one container to handle databases across all nodes.

Troubleshooting ​

Login button opens the login page instead of auto-logging in ​

  • Make sure your panel uses HTTPS. Session cookies require HTTPS.
  • Verify that proxy_set_header X-Forwarded-Proto https; is in your Nginx config.

Unable to connect to database ​

  • Verify that MySQL accepts connections from the panel server IP (or 172.17.0.1 for local databases).
  • In /etc/mysql/mariadb.conf.d/50-server.cnf (or mysqld.cnf), ensure bind-address is set to 0.0.0.0 or includes the bridge IP.

Permission Denied during upload ​

Fix file permissions on your panel:

bash
chown -R www-data:www-data /var/www/pterodactyl/extensions /var/www/pterodactyl/storage
chmod -R 775 /var/www/pterodactyl/extensions /var/www/pterodactyl/storage

Support ​