テラリアマルチサーバーを Amazon Lightsail で建てる

想定読者レベル

・VPS が何かが分かる
・コマンドラインの基本が分かる
・AWS のアカウントを持っている / または登録できる

Lightsail とは

Amazon(AWS)が提供している VPS。
Amazon Lightsail(月額3.5ドル〜の仮想プライベートサーバー:VPS)| AWS

利用料金は 3.5USD/Month からでお手頃価格。
AWS で RAM が 1GB で 5USD なのは結構良いですね。
料金 - Amazon Lightsail | AWS

スクリーンショット 2020-06-21 14.57.54

EC2 へのアップグレードのサポートもあり、
本格的な環境で運用する前のお試し環境的な位置付けだったりもします。
特徴 - Amazon Lightsail | AWS

Lightsail インスタンスの作成

https://lightsail.aws.amazon.com/ にアクセスします。

スクリーンショット 2020-06-21 15.04.59

「インスタンスの作成」に進みます。

スクリーンショット 2020-06-21 15.05.12

「インスタンスロケーション」は日本(東京)で良いでしょう。

「プラットフォーム」は Linux/Unix を選択。
今回の場合 Windows は無駄に高いだけなので。

「設計図」は「OSのみ」から Ubuntu 18.04 LTS を選択。
設計図っていうネーミングが気になるのはさておき、
OS はなんでも大丈夫です。 CentOS が一番情報多いかも?

因みにここで Ubuntu にする理由は Minecraft と共通で使えるからです。
java edition の場合はサーバーの OS はなんでも良いのですが、
bedrock は Ubuntu が想定されています。
Minecraft 用サーバーソフトウェア (アルファ版) をダウンロード | Minecraft

スクリーンショット 2020-06-22 0.16.28

「インスタンスプラン」は 2GB のものを選択します。
2GB 未満のインスタンスを選択すると、World 生成がコケます。

「Lightsail リソース名」は「terraria+α」のような命名規則が良いかと。

ここまで選択が終了すれば「インスタンスの作成」をクリックで完了です。

TCPポートの開放

テラリアでは慣習的にTCPプロトコル7777ポートを使用するのですが、
デフォルトのファイアウォールで制限されているため、
「ネットワーキング」タブ内の「ルールを追加」から設定します。

スクリーンショット 2020-06-22 0.26.27

ssh 接続

SSH および Lightsail インスタンスへの接続 | Lightsail ドキュメント
を見ながらトライします。

スクリーンショット 2020-06-21 14.02.03

Dashboard の接続情報を参照して ssh 接続を行います。
(以下IPアドレスは xxx.xxx.xxx.xxx で伏します)

$ ssh ubuntu@xxx.xxx.xxx.xxx
ubuntu@xxx.xxx.xxx.xxx: Permission denied (publickey).

弾かれました。もう一度見直してみると、

クライアントを使用して接続する場合は、プライベートキーも必要です。
このインスタンスを デフォルト (ap-northeast-1) キーペアを使用するように設定しました。
デフォルトのプライベートキーは、アカウントページ からダウンロードできます。

とのことなので、アカウントページを開きます。

スクリーンショット 2020-06-21 14.33.59

ここからプライベートキー(.pem)をDLします。

SSH を使用した Linux インスタンスへの接続 - Amazon Elastic Compute Cloud
を参考に、プライベートキーを指定して ssh 接続を行います。

$ ssh -i LightsailDefaultKey-ap-northeast-1.pem ubuntu@xxx.xxx.xxx.xxx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'LightsailDefaultKey-ap-northeast-1.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "LightsailDefaultKey-ap-northeast-1.pem": bad permissions
ubuntu@xxx.xxx.xxx.xxx: Permission denied (publickey).

またもや弾かれました。

WARNING: UNPROTECTED PRIVATE KEY FILE!

でググると、どうやら .pem ファイルのパーミッションが不適切だとセキュリティ上の理由で弾かれることが分かります。

