Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

Je eigen Rust-server op een VPS (SteamCMD, systemd)

Rust Dedicated Server installeren op een VPS met Ubuntu 24.04 of Debian 13: SteamCMD, een startscript, een systemd-service, poorten en firewall, RCON, updates en Oxide of Carbon.

  • expert
  • ~45 min
  • Bijgewerkt op 2-10-2026

We zetten een Rust-server op je eigen VPS op: we downloaden hem via SteamCMD, maken een startscript, starten hem als systemd-service, openen de poorten en stellen het beheer via RCON in. Aan het eind vind je de stappen voor de maandelijkse updates en voor de installatie van Oxide of Carbon.

Wat je nodig hebt

  • Een VPS bij StormHost met Ubuntu 24.04 of Debian 13, bij voorkeur met 16 GB RAM of meer (zie Systeemeisen)
  • Minstens 30 GB vrije schijfruimte
  • Een SSH-verbinding als root (handleiding) en voor de zekerheid de console in de browser geopend
  • Het spel Rust op je computer (om de verbinding te testen)
  • Ongeveer 45 minuten

Rust bij StormHost

Rust-servers zijn bij ons in voorbereiding. Tot die tijd zet je met deze handleiding een Rust-server op een VPS op. Dezelfde stappen gelden voor elke Linux-VPS.

Hoe het gaat werken#

  • De gebruiker rust – de server draait niet als root. Als iemand hem aanvalt (bijvoorbeeld via een fout in een plugin), krijgt hij alleen de rechten van deze gebruiker.
  • SteamCMD – de officiële tool van Valve om gameservers te downloaden. Rust Dedicated Server heeft in Steam het applicatienummer 258550.
  • Het startscript /opt/rust/start.sh – bevat alle parameters van de server (poorten, kaart, RCON).
  • De systemd-service rust – start de server bij het opstarten van de VPS en start hem na een crash opnieuw.
  • RCON – de externe console. De console van een Linux-server is niet interactief, daarom stuur je commando's via RCON.

De mappenstructuur:

PadWat er staat
/opt/rust/steamcmdSteamCMD
/opt/rust/serverDe Rust-server (de hoofdmap van de server, hier horen ook Oxide of Carbon)
/opt/rust/server/server/rustDe wereld, de spelers en de configuratie (identiteit rust)
/opt/rust/start.shHet startscript

Systeemeisen#

  • RAM: Facepunch noemt voor de server minstens 12 GB vrij geheugen, een kaart van grootte 6000 heeft meer nodig. Plugins en spelers komen daar nog bij. Reken daarom op een VPS met 16 GB RAM of meer. Wisselgeheugen (swap) helpt om pieken te overleven, maar vervangt een tekort aan RAM niet.
  • Processor: de hoofdlus van de server belast vooral één core. De prestaties van één core tellen zwaarder dan het aantal cores.
  • Schijf: Facepunch noemt minstens 15 GB vrije ruimte, bij voorkeur SSD of NVMe. Houd ruimte over voor updates, back-ups en kaarten.

Het geheugen van een belaste server houd je in de gaten met het commando free -h.

Het systeem voorbereiden#

Dit geldt voor zowel Ubuntu 24.04 als Debian 13. Voer de commando's uit als root.

  1. Werk de pakketlijst bij en installeer de benodigde programma's:

    bash
    apt update
    apt install -y lib32gcc-s1 curl ca-certificates unzip
    • lib32gcc-s1 – een 32-⁠bits bibliotheek die SteamCMD nodig heeft om te starten (SteamCMD is een 32-⁠bits programma).
    • curl – downloadt bestanden van internet.
    • ca-certificates – certificaten voor veilig downloaden via HTTPS.
    • unzip – pakt het archief van Oxide uit (als je het gaat gebruiken).
  2. Maak de gebruiker rust aan met de thuismap /opt/rust:

    bash
    useradd --create-home --home-dir /opt/rust --shell /bin/bash rust
    • --create-home --home-dir /opt/rust – maakt de map /opt/rust aan, die eigendom is van de gebruiker rust.
    • --shell /bin/bash – de gebruiker krijgt een gewone shell, zodat je naar hem kunt overschakelen. Hij heeft geen wachtwoord, dus inloggen via SSH als deze gebruiker kan niet. Vanuit root schakel je naar hem over met het commando su - rust.

