Craftbukkit サーバーを Amazon EC2 上に構築


プラグインの仕組みなどが用意された Minecraft サーバー「Craftbukkit」を Amazon EC2 上で動かす方法を紹介します。

## 前提知識
- 基本的な UNIX コマンドの知識

## Amazon EC2 とは
Amazon EC2 は、必要なスペックのサーバーを簡単に用意できるクラウドサービスです。サーバー（EC2 ではインスタンスと呼びます）の料金は、**稼働させた時間の分だけ**支払えばよいため、とても柔軟な使い方ができます。

例えば、マルチプレイで 100人入れるようなサーバーを自前で用意しようと思ったら大変ですが、EC2 であれば、「イベントの3時間の間だけハイスペックのインスタンスを動かす」なんてことも可能です。

http://aws.amazon.com/jp/ec2/instance-types/ に、EC2 で使用できるインスタンスの種類の一覧があります。
メモリ 613 MB のマイクロインスタンスから、メモリが 68.4GB もあるものまで、好きなものを選べます。

## Amazon EC2 に登録
まだアカウントを持っていない場合は、http://aws.amazon.com/jp/ec2/ からサインアップして下さい。登録にはクレジットカードが必要になります。

登録が済んだら、AWS Management Console の中の EC2 の画面を開いてください。 https://console.aws.amazon.com/ec2/ 

## Craftbukkit 用のインスタンスを起動
「Launch Instance」と書かれたボタンを押してください。すると「Create a New Instance」というウインドウが出るので、「Classic Wizard」にチェックが付いている状態で「Continue」を押します。

AMI（インスタンスのテンプレート）を選ぶ画面になるので、「Amazon Linux AMI」という AMI を選択してください。

次の画面では、「Instance Type:」の中から起動したいインスタンスの種類を選びます。Small インスタンス以上を選択して下さい。**Micro インスタンスだと Minecraft が動きません。**同時に入るのが数人程度であれば、Small インスタンスで十分だと思います。他の項目はそのままで大丈夫です。

次の画面と、次の次の画面は、何も変更せずに「Continue」で問題ありません。

### Key Pair の作成
「Create Key Pair」の画面になったら、「Create a new Key Pair」の「Enter a name for your key pair:」に「minecraft」と入力して、「Create & Download your Key Pair」をクリックしてください。
`minecraft.pem` というファイルがダウンロードされます。これは後ほどサーバーにログインするために使います。

### Security Group の作成
次の画面では、「Craete a new Security Group」の項目を

- Group Name: minecraft
- Group Description: minecraft
- Inbound Rules
 - Create a new rule: Custom TCP rule
 - Port range: 25565
 - Source: 0.0.0.0/0
 - Name: Minecraft

として、「+ Add Rule」を押してください。
これによって、Minecraft サーバーが使用する 25565 ポートが解放されます。

（Dynmap プラグインを導入する場合は、ここで 8123 ポートも解放する必要があります）

あとは「Continue」「Close」を押せば終了です。インスタンスが起動します！

## インスタンスに IP アドレスを割り当て
このままだと、起動したインスタンスは固定の IP アドレスを持ちません。EC2 では、Elastic IP という仕組みで、インスタンスに固定のアドレスを割り振ることができます。

Management Console の画面左側のメニュー中から「Elastic IPs」を選択してください。「Allocate New Address」というボタンを押して、EC2 用の IP アドレスを作成してください。

作成されたアドレスにチェックを入れ、「Associate Address」というボタンを押して、先ほど作成したインスタンスと紐付けて下さい。この IP アドレスが、Minecraft サーバーのアドレスになります。

## サーバーに SSH でログイン

それでは、起動したインスタンスにログインしましょう。コマンドラインを開いて、次の３つのコマンドを実行してください。

```
$ cd <minecraft.pem が置いてあるディレクトリ>
$ chmod 400 minecraft.pem
$ ssh -i minecraft.pem ec2-user@<先ほど設定した Elastic IP アドレス>
```
ログインできれば、次のロゴが表示されます。

```
       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|
```

## Craftbukkit のインストール

以下のコマンドを実行すると、`/home/<Ubuntuのユーザーネーム>/craftbukkit/` の中に、`craftbukkit.jar ` がダウンロードされます。

```
$ wget http://dl.bukkit.org/latest-rb/craftbukkit.jar -P ~/craftbukkit/craftbukkit.jar
```

次に、Craftbukkit を起動するためのスクリプトを用意します。

```
$ sudo nano /etc/init/craftbukkit.conf
```

と実行すると nano というエディタが開くので、次のように書いて保存。

```/etc/init/craftbukkit.conf
description "Craftbukkit server"

chdir /home/<Ubuntuのユーザーネーム>/craftbukkit

exec java -Xmx1024M -Xms1024M -jar craftbukkit.jar nogui

start on startup
```

保存するには「control + o」を押したあと Enter、エディタを閉じるには「control + x」。

## Craftbukkit サーバーの起動
```
$ sudo start craftbukkit
```
とすれば、Craftbukkit サーバーが立ち上がります！
これで、PC の Minecraft から、今回用意したサーバーにマルチプレイで繋げることができるようになります。

Craftbukkit サーバーを止めるときは、

```
$ sudo stop craftbukkit
```

## サーバーの設定
`server.properties` や `white-list.txt` などの設定ファイルは、起動後に ec2-user のホームディレクトリにある craftbukkit フォルダの中にできます。

また、このインスタンスでは、デフォルトで、1024MB のメモリを Minecraft サーバー（Craftbukkit）に割り当てていますが、Medium 以上のインスタンスにした場合は、割り当てるメモリを増やすとよいでしょう。

`/etc/init/craftbukkit.conf` の中にある以下の行の、1024 となっている部分を、インスタンスのメモリ量に合わせて書き換えてください。

```/etc/init/craftbukkit.conf
exec java -Xmx1024M -Xms1024M -jar craftbukkit_server.jar nogui
```

## インスタンスの停止
EC2 インスタンスは、停止してしまえばそれ以上課金されません。インスタンスを停止するには、Management Console で、該当のインスタンスを選択して、「Instance Actions」から「Terminate」することで止められます。

## バックアップ
EC2 インスタンスは、**Terminate すると、データが全て消えてしまう**ので注意してください。データのバックアップの仕方は、要望があれば記事にします。

## デモサーバー
以上の方法で作成した Minecraft サーバーを公開しています。

- IP アドレス: takumi-server.com
- インスタンス: Small

24時間動かしていますので、もしよかったらログインして自由に遊んでみてください！
Small でどれくらいの快適さなのか、フィードバック貰えるとうれしいです :-)

## 関連記事
[Minecraft サーバーを Amazon EC2 上に構築](http://qiita.com/items/d88f4d2778e738efe2eb)
[さくら VPS の Ubuntu に Minecraft サーバーを構築](http://qiita.com/items/cffa6e98b2ed87c276c6)