Ubuntu 20.04.1 LTSでMineCraft Paperサーバーを立てる①

# はじめに
##目的
軽いと噂のpaperサーバーをまっさらなubuntu20.4LTSに立ち上げる
今回はサーバーの初期立ち上げとポート開放まで

##環境
+ cpu AMD Ryzen 3 3200G
+ メモリ　16G
+ OS Ubuntu Ubuntu 20.04.1 LTS
+ papermc #204 (MineCraft JE1.16.3)

#やったこと
##Ubuntuの準備
###初期設定
rufusとISOを使ってインストールメディアの作成
ディレクトリに日本語を使いたくないのでEnglishでインストール
ここらへんのやり方は調べれば出てくるはず

日本語キーボードを使えるように変更

```:ubus-mozcのインストール
$ sudo apt -y install ibus-mozc
```
再起動後にsetting - Region&Language - input Sources - +ボタン -　Japanese - Japanese(Mozk)　を選択
これで日本語が打てるようになった

###アップデート

```:update
$ sudo apt dist-upgrade
$ sudo apt upgrade
```

上はパッケージの更新と不要なカーネルの削除をしてくれるらしい。
入れたばっかりのOSに必要なのかはわからない。
詳しい方、教えてください。
下はパッケージの更新だけをしてくれるらしい。

###javaの導入
javaのバージョンを確認

```:javaの確認
$ java -version
```

これで``Command 'java' not found, ...``と出てきたらjavaが入ってない。
次のコマンドでjavaを導入。

```:javaをインストール
$ sudo apt install openjdk-8-jre
```

###マイクラサーバー専用ユーザーの作成
マイクラサーバー専用ユーザーを作成
sudoができるように権限を追加する

```:ユーザーを追加
$ sudo useradd minecraft
```

```:結果
[sudo] password for poseyamada: 
Adding user `minecraft' ...
Adding new group `minecraft' (1001) ...
Adding new user `minecraft' (1001) with group `minecraft' ...
Creating home directory `/home/minecraft' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for minecraft
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

```

yを押して終了
このユーザーにsudoを追加


```:"ユーザーminecraftをsudoに"
$ sudo usermod -aG sudo minecraft
```

ここでユーザーをスイッチ。
suでユーザーを変えて起動すると
``Can't connect to X11 window server using ':0' as the value of the DISPLAY variable``
になってサーバーが起動しない。
情報求む。


##PaperMCを導入

###専用ディレクトリを作成

```:mcpを作成
$ mkdir mcp
$cd mcp

###paperMCをダウンロード

```
ここのHPから最新版のURLを確認
https://papermc.io/downloads
下記は#204の場合。

```:paperMCをダウンロード(必要に応じてURLは変更)
$ wget -O papermc.jar https://papermc.io/api/v1/paper/1.16.3/204/download
```

###start.shの作成
毎回コマンドを打つのは面倒なので.shを作成して起動を簡略化。

```:nanoでstrat.shを編集
$ nano start.sh
```

```:start.sh
 #!/bin/bash
 java -Xmx1024M -Xms1024M -jar papermc.jar
```
終わったらcmd+x - y -enterで保存。
このstart.shに権限を追加。

```:start.shに権限を付与
$ chmod +x start.sh 
```

###初回起動
実はpapermcのjarファイルを実行すると、自動で対応するバニラをダウンロードしてくれる。超便利。
ELUAの都合でDL後にすぐに止まる。

```:起動
$ ./start.sh
```

```:結果
Downloading vanilla jar...
Patching vanilla jar...
System Info: Java 1.8 (OpenJDK 64-Bit Server VM 25.265-b01) Host: Linux 5.4.0-48-generic (amd64)
Loading libraries, please wait...
[21:07:26 ERROR]: Failed to load properties from file: server.properties
[21:07:26 WARN]: Failed to load eula.txt
[21:07:26 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
```

###EULAの承認

