// VPS

Serwer gry na VPS przez SteamCMD: porty i systemd

Serwer gry na VPS przez SteamCMD: porty i systemd

Za pomocą SteamCMD, wersji Steama działającej w wierszu poleceń, postawisz serwer dedykowany gier takich jak Valheim, Palworld czy Satisfactory na VPS z Linuksem. Instalujesz pakiet steamcmd, pobierasz serwer poleceniem +login anonymous +app_update z app ID serwera, otwierasz porty gry w firewallu i zlecasz usłudze systemd jego uruchamianie i aktualizację.

Kiedy samodzielnie uruchamiać serwer gry ze Steama na VPS

Własny VPS ma sens, jeśli chcesz czegoś więcej niż jednego serwera: Valheim i Palworld obok siebie, do tego bot Discord, własne skrypty, mody, które sam aktualizujesz, albo po prostu chcesz się nauczyć, jak to działa. Dostajesz dostęp root i o wszystkim decydujesz sam, także o tym, kiedy robisz aktualizację.

Jeśli chcesz przede wszystkim grać, gotowy serwer gier to mniej pracy: panel zajmuje się instalacją, aktualizacjami i ustawieniami. Jak to wygląda w Valheim, przeczytasz w artykule Serwer dedykowany Valheim: kompletny poradnik, a dla Satisfactory w artykule Satisfactory serwer dedykowany: konfiguracja.

Jaki VPS na serwer gry ze Steama?

Wybierz Linuksa, na przykład Ubuntu 22.04 lub nowsze: większość serwerów ze Steama ma wersję na Linuksa, a zostaje Ci więcej pamięci niż z Windows. Co do procesora, obowiązuje to samo, co przy niemal każdym serwerze gier: symulacja świata opiera się na jednym głównym wątku, więc szybki rdzeń liczy się bardziej niż wiele rdzeni. Dlatego dobrze pasuje tu Premium VPS z Ryzen 9: AMD Ryzen 9 9950X*, DDR5 i NVMe. Dla pamięci stosujemy te minima, z około 1 GB dodatkowo na system operacyjny:

GraPamięć dla serweraPremium VPSMiesięcznie
Valheim (do 4 graczy)od 4 GB, od 5 graczy 1–2 GB więcej4 vCore, 8 GB66,10 zł
Palworld12–16 GB6 vCore, 16 lub 20 GB120,96 zł / 145,15 zł
Rustod 12 GB6 vCore, 16 GB120,96 zł

Mały serwer Valheim dla stałej ekipy może też działać na KVM VPS z EPYC: 4 vCore i 8 GB kosztują tam 41,04 zł miesięcznie. EPYC 7443P osiąga do 4,0 GHz, czyli mniej na rdzeń niż Ryzen; odczujesz to głównie wtedy, gdy rośnie świat i liczba graczy. Jeśli uruchamiasz więcej niż jedną grę, zsumuj pamięć; jak się do tego zabrać, opisujemy w artykule Kilka serwerów gier na jednym VPS. Ile pamięci naprawdę potrzebuje Palworld, przeczytasz w artykule Ile RAM potrzebuje serwer Palworld?

* lub AMD Ryzen 9 7950X3D, zależnie od węzła.

Instalacja SteamCMD na Ubuntu

SteamCMD jest w repozytorium multiverse Ubuntu i potrzebuje bibliotek 32-bitowych. Zaloguj się przez SSH i wykonaj:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd

Podczas instalacji pakiet poprosi Cię o zaakceptowanie licencji Steama. Program trafi do /usr/games/steamcmd. Następnie utwórz osobnego użytkownika dla swoich serwerów, żeby luka w serwerze gry nie dawała od razu dostępu root:

sudo adduser --disabled-password --gecos "" steam
sudo -iu steam

Pobieranie serwera przez app_update

Każdy serwer dedykowany ma na Steamie własne app ID. Jako użytkownik steam pobierzesz na przykład Valheim tak:

