Skip to main content

専用サーバー:Linuxサービスとして専用ゲームサーバーをセットアップする方法

このガイドは、以下の製品を使用して作成されました:

(詳細はプロバイダーごとの製品によって異なる場合がありますが、基本的な概念は同じです)

はじめに

サービスはLinuxの重要な機能で、バックグラウンドで動作するプロセスやアプリケーションのことを指します。これは事前定義されたタスクやイベントベースのタスクで、サーバー起動時の自動起動、自動アップデート、ログの簡単管理など多くのメリットがあります!このガイドでは、専用ゲームサーバーのサービスを作成する手順を解説します。

準備

まずはSSHで専用サーバーに接続しましょう。接続方法がわからない場合は、SSH初期アクセスガイドを参考にしてください。

また、このセクションの専用ゲームサーバーガイドのいずれかに従って、Linuxシステムにゲームサーバーをインストール・セットアップしておく必要があります。ここでは例としてPalworld専用ゲームサーバーを使いますが、他のガイドでも同様の手順で対応可能です。

サービスの作成

セットアップした専用ゲームサーバー用に新しいサービスファイルを作成します。[your_game]は任意の名前に置き換えてください。管理しやすいようにゲーム名を使うのがおすすめなので、ここではpalworld.serviceを例にします。

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

サービスの設定

nanoエディタが開いたら、以下のテンプレートをコピーしてください。SteamCMDを使うガイド用と、使わないゲーム用の2種類があります。

[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

ファイルの内容を簡単に解説します。

  • Description: サービスの目的をわかりやすく記述。何でもOKです。
  • User: SteamCMD用のガイドならsteamユーザー、非SteamCMD用ならgameserversユーザーを使う想定です。違う場合はサービスを実行するユーザー名に変更してください。
  • WorkingDirectory: サービスが必要とするファイルがあるメインディレクトリのパス。
  • ExecStartPre(SteamCMDのみ): サーバー起動前にSteamCMDでゲームをアップデートするコマンド。サーバー再起動時に毎回最新状態に保ちます。専用ゲームサーバーガイドからコピーするか、ゲームに合わせて手動で書き換えてください。
  • ExecStart: サービス起動時に実行するコマンド。こちらも専用ゲームサーバーガイドからコピーするか、起動ファイルのパスに書き換えてください。
Wine互換レイヤー対応

Wine互換レイヤーが必要なゲームの場合、ExecStartxvfb-runwineコマンドを含める必要があります。例えばV-Risingの場合は以下のようにします:

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

また、ExecStartPreのSteamCMDコマンドに+@sSteamCmdForcePlatformTypeパラメータを追加してプラットフォームを強制指定する必要がある場合もあります。

すべての値を専用ゲームサーバー用に書き換えたら、CTRL + Xでnanoを終了し、Yで保存、ENTERで確定します。

Palworldの例だとこんな感じになります:

[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

サービスの管理

サービスファイルができたら、有効化します。palworld.serviceの例では[your_service]palworldに置き換えます。

sudo systemctl enable [your_service]
Hint

サービスファイルを編集したら、必ずsystemctl daemon-reloadを実行して変更を反映させましょう。

サーバーは以下のコマンドで起動できます。同様に停止や再起動も簡単です。

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

サービスの状態を確認したい場合はsystemctl statusコマンドを使いましょう。ログを見たいときはjournalctl -u [your_service].serviceで最新ログをチェックできます。

起動時にサービスを自動実行したくない場合は無効化します。

sudo systemctl disable [your_service]

まとめ

これで専用ゲームサーバーのサービス設定が完了し、サーバー起動時に自動でゲームサーバーも起動するようになりました。

サービスファイルの内容や、サービス管理コマンドの使い方も理解できたはずです。