ARK: Survival Evolved linux サーバーの立て方

2021年6月12日

linux上でARK: Survival Evolvedのサーバーを構築してのでメモ

windowsでサーバーを建てる場合は以下のとおりです。

はじめに

素晴らしいコマンドを用意してくれたひとに感謝

FezVrasta/ark-server-tools

動作必要環境

6人がプレイする上で実際に使用したリソースです

  • CPU 第4世代 0.5コア
  • メモリ 5.12GB

環境構築

以下のコマンドをターミナルにコピペすればサーバーは起動します。

(ポート開放は自分でやってね)

パッケージのインストール

sudo apt-add-repository non-free
sudo dpkg --add-architecture i386
sudo apt update
sudo apt upgrade -y
sudo apt install -y perl-modules curl lsof libc6-i386 lib32gcc1 bzip2
sudo apt install -y lib32gcc1 steamcmd 

ファイアウォールの設定

以下のように開けてください。以下のポートが開けられる設定であればiptablesでなくても良いです。

  • 7777 TCP/UDP
  • 7778 TCP/UDP
  • 27015 TCP/UDP
  • 32330 TCP/UDP
sudo iptables -I INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 27015 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 7778 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 7778 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 7777 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 7777 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 32330 -j ACCEPT

ついでにルータのポート開放を行ってください

arkmanagerのインストール

インストールにはしばらく時間がかかります。

sudo useradd -m steam
cd /home/steam
curl -sL https://git.io/arkmanager | sudo bash -s steam
sudo arkmanager install

これでサーバーのインストールが完了しました。

サーバーパスワードの変更

/etc/arkmanager/instances/main.cfgに存在する以下の値を変更することで設定することができる

  • ark_ServerPassword=""
  • ark_ServerAdminPassword="keyboardcat"

サーバーの起動・停止

サーバーの起動には以下のコマンドで行なえます。起動には5~10分ほどかかります。

sudo arkmanager start

サーバーの停止

sudo arkmanager stop

サーバーに参加する方法

Steamを開きサーバーを選択します。

お気に入りのサーバーを追加を選択します。

ここに例えばサーバーを実行しているローカルIPを打ちます

すると以下のようにサーバーの名前やバージョンが出れば接続できます。

外からのアクセスの際はグローバルIPからアクセスしましょう。

使い方まとめ

開発元のUsageに全て書いてあります

FezVrasta/ark-server-tools

コンフィグの設定は以下のファイルをいじってください

/home/steam/ARK/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini

ATLAS / ARK GameUserSettings.ini Generatorを使うと楽かもしれません

steamを経由しない通信を行う

※デフォルトで有効になり、この設定は削除されました。

上記の設定ではすでに対策されているので気にしなくて良い

標準のarkサーバーはSteamを経由した接続を行っている。

そして最近になってarkを購入する人が増えたせいなのか、一定時間が経過するとサーバーに接続している人が同時にサーバータイムアウトで切断される。

大体5分経過すると参加者は切断される。

これを対策するためにはSteamを経由せずにクライアントがサーバーに接続する必要がある。

これはサーバーと直接接続するオプションである

?bRawSockets

を ShooterGameServer の起動時引数として渡す必要がある。つまり以下のような状態にする必要がある。

ShooterGameServer TheIsland?MaxPlayers=70?Port=7777?QueryPort=27015?RCONEnabled=True?RCONPort=32330?ServerAdminPassword=pass?ServerPassword=pass?SessionName=name?bRawSockets?listen -log

これを arkmanager に追加するためには以下のどちらかに「ark_bRawSockets=""」を追加すれば良い

  • /etc/arkmanager/arkmanager.cfg
  • /etc/arkmanager/instances/main.cfg

この設定を行っただけで、参加者が切断されることはなくなった。

Steamとエピックのクロスプレイサーバー設定

ShooterGameServerの起動時引数として「-crossplay」が必要となります。

ShooterGameServerを直接起動している場合

ShooterGameServer TheIsland?MaxPlayers=70?Port=7777?QueryPort=27015?RCONEnabled=True?RCONPort=32330?ServerAdminPassword=pass?ServerPassword=pass?SessionName=name?bRawSockets?listen -log -crossplay

arkmanagerを利用している場合

/etc/arkmanager/instances/main.cfg を編集します(メインで利用しているinstanceを選んでください。ここでは例としてmain.cfgです)

「arkflag_crossplay=""」を追加してください

# config environment
arkserverroot="/home/steam/ARK"                                     # path of your ARK server files (default ~/ARK)
# ARK server options - use ark_<optionname>=<value>
# comment out these values if you want to define them
# inside your GameUserSettings.ini file
serverMap="TheIsland"                                               # server map (default TheIsland)
#serverMapModId="469987622"                                         # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
#ark_TotalConversionMod="496735411"                                 # Uncomment this to specify a total-conversion mod
ark_RCONEnabled="True"                                              # Enable RCON Protocol
ark_RCONPort="32330"                                                # RCON Port
ark_SessionName="ARK Server Tools"                                  # if your session name needs special characters please use the .ini instead
ark_Port="7778"                                                     # ARK server port (default 7778)
ark_QueryPort="27015"                                               # ARK query port (default 27015)
ark_ServerPassword=""                                               # ARK server password, empty: no password required to login
ark_ServerAdminPassword="keyboardcat"                               # ARK server admin password, KEEP IT SAFE!
ark_MaxPlayers="70"
#ark_GameModIds="487516323,487516324,487516325"                     # Uncomment to specify additional mods by Mod Id separated by commas
#ark_AltSaveDirectoryName="SotF"                                    # Uncomment to specify a different save directory name
# ARK server flags - use arkflag_<optionname>=true
#arkflag_OnlyAdminRejoinAsSpectator=true                            # Uncomment to only allow admins to rejoin as spectator
#arkflag_DisableDeathSpectator=true                                 # Uncomment to disable players from becoming spectators when they die
# ARK server options - i.e. for -optname=val, use arkopt_optname=val
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
#arkPreStart="/etc/arkmanager/instances/instance.start"              # Set this to override the start script; defaults to config file name with .cfg replaced by .start
arkflag_crossplay=""

アップデート後のタイムアウトについての考察

巷ではアップデート後にタイムアウトが出ているという情報があったが、これはrawソケットの常時有効化に伴うものではないかと考えられる。

rawソケットを使わなければ7777と21015を開けておけばよかったが、更新によって、7777,7778,21015が必要となったのではないだろうか?