目次
こんにちは、風船(@fusen_niconico)です。
ARKっていう今いろんな配信者がやっている歴史の長いサバイバルゲームみたいなのがあるんですが、これをフレンド内でやるサーバーをDockerで立てました。
簡単にいくかなと思ったら、MODを入れたりとかサーバーの設定をいじったりとかしたら結構苦戦したので、備忘録的な感じで残しておこうと思います。
これからDockerで立てるという方のお役に立てれば幸いです。
ってかDockerハマりすぎですね。
1 使ったスペック
今回サーバー構築に使ったのはメインで使ってるNAS「DS1621+」です。
スペックは以下の通り
CPU | Ryzen Embedded V1500B(4コア8スレッド) |
メモリ | 16GB |
HDD | SHR(6本)+SSDキャッシュ |
回線 | 1Gbps(ベストエフォート)PPPoE |
極々普通のNASです。正直GPUも積んでいないので、これで動くか不安でしかありませんでしたが、プレーヤー曰く快適に動いてるみたいです。
2 Dockerイメージを拾ってくる
今回はいくつものサイトで紹介されていて、古くから存在している次のDockerイメージを使いました。
https://hub.docker.com/r/turzam/ark/
ちなみにイメージ内のデータがいろいろ古すぎて一筋縄ではいきませんでした。
他にもARKサーバーのイメージはあるみたいですが、使用者が多いイメージのほうが情報も出てくるので、今回はこれでいきます。
3 以下の環境変数をいじってサーバーを立ち上げる
Dockerコンテナの環境変数で、以下の内容はいじっておいた方が良さそうです。
SESSIONNAME | 表示したいサーバー名、サーバー検索などでこの名前が出る |
SERVERMAP | サーバーで使いたいマップ |
SERVERPASSWORD | サーバーに接続する際に必要になるパスワード |
ADMINPASSWORD | ゲーム内で管理者コマンドを使う時に必要なパスワード |
NBPLAYERS | サーバーに同時接続可能な人数 |
SERVERPORT | サーバー接続のポート(デフォルト:27015) |
STEAMPORT | Steamから疎通するためのポート(デフォルト:7778) |
今回使用するDockerイメージは、以下のマウントパスにサーバーのデータを保存するので、そこをマウントパスにして、ホスト側のパスを指定します。
ホスト側パス | マウントパス |
(好きなホスト側のディレクトリ) | /ark |
4 コンテナを立ち上げてサーバーの準備を整える
コンテナを立ち上げて、簡単にMODなどを入れて遊べるかと思ったらそんなことはありませんでした。
これから遭遇した問題や不具合を列挙しつつ、解決方法なども書いておきます。
mod 111111111をダウンロードしようとして失敗する
Downloading mod 111111111 ... -/|\-/|\-/| Mod 111111111 was not successfully downloaded
これはDockerイメージに内蔵されているarkmanagerのバグみたいです。
後ほどarkmanagerをアップデートするので、それで直りますので無視して大丈夫です。
MODがダウンロードできない
d xxxxxxxxx is requested but not installed. Run 'arkmanager installmod xxxxxxxxx' to install this mod.
こちらもarkmanagerのバージョンが古いためのようです。
以下のIssueページに記載されている方法を参考にアップデートする事でダウンロードできるようになりました。
Mods do not install with current version of arkamanger #28
Mods do not install with current version of arkamanger #28
arkmanagerを手動で最新版にアップデートするには、Dockerインスタンス内で次のコマンドを実行します:
Dockerイメージ内のbashに接続docker exec -it ark /bin/bash
既にインストール済みのarkmanagerのディレクトリに移動cd /home/steam/ark-server-tools
gitから最新版のarkmanagerをダウンロード(2022/12/09時点で最新のバージョンに以下のコードを置き換え済み)git fetch --all
git checkout v1.6.62
arkmanagerをインストールcd /home/steam/ark-server-tools/tools
./install.sh steam
Dockerイメージのbashから抜けるexit
これで、最新バージョンがダウンロード・インストールできます。
MODをインストール:docker exec ark arkmanager update --update-mods
MODを一括ダウンロードしたい
MODを一括ダウンロードする場合は、ボリュームのマウントパスのルートディレクトリにあるarkmanager.cfg
内の以下の箇所のコメントアウトを解除し、そこにMODのIDを記載することで、起動時に自動で全部ダウンロードしてくれるようになります。
#ark_GameModIds="xxxxxxxxx,xxxxxxxxx"
5 Game.iniとGameUserSettings.iniの場所が分からない
ゲームレベルをいじったり、有効にするMODを記載するファイルの場所が分かりませんでした。
以下の場所でした。
/server/ShooterGame/Saved/Config/LinuxServer
ここにあるファイルを上書きしてサーバーを再起動したら反映されました。
6 サーバーに接続すると何度か接続がタイムアウトする
MODを複数個有効にしていると、そのMODのダウンロードに時間がかかり、接続がタイムアウトしてしまう現象に遭遇しました。
何度か接続をし直すことで、MODのダウンロードが全て完了しキャラクターの作成画面に遷移したので、接続をし直せば問題なさそうですが、うちのサーバーでは/server/ShooterGame/Config/DefaultEngine.ini
の以下のタイムアウトまでの秒数を増やすことで暫定対処しました。
項目名 | 秒数 |
P2PConnectionTimeout | 300→3000 |
InitialConnectTimeout | 300.0→3000.0 |
ConnectionTimeout | 300.0→3000.0 |
7 よいArkライフを
こういう重ためゲームの専用サーバーってCPUとGPUがかなり強くないとダメなのかなと思いましたが、CPUは若干弱め、GPUなしのうちのNASでも余裕で動いています。
今回の備忘録が役に立ち、自分たちだけのルールやゲームレベルを設定して、良いArkライフを送れることを祈っています!