Postavíme Rust server na vlastní VPS: stáhneme ho přes SteamCMD, připravíme spouštěcí skript, spustíme ho jako službu systemd, otevřeme porty a nastavíme správu přes RCON. Na konci je postup pro měsíční aktualizace a instalaci Oxide nebo Carbonu.
Co budete potřebovat
- VPS u StormHostu s Ubuntu 24.04 nebo Debianem 13, ideálně 16 GB RAM a víc (viz Požadavky na výkon)
- Aspoň 30 GB volného místa na disku
- Připojení přes SSH jako root (návod) a otevřená konzole v prohlížeči pro jistotu
- Hra Rust ve vašem počítači (pro test připojení)
- Asi 45 minut
Rust u StormHostu
Rust servery u nás připravujeme. Do té doby si Rust server postavíte na VPS podle tohoto návodu. Stejný postup platí pro jakoukoli linuxovou VPS.
Jak to bude fungovat#
- Uživatel
rust– server neběží jako root. Když ho někdo napadne (například přes chybu v pluginu), získá jen práva tohoto uživatele. - SteamCMD – oficiální nástroj Valve pro stahování herních serverů. Rust Dedicated Server má ve Steamu číslo aplikace
258550. - Spouštěcí skript
/opt/rust/start.sh– obsahuje všechny parametry serveru (porty, mapa, RCON). - Služba systemd
rust– spustí server po startu VPS a po pádu ho znovu nastartuje. - RCON – vzdálená konzole. Konzole linuxového serveru není interaktivní, příkazy proto posíláte přes RCON.
Struktura složek:
| Cesta | Co tam je |
|---|---|
/opt/rust/steamcmd | SteamCMD |
/opt/rust/server | Rust server (kořen serveru, sem patří i Oxide nebo Carbon) |
/opt/ | Svět, hráči a konfigurace (identita rust) |
/opt/rust/start.sh | Spouštěcí skript |
Požadavky na výkon#
- RAM: Facepunch uvádí pro server aspoň 12 GB volné paměti, mapa velikosti 6000 potřebuje víc. Pluginy a hráči přidávají. Proto počítejte s VPS s 16 GB RAM a víc. Odkládací prostor (swap) pomůže přežít špičky, ale nedostatek RAM nenahradí.
- Procesor: hlavní smyčka serveru vytěžuje hlavně jedno jádro. Rozhoduje výkon jednoho jádra víc než jejich počet.
- Disk: Facepunch uvádí aspoň 15 GB volného místa, ideálně SSD nebo NVMe. Počítejte s rezervou pro aktualizace, zálohy a mapy.
Paměť zatíženého serveru sledujte příkazem free -h.
Příprava systému#
Platí pro Ubuntu 24.04 i Debian 13. Příkazy spouštějte jako root.
Aktualizujte seznam balíčků a nainstalujte potřebné programy:
bash apt update apt install -y lib32gcc-s1 curl ca-certificates unziplib32gcc-s1– 32bitová knihovna, kterou SteamCMD potřebuje ke spuštění (SteamCMD je 32bitový program).curl– stahování souborů z internetu.ca-certificates– certifikáty pro bezpečné stahování přes HTTPS.unzip– rozbalení archivu Oxide (pokud ho budete používat).
Vytvořte uživatele
rusts domovskou složkou/opt/rust:bash useradd --create-home --home-dir /opt/rust --shell /bin/bash rust--create-home --home-dir /opt/rust– vytvoří složku/opt/rust, která patří uživatelirust.--shell /bin/bash– uživatel má běžný shell, abyste se na něj mohli přepnout. Heslo nemá, přes SSH se pod ním přihlásit nejde; z roota se na něj přepnete příkazemsu - rust.
Instalace SteamCMD#
Přepněte se na uživatele
rust:bash su - rustVýzva příkazové řádky se změní na
rust@…. Všechny další příkazy až po kapitolu Služba systemd spouštějte pod tímto uživatelem.Vytvořte složku pro SteamCMD a přejděte do ní:
bash mkdir -p ~/steamcmd cd ~/steamcmdStáhněte a rozbalte SteamCMD:
bash curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -curl -sqL "…"– stáhne archiv z oficiálního serveru Valve;-stichý režim (bez ukazatele průběhu),-qnenačte případný osobní konfigurační soubor curlu~/.curlrc,-Lnásleduje přesměrování.| tar zxvf -– stažený archiv rovnou rozbalí do aktuální složky (zgzip,xrozbalit,vvypisovat soubory,f -číst ze vstupu).
Ve složce vznikne skript
steamcmd.sh.
Stažení Rust serveru#
Stále jako uživatel rust spusťte:
~/steamcmd/steamcmd.sh +force_install_dir /opt/rust/server +login anonymous +app_update 258550 validate +quit~/steamcmd/steamcmd.sh– spustí SteamCMD. Při prvním spuštění se SteamCMD sám aktualizuje, to chvíli trvá.+force_install_dir /opt/rust/server– kam se server nainstaluje. Uvádějte absolutní cestu a vždy před+login.+login anonymous– anonymní přihlášení. Na stažení serveru nepotřebujete účet Steam.+app_update 258550– stáhne nebo aktualizuje aplikaci 258550 (Rust Dedicated Server).validate– zkontroluje všechny soubory a poškozené nebo upravené vrátí do původní podoby. Pozor: vrátí i soubory přepsané frameworkem Oxide.+quit– po dokončení SteamCMD ukončí.
Stahují se jednotky gigabajtů. Na konci uvidíte:
Success! App '258550' fully installed.Testovací větve
Facepunch nabízí i testovací verze serveru (například větev staging). Stáhnete je přidáním -beta staging za +app_update 258550. Pro ostrý server používejte výchozí veřejnou verzi.
Spouštěcí skript#
Jako uživatel
rustvytvořte soubor:bash nano ~/start.shVložte obsah a upravte hodnoty (vysvětlení pod blokem):
/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: odkomentujte následující řádek (smažte mřížku), až ho nainstalujete # 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 "<SILNE_HESLO>" \ +rcon.web 1 \ +app.port 28082 \ -logfile /opt/rust/rust.logUložte (Ctrl+O, Enter) a zavřete editor (Ctrl+X).
Nastavte práva, aby skript šel spustit a heslo v něm četl jen uživatel
rust:bash chmod 700 ~/start.sh
Co jednotlivé části dělají:
cd /opt/rust/server || exit 1– server se spouští z kořenové složky (Oxide si tam vytvoří složkuoxide). Když složka neexistuje, skript skončí.export TERM=xterm– typ terminálu; služba systemd žádný terminál nemá a některá prostředí ho podle dokumentace Carbonu vyžadují.export LD_LIBRARY_PATH=…– složky, ve kterých server hledá své knihovny (kořen serveru aRustDedicated_).Data/ Plugins/ x86_ 64 source …/environment.sh– načte Carbon. Nechte zakomentované, dokud Carbon nenainstalujete.exec ./RustDedicated– spustí server;execzajistí, že systemd sleduje přímo proces serveru.- Parametry serveru (
+server.port,+server.seed,+rcon.password…) jsou podrobně vysvětlené v článku server.cfg a spouštěcí parametry. -logfile /opt/rust/rust.log– výpis konzole serveru se zapisuje do tohoto souboru.
Za <SILNE_HESLO> dosaďte heslo pro RCON (bez špičatých závorek), jen z písmen a číslic, aspoň 24 znaků. Vygenerujete ho generátorem hesel. Seed (12345), velikost mapy (3000) a počet slotů (50) zvolte podle sebe. Ve skriptu nechte jen porty, RCON, identitu, mapu a počet slotů, ať není stejné nastavení na dvou místech.
Stále jako uživatel
rustvytvořte souborserver.cfgpro název serveru, popis, tagy a další nastavení:bash mkdir -p /opt/rust/server/server/rust/cfg nano /opt/rust/server/server/rust/cfg/server.cfgmkdir -p …– vytvoří složku identityrusti její podsložkucfg(při prvním startu by ji server vytvořil sám,server.cfgale ne).- Co do souboru napsat, vysvětluje článek o konfiguraci. Stačí zatím jeden řádek, například
server.hostname "Muj Rust server".
Složku i soubor vytvářejte jako uživatel
rust. Kdyby je vytvořil root, server do složkycfgnezapíše admin účty ani bany. Oprava (jako root):chown -R rust:rust /opt/rust/server/server.Vraťte se zpět na roota:
bash exit
Služba systemd#
Jako root vytvořte soubor služby nano /etc/:
[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| Direktiva | Co dělá | Doporučená hodnota | Kdy změnit |
|---|---|---|---|
After= a Wants= | Server startuje až po nastavení sítě. | network-online.target | – |
User=, Group= | Pod jakým uživatelem server běží. | rust | Nikdy ne root. |
WorkingDirectory= | Pracovní složka procesu. | /opt/rust/server | Při jiné cestě k serveru. |
ExecStart= | Spouštěcí skript (absolutní cesta). | /opt/rust/start.sh | – |
Restart=always | Po skončení procesu ho systemd spustí znovu, i když skončil „řádně“. Díky tomu funguje i příkaz restart z RCON (server se ukončí a systemd ho znovu spustí). | always | on-failure, pokud nechcete restart po ručním ukončení přes RCON. |
RestartSec=15 | Pauza před restartem. | 15 | – |
WantedBy= | Po enable se server spustí při startu VPS. | multi-user.target | – |
Podrobnější vysvětlení služeb systemd najdete v návodu Aplikace jako služba systemd.
Službu načtěte, zapněte a spusťte:
systemctl daemon-reload
systemctl enable --now rustsystemctl daemon-reload– systemd znovu načte soubory služeb (po každé úpravěrust.service).systemctl enable --now rust– zapne spouštění po startu VPS (enable) a službu hned spustí (--now).
S Restart=always server zastavíte jen příkazem systemctl stop rust. Ukončení přes RCON (quit) vede k novému spuštění.
Porty a firewall#
| Port | Protokol | K čemu | Komu otevřít |
|---|---|---|---|
28015 | UDP | Hra (připojení hráčů). | Všem |
28017 | UDP | Query – zobrazení serveru v seznamu serverů. | Všem |
28082 | TCP | Rust+ (mobilní aplikace). Musí být aspoň 10000. | Všem (nebo nikomu, když Rust+ vypnete) |
28016 | TCP | RCON (vzdálená konzole). | Jen vaší IP adrese |
Pokud používáte UFW:
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– povolí port hry pro UDP.ufw allow 28017/udp– povolí query port.ufw allow 28082/tcp– povolí Rust+.ufw allow from 198.51.100.25 to any port 28016 proto tcp– RCON jen z IP adresy198.51.100.25; dosaďte svou veřejnou IP adresu.
Pokud máte ve firewallu v zákaznické zóně režim Blokovat vše kromě povoleného, přidejte tam stejná pravidla (Směr Příchozí, Akce Povolit, správný Protokol, u RCON vyplňte Zdrojová IP / rozsah). Port musí být povolený v obou firewallech.
Rust+ nepotřebujete? Nahraďte ve skriptu +app.port 28082 za +app.port 1- (tak Rust+ podle Facepunche vypnete) a port 28082 neotevírejte.
Ověření#
Zkontrolujte stav služby:
bash systemctl status rustHledejte řádek
Active: active (running).Sledujte výpis serveru:
bash tail -f /opt/rust/rust.logPrvní start trvá několik minut (generuje se mapa). Server je připravený, když se objeví
Server startup complete. Sledování ukončíte Ctrl+C.Ve hře otevřete konzoli F1 a připojte se:
text connect 203.0.113.10:28015Za
203.0.113.10dosaďte IPv4 adresu VPS ze záložky Síť.Za pár minut po startu vyhledejte server podle názvu v seznamu serverů (bez frameworku v záložce Community, s Oxide nebo Carbonem v Modded).
Připojte se přes RCON (RustAdmin nebo webová konzole) na
203.0.113.10:28016s heslem ze skriptu a přidejte se jako vlastník – postup je v článku Admin a RCON.
Aktualizace serveru#
Velká aktualizace Rustu vychází jednou měsíčně (obvykle první čtvrtek v měsíci), menší opravy mezi tím.
Oznamte hráčům restart a přes RCON uložte svět:
server.save.Zastavte službu (jako root):
bash systemctl stop rustAktualizujte server pod uživatelem
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 "…"– spustí jeden příkaz jako uživatelrusta vrátí se zpět.
Pokud používáte Oxide, nahrajte ho znovu (aktualizace ho přepsala) – kapitola Oxide nebo Carbon níže. Carbon se aktualizuje sám při startu.
Spusťte službu:
bash systemctl start rust
Aktualizaci nedávejte do spouštěcího skriptu, pokud máte Oxide
Kdyby se SteamCMD s validate spouštěl při každém startu, každý restart by Oxide odstranil a server by běžel bez pluginů. Facepunch na to v návodu výslovně upozorňuje. Aktualizujte ručně podle postupu výše.
Měsíční aktualizace obvykle znamená i nový svět (force wipe). Postup a co smazat je v článku Wipe Rust serveru.
Oxide nebo Carbon#
Co je co a který zvolit, vysvětluje Oxide a Carbon. Instalace na této VPS (server musí být zastavený):
Oxide
Zastavte server:
systemctl stop rust.Stáhněte a rozbalte Oxide pod uživatelem
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 …– stáhne poslední stabilní Oxide pro Linux do domovské složky uživatelerust.-fukončí příkaz chybou, když soubor neexistuje,-Lnásleduje přesměrování GitHubu.&&– další příkaz se spustí, jen když stažení uspělo.unzip -o … -d /opt/rust/server– rozbalí archiv do kořene serveru a přepíše původní soubory hry.
Spusťte server:
systemctl start rust.Přes RCON ověřte
oxide.version.
Po měsíční aktualizaci Rustu zopakujte kroky 1–3 až ve chvíli, kdy na GitHubu (otevře se v novém okně) vyjde verze Oxide novější než aktualizace Rustu.
Carbon
Zastavte server:
systemctl stop rust.Stáhněte a rozbalte Carbon pod uživatelem
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"- Stáhne stabilní (production) sestavení Carbonu pro Linux a rozbalí ho (
-x) z archivu komprimovaného gzipem (-z,-fsoubor) do kořene serveru (-C).
- Stáhne stabilní (production) sestavení Carbonu pro Linux a rozbalí ho (
V souboru
/opt/rust/start.shodkomentujte řádeksource /opt/(smažterust/ server/ carbon/ tools/ environment. sh #na začátku).Spusťte server:
systemctl start rust.Přes RCON ověřte
c.version.
Po aktualizaci Rustu stačí server spustit, Carbon se aktualizuje sám.
Zálohy#
Svět a hráči jsou v /opt/, pluginy a jejich data v /opt/rust/server/oxide (nebo carbon). Zálohy VPS spravujeme my, pro rychlé vrácení jednoho světa nebo konfigurace se ale hodí i vlastní záloha těchto složek. Před zálohou svět uložte (server.save) nebo server zastavte. Možnosti zálohování popisuje Zálohy na VPS.
Když něco nefunguje#
ERROR! Failed to install app '258550' (No subscription)#
V příkazu SteamCMD chybí +login anonymous. Bez přihlášení server stáhnout nejde (účet Steam ale nepotřebujete).
SteamCMD hlásí linux32/steamcmd: No such file or directory#
Chybí 32bitová knihovna. Nainstalujte ji jako root: apt install lib32gcc-s1.
SteamCMD hlásí Please use force_install_dir before logon!#
Parametr +force_install_dir musí být v příkazu před +login. Opravte pořadí podle návodu.
Služba hned skončí s status=203/EXEC#
systemd nemůže spustit skript: chybí právo ke spuštění (chmod 700 /opt/rust/start.sh), chybí první řádek #!/usr/bin/env bash, nebo má soubor konce řádků z Windows (napsali jste ho ve Windows a nahráli). Další kódy chyb vysvětluje Aplikace jako služba systemd. Podrobný výpis: journalctl -u rust -n 50.
error while loading shared libraries: …#
Serveru chybí systémová knihovna, její název je v hlášce. Zkontrolujte řádek export LD_LIBRARY_PATH=… ve skriptu a případně knihovnu doinstalujte přes apt.
Server běží, ale nejde se na něj připojit#
- Server ještě nedokončil start (v logu chybí
Server startup complete). - Port 28015/UDP není povolený v UFW nebo ve firewallu v zákaznické zóně. Pozor, hra používá UDP, ne TCP.
- Připojujete se na špatnou IP adresu nebo port.
Server není v seznamu serverů#
Není otevřený query port (28017/UDP), nebo je stejný jako port hry. Server se v seznamu objeví až pár minut po startu. Hledejte ve správné záložce (Community, nebo Modded).
Server po čase spadne a v logu nic není#
Pravděpodobně došla paměť a systém proces ukončil. Ověřte:
journalctl -k | grep -i "out of memory"journalctl -k– vypíše zprávy jádra systému (sem se zapisuje i ukončení procesu kvůli paměti).| grep -i "out of memory"– ponechá jen řádky s tímto textem;-inerozlišuje velká a malá písmena.
Výpis s RustDedicated znamená nedostatek RAM. Zmenšete mapu, omezte pluginy, přidejte swap nebo navyšte RAM (upgrade VPS).
Rust+ companion server connectivity test failed! Disabling Rust+ features.#
Server ověřuje, že je port Rust+ dostupný z internetu. Povolte 28082/tcp v obou firewallech, nebo Rust+ vypněte (+app.port 1-). Facepunch upozorňuje, že port musí být aspoň 10000 a že server musí mít přístup na companion-rust..
Po aktualizaci nefungují pluginy#
Aktualizace s validate odstranila Oxide. Nahrajte ho znovu (kapitola Oxide nebo Carbon).
Shrnutí
- Server běží pod uživatelem
rustv/opt/rust/server, stahuje se přes SteamCMD (aplikace258550). - Parametry jsou ve skriptu
/opt/rust/start.sh, server spouští službarust(systemctl start|stop|status rust). - Otevřete 28015/UDP, 28017/UDP, 28082/TCP a RCON 28016/TCP jen pro svou IP – v UFW i ve firewallu v zákaznické zóně.
- Příkazy posílejte přes RCON; konzole na Linuxu není interaktivní.
- Aktualizace: uložit, zastavit, SteamCMD s
validate, znovu Oxide (Carbon sám), spustit.