なんでもぶろぐ

ゲームやプログラムなど作ったものや学習したものをまとめておくブログ

ARK Linux個人サーバー インストールメモ2

※自己責任でお願いします。頻繁にいじるので自分用メモ

2018/11/5 PC版のみ

主に↓を参考にしてます。英語読める方はこのページ呼んだほうがいいかも?
http://ark.gamepedia.com/Dedicated_Server_Setup


実行環境

WebArena http://web.arena.ne.jp/vps-cloud/
こちらの6GBプラン

OS:CentOS7
ARKバージョン:256.21

での情報です。

前提条件

64bitOSが必要。Serverは、64bitの実行ファイルなので32bitでは実行できません。プログラムのテストはUbuntu 14.04で行っている。

ハードウェア要件

開始するには、サーバーに少なくとも6GBのRAMが必要です。接続されたプレーヤーの数が増えるにつれて、メモリ要件が増加します。Linuxでは、インストールを行わずに3.2GBのRAMを使用します。

上記のハードウェア構成でログイン0人のとき、CPU使用率15%、メモリ使用率60%ほど
2人ログインでCPU使用率40%、メモリ使用率は60%と変わりありませんでした。
建築物やテイムした恐竜が増えればそれだけメモリ使用率等も上がると思います。



ポートの開放

サーバーは、以下にリストされたポートで接続を待ち受けます。

ポート 目的 補足
UDP 27015 スチームサーバーブラウザーのクエリーポート 必須
UDP 7777 ゲームクライアントポート 必須?
UDP 7778 UDP Raw ポート(ゲームクライアントポート + 1) (任意)
TCP 27020 RCON用のポート (任意)


ポートを開放し、設定を反映させます。

#firewall-cmd --permanent --add-port=27015/udp
#firewall-cmd --permanent --add-port=7777/udp
#firewall-cmd --reload

必要なライブラリのインストール

ARKサーバーのインストールはSteamCMDを使って行います。
64ビットLinuxサーバでは、steamcmdのインストール/実行に32ビットのバイナリが必要ですのでインストールします。

#yum install -y glibc.i686 libstdc++.i686

ファイルオープン数の上限を変更

サーバープログラムのファイルオープン数がデフォルト値を上回るみたいです
この変更をしないとゲームサーバーが正常に起動しない可能性があります。サーバーが起動しているように見えても、必要なファイルをすべて開くことができないことがあります。


まずOSのファイルオープン数を変更します。

#vim /etc/sysctl.conf

以下の行を追加します。

fs.file-max=100000

設定を反映させて、確認します。
2018/11/05 不要な改行を修正
#ulimit -n
1000000

#sysctl -p /etc/sysctl.conf
fs.file-max = 100000

#ulimit -n 1000000

次に1プロセスのファイルオープン数を変更します。

#vim /etc/security/limits.conf

以下の内容を追加します。

*               soft    nofile          1000000
*               hard    nofile          1000000


※後述のsystemdを使用して専用サーバーを起動する場合は適用されません。そちらはsystemdの起動設定にて変更します。



SteamCMD、ARKのインストール


以下の設定でインストール設定を書きます。

設定名
CentOSのユーザー名 steam
SteamCMDインストールディレクト /home/steam/Steam
ARKインストールディレクト /home/steam/Steam/ark

ユーザーの作成、ディレクトリの作成

#useradd steam
#passwd steam
#su - steam
$mkdir Steam
$mkdir Steam/ark

SteamCMDのダウンロードと起動
(2017/8/8 リンクミス修正)
$curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz' | tar zxvf -

$cd Steam
$curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
$./steamcmd.sh

Steam> と出てくるので以下のように入力

Steam> login anonymous
Steam> force_install_dir ark
Steam> app_update 376030 validate
Steam> exit

上から、匿名ログイン、インストールディレクトリの指定、指定サーバーのインストール、終了
app_update 376030 validate を実行するとARKのダウンロードが始まります。
途中エラーで止まることがありますが、もう一度、app_update 376030 validateを実行すればいけました。

ここまでで、サーバー自体は起動できるようになります。
起動コマンドは↓です。下表の3つの部分を自分好みに書き換えてください。

$cd Steam/ark/ShooterGame/Binaries/Linux/
$./ShooterGameServer TheIsland?listen?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password> -server -log
server_name 表示されるサーバー名
join_password ログインパスワード
admin_password 管理者パスワード

2018/11/05 追記 コマンドのTheIslandの部分を変えるとマップを変えられる
今あるマップは以下
TheIsland
TheCenter
Ragnarok
ScorchedEarth_P
Aberration_P


サーバーを初めて実行するときは、自動でShooterGame / Savedという名前のフォルダーが作成されます。サーバーが少なくとも1回は実行されているが、このフォルダーが作成されていない場合は、そこに新しいフォルダーとファイルを作成できなかった可能性があります。サーバーがインストールされているフォルダーが、実際にサーバーを実行しているユーザーアカウントによって読み書き可能であることを確認します。
また、デフォルトでは、サーバーソフトウェアは15分ごとに世界のデータを自動的に保存するように設定されています。最初の15分が経過する前にサーバーが落ちた場合、データは保存されません。

ログイン方法

WindowsのSteamクライアントより

表示 - サーバーを選択
f:id:arknut:20170405125910p:plain

お気に入り - サーバーを追加 - IPの入力 - 追加
f:id:arknut:20170405125925p:plain


ゲームを起動して、サーバーフィルターでお気に入りを選択すると出てきます。

systemctlによる自動起動

サーバー再起動時、自動で起動するようにsystemctlに登録します。

まず起動設定ファイルを作ります。2018/11/05 スペルミス修正dedcated.service

#cd /etc/systemd/system/
#vim ark-dedicated.service

ファイルの内容を以下のようにします。
2018/11/05 ExecStartのPATHを修正
home/steam/Steam/ark/ShooterGameServer

[unit]
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/home/steam/Steam/steamcmd.sh +login anonymous +force_install_dir ark +app_update 376030 +quit
ExecStart=/home/steam/Steam/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password> -server -log
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam

[Install]
WantedBy=multi-user.target

個人の環境に合わせて変更する場合はここら辺です。

パラメータ 内容
ExecStartPre 起動前に実行される処理
ExecStart 起動処理
LimitNOFILE 上限ファイルオープン数の指定
ExecReload リロード時の処理
ExecStop 停止時の処理
User 起動するCentOSのユーザーを指定する
Group 起動するCentOSのグループを指定する

設定を反映させる。

#systemctl daemon-reload

自動起動をONにする

#systemctl enable ark-dedicated.service

ARKの起動

#systemctl start ark-dedicated.service

ARKの停止

#systemclt stop ark-dedicated.service

※デフォルトでは、サーバーソフトウェアは15分ごとに世界のデータを自動的に保存するように設定されています。15分が経過する前にサーバーがクラッシュした場合、データは保存されません。

サーバーのアップデート

systemctlなら起動時にアップデートする・・はず

手動でのアップデートはsteamcmd.shのあるディレクトリでこの一行

$./steamcmd.sh +login anonymous +force_install_dir ark +app_update 376030 +quit

サーバーのバックアップ

ShooterGame/Savedにすべてのファイルがあるのでこれを保存しておく。

$cd Steam/ark/ShooterGame/
$zip -r backup.zip Saved