Zum Inhalt springen
CitexNode
Alle Anleitungen

Minecraft-Server mit Paper

Paper auf dem vServer: eigener Benutzer, Startskript, systemd-Dienst, Firewall, Konsole und Updates.

6 Min. Lesezeit

Gilt für Debian 12/13, Ubuntu 22.04/24.04, AlmaLinux 9 und Rocky Linux 9. Ergebnis: ein Paper-Server, der beim Booten startet, nach einem Absturz wieder hochkommt und eine Konsole hat, an die du jederzeit rankommst.

Voraussetzungen

  • SSH-Zugang als root oder sudo-Benutzer, siehe Per SSH verbinden.
  • Java in der passenden Version, siehe Java installieren. Aktuelle Minecraft-Versionen brauchen Java 25, 1.20.5 bis 1.21.x Java 21.
  • Ein paar Werkzeuge:
bash
# Debian und Ubuntu
apt install -y curl jq tmux

# AlmaLinux und Rocky Linux
dnf install -y curl jq tmux

1. Benutzer anlegen

Der Server läuft nicht als root, sondern als eigener Benutzer ohne Passwort:

bash
useradd --system --create-home --home-dir /opt/minecraft --shell /bin/bash minecraft
mkdir -p /opt/minecraft/server
chown -R minecraft:minecraft /opt/minecraft

2. Paper herunterladen

Die aktuelle Version und den Download-Link findest du auf der offiziellen Seite https://papermc.io/downloads/paper. Kopier den Link und lad die Datei als minecraft herunter:

bash
sudo -u minecraft curl -fL -o /opt/minecraft/server/paper.jar "HIER-DEN-LINK-EINFUEGEN"

Oder automatisch über die offizielle PaperMC-API. Trag die gewünschte Minecraft-Version ein; das Skript holt den neuesten stabilen Build:

bash
VERSION="26.3"
URL=$(curl -fsS -H "User-Agent: mein-server (admin@example.com)" \
  "https://fill.papermc.io/v3/projects/paper/versions/$VERSION/builds" \
  | jq -r 'map(select(.channel == "STABLE")) | .[0] | .downloads."server:default".url')
echo "$URL"
sudo -u minecraft curl -fL -o /opt/minecraft/server/paper.jar "$URL"

PaperMC verlangt einen User-Agent mit Kontaktangabe; trag deinen ein. Gibt echo null aus, gibt es für diese Version keinen stabilen Build: Version auf der Download-Seite prüfen.

3. EULA bestätigen