steamcmd +force_install_dir /home/steam/servers/valheim +login anonymous +app_update 896660 validate +quit

Zawsze stawiaj +force_install_dir przed +login; w odwrotnej kolejności SteamCMD wyświetli ostrzeżenie. Dzięki +login anonymous pobierzesz większość serwerów dedykowanych bez konta Steam, więc Twoje własne hasło nie musi trafiać na VPS. validate sprawdza wszystkie pliki i przywraca zmienione. Używaj go przy pierwszym pobraniu i wtedy, gdy coś wygląda na uszkodzone, ale nie przy każdej aktualizacji, jeśli sam zmieniałeś pliki w katalogu serwera.

Drzewo katalogów serwera gry ze Steama na VPS: serwery SteamCMD w /home/steam, świat Valheim w worlds_local i valheim.service w systemd
Co gdzie leży: serwer, świat i usługa systemd, na przykładzie Valheim.
GraApp ID serweraSerwer na Linuksa
Valheim896660tak
Palworld2394010tak
Satisfactory1690800tak
Project Zomboid380870tak
Rust258550tak
7 Days to Die294420tak
Enshrouded2278520nie, tylko Windows
ARK: Survival Ascended2430930nie, tylko Windows

Uczciwie o serwerach tylko na Windows. Enshrouded i ARK: Survival Ascended nie mają serwera na Linuksa. Wersję na Windows możesz pobrać na Linuksie, dodając +@sSteamCmdForcePlatformType windows przed +login, i uruchomić ją pod Protonem albo Wine, ale nie jest to oficjalnie wspierane i aktualizacja gry może to w każdej chwili zepsuć. Wolisz stabilność? Wybierz Windows Server (w KVM VPS i VDS do wyboru przy zamówieniu, w Premium VPS do zainstalowania przez panel VPS) albo gotowy serwer, jak w artykule Jak założyć serwer Enshrouded 1.0.

Porty i firewall

Otwieraj tylko porty, których używa Twoja gra, i zawsze najpierw SSH, inaczej odetniesz sobie dostęp:

sudo ufw allow OpenSSH
sudo ufw allow 2456:2457/udp   # Valheim: port i port+1
sudo ufw allow 8211/udp        # Palworld
sudo ufw allow 7777            # Satisfactory, TCP i UDP
sudo ufw allow 8888/tcp        # Satisfactory, od wersji 1.1
sudo ufw enable

Jeśli w opcjach startowych wybierzesz inny port, dostosuj też regułę. Jak zabezpieczyć SSH i resztę VPS, przeczytasz w artykule Jak zabezpieczyć serwer VPS: pierwsze 30 minut.

Automatyczny start i aktualizacje przez systemd

Valheim ma w zestawie skrypt startowy start_server.sh, ale według Iron Gate ten plik jest przywracany przy każdej aktualizacji. Dlatego swoje ustawienia umieść we własnej usłudze, /etc/systemd/system/valheim.service:

[Unit]
Description=Valheim dedicated server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
WorkingDirectory=/home/steam/servers/valheim
Environment=LD_LIBRARY_PATH=/home/steam/servers/valheim/linux64
Environment=SteamAppId=892970
ExecStartPre=/usr/games/steamcmd +force_install_dir /home/steam/servers/valheim +login anonymous +app_update 896660 +quit
ExecStart=/home/steam/servers/valheim/valheim_server.x86_64 -name "Nasz swiat" -port 2456 -world "Dedicated" -password "wybierz-cos-dluzszego" -public 1
KillSignal=SIGINT
TimeoutStartSec=600
TimeoutStopSec=60
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
journalctl -u valheim -f
  • ExecStartPre przy każdym starcie najpierw pobiera najnowszą wersję. To konieczne, bo po aktualizacji gry gracze często mogą się połączyć dopiero wtedy, gdy serwer działa w tej samej wersji. Aktualizacja to więc po prostu sudo systemctl restart valheim; TimeoutStartSec=600 daje czas na dużą aktualizację.
  • KillSignal=SIGINT zatrzymuje serwer tak jak Ctrl+C w konsoli: w sposób, który zaleca samo Iron Gate. TimeoutStopSec=60 daje mu minutę na porządne zamknięcie.
  • Restart=on-failure uruchamia go ponownie po awarii, a enable sprawia, że sam wystartuje po restarcie VPS.

