なんでもぶろぐ

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

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

ARK Linux個人サーバー Modの導入方法2

Ver244.3で自動modダウンロード/インストール/アップデートが実装されていましたのでその方法をメモしておきます。

ソースはこちら
244.3 - Official ARK: Survival Evolved Wiki

環境

WebArena http://web.arena.ne.jp/vps-cloud/
Centos7 64bit
コア数 6
メモリ 6144MB
ストレージ SSD 100G
ARKのバージョン 256.21



自動スクリプトのインストール

Linuxサーバでは、このスクリプト(サーバファイルに含まれています)を一度実行してSteamCMDをインストールする必要があります。インストールファイルはARKをインストールしたディレクトリ内にあります。

$cd Steam/ark/
$./SteamCMDInstall.sh

実行するとパスを聞かれるのでログインしているユーザーのパスワードを入力します。



設定の追加

Game.iniに導入したいModの番号を記入します

$cd Steam/ark/ShooterGame/Saved/Config/LinuxServer/
$vim Game.ini

記入例

[ModInstaller]
ModIDS=680481868
ModIDS=682394267 
ModIDS=714672786

使用方法

保存し、再起動すると自動でModが導入されます。
自動アップデート等が実行されるタイミングは起動時なので
Modのアップデート等があった場合はサーバーを再起動すると適応されます。

4/17 追記
systemdで再起動するとなぜかインストールされない現象が・・
手動で起動したらインストール、アップデートされました。

ARK Linux個人サーバー Modの導入方法

/----- 2017/4/3 追記 -------

244.3で自動インストール/アップデートスクリプトが実装されてました。
ARK Linux個人サーバー Modの導入方法2 - ARK設定メモ

自動スクリプトのほうが楽です。
この記事の方法でもできます。

/---------------------------




※書いてある内容を実行して何かあっても責任はとれません。

すべて自己責任でお願いします。


現状Linuxでは、MODファイルを解凍できないようでWindowsのクライアントにて解凍したMODファイルをLinuxサーバーにコピーすれば導入できました。



1.WindowsのSteamクライアントよりARKのModページを開く

2.ほしいMODをサブスクライブして、ローカルでMODが動くか確認する(MODの番号を控えておく)

3.Steamのゲームをインストールしている以下のフォルダよりModデータをコピーする
(Mod番号フォルダとMod番号.modの二つ)

Steam/steamapps/common/ARK/ShooterGame/Content/Mods


4.Linuxサーバーの以下のディレクトリにModデータをコピーする

<ARKインストールディレクトリ>/ShooterGame/Content/Mod

※ファイル所有者、実行権限に注意



5.設定ファイルにてModを有効にする

cd <ARKインストールディレクトリ>/ShooterGame/Saved/Config/LinuxServer
vim GameUserSettings.ini

GameUserSettings.iniの[ServerSettings]に控えていたMod番号を追加

[ServerSettings]
ActiveMods=566887000,813463849

Modが複数ある場合は上のように書く

6.サーバーを起動して確認

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

/------- 2017/4/5 追記 -------------

再インストールするときわかりにくかったので書き直しました。
ARK:Survival Evolved Linux Dedicated Server 導入メモ - Linuxとかの設定メモとかそんな感じ

/-----------------------------------




※書いてある内容を実行して何かあっても責任はとれません。

すべて自己責任でお願いします。

構築する際、情報がバラバラでしたのでまとめておきたいと思います。

基本的にはDedicated Server Setup - Official ARK: Survival Evolved Wikiからの情報です。

以下の内容はすべてLinux向けです。CentOS7を使用してます。

Linux自体の設定等は書きません。

バックアップ、RCONの設定
ARK Linux個人サーバー 設定とか - Linuxとかの設定メモとかそんな感じ



目次

  1. サーバーの環境、スペック
  2. 下準備
  3. ARKのインストール、アップデート
  4. SteamCMDのインストール
  5. ARKのインストール、アップデート
  6. ARKの起動、停止
  7. Systemctlでの起動と停止
1.サーバーの環境、スペック

64bitOSが必要、サーバーのテストはUbuntu14.04でしている?

サーバーを起動するのに最低でも6GBのメモリーが必要みたいです。

SSDのアクセス速度を利用して、6GB未満の場合でもスワップを増やせば起動することはできます。さくらのVPSメモリ2GBのプランでスワップを4GB増やして起動はしました。テストくらいにしか使ってないので実用に耐えられるかは不明です。