SteamCMD installeren#

  1. Schakel over naar de gebruiker rust:

    bash
    su - rust

    De prompt van de opdrachtregel verandert in rust@…. Voer alle volgende commando's tot aan het hoofdstuk De systemd-service uit als deze gebruiker.

  2. Maak een map voor SteamCMD aan en ga erheen:

    bash
    mkdir -p ~/steamcmd
    cd ~/steamcmd
  3. Download SteamCMD en pak het uit:

    bash
    curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
    • curl -sqL "…" – downloadt het archief van de officiële server van Valve; -s is de stille modus (zonder voortgangsbalk), -q slaat een eventueel persoonlijk configuratiebestand van curl, ~/.curlrc, over, -L volgt doorverwijzingen.
    • | tar zxvf - – pakt het gedownloade archief meteen uit in de huidige map (z gzip, x uitpakken, v bestanden tonen, f - van de invoer lezen).

    In de map staat nu het script steamcmd.sh.

De Rust-server downloaden#

Voer, nog steeds als gebruiker rust, dit uit:

bash
~/steamcmd/steamcmd.sh +force_install_dir /opt/rust/server +login anonymous +app_update 258550 validate +quit
  • ~/steamcmd/steamcmd.sh – start SteamCMD. Bij de eerste start werkt SteamCMD zichzelf bij, dat duurt even.
  • +force_install_dir /opt/rust/server – waar de server wordt geïnstalleerd. Geef een absoluut pad op en zet het altijd vóór +login.
  • +login anonymous – anoniem inloggen. Om de server te downloaden heb je geen Steam-account nodig.
  • +app_update 258550 – downloadt de applicatie 258550 (Rust Dedicated Server) of werkt haar bij.
  • validate – controleert alle bestanden en zet beschadigde of aangepaste bestanden terug naar de oorspronkelijke staat. Let op: het zet ook bestanden terug die door het framework Oxide zijn overschreven.
  • +quit – sluit SteamCMD af als het klaar is.

Er worden enkele gigabytes gedownload. Aan het eind zie je:

Uitvoertext
Success! App '258550' fully installed.

Testbranches

Facepunch biedt ook testversies van de server aan (bijvoorbeeld de branch staging). Je downloadt ze door -beta staging toe te voegen achter +app_update 258550. Gebruik voor een live server de standaard publieke versie.

Het startscript#

  1. Maak als gebruiker rust het bestand aan:

    bash
    nano ~/start.sh
  2. Plak de inhoud en pas de waarden aan (uitleg onder het blok):

    /opt/rust/start.shbash
    #!/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: haal het commentaarteken (#) voor de volgende regel weg zodra Carbon is geïnstalleerd
    # 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.log
  3. Sla op (Ctrl+O, Enter) en sluit de editor (Ctrl+X).

  4. Stel de rechten zo in dat het script uitvoerbaar is en alleen de gebruiker rust het wachtwoord erin kan lezen:

    bash
    chmod 700 ~/start.sh

Wat de afzonderlijke onderdelen doen:

  • cd /opt/rust/server || exit 1 – de server wordt gestart vanuit de hoofdmap (Oxide maakt daar zijn map oxide aan). Als de map niet bestaat, stopt het script.
  • export TERM=xterm – het type terminal; een systemd-service heeft geen terminal en volgens de documentatie van Carbon hebben sommige omgevingen er een nodig.
  • export LD_LIBRARY_PATH=… – de mappen waarin de server zijn bibliotheken zoekt (de hoofdmap van de server en RustDedicated_Data/Plugins/x86_64).
  • source …/environment.sh – laadt Carbon. Laat de regel uitgecommentarieerd tot je Carbon hebt geïnstalleerd.
  • exec ./RustDedicated – start de server; exec zorgt ervoor dat systemd rechtstreeks het serverproces volgt.
  • De parameters van de server (+server.port, +server.seed, +rcon.password …) worden uitgebreid uitgelegd in het artikel server.cfg en startparameters.
  • -logfile /opt/rust/rust.log – de uitvoer van de serverconsole wordt naar dit bestand geschreven.

