Wir richten einen Rust-Server auf Ihrem eigenen VPS ein: Wir laden ihn mit SteamCMD herunter, bereiten ein Startskript vor, betreiben ihn als systemd-Dienst, öffnen die Ports und richten die Verwaltung über RCON ein. Am Ende finden Sie das Vorgehen für die monatlichen Updates und für die Installation von Oxide oder Carbon.
Was Sie brauchen
- Ein VPS von StormHost mit Ubuntu 24.04 oder Debian 13, idealerweise mit 16 GB RAM oder mehr (siehe Leistungsanforderungen)
- Mindestens 30 GB freier Speicherplatz
- Eine SSH-Verbindung als root (Anleitung), zur Sicherheit mit geöffneter Konsole im Browser
- Rust auf Ihrem Computer (zum Testen der Verbindung)
- Etwa 45 Minuten
Rust bei StormHost
Rust-Server bereiten wir noch vor. Bis dahin können Sie sich mit dieser Anleitung einen Rust-Server auf einem VPS einrichten. Dieselben Schritte funktionieren auf jedem Linux-VPS.
So wird es funktionieren#
- Der Benutzer
rust– der Server läuft nicht als root. Greift ihn jemand an (zum Beispiel über einen Fehler in einem Plugin), bekommt er nur die Rechte dieses Benutzers. - SteamCMD – das offizielle Werkzeug von Valve zum Herunterladen von Gameservern. Rust Dedicated Server hat auf Steam die App-Nummer
258550. - Startskript
/opt/rust/start.sh– enthält alle Parameter des Servers (Ports, Karte, RCON). - systemd-Dienst
rust– startet den Server beim Hochfahren des VPS und nach einem Absturz neu. - RCON – die Fernkonsole. Die Konsole eines Linux-Servers ist nicht interaktiv; Befehle senden Sie daher über RCON.
Ordnerstruktur:
| Pfad | Was dort liegt |
|---|---|
/opt/rust/steamcmd | SteamCMD |
/opt/rust/server | Der Rust-Server (Hauptverzeichnis des Servers; hierher kommen auch Oxide oder Carbon) |
/opt/ | Welt, Spieler und Konfiguration (Identität rust) |
/opt/rust/start.sh | Startskript |
Leistungsanforderungen#
- RAM: Facepunch nennt mindestens 12 GB freien Arbeitsspeicher für den Server, eine Karte der Größe 6000 braucht mehr. Plugins und Spieler kommen hinzu. Planen Sie daher einen VPS mit 16 GB RAM oder mehr ein. Swap hilft über Spitzen hinweg, ersetzt aber keinen fehlenden RAM.
- CPU: Die Hauptschleife des Servers nutzt überwiegend einen Kern. Die Leistung eines einzelnen Kerns ist wichtiger als die Anzahl der Kerne.
- Festplatte: Facepunch nennt mindestens 15 GB freien Speicherplatz, idealerweise SSD oder NVMe. Lassen Sie Reserve für Updates, Backups und Karten.
Den Arbeitsspeicher eines ausgelasteten Servers behalten Sie mit free -h im Blick.
System vorbereiten#
Das gilt für Ubuntu 24.04 und Debian 13 gleichermaßen. Führen Sie die Befehle als root aus.
Aktualisieren Sie die Paketliste und installieren Sie die benötigten Programme:
bash apt update apt install -y lib32gcc-s1 curl ca-certificates unziplib32gcc-s1– eine 32-Bit-Bibliothek, die SteamCMD zum Laufen braucht (SteamCMD ist ein 32-Bit-Programm).curl– lädt Dateien aus dem Internet herunter.ca-certificates– Zertifikate für sichere Downloads über HTTPS.unzip– entpackt das Oxide-Archiv (falls Sie es verwenden).
Legen Sie den Benutzer
rustmit dem Home-Verzeichnis/opt/rustan:bash useradd --create-home --home-dir /opt/rust --shell /bin/bash rust--create-home --home-dir /opt/rust– legt den Ordner/opt/rustan, der dem Benutzerrustgehört.--shell /bin/bash– der Benutzer bekommt eine normale Shell, damit Sie zu ihm wechseln können. Er hat kein Passwort, Sie können sich also nicht per SSH als er anmelden; wechseln Sie von root aus mitsu - rustzu ihm.
SteamCMD installieren#
Wechseln Sie zum Benutzer
rust:bash su - rustDie Eingabeaufforderung ändert sich zu
rust@…. Führen Sie alle folgenden Befehle bis zum Abschnitt über den systemd-Dienst als dieser Benutzer aus.Legen Sie einen Ordner für SteamCMD an und wechseln Sie hinein:
bash mkdir -p ~/steamcmd cd ~/steamcmdLaden Sie SteamCMD herunter und entpacken Sie es:
bash curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -curl -sqL "…"– lädt das Archiv vom offiziellen Server von Valve herunter;-sist der stille Modus (ohne Fortschrittsbalken),-qüberspringt die persönliche curl-Konfigurationsdatei~/.curlrc, falls es sie gibt,-Lfolgt Weiterleitungen.| tar zxvf -– entpackt das heruntergeladene Archiv direkt in den aktuellen Ordner (zgzip,xentpacken,vDateien auflisten,f -von der Standardeingabe lesen).
Im Ordner liegt jetzt das Skript
steamcmd.sh.
Den Rust-Server herunterladen#
Führen Sie weiterhin als Benutzer rust Folgendes aus:
~/steamcmd/steamcmd.sh +force_install_dir /opt/rust/server +login anonymous +app_update 258550 validate +quit~/steamcmd/steamcmd.sh– startet SteamCMD. Beim ersten Start aktualisiert sich SteamCMD selbst, das dauert einen Moment.+force_install_dir /opt/rust/server– wohin der Server installiert wird. Verwenden Sie einen absoluten Pfad und setzen Sie ihn immer vor+login.+login anonymous– anonyme Anmeldung. Zum Herunterladen des Servers brauchen Sie kein Steam-Konto.+app_update 258550– lädt die App 258550 (Rust Dedicated Server) herunter oder aktualisiert sie.validate– prüft alle Dateien und stellt beschädigte oder veränderte in den Originalzustand zurück. Achtung: Es stellt auch Dateien wieder her, die das Framework Oxide überschrieben hat.+quit– beendet SteamCMD nach getaner Arbeit.
Der Download umfasst mehrere Gigabyte. Am Ende sehen Sie:
Success! App '258550' fully installed.Testzweige
Facepunch bietet auch Testversionen des Servers an (zum Beispiel den Zweig staging). Sie erhalten sie, indem Sie -beta staging hinter +app_update 258550 ergänzen. Für einen Live-Server verwenden Sie die öffentliche Standardversion.
Startskript#
Legen Sie als Benutzer
rustdie Datei an:bash nano ~/start.shFügen Sie den Inhalt ein und passen Sie die Werte an (Erklärung unter dem Block):
/opt/ rust/ bashstart.sh #!/usr/bin/env bash cd /opt/rust/server || exit 1 export TERM=xterm export LD_LIBRARY_PATH="/opt/rust/server:/opt/rust/server/RustDedicated_Data/Plugins/x86_64" # Carbon: nach der Installation von Carbon das # vor der nächsten Zeile entfernen # source /opt/rust/server/carbon/tools/environment.sh exec ./RustDedicated -batchmode \ +server.identity "rust" \ +server.port 28015 \ +server.queryport 28017 \ +server.level "Procedural Map" \ +server.seed 12345 \ +server.worldsize 3000 \ +server.maxplayers 50 \ +rcon.port 28016 \ +rcon.password "<STRONG_PASSWORD>" \ +rcon.web 1 \ +app.port 28082 \ -logfile /opt/rust/rust.logSpeichern Sie (Strg+O, Enter) und schließen Sie den Editor (Strg+X).
Setzen Sie die Rechte so, dass sich das Skript ausführen lässt und nur der Benutzer
rustdas Passwort darin lesen kann:bash chmod 700 ~/start.sh
Was die einzelnen Teile tun:
cd /opt/rust/server || exit 1– der Server wird aus seinem Hauptverzeichnis gestartet (Oxide legt dort seinen Ordneroxidean). Existiert der Ordner nicht, beendet sich das Skript.export TERM=xterm– der Terminaltyp; ein systemd-Dienst hat kein Terminal, und laut Dokumentation von Carbon verlangen manche Umgebungen diese Angabe.export LD_LIBRARY_PATH=…– die Ordner, in denen der Server seine Bibliotheken sucht (Hauptverzeichnis des Servers undRustDedicated_).Data/ Plugins/ x86_ 64 source …/environment.sh– lädt Carbon. Lassen Sie die Zeile auskommentiert, bis Sie Carbon installieren.exec ./RustDedicated– startet den Server;execsorgt dafür, dass systemd den Serverprozess direkt überwacht.- Die Parameter des Servers (
+server.port,+server.seed,+rcon.password…) erklärt ausführlich der Artikel server.cfg und Startparameter. -logfile /opt/rust/rust.log– in diese Datei wird die Ausgabe der Serverkonsole geschrieben.
Ersetzen Sie <STRONG_PASSWORD> durch ein RCON-Passwort (ohne spitze Klammern), nur aus Buchstaben und Ziffern und mindestens 24 Zeichen lang. Eines erstellen Sie mit dem Passwortgenerator. Seed (12345), Kartengröße (3000) und Anzahl der Slots (50) wählen Sie nach Ihren Wünschen. Behalten Sie im Skript nur Ports, RCON, Identität, Karte und Anzahl der Slots, damit dieselbe Einstellung nicht an zwei Stellen steht.
Legen Sie weiterhin als Benutzer
rustdie Dateiserver.cfgfür Namen, Beschreibung, Tags und weitere Einstellungen des Servers an:bash mkdir -p /opt/rust/server/server/rust/cfg nano /opt/rust/server/server/rust/cfg/server.cfgmkdir -p …– legt den Ordner der Identitätrustund darin den Unterordnercfgan (den Ordner würde der Server beim ersten Start anlegen, dieserver.cfgaber nicht).- Was in die Datei gehört, erklärt der Artikel zur Konfiguration. Vorerst genügt eine Zeile, zum Beispiel
server.hostname "Mein Rust-Server".
Legen Sie Ordner und Datei als Benutzer
rustan. Hätte root sie angelegt, könnte der Server keine Admin-Konten oder Bans in den Ordnercfgschreiben. Die Lösung (als root):chown -R rust:rust /opt/rust/server/server.Wechseln Sie zurück zu root:
bash exit
systemd-Dienst#
Legen Sie als root mit nano /etc/ die Dienstdatei an:
[Unit]
Description=Rust Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=rust
Group=rust
WorkingDirectory=/opt/rust/server
ExecStart=/opt/rust/start.sh
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target| Direktive | Was sie tut | Empfohlener Wert | Wann ändern |
|---|---|---|---|
After= und Wants= | Der Server startet erst, wenn das Netzwerk bereit ist. | network-online.target | – |
User=, Group= | Unter welchem Benutzer der Server läuft. | rust | Nie root. |
WorkingDirectory= | Der Arbeitsordner des Prozesses. | /opt/rust/server | Wenn der Server unter einem anderen Pfad liegt. |
ExecStart= | Das Startskript (absoluter Pfad). | /opt/rust/start.sh | – |
Restart=always | Beendet sich der Prozess, startet systemd ihn erneut, auch wenn er sich „sauber“ beendet hat. Dadurch funktioniert auch der Befehl restart über RCON (der Server beendet sich und systemd startet ihn wieder). | always | on-failure, wenn Sie nach manuellem Herunterfahren über RCON keinen Neustart möchten. |
RestartSec=15 | Die Pause vor einem Neustart. | 15 | – |
WantedBy= | Nach enable startet der Server beim Hochfahren des VPS. | multi-user.target | – |
Eine ausführlichere Erklärung von systemd-Diensten finden Sie in der Anleitung Eine Anwendung als systemd-Dienst betreiben.
Laden, aktivieren und starten Sie den Dienst:
systemctl daemon-reload
systemctl enable --now rustsystemctl daemon-reload– systemd lädt die Dienstdateien neu (nach jeder Änderung anrust.service).systemctl enable --now rust– aktiviert den Start beim Hochfahren des VPS (enable) und startet den Dienst sofort (--now).
Mit Restart=always stoppen Sie den Server nur mit systemctl stop rust. Fahren Sie ihn über RCON herunter (quit), startet systemd ihn wieder.
Ports und Firewall#
| Port | Protokoll | Wofür | Offen für |
|---|---|---|---|
28015 | UDP | Das Spiel (Verbindungen der Spieler). | Alle |
28017 | UDP | Query – Anzeige des Servers in der Serverliste. | Alle |
28082 | TCP | Rust+ (Smartphone-App). Mindestens 10000. | Alle (oder niemand, wenn Sie Rust+ abschalten) |
28016 | TCP | RCON (Fernkonsole). | Nur Ihre IP-Adresse |
Wenn Sie UFW verwenden:
ufw allow 28015/udp
ufw allow 28017/udp
ufw allow 28082/tcp
ufw allow from 198.51.100.25 to any port 28016 proto tcpufw allow 28015/udp– erlaubt den Spielport über UDP.ufw allow 28017/udp– erlaubt den Query-Port.ufw allow 28082/tcp– erlaubt Rust+.ufw allow from 198.51.100.25 to any port 28016 proto tcp– RCON nur von der IP-Adresse198.51.100.25; verwenden Sie Ihre eigene öffentliche IP-Adresse.
Ist die Firewall im Kundenbereich auf Alles blockieren außer Erlaubtem eingestellt, fügen Sie dort dieselben Regeln hinzu (Richtung Eingehend, Aktion Erlauben, das richtige Protokoll; bei RCON füllen Sie Quell-IP / Bereich aus). Der Port muss in beiden Firewalls freigegeben sein.
Sie brauchen Rust+ nicht? Ersetzen Sie im Skript +app.port 28082 durch +app.port 1- (das schaltet Rust+ laut Facepunch ab) und öffnen Sie den Port 28082 nicht.
Überprüfung#
Prüfen Sie den Status des Dienstes:
bash systemctl status rustAchten Sie auf die Zeile
Active: active (running).Verfolgen Sie die Ausgabe des Servers:
bash tail -f /opt/rust/rust.logDer erste Start dauert einige Minuten (die Karte wird generiert). Der Server ist bereit, sobald
Server startup completeerscheint. Beenden Sie die Anzeige mit Strg+C.Öffnen Sie im Spiel die F1-Konsole und verbinden Sie sich:
text connect 203.0.113.10:28015Ersetzen Sie
203.0.113.10durch die IPv4-Adresse Ihres VPS aus der Registerkarte Netzwerk.Suchen Sie den Server einige Minuten nach dem Start in der Serverliste nach Namen (ohne Framework in der Registerkarte Community, mit Oxide oder Carbon unter Modded).
Verbinden Sie sich über RCON (RustAdmin oder Webkonsole) mit
203.0.113.10:28016und dem Passwort aus dem Skript und tragen Sie sich als Owner ein – die Schritte stehen im Artikel Admin und RCON.
Den Server aktualisieren#
Ein großes Rust-Update erscheint einmal im Monat (meist am ersten Donnerstag des Monats), dazwischen kleinere Korrekturen.
Kündigen Sie den Spielern den Neustart an und speichern Sie die Welt über RCON:
server.save.Stoppen Sie den Dienst (als root):
bash systemctl stop rustAktualisieren Sie den Server als Benutzer
rust:bash su - rust -c "/opt/rust/steamcmd/steamcmd.sh +force_install_dir /opt/rust/server +login anonymous +app_update 258550 validate +quit"su - rust -c "…"– führt einen einzelnen Befehl als Benutzerrustaus und kehrt zurück.
Wenn Sie Oxide verwenden, laden Sie es erneut hoch (das Update hat es überschrieben) – siehe Abschnitt Oxide oder Carbon unten. Carbon aktualisiert sich beim Start selbst.
Starten Sie den Dienst:
bash systemctl start rust
Mit Oxide das Update nicht ins Startskript einbauen
Liefe SteamCMD mit validate bei jedem Start, würde jeder Neustart Oxide entfernen, und der Server liefe ohne Plugins. Facepunch warnt in seiner Anleitung ausdrücklich davor. Aktualisieren Sie manuell nach den Schritten oben.
Ein monatliches Update bedeutet meist auch eine neue Welt (Force-Wipe). Das Vorgehen und was Sie löschen müssen, steht im Artikel Wipe eines Rust-Servers.
Oxide oder Carbon#
Was beides ist und was Sie wählen sollten, erklärt Oxide und Carbon. Installation auf diesem VPS (der Server muss gestoppt sein):
Oxide
Stoppen Sie den Server:
systemctl stop rust.Laden Sie Oxide als Benutzer
rustherunter und entpacken Sie es:bash su - rust -c "curl -fL -o /opt/rust/oxide.zip https://github.com/OxideMod/Oxide.Rust/releases/latest/download/Oxide.Rust-linux.zip && unzip -o /opt/rust/oxide.zip -d /opt/rust/server"curl -fL -o /opt/rust/oxide.zip …– lädt das neueste stabile Oxide für Linux in das Home-Verzeichnis des Benutzersrustherunter.-flässt den Befehl fehlschlagen, wenn die Datei nicht existiert,-Lfolgt der Weiterleitung von GitHub.&&– der nächste Befehl läuft nur, wenn der Download erfolgreich war.unzip -o … -d /opt/rust/server– entpackt das Archiv ins Hauptverzeichnis des Servers und überschreibt die ursprünglichen Spieldateien.
Starten Sie den Server:
systemctl start rust.Prüfen Sie über RCON
oxide.version.
Wiederholen Sie die Schritte 1–3 nach einem monatlichen Rust-Update erst, wenn auf GitHub (öffnet sich in einem neuen Fenster) eine Oxide-Version erschienen ist, die neuer als das Rust-Update ist.
Carbon
Stoppen Sie den Server:
systemctl stop rust.Laden Sie Carbon als Benutzer
rustherunter und entpacken Sie es:bash su - rust -c "curl -fL -o /opt/rust/carbon.tar.gz https://github.com/CarbonCommunity/Carbon/releases/download/production_build/Carbon.Linux.Release.tar.gz && tar -xzf /opt/rust/carbon.tar.gz -C /opt/rust/server"- Lädt den stabilen Build (Production) von Carbon für Linux herunter und entpackt (
-x) ihn aus dem gzip-komprimierten Archiv (-z,-fDatei) ins Hauptverzeichnis des Servers (-C).
- Lädt den stabilen Build (Production) von Carbon für Linux herunter und entpackt (
Entfernen Sie in der Datei
/opt/rust/start.shdie Auskommentierung der Zeilesource /opt/(dasrust/ server/ carbon/ tools/ environment. sh #am Anfang löschen).Starten Sie den Server:
systemctl start rust.Prüfen Sie über RCON
c.version.
Nach einem Rust-Update starten Sie einfach den Server; Carbon aktualisiert sich selbst.
Backups#
Welt und Spieler liegen in /opt/, Plugins und ihre Daten in /opt/rust/server/oxide (bzw. carbon). Um die Backups des VPS kümmern wir uns, aber um schnell eine einzelne Welt oder Konfiguration wiederherzustellen, ist ein eigenes Backup dieser Ordner praktisch. Speichern Sie vor dem Sichern die Welt (server.save) oder stoppen Sie den Server. Die Möglichkeiten für Backups beschreibt Backups auf einem VPS.
Fehlerbehebung#
ERROR! Failed to install app '258550' (No subscription)#
Im SteamCMD-Befehl fehlt +login anonymous. Ohne Anmeldung lässt sich der Server nicht herunterladen (ein Steam-Konto brauchen Sie aber nicht).
SteamCMD meldet linux32/steamcmd: No such file or directory#
Die 32-Bit-Bibliothek fehlt. Installieren Sie sie als root: apt install lib32gcc-s1.
SteamCMD meldet Please use force_install_dir before logon!#
Der Parameter +force_install_dir muss im Befehl vor +login stehen. Korrigieren Sie die Reihenfolge wie in der Anleitung.
Der Dienst endet sofort mit status=203/EXEC#
systemd kann das Skript nicht ausführen: Es ist nicht ausführbar (chmod 700 /opt/rust/start.sh), die erste Zeile #!/usr/bin/env bash fehlt, oder die Datei hat Windows-Zeilenenden (Sie haben sie unter Windows geschrieben und hochgeladen). Weitere Fehlercodes erklärt Eine Anwendung als systemd-Dienst betreiben. Ausführliche Ausgabe: journalctl -u rust -n 50.
error while loading shared libraries: …#
Dem Server fehlt eine Systembibliothek; ihr Name steht in der Meldung. Prüfen Sie im Skript die Zeile export LD_LIBRARY_PATH=… und installieren Sie die Bibliothek bei Bedarf mit apt.
Der Server läuft, aber man kann sich nicht verbinden#
- Der Server ist noch nicht fertig gestartet (im Log fehlt
Server startup complete). - Der Port 28015/UDP ist in UFW oder in der Firewall im Kundenbereich nicht freigegeben. Beachten Sie, dass das Spiel UDP verwendet, nicht TCP.
- Sie verbinden sich mit einer falschen IP-Adresse oder einem falschen Port.
Der Server ist nicht in der Serverliste#
Der Query-Port (28017/UDP) ist nicht offen oder gleich dem Spielport. Der Server erscheint erst einige Minuten nach dem Start in der Liste. Suchen Sie in der richtigen Registerkarte (Community oder Modded).
Der Server stürzt nach einiger Zeit ab, und im Log steht nichts#
Höchstwahrscheinlich war der Arbeitsspeicher voll, und das System hat den Prozess beendet. Prüfen Sie:
journalctl -k | grep -i "out of memory"journalctl -k– gibt die Meldungen des Systemkernels aus (dort werden auch Prozesse protokolliert, die wegen Speichermangels beendet wurden).| grep -i "out of memory"– behält nur die Zeilen mit diesem Text;-iignoriert Groß- und Kleinschreibung.
Eine Ausgabe, in der RustDedicated vorkommt, bedeutet zu wenig RAM. Verwenden Sie eine kleinere Karte, reduzieren Sie die Plugins, ergänzen Sie Swap oder erweitern Sie den RAM (Upgrade des VPS).
Rust+ companion server connectivity test failed! Disabling Rust+ features.#
Der Server prüft, ob der Rust+-Port aus dem Internet erreichbar ist. Erlauben Sie 28082/tcp in beiden Firewalls oder schalten Sie Rust+ ab (+app.port 1-). Facepunch weist darauf hin, dass der Port mindestens 10000 sein muss und der Server Zugriff auf companion-rust. braucht.
Nach einem Update funktionieren die Plugins nicht#
Das Update mit validate hat Oxide entfernt. Laden Sie es erneut hoch (Abschnitt Oxide oder Carbon).
Zusammenfassung
- Der Server läuft als Benutzer
rustin/opt/rust/serverund wird mit SteamCMD heruntergeladen (App258550). - Die Parameter stehen im Skript
/opt/rust/start.sh, der Dienstrustbetreibt den Server (systemctl start|stop|status rust). - Öffnen Sie 28015/UDP, 28017/UDP, 28082/TCP und RCON 28016/TCP nur für Ihre IP – in UFW und in der Firewall im Kundenbereich.
- Befehle senden Sie über RCON; die Konsole unter Linux ist nicht interaktiv.
- Update: speichern, stoppen, SteamCMD mit
validate, Oxide erneut (Carbon aktualisiert sich selbst), starten.
Weiterführende Links#
- Facepunch: Creating a server (auch Linux) (öffnet sich in einem neuen Fenster)
- Facepunch: Rust+-Server und Ports (öffnet sich in einem neuen Fenster)
- Valve: SteamCMD (öffnet sich in einem neuen Fenster)
- Carbon: Installation unter Linux (öffnet sich in einem neuen Fenster)
- Oxide: Installation (öffnet sich in einem neuen Fenster)