私はWebArenaのVPSクラウドでメモリ6GBプランで建てていますが、5人程InするとCPU負荷が80%程度、メモリも80%程度でした。


2.下準備

・以下のポートの開放
UDP 27015 スチームサーバーブラウズで使うポート
UDP 7777 ゲーム用のポート
(UDP 7778 Raw UDP ソケットポート)
TCP 27020 RCONで使うポート。RCON使わないなら開けなくても大丈夫

root権限で

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

#firewallを再起動すると変更が適応されるのでリロード

#firewall-cmd --reload

・SteamCMDのインストールに要求されるライブラリーのインストール

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

・/etc/sysctl.conf に以下の行を追加。ここの設定を忘れてた時、ログイン時にクエリーエラーが出てました。

fs.file-max=100000

・/etc/security/limits.conf に以下の行を追加

*               soft    nofile          1000000
*               hard    nofile          1000000
3.SteamCMDのインストール

ここからはユーザー権限で行う。
・ユーザーの作成

#useradd [ユーザー名]
#passwd [ユーザー名]
#su - [ユーザー名]

・Steam用のフォルダを作成し移動

$mkdir Steam && cd Steam

・SteamCMDの本体をダウンロード

$curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz' | tar zxvf -

・SteamCMDの起動

$cd Steam
$./steamcmd.sh

・匿名でログイン

Steam>login anonymous

・ログアウト

Steam>exit

このSteamCMDでサーバープログラムをダウンロードしていきます
ARK以外にも対応しているゲームがたくさんあります。詳しくは↓
Dedicated Servers List - Valve Developer Community



4.ARKのインストール、アップデート

・Steamcmd.shあるディレクトリに移動して起動、ログイン

$./steamcmd.sh
Steam>login anonymous

・保存するディレクトリを指定する

Steam>force_install_dir <インストールディレクトリ>

・サーバーのダウンロード。ARKのSteamIDは376030なのでこれを指定する。

Steam>app_update 376030

・SteamCMDの終了

Steam>exit

以上の手順を1行で書いて実行すると楽です。<インストールディレクトリ>部分のみ環境に合わせて

./steamcmd.sh +login anonymous +force_install_dir <インストールディレクトリ> +app_update 376030 +quit

アップデートする場合も、この手順でします。
Dedicated Servers List - Valve Developer Community
またこちらにあるものは、同様の手順でインストールできるみたい?


5.ARKの起動、停止

・ARKの起動
ARKインストールしたディレクトリ以下の

<インストールディレクトリ>/ShooterGame/Binaries/Linux/

に移動して以下のコマンドで起動できます。

./ShooterGameServer TheIsland?listen?SessionName=<セッション名>?ServerPassword=<サーバーパス>?ServerAdminPassword=<管理者パス> -server -log

<セッション名>:サーバーの名前
<サーバーパス>:サーバーにログインするときのパスワード
<管理者パス>:サーバー内のコマンドを使うときのパスワード

・停止
現在の画面で動いてる場合はCtrl+C、別ウィンドウの場合は killで

※この方法でサーバー落としていたら恐竜のロス報告がありました。
いまは、ゲーム内でDoexitするかRCONでDoexitしています。

ゲーム内→TABでコンソールが開きますのでそこで

Enable cheats <管理者パスワード>
admincheats DoExit

と入力するとサーバーが終了します。
RCONでサーバーを停止する場合→
ARK Linux個人サーバー 設定とか - Linuxとかの設定メモとかそんな感じ

6.Systemctlでの起動と停止

・起動設定ファイルの作成
/etc/systemd/system/に ark-dedicated.service ファイルの作成

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

内容は以下

[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/<ユーザー名>/steamcmd.sh +login anonymous +force_install_dir <インストールディレクトリ> +app_update 376030 +quit
ExecStart=/home/<ユーザー名>/<インストールディレクトリ>/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=<セッション名>?ServerPassword=<サーバーパス>?ServerAdminPassword=<管理者パス> -server -log
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=<ユーザー名>
Group=<ユーザー名>

[Install]
WantedBy=multi-user.target

ユーザー名、インストールディレクトリ等は環境に合わせて。


設定を反映させる

systemctl daemon-reload

ARKの起動

systemctl start ark-dedicated.service

ARKの停止

systemclt stop ark-dedicated.service