ARK: Survival Evolved linux サーバーの立て方
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が必要となったのではないだろうか?
ディスカッション
コメント一覧
こちらの記事を参考にしてサーバーを立ててみたのですが、Epic Games版のARKからサーバーに接続できません。
どうしたらいいのでしょうか?
Steamとエピックのクロスプレイサーバー設定は多分ちゃんとできています。
使用環境
OS:Ubuntu 18.04.5LTS
CPU:6コア
メモリ8GB
SSD:160GB
ターミナルに「ps ax | grep Shoot」と入力してください。
そうすると起動時の引数が確認できます。
正しく設定できていれば、以下のようにクロスプレイの引数が付いた結果が得られるかと思います。
「24005 ? Rl 0:06 /home/steam/ARK/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?RCONEnabled=True ・・・略・・・ ?listen -crossplay」
あとは、ルーター側のポート開放はできていますか?
返事ありがとうございます!
実は、コメントした後にダメ元でポート番号を指定してサーバーに参加したら行けました。
大変お騒がせいたしまして申し訳ございません。
プレイができたようで安心しました。
ゲームをお楽しみください。