m158/docs/wings
2024-07-09 21:06:07 +02:00
..
README.md [c] added chapter daemonizing 2024-07-09 21:06:07 +02:00

Realisieren: Wings

Inhaltsverzeichnis

Setup VM

Als allererstes müssen wir eine VM für Wings erstellen, da alle Server hier drauf laufen werden.

Diese VM sollte im Idealfall genug Ressourcen für so viele Server haben, wie auch auf dem letzten Server gelaufen sind.
Das wird im Kapitel Planen behandelt.

create vm in proxmox

Zuerst definieren wir eine ID. Da habe ich (Stelian) eine strikte Definition und Gruppierung, die auch die IP Adresse bestimmt. Hostname ist wings.

Proxmox ID und IP Format

Service Category ID Format IP Address
Miscellaneous 9TXX 10.1.9T.XX/16
9TXX  ==>  9120  ==>  10.1.91.20/16
  ^ X steht für die Ziffer der VM/des CTs.
 ^ T steht für den Typ der Ressource, also Container oder VM (0 oder 1 respektive)
^ 9 ist die Category-ID, davon hat es einige mehr

choose iso for vm

Als Betriebssystem wählen wir Ubuntu 24.04 LTS, da das die neueste Ubuntu Server LTS Version ist, und meine prefferierte Wahl für VMs ist, und auch von Pterodactyl unterstützt wird.

create virtual qcow2 drive

Als VHD kreiren wir eine 128 GB grosse Harddisk, damit alle jetzigen (und zukünftigen) Gameserver platz finden.

4 cores for the system

Das System kriegt 4 Threads (oder vCores) von den 8 verfügbaren, nutzt aber nicht zu jeder Zeit alle.

32GB of RAM

Wie hier schon erwähnt, kann diese VM 32 GB auf meinem System besetzen. Würde der Server in Zukunft mehr benötigen, kann ich entweder einige Gameserver stoppen, oder mehr RAM in den Host einbauen.

network vmbr1 for LAN

Hier wähle ich eins meiner zwei Netzwerkbridges auf meinem System.

Bridge Network
vmbr0 WAN und Static IPs
vmbr1 LAN, 10.1.0.0/16 Subnetz

Container und VMs, die eine statische IPv4 haben, kriegen vmbr0 als Netzwerkinterface. Das erlaubt ihnen mit der jetzigen Konfiguration, direkt ins Internet zu sprechen.

Wings setzen wir aber erstmals ins LAN Subnetz, also vmbr1, da wir momentan keine statische IP benötigen. Wir können später mit Caddy einen Port von Aussen zum Minecraft Server zum Testen weiterleiten.

In einer Produktionsumgebung wäre es ein Nice-to-Have eine statische IPv4 für diese Minecraft Server zu besitzen, damit sowas nicht nötig ist.

creation summary

So sieht die finale VM nun also aus.

Installation Wings

Nach einer kurzen Installation von Ubuntu auf dem Server kann man schon mit der Installation von Wings beginnen.
Hierfür gehe ich genau wie in dieser Dokumentation beschrieben vor.

Dependencies

Docker ist bereits auf der VM installiert, da ich die VM anch Ubuntu's Installation mit dieser Ansible Rolle initialisiert habe. Ansonsten kann man Docker auch mit folgendem Command leicht installieren:

# install docker using their official script
$ curl -sSL https://get.docker.com/ | CHANNEL=stable bash

Wings Installation

Um wings zu installieren, führen wir einfach folgende Commands aus:

# create wings directory
$ sudo mkdir -p /etc/pterodactyl

# download wings binary
$ curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"

# set the wings binary to be executable
$ sudo chmod u+x /usr/local/bin/wings

Wings Configuration

Jetzt müssen wir zurück ins Panel um eine wings Konfiguration zu erstellen. Das können wir unter Admin Panel -> Nodes -> Create New

Daemonizing

Daemonizing bedeutet, das Programm in einen Dienst umzuwandeln. Unter Ubuntu macht man das mit Systemd, welches .service-Dateien als Anweisungen nimmt. Der Inhalt dieser Datei ist bei jeder Wings-Installation gleich, also kann man sie einfach aus der Anleitung kopieren:

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service

[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target

In dieser Datei wird grob gesagt definiert, mit welchem User welches Programm ausgeführt werden soll. Es hat noch einige Parameter mehr wie zum Beispiel die Restart Policy und die Startintervalle.

Wenn man diese Datei nun unter /etc/systemd/system als wings.service speichert, kann man den Dienst mit dem Befehl systemctl enable --now wings aktivieren und auch gleich starten.