Skip to content

Muspelheim-Hosting/pterodactyl-installer

 
 

Repository files navigation

🐦 pyrodactyl-installer

Shellcheck License: GPL v3

Unofficial scripts for installing Pyrodactyl Panel & Elytra (the daemon). Works with the latest version of Pyrodactyl!

This project is a fork of pterodactyl-installer by Vilhelm Prytz, adapted to install Pyrodactyl Panel and the Elytra daemon. It is not associated with the official Pyrodactyl or Pterodactyl projects.

Features

  • Automatic installation of the Pyrodactyl Panel (dependencies, database, cronjob, nginx, PHP 8.4, frontend build).
  • Automatic installation of Elytra (Docker, systemd, optional rustic backups).
  • Local / no-SSL install that works out of the box — decline SSL and the panel is served over http://<your-server-ip> with no FQDN required.
  • Single-machine "both" — when the panel and Elytra are installed together, the node and Elytra config are created automatically (no manual panel setup).
  • Separate machines — configure Elytra against a remote panel with just a panel URL + API key (the panel installer generates one for you).
  • Panel: (optional) automatic Let's Encrypt, firewall, phpMyAdmin (port 8081), and a sample Minecraft server.
  • A detailed summary at the end of the install (URL, login, database, API key, service status, next steps).
  • Uninstallation support for both panel and Elytra.

Supported installations

List of supported installation setups for panel and Elytra (installations supported by this installation script).

Supported panel and Elytra operating systems

Operating System Version Supported PHP Version
Ubuntu 14.04 🔴
16.04 🔴 *
18.04 🔴 *
20.04 🔴 *
22.04 8.4
24.04 8.4
Debian 8 🔴 *
9 🔴 *
10 8.4
11 8.4
12 8.4
13 8.4
CentOS 6 🔴
7 🔴 *
8 🔴 *
Rocky Linux 8 8.4
9 8.4
AlmaLinux 8 8.4
9 8.4

* Indicates an operating system and release that previously was supported by this script.

Using the installation scripts

To use the installation scripts, simply run this command as root. The script will ask you whether you would like to install just the panel, just Elytra or both.

bash <(curl -sSL https://raw.githubusercontent.com/Muspelheim-Hosting/pterodactyl-installer/master/install.sh)

Note: On some systems, it's required to be already logged in as root before executing the one-line command (where sudo is in front of the command does not work).

Firewall setup

The installation scripts can install and configure a firewall for you. The script will ask whether you want this or not. It is highly recommended to opt-in for the automatic firewall setup.

Development & Ops

Testing the script locally

To test the script, we use Vagrant. With Vagrant, you can quickly get a fresh machine up and running to test the script.

If you want to test the script on all supported installations in one go, just run the following.

vagrant up

If you only want to test a specific distribution, you can run the following.

vagrant up <name>

Replace name with one of the following (supported installations).

  • ubuntu_noble
  • ubuntu_jammy
  • debian_bullseye
  • debian_buster
  • debian_bookworm
  • debian_trixie
  • almalinux_8
  • almalinux_9
  • rockylinux_8
  • rockylinux_9

The project directory is mounted at /vagrant inside the box, so your local (un-pushed) changes are used directly. There are two ways to exercise the installer:

Headless install test

Runs the full install non-interactively (everything fed via env vars, no prompts):

vagrant up ubuntu_noble
vagrant provision ubuntu_noble --provision-with test-install

Override the target with TEST_TARGET (panel | wings | both, default both), e.g.:

TEST_TARGET=panel vagrant provision ubuntu_noble --provision-with test-install

Interactive test

Walks the real menu and every prompt (SSL, FQDN, phpMyAdmin, node setup) — exactly what a user sees — while still reading everything from /vagrant. It needs a real terminal, so SSH in and run it:

vagrant up ubuntu_noble
vagrant ssh ubuntu_noble
sudo bash /vagrant/scripts/vagrant/vagrant_test_interactive.sh

After install, find the VM's IP with ip -4 addr and open http://<vm-ip>/ from your host to reach the panel.

Creating a release

In install.sh github source and script release variables should change every release. Firstly, update the CHANGELOG.md so that the release date and release tag are both displayed. No changes should be made to the changelog points themselves. Secondly, update GITHUB_SOURCE and SCRIPT_RELEASE in install.sh. Finally, you can now push a commit with the message Release vX.Y.Z and create a release on GitHub.

Credits

This project is a fork of pterodactyl-installer.

Copyright (C) 2018 - 2026, Vilhelm Prytz, vilhelm@prytznet.se, and contributors!

About

🐦 Unofficial installation scripts for Pterodactyl Panel

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 99.4%
  • Python 0.6%