秘密鍵を使った SSH 接続時に WARNING: UNPROTECTED PRIVATE KEY FILE! と表示されて接続できない | Amimoto Help Center

chmod でパーミッションを絞ります。

$ chmod 0600 LightsailDefaultKey-ap-northeast-1.pem

再度 ssh 接続を行います。

$ ssh -i LightsailDefaultKey-ap-northeast-1.pem ubuntu@xxx.xxx.xxx.xxx
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-1021-aws x86_64)
* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage
 System information as of Sun Jun 21 05:23:34 UTC 2020
 System load:  0.0               Processes:           91
 Usage of /:   7.6% of 19.32GB   Users logged in:     1
 Memory usage: 31%               IP address for eth0: xxx.xxx.xxx.xxx
 Swap usage:   0%
* "If you've been waiting for the perfect Kubernetes dev solution for
  macOS, the wait is over. Learn how to install Microk8s on macOS."
  https://www.techrepublic.com/article/how-to-install-microk8s-on-macos/
 Get cloud support with Ubuntu Advantage Cloud Guest:
   http://www.ubuntu.com/business/services/cloud
256 packages can be updated.
152 updates are security updates.

Last login: Sun Jun 21 03:48:21 2020 from xxx.xxx.xxx.xxx
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ip-xxx-xxx-xxx-xxx:~$ 

無事に接続できました。

Terraria をサーバーにインストールして起動

ssh-Terraria TShockサーバーをUbuntuサーバーにインストールする方法 - スタックオーバーフロー
を参考にします。

1. 必要なパッケージのインストール

$ sudo apt-get install mono-complete screen unzip

2. Terraria 1.4.0.5 用 TShock をダウンロードします。

$ wget https://github.com/Pryaxis/TShock/releases/download/v4.4.0-pre11/TShock4.4.0_Pre11_Terraria1.4.0.5.zip

3. TShock の zip ファイルを解凍します。

$ unzip TShock4.4.0_Pre11_Terraria1.4.0.5.zip

4. 不要になった zip ファイルを削除します。

$ rm TShock4.4.0_Pre11_Terraria1.4.0.5.zip

5. サーバーを起動します。初回はマップを生成します。

$ mono-sgen TerrariaServer.exe

Docker の場合

まずこちらを参考に Docker をインストールします。
Ubuntu 18.04にDockerをインストールする(+docker-composeも) - Qiita

公式ドキュメントと英語に抵抗がなければこっちのが詳しいです。
Install Docker Engine on Ubuntu | Docker Documentation

terrariaの Docker Image は Docker Hub から探し、
最もDL数&Star数が多いものを使います。
ryshe/terraria - Docker Hub

Quick start guide に従ってコマンド2つで起動まで完了します。

1. まずワールドやログを保存するディレクトリを用意します。

$ mkdir -p $HOME/terraria/world

2. サーバーを起動し、マップを生成します。

$ sudo docker run -it -p 7777:7777 --rm -v $HOME/terraria/world:/root/.local/share/Terraria/Worlds ryshe/terraria:latest

インスタンスのスケールアップ

「スペックの低いインスタンスを選択して起動まで辿り着けない」
「遊んでいるうちにより高スペックのサーバーが必要になった」
という場合に上位のプランに移行することができます。逆は難しいです。

まずインスタンスのスナップショットを作成します。

スクリーンショット 2020-06-21 23.44.59

そして作成したスナップショットのオプションから、
「新規インスタンスの作成」に進みます。

スクリーンショット 2020-06-21 23.49.52

後は「Lightsail のセットアップ」と同様の画面が表示されるので、
上位のプランを選択してインスタンスを作成します。

そして、移行が完了したら、古いインスタンスを削除します。

スクリーンショット 2020-06-22 0.27.00

その他参考資料

サーバ - Terraria Japan Wiki

CentOS7 Terrariaのマルチプレイ用サーバをVPS上に構築 | server-memo.net

How to run a dedicated Terraria server on Ubuntu | Reddit

How to Setup a Terraria Linux Server | Linode


この記事が気に入ったらサポートをしてみませんか?