完全無料でそこそののスペックのMinecraftサーバーを建てる


はじめに

完全無料(初期費用・月額費用無し)でそこそののスペックを持つMinecraftサーバーの建て方

結論

早速結論ですが、Oracle社が提供しているクラウドのOracle Cloud InfrastructureでVM.Standard.A1.Flexサーバーを使うことで実現可能

サーバーの建て方

OracleCloudアカウントを作成する

こちらの記事で詳しく解説されています

クレジットカードの登録は本人確認用で自分はデビットカードでも通りました。
Googleのようにアカウントが半強制的にアップグレードされて勝手に課金されていたなんてことがありますが(自分も前やらかした)、OracleCloudはアップグレードしなくても永久無料枠を使い続けられるのでトラブルを防げます

インスタンスを作る

管理画面からコンピュート→インスタンスにアクセスして「インスタンスを作成」ボタンをクリックします。
カスタムするのは「イメージとシェイプ」の項目で、
OSは今回はUbuntuを使います。
Change Shapeをクリックして、Ampere→VM.Standard.A1.Flexを選択します。

そうするとインスタンスにどれぐらいリソースを割り当てるか選択する項目が出てくると思います
今現在、armインスタンスのMAX無料枠は4コア、24GBARMなのでその分MAX割り当てます。
公開鍵の設定とかもしたほうが良いです(セキュリティ的に)

作成をクリックするとインスタンスが作成されて状態が「実行中」になればシェルに接続できるのでsshで接続してください

OSの設定

おまじない

$ sudo apt update
$ sudo apt upgrade

JREのインストール

$ sudo apt search openjdk-\(\.\)\+-jre$
$ sudo apt-get install (さっきサーチで引っかかったopenjdk-jreの最新バージョン)
$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 16.0.1+9-Ubuntu-120.04, mixed mode, sharing)

バックグラウンドで実行するために必要なscreen

$ sudo apt install screen

Minecraftサーバーのインストール

今回はSpigotのフォークであるPaperMCを使います

ダウンロードから最新バージョンをwgetなりsftpで転送なりしてサーバー側に送り込みます

まず最初に一度だけjava -jar paper-x.xx-xx.jarを実行してeulaに同意するファイルを生成します。
サーバーが終了されたらディレクトリ内にあるeula.txtを開いてeula=falseeula=trueに変更します。

起動用シェルスクリプトを作成して内容を以下のように編集します。

screen -DmS minecraft java -Xms20G -Xmx20G -jar paper-x.xx-xx.jar nogui
chmod +x ./start.sh
./start.sh
screen -r minecraft

これで実行権限を付与し、サーバーをスタートさせてサーバーのscreenセッションに接続します。

セッションから抜けたいときはCtrl+A、Ctrl+Dを押すとスクリーンをデタッチできます。
終了させたいときはscreen内でstopと打てば止まります
ここら辺はバニラ鯖と同じです。

ポート開放

今回の一番厄介なところです
OCIのファイアウォールは他VPSやクラウドと比べて面倒で、インスタンス自体にかかってるファイアウォールとOS自体に書けられているファイアウォールの2種類を開放してあげる必要があります。
OS側はiptablesが使用されています。

注意 間違ってもufwを使ってはいけません。バグります

まずOS側から

$ sudo iptables -I INPUT 5 -p tcp --dport 25565 -j ACCEPT
$ sudo /etc/init.d/netfilter-persistent save
$ sudo /etc/init.d/netfilter-persistent reload

次にCloudから
インスタンス名をクリックしてインスタンスの詳細を開きます。

プライマリVNICのサブネットをクリックします

Default Security List for~があるのでクリックします

イングレス・ルールの追加をクリックするとこのようなモーダルが開きます

以下のように設定します

項目
ステートレス オフ
ソースタイプ CIDR
ソースCIDR 0.0.0.0/0
IPプロトコル TCP
ソース・ポート範囲 (空欄)
宛先ポート範囲 25565

設定したらイングレス・ルールの追加をクリックして設定は完了です。

実際に接続してみよう

Minecraftを起動してマルチプレイヤーからダイレクト接続でサーバーのグローバルIPを入力してみましょう。
正しく設定されていると正常に参加することができます!
お友達にIPアドレスを教えるなりして良きマルチライフを!

ARMとは

今回使ったサーバーはARMCPUという一般のサーバー用CPUとは少し違うCPUを搭載しています
一般向けや普通のPCはx64またはamd64というアーキテクチャのCPUが搭載されているはずです。
ですが今回使ったサーバーはaarch64というARM系のアーキテクチャを採用しているインスタンスです。

ARMはよく組み込み機器やスマホ・タブレットにも採用されているアーキテクチャです。
そのため、このサーバーでは動かないソフトウェアや自力でビルドしないとこのアーキテクチャでは動かないソフトウェアが出てくる可能性があります。

おまけ:自分のサーバーのシステム図


VM.Standard.E2.1.microも低性能だが2インスタンス建てれるのでプロキシサーバーには丁度良い
帯域幅はそれほど強くないですが、同じリージョン内だとローカルネットワークで通信できるのでラグもそこまで酷くない