Hasło musi mieć co najmniej 5 znaków i nie może występować w nazwie serwera, inaczej Valheim nie wystartuje. Dla Palworld budujesz usługę w ten sam sposób, z PalServer.sh z katalogu instalacji jako ExecStart i app ID 2394010; w dokumentacji każdej gry sprawdź, jakie zna opcje startowe. Jeśli chcesz co noc świeżego restartu, dodaj do crontaba roota: 0 5 * * * systemctl restart valheim.

Kopie zapasowe i zapisy: gdzie jest Twój świat?

W Valheim na Linuksie świat nie leży w katalogu serwera, tylko w katalogu domowym użytkownika: /home/steam/.config/unity3d/IronGate/Valheim/worlds_local. Valheim sam też robi automatyczne kopie zapasowe, ale leżą one na tym samym dysku. Dlatego zadbaj o własną kopię, na przykład co noc przez cron jako użytkownik steam (najpierw utwórz ~/backups):

30 4 * * * tar -czf /home/steam/backups/valheim-$(date +\%F).tar.gz -C /home/steam/.config/unity3d/IronGate/Valheim worlds_local

W crontabie znak procentu musi mieć przed sobą backslash, stąd \%F. Usuwaj stare archiwa, na przykład poleceniem find /home/steam/backups -mtime +14 -delete, i regularnie kopiuj je na inną maszynę albo własny komputer, na przykład przez SFTP. Kopia zapasowa, która leży tylko na tym samym VPS, to nie jest kopia zapasowa. W innych grach zapisy leżą gdzie indziej; zanim cokolwiek usuniesz albo zainstalujesz od nowa, sprawdź dla każdej gry, który katalog musisz zabrać.

Najczęściej zadawane pytania

Co to jest SteamCMD?

SteamCMD to wersja klienta Steam od Valve działająca w wierszu poleceń. Używasz jej do pobierania i aktualizowania serwerów dedykowanych gier ze Steama, bez środowiska graficznego. Na Ubuntu instalujesz ją jako pakiet steamcmd z repozytorium multiverse.

Czy muszę logować się na własne konto Steam?

W przypadku większości serwerów dedykowanych nie: z +login anonymous pobierzesz bez konta m.in. Valheim, Palworld, Satisfactory i Rust. Dzięki temu na VPS nie musi leżeć hasło do Twojego własnego konta Steam. Jeśli serwer jednak wymaga konta, znajdziesz to w dokumentacji danej gry.

Które serwery gier nie działają na Linuksie?

Enshrouded i ARK: Survival Ascended mają tylko serwer na Windows. Na Linuksie da się je uruchomić pod Protonem albo Wine, ale nie jest to oficjalnie wspierane i może przestać działać po aktualizacji gry. Dla tych gier wybierz Windows Server na swoim VPS albo gotowy serwer gier.

Ile pamięci potrzebuje serwer gry ze Steama?

To zależy od gry. Zakładamy co najmniej 4 GB dla Valheim (od 5 graczy 1 do 2 GB więcej), od 12 do 16 GB dla Palworld i co najmniej 12 GB dla Rust i ARK. Dolicz około 1 GB na system operacyjny, a przy kilku serwerach zsumuj pamięć.

Czytaj dalej

// WYPRÓBUJ SAM
Twój serwer Minecraft online w 60 sekund
Zobacz pakiety →