Oracle Cloud Infrastructureで無料のMinecraft統合版サーバーを構築する
はじめに
こんにちは!この記事はMinecraftサーバ開発・運営 Advent Calendar 2021の21日目の記事です!
「マイクラのサーバーを建てたいけどお金がない...」
「MiRm[1]もサービス終了しちゃったし...」
そんな方におすすめなのがOCI: Oracle Cloud Infrastructure!
操作の手軽さなどは有料のConoHaなどのVPSには叶いませんが、一度構築してしまえば無料でそこそこ使えます。
本当は4Core 24GBメモリが無料で使えてしまうVM.Standard.A1.Flexが欲しかったですが、いつ見ても取れない[2]ので、今回は1コア 1GBメモリのVM.Standard.E2.1.Microを使います。
ちなみに無料枠だと2つ使えるので、DBとサーバーに分けることもできます。
サーバー構築
アカウント作成
まずこちらからOCIのアカウントを作りましょう。
登録方法はこちらの記事が参考になるはずです。
コンピュートインスタンスの作成
アカウントが作成できたらコンピュートインスタンスの作成です。
左上の三本線メニュー[3]をクリックし、「コンピュート > インスタンス」に進みます。
進んだらこのような画面になると思うので「インスタンスの作成」をクリックします。
「コンピュートインスタンスの作成」という画面になります。変えるべきところは以下の通りです。
インスタンス名
インスタンス名の初期名は「instance-yyyyMMdd-HHmm」ですが、用途に応じて変えましょう。
OS, Shape
BedrockDedicatedServerやPocketMine-MPはUbuntuが推奨されていますが、OCIのCanonical UbuntuはUFW(ファイアウォール)が正常に動作しない問題がある[4]ため、ここではOracle Linux(CentOSベース)をおすすめします。
Shapeは「VM.Standard.E2.1.Micro」を使います。
秘密鍵
OCIでは公開鍵認証を自動で設定してくれます。パスワードを入れる代わりに秘密鍵ファイルで認証するものです。「秘密キーの保存」をクリックして、わかる場所に保存しておきましょう。
終わったら左下の「作成」ボタンをクリックしましょう。
ファイアウォール設定(OCI側)
インスタンスを作成したのでもうSSHでサーバーに繋げられますが、今回はマインクラフトのサーバーを開けることを目的としているため、マインクラフト統合版のポート開放をします。
左上の三本線メニューをクリックし、「ネットワーキング > 仮想クラウド・ネットワーク」に進みます。すると、先程インスタンスを作成したときに自動的に作成された「vcn-yyyyMMdd-HHmm > subnet-yyyyMMdd-HHmm > Default Security List for vcn-20211203-1503」というふうにクリックして進んでいきます。
すると、画像のような「イングレス・ルール」を設定する画面になるので、「イングレス・ルールの追加」から追加します。以下の画像のように設定してください。
追加できたら、OCI側のポート開放は完了です。
ファイアウォール設定(VMインスタンス側)
VMインスタンスとのSSH接続
まず、インスタンスのIPアドレスを確認します。左上の三本線から「コンピュート > インスタンス」に戻りましょう。
「パブリックIP」の項目にインスタンスのIPアドレスが表示されているはずです。メモしておきましょう。
公開鍵暗号を使ったSSH接続についてはRLoginやTerminusがおすすめです。使用方法についてはそれぞれのホームページやこちらの記事を参考に接続してください。
なお、ユーザーは「opc」が自動的に作成されます。
VMインスタンスの初期設定
VMインスタンスにSSH接続できたらまずはパッケージを更新しましょう。
sudo dnf update -y
ファイアウォールの設定
Oracle Linuxはデフォルトでfirewalldが有効ではないため、以下のコマンドで有効にします。
# ファイアウォールを自動的に立ち上がるように
sudo systemctl enable firewalld
# ファイアウォールをデーモンとして起動
sudo systemctl start firewalld
さらに、以下のコマンドで先程OCI側のファイアウォールで開放したポートを開放します。
# 19132番のUDPポートを開放する
sudo firewall-cmd --add-port=19132/udp --permanent
変更したらfirewalldをリロードさせて、変更を適用します。
# 変更を適用する
sudo firewall-cmd --reload
以下のように19132/udpポートが開放できていれば成功です。
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: ssh
ports: 19132/udp # <= 追加された
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Minecraft統合版のサーバーを建てる
これで準備ができたので、サーバーを建ててみましょう。今回は公式サーバーのBDS: BedrockDedicatedServerを使います。MinecraftのEULAに同意した上でここからダウンロードしましょう。
# {version}はMinecraftのバージョンです。
# 上のURLで一度ダウンロードして、そのダウンロードURLを以下の様に打ち込みます
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-{version}.zip
# 例
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.18.2.03.zip
# zipの展開
unzip bedrock-server-1.18.2.03.zip
zipの展開までできたら「bedrock-server」を実行しましょう。
./bedrock-server
以下のように表示されればサーバーが起動したことになります。SSH接続のときに使ったIPでマインクラフトから参加してみましょう。
NO LOG FILE! - [] setting up server logging...
[2021-12-20 08:43:50:675 INFO] Starting Server
[2021-12-20 08:43:50:676 INFO] Version 1.18.2.03
[2021-12-20 08:43:50:676 INFO] Session ID e4a7c216-c388-4c02-b865-8560ec8273e8
[2021-12-20 08:43:50:679 INFO] Level Name: Bedrock level
[2021-12-20 08:43:50:684 INFO] Game mode: 0 Survival
[2021-12-20 08:43:50:684 INFO] Difficulty: 1 EASY
[2021-12-20 08:43:50:969 INFO] opening worlds/Bedrock level/db
[2021-12-20 08:43:54:829 INFO] IPv4 supported, port: 19132
[2021-12-20 08:43:54:829 INFO] IPv6 supported, port: 19133
[2021-12-20 08:43:55:663 INFO] Server started.
[2021-12-20 08:43:55:729 INFO] IPv4 supported, port: 35095
[2021-12-20 08:43:55:730 INFO] IPv6 supported, port: 54399
エラーが表示される場合
以下のようなエラーが表示される場合、libnslをインストールしてください。
./bedrock_server: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
# libnslをインストール
sudo dnf install -y libnsl
まとめ
OCIでマインクラフト統合版のサーバーを建ててみました。1コア1GBメモリの割にはかなり快適に動いている感じで、気になるのはdnfでパッケージを入れるときに少し遅いぐらい...っていう感じなので、是非活用してみてください。
もし分からないことがあれば
などのコミュニティで聞いてみてくださいね!
次回予告
明日(12/22)はpopkechupkiさんの「CloudburstMC/Serverのプラグインの作り方」
CloudburstMCは元NukkitXというNukkit(Java製の統合版サーバーソフト)の派生で、JavaEditionのサーバーソフトに近い使い心地になってます。JavaとかKotlin好きな方は明日の記事必見ですね!
明後日(12/23)は_yussy_さんの「クリスマスに向けてリア充を逃がさず爆破する弓を作る」
です!
リア充を逃さず爆破しましょう!いい心がけです!
その他のこれまでの記事はこちらで見てみてくださいね!
-
2021年10月13日を以てサービス終了した無料のMinecraftサーバーを提供するサービス。スマホからも操作できる、サポートが日本人、などの手軽さから、多くのサーバーが動いていた。 ↩︎
-
Terraformなどを使えば取れるらしいが、そこまでして欲しいわけじゃないので見送り。 ↩︎
-
ハンバーガーメニューって名前らしい。 ↩︎
-
https://docs.oracle.com/ja-jp/iaas/Content/knownissues.htm#ufw ↩︎
Discussion