FiveMやRustのサーバーを自動再起動させる systemd サービスの作り方
screen コマンドを卒業し、systemd でサーバープロセスを管理する
FiveM(Qbox / ox_inventory 等を導入した高負荷環境)やRustなどのマルチプレイサーバーを運用していると、予期せぬスクリプトエラーやメモリリークでサーバープロセスがクラッシュすることがあります。
手動で screen や tmux を使って起動していると、落ちたことに気づくまでサーバーが止まったままになってしまいます。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では、安定したインフラ構築のための必須設定として推奨しています。