ConoHa Minecraft Manager を使ってみた

![2020-12-04_02.45.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/60776a50-8a50-8efc-1e4b-61514326f950.png)


# はじめに
この記事は、「ConoHa Advent Calendar 2020」の12月4日目の記事となります。
(後でいいやって思って気がつけば12月2日現在ですので急いで書いているのでタイポとかあるかもしれません）


最近、MinecraftにはmcfunctionやらDatapackやらで自由にカスタム要素を追加できるようになりました。

そのため、みんなで何か配布World作るぞーとかMinecraftでマルチプレイしたい！ってなるときがあると思いますので、


今回は
既存のConoHa Minecraft サービスで立ち上げた時にできる機能の紹介 と
Minecraft サーバの管理する用のスクリプトを書いたのでそれの紹介
をしたいと思います。

（あとConoHaのやつ使って管理者目線で気になった点も書いておきたいと思います。）

## ConoHaからMinecraft Server を追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/23bcae78-fa24-4f5f-6acf-feb01e80f564.png)


サーバ追加 -> Minecraft タブからMinecraftサーバを作成することができます。
※ この時に下にあるイメージタイプをMinecraft Java版を選ぶことを忘れないように


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/f59d7643-561a-95c6-e4d8-c0e054c51e80.png)

最後に追加を押すと、**数秒**程度でMinecraftサーバが起動状態で作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/c1e647bc-4cb3-71cd-a5bc-8dd0b6612e7e.png)

その後、バージョンを合わせてマルチプレイからサーバのIPアドレスを入力してログインすれば、
この通り簡単にマルチプレイを楽しむことができます。

余計な作業はいらないので本当に簡単で素晴らしいと思います。

## Minecraftコンソール

このままだと自身にOP権限やBAN設定、コンソール画面の確認ができないので、コンソールへアクセスし、諸々の設定を行います

1. サーバにSSHでrootユーザでログインします。
2. `sudo su minecraft` でMinecraftユーザになります。
3. `screen -r minecraft` 以下のコマンドをタイプし、Minecraftが起動しているscreenにログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/e5105f6e-7e23-ac65-9268-98ca7ca0dfee.png)

上の画像のようなコンソール画面が出れば成功です。
そこでop設定するなり特定ユーザのgamemode 変更するなりを行ってください

コンソールから抜けるときは
キーボードの `ctrl + A` を押してから `D` を押してください

## 管理画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/057b71ec-7c4d-8b02-c6a2-3d4f21f35940.png)

左上にあるこの、Minecraft管理 ボタンを押下すると、Minecraftサーバ管理画面へ移動できます。

ユーザ名： `root`
パスワード： `サーバインスタンスを追加したときに設定したrootのパスワード`

となります。


この時のURLは全公開なので、外出先とかからいつでもアクセスすることができます。

家の外からとかあっ！サーバ再起動しないと！！っていう場面やワールドで間違えてTNT爆破しちゃったからバックアップ復元したい
などの場面で非常に便利です。


##### 気になった点：
<details><summary>クリックして開く</summary>rootはセキュリティ的に教えたくないけど、Minecraftサーバ管理者同士には管理画面を見せたい！ってなった時用に
管理画面用アカウント追加設定とかminecraftのlatest.log表示して画面に出す機能とOP/BAN追加削除とか
もう少し管理特化した機能があれば嬉しいなって思いました。
まぁ認証外して起動(非公式)もできるのでrootパスワード教えずに共有したい場合最後の手段としてそれで起動するのもいいかな
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/954c0b09-c676-4001-37b8-7552055e8f2e.png)
</details>




![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/624fcc6c-7a08-8412-2a00-47a7dfe28620.png)


この管理画面の出来ることは
* サーバの起動停止
* 自動バックアップ/手動バックアップ設定
* ゲームモードの変更

ができます。

バージョンはここから変更できないので注意してください。基本現行最新となります。
今のMinecraft Serverのログを確認したい場合は、サーバ内(SSHログイン後)で
`tail -f /opt/minecraft_server/logs/latest.log`
を入力することで確認できます。


### サーバの起動停止

