FiveMやRustのサーバーを自動再起動させる systemd サービスの作り方


screen コマンドを卒業し、systemd でサーバープロセスを管理する

FiveM(Qbox / ox_inventory 等を導入した高負荷環境)やRustなどのマルチプレイサーバーを運用していると、予期せぬスクリプトエラーやメモリリークでサーバープロセスがクラッシュすることがあります。

手動で screentmux を使って起動していると、落ちたことに気づくまでサーバーが止まったままになってしまいます。Linuxの標準機能である systemd を使って、クラッシュ時の自動復旧(オートリスタート)とOS起動時の自動起動を設定する方法をまとめます。


systemd サービスファイルの作成

/etc/systemd/system/ ディレクトリに、ゲームサーバー用のサービスファイルを作成します。今回は例として fivem.service とします。

sudo nano /etc/systemd/system/fivem.service

以下の設定を貼り付けます。(環境に合わせてパスやユーザー名を変更してください)

[Unit]
Description=FiveM Dedicated Server
After=network.target

[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/fivem-server/server-data

# サーバーの起動コマンドを指定
ExecStart=/home/your_username/fivem-server/fx-server/run.sh +exec server.cfg

# クラッシュ時や異常終了時に自動で再起動する設定
Restart=on-failure
RestartSec=5

# 標準出力をSyslogに送る
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=fivem-server

[Install]
WantedBy=multi-user.target

サービスの有効化と起動

設定ファイルを作成したら、systemd に設定を再読み込みさせ、サービスを起動します。

# 設定の反映
sudo systemctl daemon-reload

# OS起動時の自動起動を有効化
sudo systemctl enable fivem

# サーバーの起動
sudo systemctl start fivem

ログの確認方法

サーバーのコンソールログ(エラーが出ていないか、プレイヤーが接続したか等)は、journalctl コマンドでリアルタイムに確認できます。

sudo journalctl -u fivem -f

まとめ

この設定を行えば、万が一深夜にサーバーが落ちても5秒後には自動で復旧するため、管理者の負担が激減します。Loner Labでは、安定したインフラ構築のための必須設定として推奨しています。