Minecraft startet erst, wenn du der EULA von Mojang zustimmst (https://aka.ms/MinecraftEULA). Lies sie, dann:

bash
echo "eula=true" | sudo -u minecraft tee /opt/minecraft/server/eula.txt

4. Startskript

Wie viel RAM Minecraft bekommt, legen -Xms und -Xmx fest. Paper empfiehlt, beide gleich zu setzen. Lass dem System etwa 1 bis 1,5 GB übrig:

RAM des vServers-Xms / -Xmx
2 GB1G (eher für Tests oder sehr kleine Server)
4 GB3G
8 GB6G
16 GB14G

Wie viel RAM dein Paket hat, steht in der Übersicht unter Ausstattung.

bash
sudo -u minecraft nano /opt/minecraft/server/start.sh
bash
#!/bin/sh
cd /opt/minecraft/server
exec java -Xms3G -Xmx3G \
  -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
  -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -jar paper.jar --nogui

Passe 3G an deine Tabelle an. Weitere Feinheiten für die Speicherverwaltung (die „Aikar-Flags“) stehen in der Paper-Dokumentation.

bash
chmod +x /opt/minecraft/server/start.sh

Einmal von Hand starten, damit Paper seine Dateien anlegt:

bash
sudo -u minecraft /opt/minecraft/server/start.sh

Sobald Done (…)! For help, type "help" erscheint, tipp stop. Jetzt liegen server.properties, die Welt und der Ordner plugins in /opt/minecraft/server.

5. systemd-Dienst mit Konsole

Der Dienst startet den Server in einer tmux-Sitzung. So läuft er im Hintergrund, und du kannst trotzdem in die Konsole.

bash
nano /etc/systemd/system/minecraft.service
ini
[Unit]
Description=Minecraft-Server (Paper)
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/tmux new-session -d -s minecraft /opt/minecraft/server/start.sh
ExecStop=/usr/bin/tmux send-keys -t minecraft stop Enter
ExecStop=/bin/sh -c 'while /usr/bin/tmux has-session -t minecraft 2>/dev/null; do sleep 1; done'
TimeoutStopSec=120
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

ExecStop schickt stop in die Konsole und wartet, bis die Welt gespeichert ist. Restart=always startet den Server nach einem Absturz neu; auch wenn du in der Konsole stop tippst, kommt er nach 10 Sekunden wieder. Zum echten Anhalten nimm systemctl stop minecraft.

bash
systemctl daemon-reload
systemctl enable --now minecraft

6. Port 25565 öffnen

Ist eine Firewall an (siehe Firewall):

bash
# Debian und Ubuntu mit ufw
ufw allow 25565/tcp

# AlmaLinux und Rocky Linux mit firewalld
firewall-cmd --permanent --add-port=25565/tcp
firewall-cmd --reload

Prüfen, ob es läuft

bash
systemctl status minecraft
ss -tlnp | grep 25565

active (running) und eine Zeile mit :25565 heißen: der Server wartet auf Spieler. Im Minecraft-Client unter Mehrspieler → Server hinzufügen die IP deines vServers eintragen. Läuft der Server auf Port 25565, brauchst du keine Portangabe.

Konsole benutzen

Mit tmux

bash
sudo -u minecraft tmux attach -t minecraft

Du siehst die Live-Konsole und kannst Befehle tippen, etwa op deinname. Raus, ohne den Server zu stoppen: Strg+B, loslassen, dann D.

Wer lieber screen nimmt: das geht genauso, mit screen -dmS minecraft … im Dienst und screen -r minecraft zum Anhängen. Für beide gilt: nur eine von beiden nehmen.

Mit RCON

RCON ist eine Fernsteuerung für Befehle. In server.properties:

ini
enable-rcon=true
rcon.port=25575
rcon.password=ein-langes-zufaelliges-passwort

Öffne Port 25575 nicht in der Firewall. Verbinde dich mit einem RCON-Client auf dem Server selbst oder über einen SSH-Tunnel (ssh -L 25575:127.0.0.1:25575 root@203.0.113.10).

Logs

bash
tail -f /opt/minecraft/server/logs/latest.log
journalctl -u minecraft -n 50

Updates

  1. Spieler vorwarnen, dann systemctl stop minecraft.

  2. Sicherung anlegen:

    bash
    tar -czf /opt/minecraft/backup-$(date +%F).tar.gz -C /opt/minecraft server
  3. Die neue paper.jar wie in Schritt 2 herunterladen. Bei einem Sprung auf eine neue Minecraft-Version vorher prüfen, ob deine Plugins sie unterstützen und ob du eine neuere Java-Version brauchst.

  4. systemctl start minecraft und im Log nach Fehlern sehen.

Eine Welt lässt sich nicht auf eine ältere Minecraft-Version zurückstellen. Darum die Sicherung.

Häufige Fehler

ProblemUrsache und Lösung
UnsupportedClassVersionErrorJava zu alt für diese Paper-Version. Passendes Temurin installieren, siehe Java installieren.
You need to agree to the EULAeula.txt fehlt oder steht auf false. Schritt 3.
Invalid maximum heap size / Server wird beendet, Killed im LogMehr -Xmx als RAM frei ist. Wert senken, ggf. Swap als Puffer.
Spieler erreichen den Server nichtss -tlnp prüfen, Firewall-Regel für 25565/tcp, im Client die richtige IP.
Failed to bind to portLäuft schon ein zweiter Server? systemctl status minecraft; ss -tlnp zeigt, wer Port 25565 belegt.
systemctl stop dauert langeGroße Welten brauchen zum Speichern. Nach 120 Sekunden bricht systemd ab; dann TimeoutStopSec erhöhen.

Wie es weitergeht