ARK: Survival Ascended(ASA)のサーバーアプリはWindows専用で、Linux版が存在しません。それでも、Proton入りのDockerイメージを使えばLinuxのOSで専用サーバーを動かせます。当サイトの運営者も、この方法でメモリ16GBのVPSにASAサーバーを構築し、実際に稼働させています。
この記事では、ASAのサーバー事情が特殊な理由から、必要スペックと構築手順までを解説します。 VPSの初期設定とDockerの導入がまだの場合は、Linux OS(Ubuntu)の初期設定とDocker Engineの導入手順を先に済ませてください。
ASAのサーバー構築が特殊な理由
2023年8月15日、Studio WildcardはASAのゲームサーバーにNitradoの技術を独占的に使用すると発表しました。
この発表には利用者からの強い反発があり、署名活動などを経て制限は緩和されました。現在は、個人がプライベートな専用サーバーを自分で立てることは可能です。一方で、商用のサーバーホスティングはNitradoに限定されています。
さらに、ASAのサーバーアプリにはLinux版がありません。安価なLinux VPSをそのまま使えないことが、自前で立てるときの大きなハードルになっています。
なお、旧作のARK: Survival Evolved(ASE)にはLinux版サーバーがあり、VPSでそのまま動かせます。 費用を抑えたい場合はASEで立てる選択肢もあります。
Linux OSで動かす仕組み
ProtonはWindows向けのゲームをLinux上で動かすために開発されたオープンソースです。これをコンテナに組み込んだのが、コミュニティ製のイメージmschnitzer/ark-survival-ascended-linux-container-imageです。
このイメージの特徴は次のとおりです。
- GloriousEggroll版のProtonでASAのWindowsバイナリを実行する
- steamcmdを同梱し、初回起動時にサーバーファイルを自動でダウンロードする
- docker-composeのサンプルが用意されており、複数サーバーの運用にも対応する
運営者はこのイメージをREADMEの手順どおりに構築し、メモリ16GBのVPSで稼働させています。
必要スペックの目安
いちばんの制約はメモリです。目安としては最低でも16GB以上のインスタンスを選択する必要があります。 また、メモリを使い切ると強制終了するため、保険としてswapの設定も済ませておくと安心です。
16GB級になると、プランごとのメモリ単価の差がそのまま月額に効いてきます。メモリ単価が低く、全プランNVMe SSDのシンVPS
は候補のひとつです。
構築手順
mschnitzer/ark-survival-ascended-linux-container-imageのREADMEの手順に沿って進めます。VPSの初期設定はゲーム用VPSの初期設定を参照してください。
Docker Engineを導入する
公式のaptリポジトリから導入します。手順はUbuntuにDocker Engineを導入する手順にまとめています。
composeファイルを取得して起動する
リポジトリ公式のdocker-compose.ymlをそのまま使います(READMEが案内している取得方法)。ディレクトリ名はasa-serverにしてください(後述の設定ファイルパスに含まれるボリューム名の接頭辞が、このディレクトリ名から決まります)。
mkdir -p ~/asa-server && cd ~/asa-server
wget https://raw.githubusercontent.com/mschnitzer/ark-survival-ascended-linux-container-image/main/docker-compose.yml
sudo docker compose up -d
sudo docker logs -f asa-server-1初回はSteam・Proton・サーバー本体(約11GB)の自動ダウンロードが走るため、時間がかかります。ログにStarting the ARK: Survival Ascended dedicated serverが出れば起動処理は完了です。そこから2〜5分ほどでサーバーブラウザから見つけられる状態になります。ログ表示はCtrl+Cで抜けられます。
サーバーの起動パラメータは、composeファイルのASA_START_PARAMSで変更できます。マップTheIsland_WP・Port=7777・-WinLiveMaxPlayers=50などが並んでいます。必要に応じて遊ぶマップなどの指定を変更してください。(Ragnarok_WPなど)
設定ファイルを編集する
設定はボリューム内のGameUserSettings.iniとGame.iniを直接編集します。
sudo vim /var/lib/docker/volumes/asa-server_server-files-1/_data/ShooterGame/Saved/Config/WindowsServer/GameUserSettings.iniパス中のasa-server_の部分は、composeを置いたディレクトリ名から決まります。編集後はsudo docker restart asa-server-1で反映します。
倍率などの具体的な値はASAサーバーの設定例で、実際に運用している設定ファイルの全文を公開しています。
ポート開放
使用ポートはUDP 7777(ゲーム)とTCP 27020(RCON)です。ufwではゲームポートのみ開放し、RCONは外部公開しない運用が安全側です(RCONコマンドは後述のとおりコンテナ内から実行できるため、外部開放は不要です)。
sudo ufw allow 7777/udpVPS側のパケットフィルターがある場合はそちらでも許可します。
運用のポイント
同READMEには、立てた後の運用に役立つ仕組みも記載されています。
- RCONコマンドは
docker exec -t asa-server-1 asa-ctrl rcon --exec '<コマンド>'の形で実行できる - RCONの利用には、GameUserSettings.iniのRCONEnabled・ServerAdminPassword・RCONPortの設定が前提となる
- アップデートは
sudo docker restart asa-server-1で自動ダウンロード・適用される - crontabとRCONを組み合わせて定期再起動を実装できる。予告メッセージの出し方は定期再起動と告知にまとめている
- MODを入れる場合はCurseForgeのプロジェクトIDを指定する。手順はMOD導入の記事を参照
よくある質問
ASAにLinux版のサーバーはありますか
ありません。ProtonでWindows版のサーバーアプリを動かすのが現実的な方法です。
メモリはどれくらい必要ですか
イメージのREADMEでは、1インスタンスあたり約13GBとされています。当サイトの検証では、プレイヤーがいない起動直後に約10.0GBを計測しました。参加者が増えるほど消費も伸びます。最低でも16GB以上のプラン、プレイヤーの人数に応じて24GB、32GBのプランを検討してください。
自前でサーバーを立てても規約的に問題ありませんか
個人のプライベートな専用サーバーは可能とされています。サーバの運用費以上の料金を参加者から徴収するような商用のサーバーホスティングはNitrado限定とされています。
まとめ
- ASAのサーバーアプリはWindows専用で、Linux版は存在しない
- 個人のプライベートサーバーは構築可能。商用ホスティングはNitrado限定
- 構築はREADME公式のcomposeを取得して
up -dするだけ - ポートはUDP 7777のみ開放し、RCON(TCP 27020)は外部公開しない
- メモリは16GB以上のプランが推奨
- 構築と運用の最新情報はイメージのREADMEを参照する
まずはメモリ16GB以上のLinux VPSを用意し、リポジトリのREADMEを読みながら構築を始めてください。
複数インスタンスやバックアップまで管理ツールに任せたい場合は、POK-managerでの構築という別の方式もあります。