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/udp

VPS側のパケットフィルターがある場合はそちらでも許可します。

運用のポイント

同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での構築という別の方式もあります。

参考リンク