Documentation & Systems Manual

Complete technical reference for installing, configuring, managing, and troubleshooting Pterodactyl environments.

Overview

Pterodactyl Installer by XENTO is an open-source, modular Linux shell utility engineered to automate the lifecycle management of Pterodactyl game server management software.

The script handles operating system detection, architecture identification, repository setup, dependency installation, database provisioning, application setup, queue service registration, web server configuration, SSL certificate generation, and service validation.

Quick Start

Execute the main installation script as root on a fresh Linux server instance:

bash — remote one-liner
$ bash <(curl -fsSL https://pterodactyl-installer.xento.us.kg/install.sh)

Alternatively, invoke directly from the raw GitHub mirror:

bash — github mirror
$ bash <(curl -fsSL https://raw.githubusercontent.com/thexento/pterodactyl-installer/main/install.sh)

Execution Modes

The installer supports non-interactive execution by passing command flags directly as arguments:

Command Flag Target Operation
bash install.sh panel Executes standalone Pterodactyl Panel installation.
bash install.sh wings Executes standalone Wings & Docker CE installation.
bash install.sh both Installs both Panel and Wings on the same machine.
bash install.sh phpmyadmin Installs phpMyAdmin database management interface.
bash install.sh status Performs real-time health check on installed services.
bash install.sh uninstall Launches interactive component uninstaller.

Panel Setup

The Panel installation module (scripts/panel.sh) executes the following sequence:

  • Configures PHP 8.3 repositories (Ondrej PPA for Ubuntu, Sury for Debian, Remi for Rocky/AlmaLinux).
  • Installs PHP extensions: cli, gd, mysql, mbstring, bcmath, xml, fpm, curl, zip, tokenizer.
  • Installs MariaDB Server, Redis Server, Nginx, and Composer v2.
  • Creates the database and user with sanitized 24-character random passwords.
  • Downloads latest Panel release tarball and configures .env environment file.
  • Executes artisan migrations, database seeding, key generation, and administrator account creation.
  • Registers systemd unit /etc/systemd/system/pteroq.service for queue processing.
  • Configures crontab scheduling (* * * * * php artisan schedule:run).
  • Generates Nginx site configuration and configures Certbot SSL if requested.

Wings Setup

The Wings installation module (scripts/wings.sh) executes the following sequence:

  • Installs official Docker Engine CE and containerd packages.
  • Detects architecture (amd64 or arm64) and downloads matching Wings binary to /usr/local/bin/wings.
  • Creates systemd unit /etc/systemd/system/wings.service.
  • Attempts automatic configuration using Panel API Token (ptla_...) and Node ID if provided.
  • If auto-configuration is skipped, prompts manual placement of /etc/pterodactyl/config.yml.

Panel + Wings (Single Server)

When executing combined deployment (bash install.sh both), the script runs the Panel installation module followed immediately by Wings installation. It reuses existing shared dependencies without duplicating packages or configuration files.

phpMyAdmin Setup

The phpMyAdmin module (scripts/phpmyadmin.sh) deploys phpMyAdmin v5.2.x to /var/www/phpmyadmin, generates a 32-character blowfish secret, and creates a standalone Nginx virtual host that operates independently without breaking Panel web settings.

Network & Port Requirements

Ensure the following inbound network ports are open on your server firewall or Cloud Provider security groups:

Port Protocol Service Description
22 TCP SSH Remote Console Access
80 TCP HTTP Web Traffic & Let's Encrypt Validation
443 TCP HTTPS Secure Web Traffic
8080 TCP Wings Daemon API (Panel to Node)
2022 TCP Wings SFTP File Transfer Management

Important System Paths

Path Description
/var/log/pterodactyl-xento.log Main installer execution and error log file.
/var/backups/pterodactyl-xento/ Directory containing automated pre-uninstallation backups.
/var/www/pterodactyl Pterodactyl Panel application root directory.
/etc/pterodactyl/config.yml Pterodactyl Wings configuration file.
/usr/local/bin/wings Executable binary file for Wings daemon.
/var/lib/pterodactyl Directory containing game server container files.
/var/www/phpmyadmin phpMyAdmin application root directory.

Service Control Reference

Manage installed background services using standard systemd commands:

systemctl status
# Check status of installed background units $ systemctl status wings $ systemctl status pteroq $ systemctl status nginx $ systemctl status mariadb $ systemctl status redis-server $ systemctl status docker

Troubleshooting Procedures

Use these diagnostic commands to inspect service logs and configuration syntax:

nginx config test
# Test Nginx site block syntax $ nginx -t
journalctl — wings
# Inspect Wings daemon logs $ journalctl -u wings -n 50 --no-pager
journalctl — pteroq
# Inspect Panel queue worker logs $ journalctl -u pteroq -n 50 --no-pager
installer log
# Inspect installer runtime log file $ less /var/log/pterodactyl-xento.log

Safe Uninstallation

To safely remove components, launch the uninstaller module:

uninstall module
$ bash install.sh uninstall

The uninstaller requests explicit input confirmation (UNINSTALL) and creates a timestamped backup of panel/wings files and databases inside /var/backups/pterodactyl-xento/ prior to resource removal.

Security & Logging

Pterodactyl Installer enforces strict security practices:

  • Credential Masking: Sensitive parameters (passwords, tokens) in script execution streams are redacted via regular expression filtering before writing to /var/log/pterodactyl-xento.log.
  • Injection Protection: Random password generation uses tr -dc 'A-Za-z0-9' to eliminate special characters that could trigger shell command or SQL parsing vulnerabilities.
  • Strict Error Traps: Scripts execute with set -Eeuo pipefail to ensure immediate termination on unexpected sub-command failures.

Development & Licensing

Pterodactyl Installer is licensed under the GNU General Public License v3.0 (GPLv3). Contributions and issue reports are handled via GitHub.