あきらぼ

テック系ブログ

カゴヤのレンタルVPSサーバーでARKゲームサーバーをセットアップ

今回は最近ハマっているARKのゲームを友人たちといつでも好き勝手にプレイできるようにVPSサーバーを借りてそこにARK用のサーバーをセットアップしていきます。
一度GMOクラウドVPSでも試してみたのですが、上手くポート開放ができなかったのでARKサーバーとして実績のあるこちらのサービス使用します。

前回のセットアップはこちら
aki-lab.hatenadiary.com

参考にしたのは以下のサイトです。
【ARK】サーバー構築徹底解説!マルチで遊ぶための方法からおすすめサービスを紹介 - カゴヤのサーバー研究室
Dedicated server setup - ARK: Survival Evolved Wiki

今回はUbuntuがOSでメモリ4GでCPUが4コア、SSD30GBを使用しています。
4人程度で遊ぶにはこの程度のスペックで十分なので。(後で状況に合わせてプラン変更すればいいので。)
追記:こちらLost Islandのマップをプレイするには4Gだけでは足りず、仮想メモリ8GB割り当ててやっと余裕がある感じでした。
またARKのサーバーソフトだけで20GBの容量超えてしまったので仮想メモリを割り当てられず、SSD80GBのプランに変更しました。




ポート設定

まずARK用のポートを開けます。

sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 7777 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 7778 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27020 -j ACCEPT

設定を確認します。

sudo iptables -L

ARKサーバー用の設定

次にARKサーバーのインストール・設定をしていきます。

必要な32bitのバイナリをインストールします。

sudo apt install lib32gcc1

次にサーバーが大量のファイルを開けるように設定を変更していきます。

sudo nano /etc/sysctl.conf

以下の分を付け加えます。

fs.file-max=100000 
<||

次に変更を反映させます。

>||
sudo sysctl -p /etc/sysctl.conf

次のファイルを設定します。

sudo nano /etc/security/limits.conf

以下の二行を追加します。

*               soft    nofile          1000000
*               hard    nofile          1000000

次のファイルで設定を編集します。

sudo nano /etc/pam.d/common-session

以下の分を追加します。

session required pam_limits.so

SteamCMDのインストール

次にSteamCMDのインストールを行っていきます。
今回はUserフォルダーにSteamをインストールします。

mkdir Steam
cd Steam

そしたらダウンロードして解凍します。

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

インストーラーを起動します。

./steamcmd.sh

ARKサーバーソフトのインストール

インストールが終了するとSteamCMDが起動し、Steamのターミナルとなります。
まず匿名ユーザーでのログインをします。

Steam>login anonymous

次にインストールフォルダの指定をします。
今回は相対パスでインストールしたSteamCMDの中にフォルダを作ります。

Steam>force_install_dir ./servers/ark

最後にサーバーのインストールをします。

Steam>app_update 376030 validate

SteamCMDでの作業は終了です。

あとは実行ファイルまで移動します。

cd /servers\ark\ShooterGame\Binaries\Linux

あとはオプションを指定して起動します。
ここでマップ、セッション名、セッションパスワードや管理者パスワードを設定します。

./ShooterGameServer TheIsland?Listen?SessionName=ark?ServerPassword=login_password?ServerAdminPassword=admin_password -server -log

起動には数分かかるのですが、しばらくするとKilledの表示がでて落ちてしまいます。
あとでわかったのですが、これはメモリ不足によるものです。
特に最新マップのLostIslandはこの4Gのメモリでも足りないようです。

仮想メモリの追加

そこで、仮想メモリを4G追加で設定します。
GMOクラウドVPSでは仮想メモリの使用はできなかったのですが、このカガヤVPSはちゃんと仮想メモリも設定できます。

dd if=/dev/zero of=/var/swpfile bs=1M count=4096
mkswap /var/swpfile
chmod 600 /var/swpfile
swapon /var/swpfile

追記:4Gの仮想メモリでも足りなく、8GB割り当ててやっと余裕ができました。

こちらの仮想メモリ設定ですが、再起動すると割り当てがリセットされてしまうので、再起動してもSwap領域がマウントされるように設定をします。
/etc/fstabを編集します。

nano /etc/fstab

以下の文を追加します。

/var/swpfile swap swap default 0 0

これで再起動したとしても自動で仮想メモリをマウントしてくれます。

これでサイドサーバーを立ち上げると問題なく起動してくれました。(やはり数分はかかりますが)
Failedの分は表示されますが、サーバーは問題なく立ち上がります。

[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 346110

起動用シェルスクリプトの作成

また、コマンドが長くてめんどくさいので、専用のシェルスクリプトを作ります。

nano ARKServerStart.sh

内容はこんな感じ

#! /bin/bash
./ShooterGameServer TheIsland?listen?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password> -server -log

以下のコマンドで実行可能にします。

$ chmod +x ARKServerStart.sh

このシェルスクリプトを実行すれば毎回サーバー名やパスワードを設定しなおす必要がありません。

次に、このままだとSSHのコンソールを閉じてしまうとサーバーが終了してしまうのでバックグラウンドで実行して終了です。
バックグラウンド実行(SSH接続解除後も継続)するnohupと&で出力を非表示にします。

nohup ./ARKServerStart.ini &

これですべて完了です。
あとはサーバーとの接続を切って自分のPCでサーバーに入って恐竜をテイムしましょう!

実際のCPUとメモリ使用量

参考までに実際に使ったときに一人で入っているときのCPU使用率とRAM使用率がこちらです。


最後に

アップデートが必要になった際は以下の方法でアップデートできます。
aki-lab.hatenadiary.com

サーバー負荷(特にメモリ)でARKが時々落ちてしまうことがあったら自動で再起動するスクリプトを作ってみました。
aki-lab.hatenadiary.com