Vervang <STRONG_PASSWORD> door een wachtwoord voor RCON (zonder de punthaken), alleen met letters en cijfers en minstens 24 tekens lang. Je maakt er een met de wachtwoordgenerator. Kies de seed (12345), de kaartgrootte (3000) en het aantal slots (50) zelf. Laat in het script alleen de poorten, RCON, de identiteit, de kaart en het aantal slots staan, zodat dezelfde instelling niet op twee plekken staat.

  1. Maak, nog steeds als gebruiker rust, het bestand server.cfg aan voor de servernaam, de beschrijving, de tags en andere instellingen:

    bash
    mkdir -p /opt/rust/server/server/rust/cfg
    nano /opt/rust/server/server/rust/cfg/server.cfg
    • mkdir -p … – maakt de map van de identiteit rust en de submap cfg aan (bij de eerste start zou de server de map zelf aanmaken, maar server.cfg niet).
    • Wat je in het bestand zet, lees je in het artikel over de configuratie. Voorlopig is één regel genoeg, bijvoorbeeld server.hostname "Mijn Rust-server".

    Maak de map en het bestand aan als gebruiker rust. Als root ze zou aanmaken, kan de server geen adminaccounts en bans naar de map cfg schrijven. De oplossing (als root): chown -R rust:rust /opt/rust/server/server.

  2. Ga terug naar root:

    bash
    exit

De systemd-service#

Maak als root het servicebestand aan met nano /etc/systemd/system/rust.service:

