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.
Wie [hier](../README.md#serverressourcen) 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.
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.
Nach einer kurzen Installation von Ubuntu auf dem Server kann man schon mit der Installation von Wings beginnen.<br>
Hierfür gehe ich genau wie in [dieser](https://pterodactyl.io/wings/1.0/installing.html) Dokumentation beschrieben vor.
### Dependencies
Docker ist bereits auf der VM installiert, da ich die VM anch Ubuntu's Installation mit [dieser](https://gitpot.org/lunivity/ansible-core/src/branch/main/roles/docker/tasks/main.yml) Ansible Rolle initialisiert habe. Ansonsten kann man Docker auch mit folgendem Command leicht installieren:
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:
```conf
[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.