Go to main content

VPS: Skonfiguruj swój dedykowany serwer gier jako usługę Linux

Ten poradnik został stworzony z wykorzystaniem następujących produktów:

(Szczegóły mogą się różnić w zależności od produktów różnych dostawców, ale główne koncepcje pozostają takie same)

Wprowadzenie

Usługi to integralna część Linuxa i odnoszą się do procesu lub aplikacji działającej w tle, będącej albo zadaniem predefiniowanym, albo zadaniem wywoływanym przez zdarzenie. To daje wiele korzyści, takich jak automatyczne uruchamianie serwera przy starcie systemu, automatyczne aktualizacje serwera, łatwe zarządzanie i dostęp do logów oraz wiele więcej! W tym poradniku przejdziemy przez proces tworzenia usługi dla Twojego dedykowanego serwera gier.

Przygotowanie

Na początek połącz się ze swoim VPS przez SSH. Jeśli potrzebujesz pomocy, skorzystaj z naszego poradnika SSH - pierwszy dostęp.

Powinieneś też przejść przez jeden z naszych poradników dedykowanych serwerów gier w tej sekcji, aby zainstalować i skonfigurować serwer gier na swoim systemie Linux. W tym poradniku użyjemy jako przykładu dedykowanego serwera gier Palworld, ale instrukcje można dostosować do wszystkich naszych poradników.

Tworzenie usługi

Zacznij od utworzenia nowego pliku usługi dla dedykowanego serwera gier, który skonfigurowałeś. Zamień [your_game] na wybraną przez siebie nazwę. Zalecamy użycie nazwy gry, aby wszystko było przejrzyste, więc użyjemy palworld.service.

sudo nano /etc/systemd/system/[your_game].service

Konfiguracja usługi

Po otwarciu edytora nano, skopiuj poniższą podstawową zawartość pliku, która jest szablonem usługi do ponownego wykorzystania. Mamy dwie wersje: jedną dla poradników korzystających ze SteamCMD, a drugą dla gier bez SteamCMD.

[Unit]
Description=[your_server] Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/[your_server_folder]
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/[your_server_folder]' +login anonymous +app_update [your_game_steamid] +quit
ExecStart=/home/steam/[your_server_folder]/[your_path_to_start_file]
Restart=always

[Install]
WantedBy=multi-user.target

Rozbijmy zawartość pliku, żeby wszystko było jasne:

  • Description: Dowolny opis, przydatny do łatwego rozróżnienia celu usługi.
  • User: W naszych poradnikach powinieneś mieć osobnego użytkownika steam do SteamCMD lub gameservers do gier bez SteamCMD. Jeśli nie, ustaw tutaj użytkownika, który ma uruchamiać usługę.
  • WorkingDirectory: Ścieżka do głównego katalogu, który zawiera wszystko, czego usługa potrzebuje.
  • ExecStartPre (tylko SteamCMD): Tutaj ustawiamy polecenie instalacji SteamCMD, które będzie się wykonywać przy każdym restarcie serwera, aby upewnić się, że jest aktualny. Skopiuj to z odpowiedniego poradnika dedykowanego serwera gier lub ręcznie podmień wartości na te właściwe dla gry.
  • ExecStart: To pole definiuje zadanie, które ma być uruchomione przez usługę. Ponownie, skopiuj ścieżkę z odpowiedniego poradnika lub ręcznie podmień wartości, aby wskazać plik startowy.
Warstwa kompatybilności Wine

Dla gier wymagających warstwy kompatybilności Wine, powinieneś dodać polecenia xvfb-run i wine w parametrze ExecStart. Przykład dla V-Rising:

/usr/bin/xvfb-run wine /home/steam/V-Rising-Server/start_server.bat

Upewnij się też, że Twoje polecenie instalacji SteamCMD w ExecStartPre zawiera parametr +@sSteamCmdForcePlatformType, jeśli trzeba wymusić wersję platformy.

Po dostosowaniu wszystkich wartości do swojego dedykowanego serwera gier, zapisz plik i wyjdź z nano, używając CTRL + X, następnie Y, aby potwierdzić, i na końcu ENTER.

Dla przykładu Palworld, nasz plik będzie wyglądał tak:

[Unit]
Description=Palworld Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/Palworld-Server
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/Palworld-Server' +login anonymous +app_update 2394010 +quit
ExecStart=/home/steam/Palworld-Server/PalServer.sh
Restart=always

[Install]
WantedBy=multi-user.target

Zarządzanie usługą

Po utworzeniu pliku usługi, musisz ją włączyć. W przykładzie palworld.service, [your_service] zamieniamy na palworld.

sudo systemctl enable [your_service]
tip

Jeśli wprowadzisz zmiany w pliku usługi, pamiętaj, aby po nich wykonać systemctl daemon-reload, żeby zmiany zostały zastosowane.

Teraz możesz uruchomić serwer poleceniem systemctl start. Podobnie łatwo zatrzymasz lub zrestartujesz serwer:

sudo systemctl start [your_service]
sudo systemctl stop [your_service]
sudo systemctl restart [your_service]
tip

Aby zobaczyć szczegóły usługi, użyj systemctl status. Jeśli potrzebujesz logów do debugowania, skorzystaj z journalctl -u [your_service].service, aby wyświetlić najnowsze logi usługi.

Na koniec, jeśli chcesz wyłączyć automatyczne uruchamianie usługi przy starcie systemu, po prostu ją wyłącz:

sudo systemctl disable [your_service]

Podsumowanie

Udało Ci się właśnie skonfigurować usługę dla swojego dedykowanego serwera gier. Serwer będzie teraz automatycznie startował przy uruchomieniu serwera.

Poznałeś też zawartość pliku usługi oraz jak zarządzać usługą za pomocą różnych poleceń.