サーバー

Last-modified: 2023-10-31 (火) 17:12:30

ハードウェア

前提として64bitのWindows, Linux, macOSなどのOSでないと実行できません。
また、一つのサーバーとして書かれていることを考慮してください。
はじめにCPUの要件は厳密ではありませんが、最低2コアであり、推奨は4コア。4コア以上は反映されないので、シングルスレッド性能が重要です。
プレイヤーの数が1人増えることによって平均50~160MBほど使用されるメモリは増えたり、プレイヤーの進行状況やサーバーの設定、MODにはたまた生物のリスポーンによって増加していき一概に言えないが、サーバーを起動するには少なくとも6GBのRAMが必要です。
各サーバーのインストールには約20GBのストレージが必要で、プレイヤーの進行状況、ログ、アップデートのダウンロードとインストール、最終的にはMOD(Steamプレイヤーのみ)を保存するために追加のストレージが必要です。

ネットワーク

大人数で遊ぶ場合、100Mb以上を強く推奨します。特にVPSの場合、各プレイヤーは最大60KiB/sの帯域幅を必要とし、アップロードダウンロードで共有されます。
ネットワーク設定(オペレーティングシステムのファイアウォールおよびルーターのポート転送)がこれらのポートへの着信接続を許可し、専用サーバーを実行するホストにそれらを誘導することを確認してください。

ポート使用用途
UDP 7777ゲームクライアントポート
UDP 7778Raw Socket(常にクライアントポート+1)
UDP 27015サーバーブラウザに使われます
TCP 27020RCON用ポート(任意)

UPnPやその他の自動ポート転送プロトコルをサポートしていないため、手動でのポート転送が必要になる場合があります。
同じホスト上の複数の専用サーバーがサポートされています。一般的な設定は、ポートの割り当てと転送を段階的に行います。

サーバーインスタンスゲームポート(UDP)ピアポート(UDP)クエリポート (UDP)RCON ポート (TCP)
サーバーインスタンス1777777782701527020
サーバーインスタンス2777977802701627021
サーバ・インスタンス 3778177822701727022
サーバーインスタンス 4
(全く異なるポート)
9999100003701532330

:まったく異なるポートもサポートされていますが、唯一の制限として、Steam サーバーブラウザは、27020 を超える場合、クエリポートも提供しないとゲームサーバーを見つけることができません。
:Peer ポートは Steam P2P プロトコルでゲーム内ブラウザの広告に使用されます(Epic は代わりに TLSv1.2 で 80 と 443 の標準ポートを使用します)。過去(パッチ 213.0 と 311.78 の間)には UDP ソケットの直接接続に使用されていたため(現在は無効)、生の UDP ポートと誤って呼ばれることがあります。

