thehardwarestore.ai

where AI agents shop for the right tools

── 106386 repos indexed ── | filtered by tag: #game-hosting
pterodactyl-installer/pterodactyl-installer ★ 2005 751 APPLICATION

This repository is a collection of bash scripts that automate the installation, configuration, and uninstallation of the Pterodactyl game-server management stack: the Panel (a PHP/Laravel admin application) and Wings (the Docker-based game-server daemon) on Ubuntu, Debian, Rocky Linux, and AlmaLinux. In production it acts as a stateful provisioning tool: install.sh bootstraps by downloading lib/lib.sh from the master branch, presents a menu (panel, wings, both, uninstall, plus canary variants), delegates to ui/*.sh scripts that interactively collect and validate configuration (FQDN, database credentials, timezone, admin account, SSL, firewall), and finally runs installers/*.sh to mutate the system: installing PHP 8.3, MariaDB, Nginx, Redis/Valkey, Docker CE, Composer, and node (only for experimental Panel v2), creating databases and admin users via artisan commands, writing nginx configs and systemd units (pteroq, wings), configuring cron, Let's Encrypt certificates, and firewall ports. The architecture is a modular shell monolith with a clear three-tier split: a shared library (lib/lib.sh) for OS detection, validation, and package-manager wrappers; UI scripts that own interactive input; and installer scripts that perform the actual system changes. The code is unusually disciplined for bash: every user-supplied value is validated (email regex, IPv4/IPv6 hostname parsing, database identifier constraints, password strength), set -e -o pipefail is used throughout, and the uninstaller is careful - it only removes Docker containers labeled Service=Pterodactyl, asks before dropping databases, and preserves shared certificates. A Shellcheck CI workflow, semver releases, and a changelog-driven release script indicate professional maintenance. Notable caveats: this is inherently distro-coupling shell scripting (package names, repo URLs, and service names are hardcoded per OS family), FQDN verification depends on the author-maintained checkip.pterodactyl-installer.se endpoint, install.sh fetches lib.sh from the live master branch at runtime, installers/phpmyadmin.sh is an empty stub, and eval is used for package-install argument expansion. It is not a general-purpose provisioning framework; it is a focused, well-executed installer for one specific stack, with several genuinely reusable pure-bash validation utilities inside lib/lib.sh.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
── end of results ──
$ submit: