[ Crafty Controller ] MinecraftサーバーをGUIで操作する（導入と操作）

# 本記事の対象者
- 複数のMinecraftサーバーを運用している方・したい方
- Linuxの基礎的な操作が行える方

概要は導入だけ教えてくれという方は[こちら]()

# Crafty Controllerとは
Crafty Controllerは、GUIでMinecraftサーバーを一括管理しようという海外のOSSプロジェクトです。主にWindowsとLinux上で動作します。今回はUbuntu上での導入を紹介します。

特徴([公式サイト](https://craftycontrol.com/)からの抜粋・意訳)：
> - GUIからMinecraftのサーバーを起動/終了/管理できる
> - 無料かつオープンソースである
> - インターフェースはネットワークを介してブラウザ上で提供される
> - Arcadia Technologyによって開発されており、現在も開発が継続されている

具体的な機能例：
- サーバーの作成・実行・停止
- 設定の変更やファイル操作・閲覧
- プレイヤーの管理
- バックアップ
- 既存サーバーからの移行
- ホスト負荷の管理
- WebHook

# 導入
早速導入していきましょう。
サーバーに関しては、任意のOSのセットアップ(IP固定など)が完了しているものとします。

:::note info
今回の環境です。古いものですが、問題なく動作しました。
> Dell Vostro 220s (Core 2 Quad Q9550 / DDR2 4GB)
> Ubuntu 22.04 Server
:::


1. アップデートとgit導入
```sudo apt update && sudo apt upgrade && sudo apt install git```
2. リポジトリのクローン
```git clone https://gitlab.com/crafty-controller/crafty-installer-4.0.git```
3. インストールスクリプト実行
```cd crafty-installer-4.0```
```sudo ./install_crafty.sh```
    インストールスクリプトを実行すると、基本的な依存パッケージが導入されます。
    依存パッケージの導入が終わると、次の画面になります。

4. OS検出
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/aade02c2-9b48-a0f8-bb17-c1f214cedb47.png)
    > [y]を入力し[Enter]
    
    Java(OpenJDK)などインストールが開始されます。

5. インストールディレクトリの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/28a7e522-1d6c-c58a-a548-a27f81258978.png)
    > [y]を入力し[Enter]
    
    インストール先ディレクトリが作成・選択されます。

6. アクセス権の承認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/f17250bd-9e4d-ec17-404f-f82b456f6850.png)
    > [y]を入力し[Enter]
    
    craftyにインストール先へのアクセスを承認します。

7. 導入ブランチの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/e20915e2-779c-cea4-f7c1-2f954497c0c0.png)
    > [master]と入力し[Enter]
    
    masterは安定板・devは開発版です。
    masterを選択してください。

8. サービスの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/5904c5b7-1680-00d2-07c5-4d5a63f0cfd6.png)
    > [y]または[n]を入力し[Enter]
    
    systemdユニットファイルを作成し、起動時に自動実行するように設定できます。
    ここでは[y]と入力し、作成します。

9. 自動起動の有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/a76a6aea-232a-00b4-38a8-aeb826517e80.png)
    8でyを選択した場合、ここで自動起動を有効化しておきます。
    ```sudo systemctl enable crafty.service```
    ```sudo systemctl start crafty.service```

# ログイン
```http://[サーバーのIP]:8443```にアクセスすると、ログイン画面が出てきます。
サーバーのコンソールで
```
sudo cat /var/opt/minecraft/crafty/crafty-4/app/config/default-creds.txt
```
と実行すると、デフォルトのユーザー(admin)とパスワードが得られるので、それをもとにログインします。

# ダッシュボード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/cd63d916-3423-3fed-2c4f-b7411593c6f8.png)
アクセスすると以下のこの画面になります。
初回のみアンケートが表示されますので、各自に合った回答を入力するか、閉じてしまいましょう。

今回は既にサーバーが存在する為リストにサーバーが存在していますが、デフォルトでは空の状態になっています。

# サーバー立ち上げる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/c567b6f2-5ec7-1513-ba1b-636df8ab4e81.png)
Servers→Create New Serverを選択し、新規サーバーを立ち上げます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/e88a20fc-bb57-17ed-03da-a77869c0f771.png)

サーバーを立ち上げるには、複数の方法が用意されています。
- 新規に構築する
    - サーバー
        - バニラ
        - 互換 (paper/purpur/sponge/folia)
        - Mod (Forge/Fabric/Mohist/catserver)
        - プロキシ
- サーバー内のフォルダーからインポートする
- サーバー内のzipファイルからインポートする
- zipファイルをアップロードしてインポートする

これらがすべてGUI上でできるのですから楽というものです。CUIだとJavaの切り替えなどで大変に苦心します。

ここでは、以下のように入力しpaper 1.20.4サーバーを立ち上げました。
|Key|Value|Description|
|---|---|---|
|Server Type|Server|サーバーの種類です。Vanillaを選択すればバニラサーバーになります。|
|Server Select|paper|派生サーバーの種類を選びます。|
|Server Version|1.20.4|サーバーのバージョンを選びます。派生サーバーが非対応のバージョンは表示されません。|
|Server Name|qiita_test|サーバー名です。分かりやすい名前を付けましょう。|
|Minimum Memory|2(GB)|最小メモリ使用量です。Javaの```-Xms```にあたります。|
|Maximum Memory|2(GB)|最大メモリ使用量です。Javaの```-Xmx```にあたります。|
|Server Port|25565|サーバーポートです。干渉注意。|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/291fb0fb-b2ec-0f2b-93d5-68fb25b57943.png)
設定が完了したら```[Build Server!]```をクリック

# 起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/6455b76b-7725-a008-7490-eb0a7d360fe4.png)
こんな感じの画面に飛ぶので、少しスクロールして```[Start]```をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222532/470a1cf0-2b68-4b3a-e012-7da0ec1cb7c2.png)
初回のみEULAへの同意ポップアップが出るので```[Yes]```を選択して同意します。
少し待つとサーバーのJarなどがダウンロードされ、自動的に開始されます。

```[xx:yy:zz INFO]: Timings Reset```
などと表示されたら完成！

> Minecraftから
> マルチプレイ→サーバー追加
> - 任意のサーバー名
> - ```[サーバーのIPアドレス]:[ポート番号]```
> 
> として接続。
> 上手くワールドに入れたら成功です。

止めるときは```[stop]```をクリックします。

# 参考
- https://docs.craftycontrol.com/pages/getting-started/installation/linux/
- https://docs.craftycontrol.com/pages/getting-started/installation/linux/?h=updat#updating-crafty