OS

  • Windows
    このサーバーには、Microsoft Visual C++ 2013 Redistributable X64バージョンとDirectX End-User Runtimesの最終リビジョン(2010年6月)がインストールされている必要があります。ゲームのようにShooterGameServerは、Windows 7以降のWindowsオペレーティングシステムをサポートしていますが、それは非常にMicrosoftとSteamの両方でサポートされているオペレーティングシステムを使用することをお勧めします。これは、Windows 10バージョン22H2以降またはWindows Server 2016以降に変換されます。Windows Serverでは、EPIC/EGSゲームクライアントとのクロスプレイをサポートするための追加設定が必要です(下記をお読みください)。
    • Windows Server エディションと Epic プレーヤーとのクロスプレイ
      コンシューマーエディション(例:Windows 10)とは異なり、Windows Serverエディションにはいくつかの証明書がプリインストールされていないため、ShooterGameServerが正常に動作せず、Epicユーザーのゲームサーバーリストに表示されません。不足している証明書は、https://dev.epicgames.com/(または直接http://crt.r2m02.amazontrust.com/r2m02.cer)から入手できます。これらの証明書は、"Current User "と "Local Machine "の両方に、"Place all certificates in the following store "と "Trusted Root Certification Authorities "の両方に、2回インストールする必要があります。最後に、システムの再起動が必要です。これにより、Windows Serverでホストされている場合、EPICプレーヤー用に正しくセットアップされたサーバーが動作するようになります。
  • Linux
    c64ビットLinuxサーバーでは、steamcmdをインストール/実行するために32ビットバイナリが必要です。
    sudo apt-get install lib32gcc1
    ゲームサーバーには glibc 2.14 以上が必要です。Ubuntu 14.04 (およびそれ以降) と Debian 8 (Jessie) は自動的にこの要件を満たしますが、Debian 7 (Wheezy) などの古いバージョンではこの要件を満たしません。必要なバージョンのglibcをDebian 7 (Wheezy)ホストにインストールするには:
    1.以下の行に追加。 /etc/apt/sources.list:
    # Experimental/unstable (sid) repositories
    deb http://ftp.debian.org/debian experimental main
    deb http://ftp.debian.org/debian sid main
    2.ホストの利用可能パッケージリストを更新し、更新された glibc ライブラリパッケージをインストールするには、sudo または root シェルで以下のコマンドを実行します:
    apt-get update
    apt-get -t experimental install libc6-dev
    : この手順では、ホストを Debian Unstable (sid) にアップグレードしません。
    glibc 2.14 以降を含まない他の古いディストリビューションについては、そのディストリビューションのドキュメントやサポートフォーラムを参照してください。
  • ファイルを開く上限
    : systemd を使って専用サーバーを起動する場合、このセクションは適用されません (#自動起動 で説明します)。
    ホストのオープンファイルの上限がゲームサーバーをサポートするのに十分高いことを確認する:
    以下の行を追加。 /etc/sysctl.conf:
    fs.file-max=100000
    その後、sudoまたはrootシェルで次のコマンドを実行し、変更を適用します:
    $ sysctl -p /etc/sysctl.conf
    以下の行に追加。 /etc/security/limits.conf:
    *               soft    nofile          1000000
    *               hard    nofile          1000000
    以下の行に追加。 etc/pam.d/common-session:
    session required pam_limits.so
    警告:これらの変更を行わないと、ゲームサーバーが正常に起動しない場合があります。サーバーが起動しているように見えるが、少なくとも5.5GBのRAMを使用せずに大量のCPU時間を使用している場合は、必要なすべてのファイルを開くことができないため、上記の変更を適用する必要があります。
    Tunedは、システムコンポーネントの使用状況を監視し、システム設定を動的に調整するデーモンで、現在はRHEL7、CentOS7.x、Fedoraのみに搭載されています。
    :tunedを「throughput-performance 」に設定する必要がある。そうしないと、/etc/security/limits.confの変更はすべて無視されます。
  • SteamCMD
    専用サーバーは Linux と Windows の両プラットフォームで利用できます。どちらのプラットフォームでも、サーバーファイルのダウンロードには SteamCMD を使用します。インストールと使い方の詳細については、SteamCMD のページを参照してください。
    force_install_dir <path>
    SteamCMD コマンドでデフォルトのインストール場所を変更できることを覚えておいてください。

サーバーのインストール

1.ホストシステムにSteamCMDをインストールします。
2.少なくとも 25GB のディスク空き容量があるボリュームに、サーバーファイルを保存するフォルダを作成します。サーバーファイルが消費する容量は 18GB 以下ですが、セーブや将来のコンテンツ更新のために追加のドライブ容量が必要になることを考慮して計画するのが賢明です。
3.ホスト上で SteamCMD を起動し、サーバーファイルをダウンロードします。注: < > を削除し、二重引用符で囲まれたインストールパスに置き換えてください(例:Windows では force_install_dir "C:\Ark Server")。Survival Evolvedの場合はアプリID 376030を、Survival of The Fittestの場合はアプリID 445400を使用してください。

Steam> force_install_dir <install_dir>
Steam> login anonymous
Steam> app_update 376030 validate
Steam> exit

または、コマンドラインから実行する:
steamcmd +force_install_dir <install_dir> +login anonymous +app_update 376030 +quit

install_dir>をステップ2で作成したフォルダのフルパスに置き換えてください。Linuxの場合、これは/home/steam/servers/arkのようなパスになります。Windowsの場合、これはC: \arkserverのようなパスになります。

4.希望するオプションと設定でサーバーを起動するスクリプトを作成します。簡単のために、サーバーファイルをダウンロードしたフォルダと同じフォルダに配置します。Windowsの場合、これはバッチファイルであり、Linuxの場合、これはシェルスクリプトです。以下に例を示す。どちらのプラットフォームでも、サーバー・オプションは同じ基本構文で指定します。より深い理解とサーバー設定についてのガイドは、サーバー設定ページをご覧ください。

  • Windows では、start_server.bat という名前のテキストファイルを作成し、以下の所におきます。YOUR_ARK_SERVER_FOLDER/ShooterGame/Binaries/Win64/ ('<' '>' 記号は削除してください)。
    ShooterGameServer.exe TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password>?Port=<port>?QueryPort=<query_port>?MaxPlayers=<max_players>
  • Linuxでは、server_start.shという名前のテキストファイルを作成し、YOUR_ARK_SERVER_FOLDER/ShooterGame/Binaries/Linux/に置きます('<' '>'記号を削除してください)。
    #! /bin/bash
    ./ShooterGameServer TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password>Port=<port>?QueryPort=<query_port>?MaxPlayers=<max_players>
    スクリプトを作成したら、実行可能にする:
    $ chmod +x server_start.sh

WindowsやLinux以外では、<server_name>をサーバー名に、<join_password>をプレイヤーがサーバーに参加するためのパスワードに、<admin_password>をサーバーの管理者になるためのパスワードに置き換えてください。プレーヤーの参加パスワードが必要ない場合は、リストからこのオプションをすべて削除してください(?ServerPassword=パラメータ自体も含めて)。<max_players>でプレーヤーのスロット数を設定します。ゲームポート(<port>)とクエリポート(<query_port>)を指定します。これらはポートフォワードされる必要があります。

5.最後に、サーバーを起動するために、前のステップで作成したスクリプトを実行します。

ポート転送とファイアウォール

ArkサーバーをサーバーリストとSteamリストに表示させるには、次の手順を実行します。

Windows(ファイアウォールと許可ルール)

1.Windowsの[スタート]メニューをクリックし、"wf.msc"(引用符なし)を検索します。右クリックして[管理者として実行]を選択します。
2.左側のペインで[インバウンドルール]をクリックし、右側のペインで[新しいルール...]をクリックします。
3.[新規インバウンドルールのウィザード]が開いたら、[ポート]を選択して[次へ]をクリックします。
4.ウィザードでプロトコルを選択し、ポートを指定します。[UDP]と[特定のローカルポート]を選択します。クエリポートとピアポートの間隔、およびSteamクエリポートを一覧表示して、[次へ]をクリックして続行します。
例:
デフォルト(1つのサーバーのみ)の設定の場合、7777-7778、27015を一覧表示します。
上記のように複数のインスタンスを設定する場合は、7777-7782、9999-10000、27015-27019、37015を一覧表示します。
5.[接続を許可する]を選択してウィザードを続行します。
6.最後に、名前(必須)と説明(オプション)を入力します。ルール名にプロトコル(UDPまたはTCP)を追加することをお勧めします。
7.RCONも使用している場合は、上記の手順を繰り返しますが、プロトコルとして[TCP]を選択し、選択したRCONポート(複数可)を選択します。
例:
デフォルト(1つのサーバーのみ)の設定の場合、27020を一覧表示します。
上記のように複数のインスタンスを設定する場合は、27020-27022、32330を一覧表示します。
8.完了したら、[インバウンドルール]セクションにUDPポートのルールがあり、必要に応じてTCPのルールがあるはずです。
9.必要に応じて、これらのルールを変更して、セットアップに必要なポートを追加または削除できます。
注:デフォルトのWindows設定では、[アウトバウンドルール]セクションにアウトバウンドルールを作成する必要はありません。

Linux

ほとんどのLinuxディストリビューションでは、ファイアウォールが有効になっている場合、iptablesベースになります。ほとんどの最新のディストリビューションでは、iptablesコマンドの代わりに別のインターフェースを使用します。
ファイアウォールのすべての変更は、rootまたはsudo権限で実行する必要があります。これらは、UDP用にポート7777、7778、27015、オプションでTCP用にポート27020を開きます。必要なポートのリストは、「for port in...」行を編集することで調整することができます。
UFW
このスクリプトは、再起動後もポートが開いたままになるようにポートを開きます。UFWはUbuntuのファイアウォールです。

#!/bin/sh
if [[ $EUID -ne 0 ]]; then
   echo "This must be run as root"
   exit 1
fi
for port in 7777 7778 27015; do
   ufw allow $port/udp
done
#Uncomment the next if you want to open the default rcon port
#ufw allow 27020/tcp

UFW

このスクリプトは、再起動後も持続する方法でポートを開く。UFWはUbuntuのファイアウォールです。

#!/bin/sh
if [[ $EUID -ne 0 ]]; then
    echo "This must be run as root"
    exit 1
fi
for port in 7777 7778 27015; do
    ufw allow $port/udp
done
#Uncomment the next if you want to open the default rcon port
#ufw allow 27020/tcp

FirewallD

このスクリプトは、再起動後も保持される方法でポートを開きます。 FirewallD は、RHEL7、CentOS7.x、および Fedora 上のファイアウォールです。

#!/bin/sh
if [[ $EUID -ne 0 ]]; then
    echo "This must be run as root"
    exit 1
fi
for port in 7777 7778 27015; do
    firewall-cmd --permanent --add-port $port/udp
done
#Uncomment the next if you want to open the default rcon port
#firewall-cmd --permanent --add-port 27020/tcp
firewall-cmd --reload

起動オプションに関して

map_name下記一覧を参照
server_nameサーバー名
join_passwordサーバーパスワード
admin_password管理者パスワード

IPテーブル

これはあくまでも一時的な解決策であり、他のスクリプトのどちらもシステムに当てはまらない場合にのみ使用することに留意してください。リブートを安全にするには、お使いのディストリビューションのドキュメント、既存の設定ファイルにファイアウォールポートを追加する方法、またはブートプロセスにスクリプトを追加する方法を参照してください。

#!/bin/sh
if [[ $EUID -ne 0 ]]; then
    echo "This must be run as root"
    exit 1
fi
for port in 7777 7778 27015; do
  iptables -t filter -I INPUT -p udp --dport $port -j ACCEPT
done
#Uncomment the next if you want to open the default rcon port
#iptables -t filter -I INPUT -p tcp --dport 27020 -j ACCEPT

ルーターのポート転送

サーバーの設定と同じポートをルーターでも転送する必要がある。ポートフォワーディングのチュートリアルがあるウェブサイトはたくさんある。portforward.comでは、ほとんどのルーターのチュートリアルを提供しています。仮想プライベートサーバーについては、ホストのナレッジベースやサポートサイトを参照してください。
サーバーをリストに表示するには、UDPとTCPのローカルポートの両方を転送する必要があります。ポートが開いていることを確認するには、portforward.comのツールを使用します。ポートが開いていることを確認するには、先ほど作成したstart_server.batファイルに転送したポートを入力します。

ShooterGameServer.exe TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password>?Port=7777?QueryPort=27015?MaxPlayers=<max_players>

リストで自分のサーバーを見つける

Arkの非公式リストやSteamのサーバリストからあなたのサーバにアクセスすることができます。Arkのリストであなたの名前を検索するか、SteamのサーバーリストであなたのIPアドレスを検索してください(Steam Queryポートが27019以上の場合、これも指定する必要があります)。Steamプレイヤーの場合、IP:PORTを持つサーバーをSteamのお気に入りに追加するのがベストです。

自動スタートアップ

Windows(スケジュールタスク経由)

スケジュールタスクを設定することで、システム起動時に自動的にバッチファイルを実行し、専用サーバーを起動することができます。
「タスクスケジューラ」を開きます。
基本タスクを作成
「基本タスクの作成ウィザード」が表示されますので、任意の名前を付けます。
トリガーを「コンピュータの起動時」に設定します。
アクションを「プログラムの起動」に設定する。
起動したいプログラム/スクリプト(サーバーを起動する.BATバッチファイル)を参照します。
バッチファイルの動作によっては、「Start in (optional)」パスを設定して、バッチファイルの作業ディレクトリを正しくする必要があります。バッチファイルが単に "start ShooterGame ... "コマンドを含んでいる場合、スケジュールタスクの "Start in (optional) "パスをバッチファイルを含むディレクトリに設定する必要があります。
スケジュールタスクを作成する前に、作成後に "open properties window "にチェックを入れる。
一般タブのセキュリティオプションフレームで、必要に応じて "ユーザーがログオンしているかどうかにかかわらず実行する "を選択する。

Linux(systemd経由)

注意:systemdはUbuntu 14.04では利用できません。
スクリプトを使って手動で専用サーバーを起動する代わりに、systemdが動作しているホストではシステム起動時に自動的に専用サーバーを起動するように設定することができます。この方法でサーバーを管理する場合、GameUserSettings.iniを使用して設定を指定することを強く推奨します。詳しくは Admin Game Commands を参照してください。
1.etc/systemd/system/ark-dedicated.serviceというファイルを以下の内容で作成する:

[Unit]
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
ExecStartPre=/home/steam/steamcmd +login anonymous +force_install_dir /home/steam/servers/ark +app_update 376030 +quit
ExecStart=/home/steam/servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?SessionName=<session_name>
WorkingDirectory=/home/steam/servers/ark/ShooterGame/Binaries/Linux
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam
[Install]
WantedBy=multi-user.target

ExecStart行は、サービスを開始するために実行するコマンドを指定します。これは、上記のスタートアップの例(#サーバーのインストール)と同じ構文で、引数もすべて同じですが、ここでは、ホスト上のARK専用サーバーの場所を反映するように調整することが重要です。上記のように、サーバーの実行ファイルへのフルパスを使用します。

SESSION_NAME>は、サーバーの希望するセッション名に置き換えてください。

最後に、ホストのユーザーとグループの設定を調整します。ark-dedicated.service にこれら 2 つのオプションがない場合、専用サーバーはルートユーザーとして実行されます。これは安全ではありません。専用サーバーに脆弱性があると、攻撃者がホスト上でリモートスーパーユーザーアクセスを得る可能性があるからです。

専用サーバーは、この目的のみに使用される非特権アカウントで実行することを推奨します。上記の例では、ユーザーアカウント "steam "を使用しています。これは "steam "グループのメンバーであり、一般的にアカウントと一緒に作成されます。

WorkingDirectoryオプションは、いくつかの問題を解決するために必要です。(例えば、WorkingDirectoryが設定されていないと、MODのダウンロードに失敗します(-automanagedmodsと併用する場合))
2.systemdをインストールする:

apt-get install systemd systemd-sysv

インストール後、systemd を初期化するために再起動する必要があります。

sudo または root シェルで以下のコマンドを実行して、ホストの起動時に新しいサービスが自動的に開始するように有効にします:

# systemctl enable ark-dedicated

このコマンドを実行すると、ホストの起動時に専用サーバーが自動的に起動します。コマンドはすぐにサーバーを起動しないので、有効化した後に専用サーバーを起動するには、次のコマンドを実行します:

# systemctl start ark-dedicated

これらの手順を踏むと、サーバーが起動し、起動時とシャットダウン時にホストによって自動的に管理されるようになります。

セットアップ後の管理

サーバーは次のコマンドで停止できる:

# systemctl stop ark-dedicated

を実行することで、現在のステータスを見ることができる:

# systemctl status ark-dedicated

注意:ark-dedicated.service ファイルを更新する必要がある場合(専用サーバーの起動オプショ ンの変更やパスの調整)、以下のコマンドを実行して変更が適用されることを確認します:

コンソールコマンド

ゲーム実行中は、[~](チルダ)または[TAB]キーでコマンドコンソールにアクセスできます(ゲームのバージョン、デフォルト設定、キーボードレイアウトによって異なります)。コンソールで管理者コマンドを有効にするには、次のように入力します:

enablecheats <admin_password>

admin_password> はサーバーの管理者パスワードに置き換えてください。

利用可能なコマンドの一覧は管理者用ゲームコマンドを参照してください。

ゲーム内でコンソールを開けない場合は、ゲームを終了し、ゲームのDefaultInput.iniファイル(Steamライブラリのsteamappsappscommon\ARK ShooterGame\Configというフォルダにあります)をテキストエディタで開き、(ファイルの一番下にある)以下の行を探します:

;+ConsoleKeys=Tab
セミコロン(;)を削除し、次の行に変更する:

  1. ConsoleKeys=Tab
    ファイルを保存し、ゲームを起動します。コンソールにアクセスできるはずです。

サーバーデータのバックアップ

サーバーデータのバックアップを作成するには、ShooterGame/Savedというフォルダ(およびその内容)を任意のバックアップ場所にコピーするだけです[2]。このフォルダには、すべての種族、プレイヤー、ワールドのデータ、およびサーバーの設定ファイル、ログ、最終的にはクラスタデータが含まれています。サーバーを新しいリリースにアップデートする前に、バックアップを実行することをお勧めします。

トラブルシューティング

サーバーの再起動時にキャラクターやワールドのデータが失われる
サーバーを再起動してもキャラクターやワールドのデータが保持されない場合、サーバーがインストールされているフォルダに完全にアクセスできない可能性があります。

サーバーの初回起動時には、ShooterGame/Savedというフォルダが作成され、様々な設定ファイルやセーブファイルが保存されているはずです。サーバーが少なくとも1回は実行されているにもかかわらず、このフォルダが作成されていない場合は、そこに新しいフォルダやファイルを作成できていない可能性があります。サーバーがインストールされているフォルダが、実際にサーバーを実行するユーザーアカウントによって読み取りと書き込みが可能であることを確認します。(Windowsサーバーの場合は、ユーザーアカウント制御の状態を確認してください。)

サーバー・ソフトウェアは、デフォルトで15分ごとにワールド・データを自動的に保存するように設定されています。最初の15分が経過する前にサーバーがクラッシュした場合、データは保存されません。

LinuxサーバーのCPU使用率が高く、メモリ使用率が低い(1GB以下)
これは、ホストのオープンファイル制限が不十分なため、サーバーが必要なすべてのファイルを開くことができない場合に発生する可能性があります。上記のLinuxセクションを参照して、ホストのオープンファイル制限を増やす手順に従ってください。

# systemctl daemon-reload

各マップのmapと最低使用メモリ

マップ名map_name最低使用メモリ
アイランドTheIsland4~5GB
センターTheCenter3~4GB
スコーチドアースScorchedEarth_P3~4GB
ラグナロクRagnarok3~4GB
アベレーションAberration_P3~4GB
エクスティンクションExtinction3~4GB
バルゲロValguero_P3~4GB
ジェネシス Part1Genesis5~6GB
クリスタルアイルズCrystalIsles6~7GB
ジェネシス Part2Gen210~13GB
ロストアイランドLostIsland6~8GB
フィヨルドFjordur4~5GB

コメント

  • ARKのダウンロードコマンド(force_install_dir)の箇所が記載されていませんでしたので、修正させて頂きました。 -- 2020-04-05 (日) 23:11:33
  • RedHat / CentOS上のパッケージ更新がされていないのか、2020/3月現在、yum でSteamCMDのinstallが出来ない状態になっています。 -- 2020-04-05 (日) 23:23:52
  • Redhat系において、yumコマンドがdnfに置き換えられているとのことでしたので、加筆修正させていただきました -- 2020-04-06 (月) 05:00:15
  • Windowsでお世話になったページ置いときます。『Windows Steam ark』とかでも普通に最上段に出てくる気がしますが...https://steamcommunity.com/sharedfiles/filedetails/?id=455688593 -- 2021-01-12 (火) 21:32:37
  • これってepic版を購入した人はできなくないですか? -- 2022-01-29 (土) 19:30:32
    • エピックはこっち→ARK Server Manager -- 2022-01-29 (土) 21:13:49
    • steamCMDはanonymous loginできるからsteamアカウントがなくても設定が間違ってなければ可能 -- 2022-01-30 (日) 12:56:22
      • サーバーの起動オプションに「-crossplay」を追加すればepicやPC Game PASS版ともクロスプレイ可能 -- 2023-04-25 (火) 12:15:07
  • m1 macでもサーバーを立てることはできますか? -- 2023-10-30 (月) 22:14:32
    • 行けると思うけど、やり方はわからん。 -- 2023-10-31 (火) 17:12:30