Minecraft-Server mit Paper
Paper auf dem vServer: eigener Benutzer, Startskript, systemd-Dienst, Firewall, Konsole und Updates.
6 Min. Lesezeit
Auf dieser Seite
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:
# Debian und Ubuntu
apt install -y curl jq tmux
# AlmaLinux und Rocky Linux
dnf install -y curl jq tmux1. Benutzer anlegen
Der Server läuft nicht als root, sondern als eigener Benutzer ohne Passwort:
useradd --system --create-home --home-dir /opt/minecraft --shell /bin/bash minecraft
mkdir -p /opt/minecraft/server
chown -R minecraft:minecraft /opt/minecraft2. 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:
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:
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:
echo "eula=true" | sudo -u minecraft tee /opt/minecraft/server/eula.txt4. 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 GB | 1G (eher für Tests oder sehr kleine Server) |
| 4 GB | 3G |
| 8 GB | 6G |
| 16 GB | 14G |
Wie viel RAM dein Paket hat, steht in der Übersicht unter Ausstattung.
sudo -u minecraft nano /opt/minecraft/server/start.sh#!/bin/sh
cd /opt/minecraft/server
exec java -Xms3G -Xmx3G \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-jar paper.jar --noguiPasse 3G an deine Tabelle an. Weitere Feinheiten für die Speicherverwaltung (die „Aikar-Flags“) stehen in der Paper-Dokumentation.
chmod +x /opt/minecraft/server/start.shEinmal von Hand starten, damit Paper seine Dateien anlegt:
sudo -u minecraft /opt/minecraft/server/start.shSobald 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.
nano /etc/systemd/system/minecraft.service[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.targetExecStop 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.
systemctl daemon-reload
systemctl enable --now minecraft6. Port 25565 öffnen
Ist eine Firewall an (siehe Firewall):
# Debian und Ubuntu mit ufw
ufw allow 25565/tcp
# AlmaLinux und Rocky Linux mit firewalld
firewall-cmd --permanent --add-port=25565/tcp
firewall-cmd --reloadPrüfen, ob es läuft
systemctl status minecraft
ss -tlnp | grep 25565active (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
sudo -u minecraft tmux attach -t minecraftDu 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:
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
tail -f /opt/minecraft/server/logs/latest.log
journalctl -u minecraft -n 50Updates
-
Spieler vorwarnen, dann
systemctl stop minecraft. -
Sicherung anlegen:
bashtar -czf /opt/minecraft/backup-$(date +%F).tar.gz -C /opt/minecraft server -
Die neue
paper.jarwie 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. -
systemctl start minecraftund im Log nach Fehlern sehen.
Eine Welt lässt sich nicht auf eine ältere Minecraft-Version zurückstellen. Darum die Sicherung.
Häufige Fehler
| Problem | Ursache und Lösung |
|---|---|
UnsupportedClassVersionError | Java zu alt für diese Paper-Version. Passendes Temurin installieren, siehe Java installieren. |
You need to agree to the EULA | eula.txt fehlt oder steht auf false. Schritt 3. |
Invalid maximum heap size / Server wird beendet, Killed im Log | Mehr -Xmx als RAM frei ist. Wert senken, ggf. Swap als Puffer. |
| Spieler erreichen den Server nicht | ss -tlnp prüfen, Firewall-Regel für 25565/tcp, im Client die richtige IP. |
Failed to bind to port | Läuft schon ein zweiter Server? systemctl status minecraft; ss -tlnp zeigt, wer Port 25565 belegt. |
systemctl stop dauert lange | Große Welten brauchen zum Speichern. Nach 120 Sekunden bricht systemd ab; dann TimeoutStopSec erhöhen. |
Wie es weitergeht
- Server absichern und Firewall einrichten.
- Lieber ohne Wartung? Gameserver bei CitexNode.
- Hilfe: Ticket.