その名の通り、停止を押すとサーバを閉じることができ
起動を押すと起動することができます。

ですが下に書いたとおり若干気になる動作があったので、きちんと自身に対してOP権限を設定してから
`/stop` コマンドを使って停止したほうが良いと思います。

##### 気になった点：
<details><summary>クリックして開く</summary>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/b391540f-a9ee-a8d6-8679-480d8f40571a.png)
~~stop コマンドでの停止ではないのか~~ （サービス見たらscreenにstopコマンド投げていました。）java.io.IOExceptionが発生している、、
コンソール入力例外ということはうまくscreen にキーボードinput渡せていないのかな...例外で落ちているせいでsave等の終了処理がちゃんと終わっていなさそう
</details>

### 自動バックアップ/手動バックアップ設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/979df434-6fd6-34f9-6825-747ec9215a67.png)
自動バックアップの方はONにすることで1日1回バックアップされます。

バックアップの結果はバックアップ一覧で確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/ee4f2dab-bf45-462d-a4e3-255227d40efe.png)

手動でしたい場合は「バックアップ」のボタンを押下することでできます。

※ バックアップ名は半角英数字記号は_のみなので注意

### ゲームモードの変更

Minecraftサーバが起動中の時のみ施行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/58fd3cd7-4423-cbfc-f4d3-17f63724d1d1.png)

例えばCREATIVE Mode にした場合は

1. サーバに対して `gamemode creative @a` が実行されます。（全ユーザに対してGameModeをクリエイティブへ変更）
2. server.propertiesの gamemode= の値変更 (この場合だと gamemode=creative)

上2つのことが行われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/a2652b9d-c9c9-1cb1-929b-3357f0964577.png)

この時注意していただきたいのが2の
server.propertiesの gamemode 変更で
この設定は初回ログイン時のデフォルトゲームモードの変更となります。

つまり、***初めてそのサーバにログインしてきたユーザ***はcreative mode となり既に入ったことがある人には反映されません。


既にログインしたことあるユーザに対してもgamemode を変更したい場合は,
サーバ設定を変更する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/7407a01c-51ff-1724-1c1f-1294d173126a.png)

にあるファイルの
`/opt/minecraft_server/server.properties`

の中の
`force-gamemode=false` の値を `force-gamemode=true`にする必要があります。

```
force-gamemode

プレイヤーにデフォルトのゲームモードで参加させる。
false - プレイヤーが設定したしたゲームモードで参加される。
true - プレイヤーは常にデフォルトのゲームモードで参加する。
```

その他詳細なサーバ設定についてはMinecraft 非公式Wiki を参照すれば詳しく書いてあります。

https://minecraft-ja.gamepedia.com/Server.properties


#最後に ConoHa Minecraft Manager を使ってみて

とりあえず、コンソール側のminecraft-manager についてはあまり触れずにWEB側の管理コンソールをざっと触ってみた感じですが

サーバ建てたい！！でも初めてだしわからないし難しそうだしSSHって何？？？？という人や
とりあえずあれ試したいから、Minecraftサーバ建てたいでもJavaのインストールやらインスタンスを立ち上げてSSH設定してバックアップやってとか面倒くさい

という人に対して向いていると思います。


ConoHaの良い部分として`すぐ作ってすぐ壊せる`だと思いますのでパッと思いついたときにすぐに作る、
必要がなくなったらすぐに消して料金を安くするができる。 本当に便利です。

実際この記事を書くためだけにこのMinecraftのインスタンス一つぱっとつくっています。
そして、書き終わったらすぐに消してという感じで思いついたら試せて壊せるのはとても便利なのでこれからも使っていきたいと思いました。

↓サービスショット

![2020-12-04_02.49.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/2abd1159-4de1-8981-6faa-46bccba4145a.png)



![2020-12-04_02.53.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187514/d92775a7-d4e2-1fac-fee6-aee112eee9f4.png)


---

本当の最後の最後に

本当は自分が作ったMinecraftの管理Shellスクリプトを紹介もしたかったのですが時間が間に合いませんでした。。。
https://github.com/waxsd100/Minecraft-Management-Script