/etc/systemd/system/rust.serviceini
[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
DirectiveWat het doetAanbevolen waardeWanneer wijzigen
After= en Wants=network-online.targetDe server start pas nadat het netwerk is ingesteld.network-online.target–
User=, Group=Onder welke gebruiker de server draait.rustNooit root.
WorkingDirectory=De werkmap van het proces./opt/rust/serverBij een ander pad naar de server.
ExecStart=Het startscript (absoluut pad)./opt/rust/start.sh–
Restart=alwaysNadat het proces is gestopt, start systemd het opnieuw, ook als het “netjes” is gestopt. Daardoor werkt ook het commando restart via RCON (de server sluit af en systemd start hem opnieuw).alwayson-failure, als je geen herstart wilt nadat je de server handmatig via RCON hebt afgesloten.
RestartSec=15De pauze vóór de herstart.15–
WantedBy=multi-user.targetNa enable start de server bij het opstarten van de VPS.multi-user.target–

Een uitgebreidere uitleg van systemd-services vind je in de handleiding Applicatie als systemd-service.

Laad de service, schakel hem in en start hem:

bash
systemctl daemon-reload
systemctl enable --now rust
  • systemctl daemon-reload – systemd leest de servicebestanden opnieuw in (na elke wijziging van rust.service).
  • systemctl enable --now rust – schakelt het starten bij het opstarten van de VPS in (enable) en start de service meteen (--now).

Met Restart=always stop je de server alleen met het commando systemctl stop rust. Afsluiten via RCON (quit) leidt tot een nieuwe start.

Poorten en firewall#

PoortProtocolWaarvoorVoor wie openen
28015UDPHet spel (verbindingen van spelers).Iedereen
28017UDPQuery: de server tonen in de serverlijst.Iedereen
28082TCPRust+ (mobiele app). Moet minstens 10000 zijn.Iedereen (of niemand, als je Rust+ uitschakelt)
28016TCPRCON (externe console).Alleen jouw IP-adres

Als je UFW gebruikt:

bash
ufw allow 28015/udp
ufw allow 28017/udp
ufw allow 28082/tcp
ufw allow from 198.51.100.25 to any port 28016 proto tcp
  • ufw allow 28015/udp – staat de poort van het spel toe voor UDP.
  • ufw allow 28017/udp – staat de querypoort toe.
  • ufw allow 28082/tcp – staat Rust+ toe.
  • ufw allow from 198.51.100.25 to any port 28016 proto tcp – RCON alleen vanaf het IP-adres 198.51.100.25; vul je eigen publieke IP-adres in.

Staat de firewall in je klantaccount in de modus Alles blokkeren behalve wat is toegestaan, voeg daar dan dezelfde regels toe (Richting Inkomend, Actie Toestaan, het juiste Protocol, en vul bij RCON Bron-IP / bereik in). De poort moet in beide firewalls zijn toegestaan.

Heb je Rust+ niet nodig? Vervang in het script +app.port 28082 door +app.port 1- (zo schakel je Rust+ volgens Facepunch uit) en open poort 28082 niet.

Controle#

  1. Controleer de status van de service:

    bash
    systemctl status rust

    Zoek de regel Active: active (running).

  2. Volg de uitvoer van de server:

    bash
    tail -f /opt/rust/rust.log

    De eerste start duurt enkele minuten (de kaart wordt gegenereerd). De server is klaar zodra Server startup complete verschijnt. Je stopt het volgen met Ctrl+C.

  3. Open in het spel de console met F1 en maak verbinding:

    text
    connect 203.0.113.10:28015

    Vervang 203.0.113.10 door het IPv4-⁠adres van de VPS van het tabblad Netwerk.

  4. Zoek de server een paar minuten na de start op naam in de serverlijst (zonder framework op het tabblad Community, met Oxide of Carbon op Modded).

  5. Maak via RCON (RustAdmin of de webconsole) verbinding met 203.0.113.10:28016 met het wachtwoord uit het script en voeg jezelf toe als eigenaar. De stappen staan in het artikel Admin en RCON.

De server bijwerken#

Een grote update van Rust verschijnt één keer per maand (meestal op de eerste donderdag van de maand), kleinere fixes tussendoor.

  1. Kondig de herstart aan bij de spelers en sla de wereld op via RCON: server.save.

  2. Stop de service (als root):

    bash
    systemctl stop rust
  3. Werk de server bij als gebruiker 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 "…" – voert één commando uit als gebruiker rust en keert daarna terug.
  4. Als je Oxide gebruikt, upload het dan opnieuw (de update heeft het overschreven), zie het hoofdstuk Oxide of Carbon hieronder. Carbon werkt zichzelf bij tijdens het starten.

  5. Start de service:

    bash
    systemctl start rust

Zet de update niet in het startscript als je Oxide gebruikt

Als SteamCMD met validate bij elke start zou draaien, zou elke herstart Oxide verwijderen en zou de server zonder plugins draaien. Facepunch waarschuwt hier in zijn handleiding uitdrukkelijk voor. Werk handmatig bij volgens de stappen hierboven.

Een maandelijkse update betekent meestal ook een nieuwe wereld (force wipe). De stappen en wat je moet verwijderen staan in het artikel Een Rust-server wipen.

Oxide of Carbon#

Wat wat is en welke je kiest, lees je in Oxide en Carbon. De installatie op deze VPS (de server moet gestopt zijn):

Oxide

  1. Stop de server: systemctl stop rust.

  2. Download Oxide en pak het uit als gebruiker rust:

    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 … – downloadt de nieuwste stabiele versie van Oxide voor Linux naar de thuismap van de gebruiker rust. -f laat het commando met een fout eindigen als het bestand niet bestaat, -L volgt de doorverwijzing van GitHub.
    • && – het volgende commando wordt alleen uitgevoerd als het downloaden is gelukt.
    • unzip -o … -d /opt/rust/server – pakt het archief uit in de hoofdmap van de server en overschrijft de oorspronkelijke bestanden van het spel.
  3. Start de server: systemctl start rust.

  4. Controleer via RCON oxide.version.

Herhaal na de maandelijkse update van Rust de stappen 1–⁠3 pas wanneer er op GitHub (opent in een nieuw venster) een versie van Oxide staat die nieuwer is dan de update van Rust.

Carbon

  1. Stop de server: systemctl stop rust.

  2. Download Carbon en pak het uit als gebruiker rust:

    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"
    • Downloadt de stabiele build (production) van Carbon voor Linux en pakt die uit (-x) uit het met gzip gecomprimeerde archief (-z, -f bestand) in de hoofdmap van de server (-C).
  3. Haal in het bestand /opt/rust/start.sh het commentaarteken weg voor de regel source /opt/rust/server/carbon/tools/environment.sh (verwijder de # aan het begin).

  4. Start de server: systemctl start rust.

  5. Controleer via RCON c.version.

Na een update van Rust hoef je de server alleen te starten, Carbon werkt zichzelf bij.

Back-ups#

De wereld en de spelers staan in /opt/rust/server/server/rust, de plugins en hun gegevens in /opt/rust/server/oxide (of carbon). De back-ups van de VPS beheren wij, maar om snel één wereld of configuratie terug te zetten is een eigen back-up van deze mappen ook handig. Sla vóór de back-up de wereld op (server.save) of stop de server. De mogelijkheden voor back-ups staan beschreven in Back-ups op een VPS.

Als iets niet werkt#

ERROR! Failed to install app '258550' (No subscription)#

In het SteamCMD-commando ontbreekt +login anonymous. Zonder in te loggen kun je de server niet downloaden (een Steam-account heb je daarvoor niet nodig).

SteamCMD meldt linux32/steamcmd: No such file or directory#

De 32-⁠bits bibliotheek ontbreekt. Installeer haar als root: apt install lib32gcc-s1.

SteamCMD meldt Please use force_install_dir before logon!#

De parameter +force_install_dir moet in het commando vóór +login staan. Pas de volgorde aan volgens de handleiding.

De service stopt meteen met status=203/EXEC#

systemd kan het script niet starten: het uitvoerrecht ontbreekt (chmod 700 /opt/rust/start.sh), de eerste regel #!/usr/bin/env bash ontbreekt, of het bestand heeft regeleinden van Windows (je hebt het in Windows geschreven en geüpload). Andere foutcodes worden uitgelegd in Applicatie als systemd-service. Uitgebreide uitvoer: journalctl -u rust -n 50.

error while loading shared libraries: …#

De server mist een systeembibliotheek, de naam staat in de melding. Controleer de regel export LD_LIBRARY_PATH=… in het script en installeer de bibliotheek zo nodig via apt.

De server draait, maar je kunt er geen verbinding mee maken#

  • De server is nog niet klaar met starten (in de log ontbreekt Server startup complete).
  • Poort 28015/UDP is niet toegestaan in UFW of in de firewall in je klantaccount. Let op: het spel gebruikt UDP, niet TCP.
  • Je maakt verbinding met het verkeerde IP-adres of de verkeerde poort.

De server staat niet in de serverlijst#

De querypoort (28017/UDP) is niet open, of is dezelfde als de poort van het spel. De server verschijnt pas een paar minuten na de start in de lijst. Zoek op het juiste tabblad (Community of Modded).

De server crasht na een tijd en er staat niets in de log#

Waarschijnlijk was het geheugen op en heeft het systeem het proces beëindigd. Controleer het zo:

bash
journalctl -k | grep -i "out of memory"
  • journalctl -k – toont de meldingen van de kernel van het systeem (hier wordt ook vastgelegd dat een proces vanwege geheugengebrek is beëindigd).
  • | grep -i "out of memory" – houdt alleen de regels met deze tekst over; -i maakt geen onderscheid tussen hoofdletters en kleine letters.

Uitvoer met RustDedicated betekent een tekort aan RAM. Verklein de kaart, beperk de plugins, voeg swap toe of breid het RAM uit (upgrade van de VPS).

Rust+ companion server connectivity test failed! Disabling Rust+ features.#

De server controleert of de poort van Rust+ vanaf internet bereikbaar is. Sta 28082/tcp toe in beide firewalls, of schakel Rust+ uit (+app.port 1-). Facepunch wijst erop dat de poort minstens 10000 moet zijn en dat de server toegang moet hebben tot companion-rust.facepunch.com.

Na een update werken de plugins niet#

De update met validate heeft Oxide verwijderd. Upload het opnieuw (hoofdstuk Oxide of Carbon).

Samenvatting

  • De server draait onder de gebruiker rust in /opt/rust/server en wordt gedownload via SteamCMD (applicatie 258550).
  • De parameters staan in het script /opt/rust/start.sh, de service rust start de server (systemctl start|stop|status rust).
  • Open 28015/UDP, 28017/UDP en 28082/TCP, en RCON 28016/TCP alleen voor je eigen IP, in UFW én in de firewall in je klantaccount.
  • Stuur commando's via RCON; de console op Linux is niet interactief.
  • Bijwerken: opslaan, stoppen, SteamCMD met validate, Oxide opnieuw (Carbon doet het zelf), starten.

Was deze handleiding nuttig?

Geldt voor

  • Ubuntu 24.04
  • Debian 13

Diensten

Fout in de handleiding melden

Zoeken in de handleidingen