追記 (2022/8/4)
OCIアカウントが突然勝手に停止されたという記事が公開されています。
自分も2つあるアカウントのうち1つ(ほぼ非アクティブ)がやられていました。
突然停止される可能性があるのでもしOracleCloudを使う際はリスクを承知の上で運用してください。
はじめに
完全無料(初期費用・月額費用無し)でそこそののスペックを持つ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=false
をeula=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はよく組み込み機器やスマホ・タブレットにも採用されているアーキテクチャです。
そのため、このサーバーでは動かないソフトウェアや自力でビルドしないとこのアーキテクチャでは動かないソフトウェアが出てくる可能性があります。