ELUAを確認してfalse→trueに変更

```:eula.txtを編集
$ nano eula.txt
```

```:eula.txt　最後の行を編集
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#You also agree that tacos are tasty, and the best food in the world.
#Sun Sep 27 21:07:26 JST 2020
eula=true
```
終わったらcmd+x - y -enterで保存。

###サーバーの再起動と停止

```:起動
$ ./start.sh
```
以下のようなGUIが出てくれば成功。
![Screenshot from 2020-09-28 10-26-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/749215/fd3cec99-edd1-2572-edb7-c708d0093f9d.png)

起動を確認したら一度サーバーを停止。
コマンドの打ち込みはターミナルでもGUIでもどちらでもOK。

```:サーバーを停止
stop
```

###start.shの調整
各々の環境に合わせて調整してください。

```:start.shを編集
$ nano start.sh
```

```:start.sh 
#!/bin/bash
java -server -XX:+UseG1GC -Xms8G -Xmx8G -jar papermc.jar nogui
```
``-server`` と``-XX:+UseG1GC``はおまじない。
``nogui``でGUIを非表示に。

これでサーバーの立ち上げは一段落。

##ufwの設定
###目標
25565を開けてアクセス可能にする

###状況の確認
初期ならばufwは動いていないはず。

```:status
$ sudo ufw status
```

```:結果
Status: inactive
```

###ufwをアクティブに変更

```:enable
$ sudo ufw enable
```

```:結果
Firewall is active and enabled on system startup
```

###デフォルトをdenyに変更
sshで別PCから操作している場合はdenyにしないこと。
22番のポートも閉じてしまうため、ssh経由の操作を受け付けなくなるはず。

```:deny
$ sudo ufw default deny
```

```:結果
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
```

###ポート開放
25565を開ける
minecraftはTCPしか使わないらしいので厳密に言えば22565/tcpになるのかも。

```:25565
$ sudo ufw allow 25565
```

```:結果
Rule added
Rule added (v6)
```

###設定を確認
25565が開いていれば成功

```:status
$ sudo ufw status
```

```:結果
Status: active

To                         Action      From
--                         ------      ----
25565                      ALLOW       Anywhere                  
25565 (v6)                 ALLOW       Anywhere (v6)           
```

その後再起動してufwの設定を反映させる。
あとは各々ルータの設定をして完了。


##おまけ　ルーターの設定
私の環境下でのルーター側のポート開放の手順を残しておきます、

###環境
エレコム　WRC-2533GST2


###PC側のipとmacアドレスの確認

```:アドレスの確認
$ ip a
```

```:結果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet */8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether *macアドレス* brd *
    inet *ipアドレス*/24 brd * scope global dynamic noprefixroute enp2s0
       valid_lft 168517sec preferred_lft 168517sec
    inet6 */64 scope global temporary dynamic 
       valid_lft 600517sec preferred_lft 81552sec
    inet6 */64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 */64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
```
``2: enp2s0``の中の``link/ether``と``inet``の後ろにそれぞれMACアドレスとIPアドレスが表記されている。それをメモしておく。

###ルーターの設定
192.168.2.1に移動
wan→固定DHCP
![Screenshot from 2020-09-28 11-49-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/749215/b7d7f942-9d9d-fd20-e4a7-197d4c700d45.png)
設定して追加


セキュリティ→ポートフォワーディング
![Screenshot from 2020-09-28 11-50-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/749215/407445d9-7bae-3b7a-be61-7e2058e112d2.png)
設定して追加

###外部サイトを利用してポート開放を確認
minecraftのサーバーを立ち上げた状態で確認すること。
https://www.cman.jp/network/support/port.html
自分のグローバルIPとポート番号25565を入力、チェックを入れて実行
![Screenshot from 2020-09-28 11-58-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/749215/9b101703-38be-b9ce-2211-a313a7d43e25.png)
成功していればOK