ARKサーバーをログオフしても起動しておく
Screenにするのもいいけど、サービスにしておけばいいので、そのやり方を書いておきます。
Virtual BOX上でUbuntuをインストールし、実行できることを確認しています。
環境
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
ユーザーは"ark"
以下の起動オプションをサービスにします。
./ShooterGameServer TheIsland?listen?SessionName=hogehogeServer?ServerPassword=Password?ServerAdminPassword=AdminPassword -server -log
sudoできるユーザーでサービスを追加します。
sudo nano /lib/systemd/system/arkserver.service
以下の内容を記入します。
[unit]
## サービスの説明を記載する。
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
Type=simple
Restart=no
StartLimitBurst=3
## 実行時ユーザー名とグループを指定する
User=ark
Group=ark
## サーバー起動前にアップデートをする。force_install_dirは環境に応じて変更する。
ExecStartPre=/usr/games/steamcmd +force_install_dir "/home/ark/arkserver" +login anonymous +app_update 376030 +quit
## サーバーを起動する。ここの起動オプションは環境に応じて変更する。
ExecStart=/home/ark/arkserver/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=hogehogeServer?ServerPassword=Password?ServerAdminPassword=AdminPassword -server -log
LimitNOFILE=100000
## 作業ディレクトリを指定する。実際にARKサーバープログラムがあるディレクトリをフルパスで指定する。
WorkingDirectory=/home/ark/arkserver/ShooterGame/Binaries/Linux
## サービスをリロードするときのコマンド
ExecReload=/bin/kill -s HUP $MAINPID
## サービスをストップするときのコマンド
ExecStop=/bin/kill -s INT $MAINPID
[Install]
WantedBy=multi-user.target
保存後、サービスを起動します。以下のコマンドを使用します。
## systemdを再読み込みする
sudo systemctl daemon-reload
## サービス有効化(システム起動時にプロセス実行)
sudo systemctl enable arkserver
## サービス実行
sudo systemctl start arkserver
## 確認
sudo systemctl status arkserver
sudo systemctl status arkserverの結果がだいたい以下のようであれば無事起動しています。
(Active: active (running)であれば基本OK)
● arkserver.service
Loaded: loaded (/lib/systemd/system/arkserver.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-09-11 17:02:30 UTC; 1min 8s ago
Process: 2198 ExecStartPre=/usr/games/steamcmd +force_install_dir /home/ark/arkserver +login anonymous +app_update 376030 +quit (code=exited, status=0/SUCCESS)
Main PID: 2219 (ShooterGameServ)
Tasks: 17 (limit: 19068)
Memory: 4.9G
CPU: 1min 11.474s
CGroup: /system.slice/arkserver.service
mq2219 /home/ark/arkserver/ShooterGame/Binaries/Linux/ShooterGameServer "TheIsland?listen?SessionName=hogehogeServer?ServerPassword=Password?ServerAdminPassword=AdminPassword" -server -log
Sep 11 17:02:27 manjutest steamcmd[2202]: Steam Console Client (c) Valve Corporation - version 1660762488
Sep 11 17:02:27 manjutest steamcmd[2202]: -- type 'quit' to exit --
Sep 11 17:02:27 manjutest steamcmd[2202]: Loading Steam API...OK
Sep 11 17:02:29 manjutest steamcmd[2202]: Connecting anonymously to Steam Public...OK
Sep 11 17:02:29 manjutest steamcmd[2202]: Waiting for client config...OK
Sep 11 17:02:30 manjutest steamcmd[2202]: Waiting for user info...OK
Sep 11 17:02:30 manjutest steamcmd[2202]: Success! App '376030' already up to date.
Sep 11 17:02:30 manjutest systemd[1]: Started arkserver.service.
Sep 11 17:02:30 manjutest ShooterGameServer[2219]: [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Sep 11 17:02:30 manjutest ShooterGameServer[2219]: Setting breakpad minidump AppID = 346110
実際にSteamからサーバーの応答があることを確認できれば完了です。
アップデートがあった場合以下のようにすることで自動でサーバーを停止してアップデートして起動してくれるはずです。
sudo systemctl restart arkserver
何かございましたらコメントを残してくれると幸いです。
以上です。