Pterodactyl

Was ist Pterodactyl ?

Pterodactyl® ist ein kostenloses Open-Source-Verwaltungspanel für Spielserver, das mit PHP, React und Go erstellt wurde. 


Pterodactyl wurde unter Berücksichtigung der Sicherheit entwickelt und führt alle Spielserver in isolierten Docker-Containern aus, während es Endbenutzern eine schöne und intuitive Benutzeroberfläche bietet.




Quelle: https://pterodactyl.io/

Installation mit Inoffiziellen Script

Wir nutzen hier ein inoffizielles Script, (dieser vereinfacht die Installation), sollte es Probleme mit der Installation geben, bietet das Pterodactyl Team keinen Support!


Quelle: https://github.com/vilhelmprytz/pterodactyl-installer


Diese Anleitung wird mit einer Domain genutzt.

Entsprechend müsst ihr auch die Einträge im Abschnitt “Domain -Einträge" setzen.



Für den Anfang müssen wir natürlich per SSH mit dem Server verbunden sein.

su -

apt install curl -y

bash <(curl -s https://pterodactyl-installer.se)


Das Script wird gestartet und führt euch nun durch die Installation.

Ihr bekommt verschiedene Varianten für eine Installation vorgeschlagen. In unserem Beispiel möchten wir das Webinterface (Panel) sowie die Gameserver Verwaltung (Node) auf derselben Maschine installieren.


- Wir wählen die 2:    [2] Install both on the same machine, i.e. [0] and [1]

Database name (panel): #leer lassen 

Database Username (pterodactyl): #leer lassen 

Password: #leer lassen 

Select Timezone: Europe/Berlin

Provide Email address for Configure Let´s Encrypt: [email protected]

Email address for admin account: [email protected] 

Username for Admin: Dein Benutzername

Firstname: Dein Vorname

Lastname: Dein Name

Password: HierSicheresLoginPasswort 

########################################################################

Set FQDN: panel.deinedomain.de

Do you want to auto config UFW:

do you want auto config lets encrypt: y 

HTTPS request: y 

Initial configuration completed. Continue with installation? (y/N): y

Terms of Service von Let´s Encrypt gelesen?

(A)gree/(C)ancel: a


Wings installation

Do you want to auto config UFW: y

Do you want to auto conf user for database: y

Do you want to configure MySQL for externally: n 

Database host username (pterodactyluser): #leer lassen 

Database host password: #Sicheres Passwort

do you want auto config HTTPS using lets encrypt: y

Set FQDN: node.deinedomain.de
HTTPS request: y
Enter email address for Let's Encrypt: [email protected]

Proceed with installation? (y/N): y


Durch das Installationsscript und der automatischen Konfiguration für die Firewall wurde der Port 22 wieder aktiviert, da wir diesen aber nicht benötigen, müssen wir ihn wieder blockieren.

ufw delete allow 22

Automatische Let´s Entcrypt Zertifikats Erneuerung

Das Panel, sowie die Wings Domain wurden mit dem SSL Zertifikat "Lets Entcrypt" verschlüsselt.
Diese sind aber nur für 3 Monate gültig, danach müssen diese erneuert (renew) werden.
Dafür legen wir uns eine automatisierte Aufgabe (crontab) an.

crontab -e


Wir erstellen die Aufgabe, das certbot jeden Tag um 23 Uhr eine "Erneuerung" versuchen soll. 
Damit diese Erneuerung wirksam ist, muss zusätzlich der nginx und wings Server neugestartet werden.

0 23 * * * certbot renew --quiet --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx; systemctl restart wings"

Einrichtung von Pterodactyl

Die Installation ist abgeschlossen.
Nun greifen wir auf das Webinterface über unserem Browser zu: “panel.deinedomain.de


Nachdem wir uns mit unseren festgelegten Admin Daten eingeloggt haben, sehen wir die erste Oberfläche unseres neuen Webinterface´s. 


Klick auf die Zahnräder, um das Webinterface weiter zu konfigurieren.


Unter Settings -> General.
Könnt ihr unter Company Name: einen beliebigen Webinterface Namen eintragen. 

Unter Advanced könnt ihr das ReCaptcha ausschalten.


Nun müssen wir unsere “Node” richtig ins Webinterface einbinden.


Unter Location müssen wir unseren Gameserver Host benennen.
Wie ihr ihn nennt, ist egal. z.b. den Namen des Hosters, in unserem falle:  “Frankfurt DSH”


Unter “Daemon Server File Directory” ändern wir den Pfad, in der unsere Server installiert werden.
Standardmäßig ist “/var/lib/www/pterodactyl/volumes” eingetragen.
Bei einigen anderen Anbietern ist der meiste verfügbare Speicherplatz unter /home.
Daher ändern wir es in:

/home/daemon-data

Bei “Total Memory” müsst ihr euren maximalen verfügbaren RAM des Servers in MB eintragen. (Nur die Zahl)

Als Umrechnungshilfe könnt ihr euch: https://www.gbmb.org/gb-to-mb zur Hilfe nehmen.
Beachtet das RAM in Binär dargestellt wird. Beispielsweise 8GB RAM = 8192MB

Memory und Disk Over-Allocation stellen wir auf 0


Unter “Total Disk Space” tragen wir unserem maximalen verfügbaren Festplattenspeicher ein.
Rechnen davon aber noch etwa 10GB ab. Wenn wir also 150GB auf unserem Server haben, tragen wir 140GB ein. 


Mit “Create Node” das ganze noch abspeichern.


Unter IP Address tragen wir die IP des Servers ein.
Unter Ports, alle Ports, die wir für unsere Server benötigen. z.b. für Minecraft den Port 25565

Für Teamspeak brauchen wir den Port 9987, 10011 und 30033

Informiert euch welche Spiele welchen Port brauchen, ihr müsst diese hier eintragen, um diese auch freizugeben.


Klickt auf “Generate Token
Kopiert euch den kompletten Befehl im grauen Kasten!

Nun müssen wir über unsere Putty-SSH Verbindung den Kopierten Code einfügen und abschicken.


Danach noch den Wings Server starten:

systemctl start wings


Unter Nodes sollte eurer Gamehost mit einem grünen Herz sichtbar sein.

Damit ist die Ersteinrichtung von Pterodactyl abgeschlossen.


 Um nun auch den Nginx mit Crowdsec zu überwachen und abzusichern, müssen wir die dazugehörige collections installieren.

cscli collections install crowdsecurity/nginx