UbuntuPCにRealVNC ConnectとPaperMCを導入してみる

## 概要
1年ほど前に安いN100 PC(Lark Box Pro)を購入してLubuntuを導入しました。長期間放置していましたが、このLubuntuを身内でつかうマインクラフトサーバーを立てるために使いたくなりました。今回RealVNC(VNCサーバー)とPaperMC(マイクラサーバー)を設定したのでその手順をメモ書きとして記事にします。

<details>
<summary> 蛇足: LarkBoxにLubuntuを入れてデュアルブートする方法 </summary>

LarkBoxProにLubuntuをインストール(Windowsとデュアルブート)する際、特殊な操作は特にありません。普通のUbuntuと同様の手順でデュアルブート化できました。

- 1 Windows上でLinux用に好きなサイズの未フォーマットのパーティションを用意する
- 2 Lubuntuなどのイメージを焼いたUSBを指して BIOS設定を開き、USBからの起動を優先する
- 3 USBからLubuntuをLiveCDとして起動し、インストールウィザードを開く
- 4 "Windows BootManagerを残す" を選択し、パーティションを間違えないように気をつけてインストール
- 5 以降起動時に WindowsかLubuntuかを選べるようになる

https://ja.gouma.org/boot/How-to-Dual-Boot-Lubuntu-and-Windows/
https://note.com/sugiggy/n/ne0631ec9f933

</details>

## 用意したもの
- Lubuntu + Windowsが入った N100 PC (今回はWindows出番なし)
  - SSD 512GB
  - 有線LAN
  - Firefox
- モニタ
- キーボード
- マウス

## 1 RealVNC Connectを導入する

毎回マウス・キーボード・モニタをメインPCから繋ぎ変えるのが面倒なので、リモート操作できるように、まずVNCサーバーを導入することにしました。

<details>

<summary> RealVNC Connectについての解説 (長いため折りたたみ) </summary>

### RealVNC Connect とは何か?

https://www.realvnc.com/en/connect/

リモート操作をできる環境を簡単に導入できるSaaSです。ポート開放等の細かな設定不要で 外部から接続可能なVNCサーバを簡単に設定できます。手っ取り早く導入できることから5年ほど前から愛用しています。(恐らくラズパイに標準で内蔵されていた覚えがあります)

"VNC"と名乗るものの、サーバー側は恐らく汎用のクライアントと互換性がなく、接続に専用クライアントが必要です。(といっても、専用クライアントは Android/iOS/Windows/Linux/Macすべてに対応しているので、プロプライエタリなソフトウェアだと困るという人以外は、特に問題ないと思います。)

### RealVNC Connect のライセンスについて

https://www.realvnc.com/en/connect/plan/lite/

サイトには基本的に有料サブスクリプションしか記載されていませんが、個人利用専用で無料のLite (旧 Home Subscription)もひっそりと提供されています。2024年5月現在、Liteプランではアカウント管理者1人、PCグループ1つ、操作可能なPCを5台まで設定でき、操作元のクライアント数も無制限です。有料プランと異なり、ファイルが転送できない、接続時の認証がパスワードのみという制限がありますがそれ以外は制限なく使えます。

### まとめ

話が長くなりましたが、ようは個人用途では導入が楽でしかも無料で使える便利なVNC SaaSです。

</details>

### 1-1 インストール前にまずは更新
1年ほど放置していたのでバージョンアップが溜まっていました。
まずは更新しましょう。

```bash
sudo apt update
sudo apt upgrade
sudo apt install ca-certificates
```

### 1-2 RealVNC Connect "Server" をダウンロードする

下記リンクから debパッケージをダウンロードします。
間違えてクライアントをダウンロードしないように要注意です。

https://www.realvnc.com/en/connect/download/vnc/

### 1-3 RealVNC Connect Serverをインストールする

ダウンロードしたパッケージをそのまま開いてもインストーラが起動したりはしません。
パッケージと同じフォルダで端末を開いて、下記のコマンドを実行します。

```bash
// インストール
sudo dpkg -i VNC-Server-7.11.0-Linux-x64.deb
// RealVNC Serverの設定画面を開けない場合があるため インストール
sudo apt install xterm

// インストールしたVNCサーバーを自動起動に設定する
sudo systemctl enable vncserver-virtuald.service
sudo systemctl enable vncserver-x11-serviced.service
// インストールしたVNCサーバーのサービスを起動する
sudo systemctl start vncserver-virtuald.service
sudo systemctl start vncserver-x11-serviced.service
```

- 躓きポイント1:
  - デスクトップ右下に常駐タスクが表示され、いかにもそこから設定できるように見えますが、まだ開かないでください。そこから設定すると、セットアップウィザード完了直前に `administrative privileges are required for this operation` というエラーが発生して登録が完了しませんでした
- 躓きポイント2:
  - xtermが無いと 1-6の設定画面の表示で `unable to configure options for realvnc server` というエラーが発生します。

### 1-4 RealVNCのアカウント作成

RealVNC Connectをつかう際は、予めアカウント登録が必須なので下記ページからアカウントを作成してください (要電話番号)

https://manage.realvnc.com/en/auth/sign_up


### 1-5 RealVNC Connect Server を認証する

