今回は最近ハマっている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