LightsailのUbuntu18.04にARK鯖を構築する

yukpiz
7 min readMar 11, 2020

--

yukpiz です。最近コロナの影響で外出を控えるようになり、やむを得ずMinecraftやらARKをプレイして引きこもっています。

今回はARK面白いのでマルチ鯖構築してみんなで遊びましょうという事で、LightsailのUbuntu18.04にマルチサーバーを構築してみます。
ARK: Survival Evolved

ちなみに自宅のゲーム用PCなどを使って、ASM(ARK Server Manager)やHamachiを使った個人サーバーの公開方法もあるようですが、ここでは触れません。

今回用意したサーバーは以下です。同サーバー内でMinecraftが稼働していることと、ARKシングルプレイを事前に試したところ、かなりのリソースを利用したことから、少しだけスペックを向上させています。

環境構築

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install lib32gcc1

steamcmdを導入

$ sudo apt-get install steamcmd

実行すると規約同意の画面が出たりするので、同意してください。

システム設定を追加

$ sudo vim /etc/sysctl.conf
+ fs.file-max=100000
$ sudo sysctl -p /etc/sysctl.conf
fs.file-max = 100000
$ sudo vim /etc/security/limits.conf
+ * soft nofile 1000000
+ * hard nofile 1000000
$ sudo vim /etc/pam.d/common-session
+ session required pam_limits.so

この辺り、本当に必要なのかわかっていませんが、ARKの予期しない動作によってCPU負荷率が向上するらしく、念の為設定しておきます。

以下は各設定値に関して調べた時の資料です。
・https://docs.oracle.com/cd/E35617_01/doc.11116/b66436/perf002.htm
https://open-groove.net/linux/memo-etcsecuritylimits-conf/

ARKサーバーをインストール

$ mkdir arkserver
$ cd arkserver
$ steamcmd +login anonymous +force_install_dir . +app_update 376030 +quit
... 省略Loading Steam API...Failed to init SDL priority manager: SDL not found
Failed to set thread priority: per-thread setup failed
Failed to set thread priority: per-thread setup failed
... 省略Success! App '376030' fully installed.

なんかいくつかのAPI呼び出しが失敗してるように見えますが、関係なさそうなので一旦放置します。
app_updateにはかなりの時間がかかりますので気長に待ちましょう。
問題がなければ上記のように『Success! App ‘376030’ fully installed.
』と出力されます。

ARKサーバーの起動設定

$ sudo vim /lib/systemd/system/ark.service
[Unit]
Description=ARK Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
User=ubuntu
Group=ubuntu
ExecStartPre=/home/ubuntu/steamcmd +login anonymous +force_install_dir /home/ubuntu/arkserver +app_update 376030 +quit
ExecStart=/home/ubuntu/arkserver/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?Session
Name=example-server -server -logWorkingDirectory=/home/ubuntu/arkserver/ShooterGame/Binaries/Linux LimitNOFILE=100000 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s INT $MAINPID
[Install]
WantedBy=multi-user.target

ログインユーザー名が埋め込まれている為、適宜変更してください。
(Lightsailのデフォルトであるubuntuを利用しています。)
上記の設定ファイルが用意できたら、以下を実行します。

# サービスから呼び出されるsteamcmdのシンボリックリンクを用意しておきます
$ ln -s /usr/games/steamcmd ${HOME}/steamcmd
$ sudo systemctl daemon-reload
$ sudo systemctl enable ark.service
Created symlink /etc/systemd/system/multi-user.target.wants/ark.service → /lib/systemd/system/ark.service.
$ sudo systemctl start ark

ARKサーバーの起動ログは以下で確認ができます。

$ journalctl -u ark.service

ポート開放を行う

ufwなどのコマンドを利用しても大丈夫ですが、LightsailはWebコンソールからポート開放ができるため、それを利用します。
UDPの7777、27015を開放します。
25565は関係ないポートですので無視してください。

Steamクライアントから接続する

Steamクライアントを起動して、お気に入りのサーバー一覧から新しくサーバーを追加します。
サーバーのIPアドレスを入力して追加すると、起動しているARKマルチサーバーが表示されます。
(表示されない場合、起動に失敗している可能性があるので、サーバーログを確認してください)

サーバーがお気に入りに追加されたら、接続ができるようになります。
接続するとARKが起動し、新しいサバイバーの追加が始まります。

良いARKライフを

Originally published at https://note.com on March 11, 2020.

--

--