常駐しているRealVNCのタスクからはなぜか認証できないため、端末から直接ログインウィザードを呼び出す必要があります。GUIが出てくるため、メアドとパスワードでログインします。

```
sudo /usr/bin/vnclicensewiz
```

### 1-6 RealVNC Connect Server を設定する

ウィザードを直接呼び出した場合、なぜかサーバー接続時の認証系の設定が行われません。
そのため不足しているパスワード等を設定します。

```
- 右下のアイコンをクリックしてウィンドウを開く
- ハンバーガーメニュー -> options -> (ログイン中のユーザーパス入力)
- Securityタブ Authenticationに "VNC password" を選択
- Users & Permissionsタブ Standard user(user)の passwordをクリック
  - (今回導入したConnect Serverに接続する際のパスワードを設定)
- Apply で反映する
```

### 1-7 再起動する

念の為再起動しておきます。

### 1-8 操作したい側に RealVNC Connect Viewerを導入して接続する (完)
以上でサーバー側の設定が完了したので、あとはクライアント側を設定します。
クライアント側は、単に公式サイト配布のクライアントをダウンロードし、ログインするだけです。

https://www.realvnc.com/en/connect/download/viewer/

同一アカウントでログインしているクライアント一覧が表示されるため、クリックしてパスワードを入力すると接続できます。これにて設定完了です🎉

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254984/0a89a45d-281a-b8ca-5b98-1d85b241dce5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254984/742dfce9-b3fa-37d0-6257-17bcf51eef2c.png)

## 2 PaperMC (マイクラサーバー)を導入する

個人的な感覚としてマイクラ界隈ではもはや公式配布しているサーバーを直接使っているユーザーは珍しいです。ユーザーコミュニティで開発されている[Spigot](https://www.spigotmc.org/)、それを更に最適化した[PaperMC](https://papermc.io/)が拡張性やパフォーマンスの観点から、公式サーバーより 今は(今も)主流のようです。なので、PaperMCを導入します。

### 2-1 PaperMCをダウンロードする

https://papermc.io/downloads/paper

上記リンクからサーバーのjarファイルをダウンロードしておきます。

### 2-2 OpenJDK (Java21) を導入する。

https://docs.papermc.io/paper/getting-started

PaperMCの公式ドキュメントでは Minecraft v1.18.1+以降では Java21を推奨しています。

https://docs.papermc.io/misc/java-install

同じくPaperMCのドキュメントによると、特にHeadlessという名称が付かないjavaの導入が推奨されているようなので、これに従います。このドキュメントでは`Amazon の Corretto OpenJDK ディストリビューション`を前提に解説されていますが、個人的にAmazonはあまり好きでないので、Ubuntu OS標準の OpenJDKを導入します。

```
sudo apt install -y openjdk-21-jdk
```

### 2-3 PaperMCを起動してみる
javaが導入できたら、後は単にjarファイルと同じパスで下記コマンドを実行するだけです。
(メモリに余裕があるのでとりあえず8GBを割り当てます)

```
java -Xmx8G -Xms8G -jar paper.jar --nogui
```
(start.sh等のファイルを作っておくと便利です)

起動したら eula.txt等が生成されるので、eula.txtの`eura=false` を `eura=true`にしてもう一度起動し直します。


下記のように Doneが出たらサーバー起動完了です。
こうなると、LAN内の他のPCから、UbuntuPCのローカルIPアドレスを入れて接続すると動作等が確認できるはずです。

```
[20:01:12 INFO]: Starting Minecraft server on *:25565
[20:01:12 INFO]: Using epoll channel type
[20:01:12 INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity.
[20:01:12 INFO]: Paper: Using OpenSSL 3.0.x (Linux x86_64) cipher from Velocity.
[20:01:12 INFO]: Server permissions file permissions.yml is empty, ignoring it
[20:01:12 INFO]: Preparing level "world"
[20:01:12 INFO]: Preparing start region for dimension minecraft:overworld
[20:01:13 INFO]: Time elapsed: 255 ms
[20:01:13 INFO]: Preparing start region for dimension minecraft:the_nether
[20:01:14 INFO]: Time elapsed: 1107 ms
[20:01:14 INFO]: Preparing start region for dimension minecraft:the_end
[20:01:14 INFO]: Time elapsed: 92 ms
[20:01:14 INFO]: Running delayed init tasks
[20:01:14 INFO]: Done (3.778s)! For help, type "help"
```


## 感想
RealVNCのライセンス形態の確認、管理者権限でウィザードを実行しないと設定が完了しない問題、xtermが無いとServerの設定画面が開けない問題に手こずりました。PaperMCの方は特に苦戦せず、スムーズに動いてくれました。後はN100のPCでどれぐらいの負荷をさばけるのか様子見です。

## 参考

https://forums.raspberrypi.com/viewtopic.php?t=207519

https://qiita.com/karaage0703/items/9650e7aeceb6e1b81612#%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E6%A8%99%E6%BA%96%E3%81%AErealvnc%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

https://qiita.com/pochi4number/items/9ee5ac8506633b0d0776

https://qiita.com/nowokay/items/c1de127354cd1b0ddc5e

https://qiita.com/witchcraze/items/b179202216aab50b7090