ConoHa for GAMEでARK: Survival Ascended(ASA)の専用サーバーを立てる方法

# 1.はじめに

この記事はARK: Survival Ascended(以下ASA)のサーバー費用を少しでも抑えたい人向けの記事になります。

設定手順は出来る限り簡単に記載しているつもりですが、
専用サーバーを使いたいだけであれば「NITRADO」を利用したほうが簡単です。

:::note warn
2024/08/15追記
本日時点でも当設定内容で正常稼働することを確認しました。
:::


:::note warn
ARK: SA Dedicated ServerはSteamからダウンロードすることになるので、事前に [利用規約](https://store.steampowered.com/eula/2430930_eula_0) に目を通してください。 商業目的で使用することができない点に注意してください。

また、本来ARK SA Dedicated ServerはWindows Serverでの稼働を期待していますが、ここではValveの開発したProtonを使ってLinux上で稼働させます。 Protonは一言で言えばLinux上でWindows用のゲームを実行するためのソフトウェアです。
:::

# 2.なぜConoHaを利用するのか

**「安いから！！！」**

「NITRADO」では、少人数で利用するだけでも最低20slot～の選択肢しかなく、長期間利用しても割引の恩恵が少ないです。

:::note info
ConoHa ってなに？
ConoHa は GMO インターネットグループが運営する VPS（専用サーバー）サービスです。
使い勝手がよく様々なゲームサーバーとしてよく利用されています。
ConoHa for GAMEでは長期割引パスがあるため、長期間利用するとサーバー費用がかなり安くなります。
:::

長期割引パスを利用した際の利用料金を簡単に比較しました。

![スクリーンショット 2024-02-20 235249.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/5e12c581-5c58-80ff-0c84-b3839b59dcc0.png)

また長期割引パスを利用しない場合でも、時間課金のプランも利用可能なため、土日だけ動かす（時間当たり7.3円～）こともできます。

上記の理由から、なんとかConoHaを使ってサーバーを構築できないか模索したところ、無事に構築（今のところ）できたので、そちらの手順になります。


# 3.ConoHaに登録
ConoHa for GAME(conoha.jp) に登録してください。

:::note info
こちらの招待リンクから登録すると1,000円分のクーポンが貰えます。

[★招待用リンク](https://www.conoha.jp/referral/?token=KQIbrBi6Pnc57OItA6p705aei9mqDq96fcum7yl_CjQLtIxiM.bOgpCGI2T4zw--6TM)
:::


今回利用するのはConoHa for GAMEサービスです。

![スクリーンショット 2024-02-20 230443.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/8598ab65-7dc6-fc26-9d8a-b40190affc1f.png)


ID とパスワードを設定してください。

ConoHaのクーポンは入手すると月の支払い時に自動的に適用され、利用料金が割り引かれます。


# 4.サーバーの作成

ユーザー登録が完了すると、サーバー作成画面になります。

**イメージタイプは「Valheim」を選択し、料金タイプはまずは時間課金の4GBを選択します。**
![server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/c2e86720-9125-a951-2d41-dc32ecff1f88.png)

:::note warn
まずは「時間課金」の契約で動作確認を推奨します。
動作確認を完了後、プレイスタイルに合わせて、マシンスペック、時間課金 or 長期割引パスなどを決めていくと良いかと思います。
:::

**サーバに設定する root パスワードを入力します。**
![root_pass.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/cd458085-7555-92f3-6297-fc672ce0ff93.png)

root パスワードは複雑である必要がありますが、後に必要なのでしっかり覚えておきましょう。

またネームタグは ConoHa でのサーバ名です。「ASA」など分かりやすい名前をつけましょう。

**オプションを設定します**

セキュリティグループを「IPv4v6-SSH」で作成します。
SSH Key を「キーを新規作成」かつ「自動生成」として、「追加」ボタンを押してください。


![option.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/b2676df0-a5be-9397-1bf3-7bd7431bd873.png)

追加ボタンを押すとプライベートキーのダウンロードを促されるので、ダウンロードします。

![スクリーンショット 2024-02-20 232228.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/ad4272d0-f2d9-874d-6036-a56a5c293e18.png)

:::note warn
このプライベートキーは第5章のTeraTerm,WinSCPでサーバーとの接続時の秘密鍵として利用します。
:::


入力が完了したら、「次へ」で進みます。

![スクリーンショット 2024-02-20 232606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/b5848e5e-f890-4205-de0d-087f3e36e217.png)


このあと個人情報登録と支払い（クレジットカード）の登録があります。

無事に作成されると以下のようにサーバーリストにサーバーが立ち上がります。
![スクリーンショット 2024-02-20 233141.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/226c5acc-d1cc-757c-afe4-a5ead672edeb.png)




# 5.TeraTerm,WinSCPの導入と設定
次にサーバー運用が簡単になるようにツールを導入します。
それぞれ、参考ページ等を参照しダウンロード＆インストールしてください。（設定はデフォルトで問題ありません）

:::note warn
ConoHaのコンソール画面でもサーバーを操作できますが、
・セッションが定期的に切れる
・ファイルの授受が出来ない
・7章以降の設定でコピペが出来なくなる
上記理由のため導入を推奨します。
:::

### TeraTermの導入
TeraTermは接続したサーバーをコマンドで操作できるツールです。

※参考ページ

https://miya-system-works.com/blog/detail/teraterm-how-to-use/

***※詳細な接続方法は↓をクリック***

<details><summary>TeraTermのConoHaサーバーとの接続方法</summary>

![スクリーンショット 2024-02-21 095520.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/36ee258c-6684-35a0-c44f-dcab3b140a9f.png)
ホストにあなたが立てたサーバーのIPアドレスを入力し、サービスをSSHでOKを押します。

![スクリーンショット 2024-02-21 095648.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/dd139f84-9ba3-bf9a-c2f9-aca9a570c74a.png)

・ユーザー名にroot、パスフレーズにサーバー作成時のパスワードを入力します。
・認証方式を「RSA/DSA/ECDSA/ED25519鍵を使う」にし、秘密鍵にダウンロードしたプライベートキーを指定します。
最後にOKを押すとサーバーに接続できます。

</details>

### WinSCPの導入
WinSCPは接続したサーバーのファイルを操作できるツールです。

※参考ページ

https://winscp.net/eng/docs/lang:jp

***※詳細な接続方法は↓をクリック***

<details><summary>WinSCPのConoHaサーバーとの接続方法</summary>

![スクリーンショット 2024-02-21 100353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/7583ae79-2ab5-d37d-7c02-309065c4de36.png)
・ホスト名にあなたが立てたサーバーのIPアドレスを入力します。
・ユーザー名にroot、パスワードにサーバー作成時のパスワードを入力します。

・設定を押すと以下の画面が立ち上がります。
![スクリーンショット 2024-02-21 100647.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/540d5439-2079-8a91-17de-327564d6656d.png)
・SSHの認証の秘密鍵に、ダウンロードしたプライベートキーを指定します。
※ファイル指定の下カテゴリを「すべての秘密鍵ファイル」にしないとでてきません。
![スクリーンショット 2024-02-21 100910.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/4aaa00f2-cfc7-70a1-245a-a4e222f3601a.png)
「開く」を押すとファイルの形式変換のダイアログがでるのでOKを押します。
![スクリーンショット 2024-02-21 101139.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/1bd3b84e-e0c2-2802-1678-82f1b5ba90cb.png)

最後にログインを押すとサーバーに接続できます。
![スクリーンショット 2024-02-21 103143.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/f33fc842-9bed-d90a-e3d2-4994b22e65fd.png)

</details>

# 6.ConoHaサーバーの設定変更

ここからが本題のASA導入時のサーバー設定になります。

#### ①仮想メモリの追加
ゲームを快適に動作させるために仮想メモリを追加します。
（ASAだけじゃなく他のゲームでも設定しておくと快適になります。パルワールドとか）
※メモリが32GB以上のプランでは設定の必要はありません

TeraTermで作成したサーバーに接続し、以下のコマンドをroot権限で実行していきます。

:::note info
※TeraTermではコピーした文を右クリックで簡単に貼り付けできます。
:::

```
sudo fallocate -l 30G /swapfile
```
```
sudo chmod 600 /swapfile
```
```
sudo mkswap /swapfile
```
```
sudo swapon /swapfile
```
```
echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
```

設定できているかは以下コマンドで確認できます。
```
free -h
```

以下のようにSwapが追加されていればOK
![スクリーンショット 2024-02-21 111349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/e06e005b-b766-4569-153f-5de21ef63739.png)





#### ②再起動設定(サーバーを常時起動する人のみ)
常時起動しているサーバーだと時間経過でメモリが逼迫していくことがあるので、メモリ追加と合わせて再起動処理を仕込んでおきます。(面倒であれば、後から設定も可能なので飛ばしてもOK)
※時間課金で運用して、手動でサーバーを停止・起動させる場合は設定不要

以下のコマンドでcrontabを開き、好きなタイミングで自動再起動の設定を入れておきます。
```
crontab -e
```
(例)朝4時に再起動させる場合の記述
※文末にコピペして、Ctrl+X → Y で保存できます。 
```
0 4 * * * command /usr/sbin/shutdown -r now
```

設定確認用のコマンド
```
crontab -l
```

以下のように文が追加されていればOK
![スクリーンショット 2024-02-21 111536.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/5e61bcf6-7875-704a-8f97-b87c418dc3c6.png)




#### ③ポートの開放
ASAが利用する通信をConoHaで許可する必要があります。

ASAが利用する通信は以下です。
TCP/UDP：7777
TCP/UDP：7778
TCP/UDP：27015

ポートの開放はConoHaの管理画面から設定します。

ダッシュボードの「セキュリティ」→「セキュリティグループ」→「+」アイコンで作成します。
セキュリティグループ名は分かりやすいように「ASA」として保存します。

![スクリーンショット 2024-02-21 105006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/d3088a01-0eff-61cf-f957-176ffe1dda08.png)

ASAセキュリティグループができたら、それを開き「+」アイコンを押下します。

![スクリーンショット 2024-02-21 105449.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/5fc9f455-47c3-3a96-4cf5-3fb66c394a59.png)

セキュリティルールを登録します。
通信方向「IN」、イーサタイプ「IPv4」、プロトコル「UDP」、ポート範囲「7777」、IP/CIDR は未入力として、決定します。

![スクリーンショット 2024-02-21 105633.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/d36ea6d7-e3c9-ae71-0c68-148b4c7fc0b3.png)

同様にASAが利用するのに必要なポートを設定していき、以下のように設定できればOKです。
![スクリーンショット 2024-02-21 110131.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/2e4bd1ea-c2a0-4114-f145-9e980928ac49.png)


サーバーリストに戻り、ネームタグからサーバ詳細を開きます。

「ネットワーク情報」から「セキュリティグループ」を編集し、先ほど作成したASAセキュリティグループを追加して保存します。

![スクリーンショット 2024-02-21 110903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/89c91253-d2e2-eea0-2ea5-8e8fed554707.png)


# 7.ARK: SA Dedicated Serverをインストールする

:::note warn
以下の設定をすることで、ConoHaからのコンソール画面がGUIになります。
「シリアル」に切り替えることでCLIを利用できますが、コピペなどが出来なくなるためTeraTermの利用を推奨します。
:::

以下のコマンドをroot権限で実行していきます。

ダウンロード等で時間がかかるコマンドもあるので、しっかりコマンドが終わったことを確認してから次のコマンドを入力してください。

```
apt update
```
```
apt install git vim
```
```
mkdir git && cd $_
```
```
git clone https://github.com/k-sukehiro/ARKSurvivalAscended-Linux.git
```
```
cd ARKSurvivalAscended-Linux/
```
```
chmod 744 server-install-ubuntu20.sh
```
```
sudo ./server-install-ubuntu20.sh
```

これで、初期状態のサーバーが立ち上がります。
サーバーの起動に5分くらいかかるので、少し待ってからサーバーの起動ログを確認します。

```
tail -F /home/steam/island-ShooterGame.log
```
以下のようなログがでて、
「Server: "XXXXXX" has successfully started!」
と出ていれば無事起動成功です。
![スクリーンショット 2024-02-21 145604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/f4e6e3b9-67cd-7c01-ec5c-d2ad00fb51d1.png)

"XXXXXX"がASAサーバの名前になります。
（※サーバー名は9章の内容で変更可能です。）

ログはCtrl+Xで終了できます。

# 8.ASAからサーバーの動作確認
サーバーの起動が出来たら、一度ASAを起動してサーバーが検索できるか、キャラクター作成ができるか、ワールドで少し動いてみるなどの動作確認をしてください。

「ゲームに参加」から
・非公式タブ
・「パスワードありのサーバーを表示」のチェックを外す
・「プレイヤーサーバーを表示」にチェック
・上部検索から、サーバー名を入力
更新を押すと、立ち上げたサーバーが表示されるはずです。
![スクリーンショット 2024-02-21 113401.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/50fc1feb-d38d-e67b-1be5-3d7adaf180e1.png)

:::note warn
サーバーが表示されない
・すべて起動するまでに時間がかかるので、5分ほど待ってください。
・エラーなどがでていないか起動ログを確認してください。
・チェックの付け忘れ、サーバー名が間違えていないかなど検索方法を確認してください。
:::

:::note warn
サーバーに接続できない
・ポート開放の設定ができているか確認してください。
:::

:::note info
無事に動作確認が出来れば一旦サーバー構築は完了です。
お疲れ様でした。
:::

※初期状態では、公式サーバーと同じ設定で遊ぶことができます。
　サーバー設定を変更したい場合は、9章,10章を参考に設定変更してください。

# 9.ASAサーバー設定の変更

サーバー名の変更、サーバーパスワードの設定、ドロップ率やテイム率の変更など、ASAサーバーの設定に関しては以下の手順で変更可能です。

:::note alert
ASAサーバー設定の変更は自己責任でお願いします。
:::

:::note alert
変更前に各種関連ファイルは必ずバックアップしてください。
誤って修正、削除した場合、元に戻せない可能性があります。
:::

#### ①ASAサーバーを停止します
```
sudo systemctl stop ark-island
```

#### ②隠しフォルダにあるiniファイルを修正
WinSCPでサーバーに接続し、ファイルをバックアップして、好きな値に修正します。
※隠しファイルの表示方法：https://in-ranch.com/blog/blog-181/

:::note warn
初期状態ではだれでも接続できてしまうため、少なくともサーバーパスワード(ServerPassword=)は設定したほうがよいです。
:::

[対象フォルダ]
/home/steam/.steam/SteamApps/common/ARK Survival Ascended Dedicated Server/ShooterGame/Saved/Config/WindowsServer/

[対象ファイル]
Game.ini
GameUserSettings.ini

※筆者環境ではGame.iniが初期構築時になかったためローカルからコピーしました。（なくても動くようです）
 
※設定値参考ページ

https://steamcommunity.com/sharedfiles/filedetails/?id=3064641105

#### ③ASAサーバーを起動します
```
sudo systemctl start ark-island
```

# 10.modの導入方法

:::note alert
modの追加は自己責任でお願いします。
:::

:::note alert
変更前に各種関連ファイルは必ずバックアップしてください。
誤って修正、削除した場合、元に戻せない可能性があります。
:::

#### ①ASAサーバーを停止します
```
sudo systemctl stop ark-island
```

#### ②serviceファイルを変更
WinSCPでASAサーバーに接続し、以下対象ファイルを修正します。

[対象フォルダ]
/etc/systemd/system/

[対象ファイル]
ark-island.service

[修正箇所]
ExecStart=/home/steam/.steam/compatibilitytools.d/GE-Proton8-21/proton run ArkAscendedServer.exe TheIsland_WP?listen
↑の末尾に以下を追加
**?SessionName=XXX(サーバー名)?ServerPassword=XXX（パスワード）?ServerAdminPassword=XXX（管理者パスワード） -NoBattlEye -mods=XXXXXX(modのID),XXXXXX,XXXXXX** 

※ハイフンの前に半角スペースが入ります


#### ③サービスファイルを更新します
```
sudo systemctl daemon-reload
```
#### ④ASAサーバーを起動します
```
sudo systemctl start ark-island
```

# 11.セーブデータの移行
:::note alert
セーブデータの移行は自己責任でお願いします。
:::

:::note alert
変更前に各種関連ファイルは必ずバックアップしてください。
誤って修正、削除した場合、元に戻せない可能性があります。
:::

今まで遊んでいた環境のセーブデータを利用したい場合は、以下の手順で可能です。

#### ①旧環境からセーブデータをローカルにコピーします

#### ②ASAサーバーを停止します
```
sudo systemctl stop ark-island
```

#### ③セーブデータの移行
WinSCPでASAサーバーに接続し、以下のフォルダ配下のデータを削除したあとに旧環境のセーブデータをコピーします。

[対象フォルダ]
/home/steam/.steam/SteamApps/common/ARK Survival Ascended Dedicated Server/ShooterGame/Saved/SavedArks/TheIsland_WP


#### ④サーバーを起動します
```
sudo systemctl start ark-island
```

# 12.コマンド一覧
以下によく使うコマンドを記載しておきます。


■ASAサーバーをアップデートする
```
sudo -u steam /usr/games/steamcmd +login anonymous +app_update 2430930 validate +quit
```

■ASAサーバーを起動する
```
sudo systemctl start ark-island
```

■ASAサーバーを再起動する
```
sudo systemctl restart ark-island
```

■ASAサーバーを停止する
```
sudo systemctl stop ark-island
```

■ASAサーバーの起動ログを確認する
```
tail -F /home/steam/island-ShooterGame.log
```

# 13.ConoHaのサーバー停止、スペック変更、長期割引パスについて

ConoHaを時間課金で利用している場合は、使わない時はコンソールからシャットダウンしておくことで、利用料金がかかりません。
![スクリーンショット 2024-02-21 121918.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/87e9b53d-08f7-ea65-d1a1-087be3edf828.png)

サーバーのスペックを変更したい場合は、シャットダウン状態で、「プラン変更」すれば可能です。

![スクリーンショット 2024-02-21 122206.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/c398198f-7ad7-f4aa-9e87-454617ae0a26.png)

![スクリーンショット 2024-02-21 122440.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/88a4c1cf-1ea0-5b7a-031a-500f1821828d.png)


長期割引パスを使いたい場合は、サーバーリストの画面から「長期割引パス」を選択することで、構築済みのサーバーに適応することができます。
![スクリーンショット 2024-02-21 122537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716588/78225a6d-ad29-e597-986e-35c794915ee7.png)




# 14.免責事項
:::note alert
本記事からのリンクなどで移動したサイトで提供される情報、サービス等について一切の責任を負いません。

また本記事のコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。

本記事に掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。
:::

# 15.参考リンク
以下サーバー構築にあたって参考にさせて頂いたページ
https://blog.flinters.co.jp/entry/2023/12/16/120000
https://qiita.com/naoya-i/items/f12f1a29da2908d8a81f