Oracle Cloudのx86インスタンス(1OCPU/メモリ1GB)の無料利用枠を使い、
その上でマインクラフトの統合版サーバ(Bedrock Dedicated Server)を動かしてる。
マインクラフト統合版サーバ(Bedrock Dedicated Server Ver.1.18.12)をOracle CloudとDockerで構築する
マイクラはやっぱ楽しい
Dockerで立てると、コンテナを再起動するたびに最新版にバージョンアップされるので更新が楽ちん。
遊び始めた頃は特に不満がなかったのだけど、
拠点に村人を増やしたり、自動化装置を作っていったりすると明らかにスペック不足で
非常に動きがモッサリ。
一人で遊んでいてもとてもストレスだった。
Oracle Cloudでは無料利用枠で4OCPU/メモリ24GBまでのAmpareインスタンス(Armベース)が使えるので、
統合版サーバがArm64対応してくれたら完璧だったのだけど、
メーカーとしては非対応。(そもそも統合版サーバ自体アルファテストの段階・・)
↓の記事ではQEMUというツールを使えばArmでもサーバが動くという記事も書いたけど、
QEMU自体が微妙という結末で、実際には使っていなかったのね。
【成功】マインクラフト統合版サーバ(Bedrock Dedicated Server)をOCIのArmプロセッサで動かしてみる
非公式なやり方ですがとりあえず動きました
同じようなことを考える人はたくさんいるようで、
「box64」というツールを使えばx86_64でしか動かないプログラムをArm64でも動かせるようにできるそうな。
既に実施されている方がいました。
AArch64 な Oracle Cloud Infrastructure で Minecraft統合版サーバーを動かす!【box86/box64】
今回の記事では64bit ARMプロセッサの上で x84_64 のバイナリを動作させることができる「box64」というソフトウェアを使用して、 本来 x86_64 でしか動作しないマインクラフト統合版のサーバー「Minecraft Bedrock Dedicated Server」を立ち上げてみます。 はじめに 「64bit ARM 4コア 24GB RAMのVMが無料!」 そんなニュースが出てから約半年が経過しようとしていますが、みなさん有効活用されてますでしょうか。グローバルIPがもらえることもあり、自分はVPNのサーバーとして使って自宅LANに入ったり自宅サーバーを公開したりするのに使っ…
他にも、JAVA版のサーバであればArmでも動くので、プラグイン入れれば統合版クライアントも遊べる。
JAVA版と言うよりも、純粋に統合版として遊びたかったので、
box64を使う方法にしようかなーと思っていたら、
既にDockerでコンテナ化に成功している人がいた。
https://jamesachambers.com/legendary-minecraft-bedrock-container/
GitHubはこちら。
https://github.com/TheRemote/Legendary-Bedrock-Container
公式版のサーバがベースに加えて、マルチアーキテクチャ、マルチインスタンス対応。
コンテナ再起動時に自動的にバックアップ。
Armアーキテクチャの場合はbox64を自動で利用する、などまさに至れり尽くせり。
メモリ1GBのサーバはあまりにも貧弱すぎたので、
AWSに引っ越ししようかと考えていた矢先に、このことを知ったので、
メモリ24GBのサーバに引っ越しをしてみた。
docker-compose
新しいサーバにもdockerを入れて、docker-composeを書くだけ。
基本はGitHub上にあるサンプルで良いのだけど、以下にしてみた。
version: "3.5" services: minecraftbe: container_name: minecraftbe image: 05jchambers/legendary-bedrock-container:latest restart: "unless-stopped" ports: - 19133:19133 - 19133:19133/udp - 19132:19132 - 19132:19132/udp volumes: - /docker/minecraftbe:/minecraft stdin_open: true # docker run -i tty: true # docker run -t entrypoint: [ "/bin/bash", "/scripts/start.sh" ] environment: PortIPV4: "19132" PortIPV6: "19133" TZ: "Asia/Tokyo"
利用するポート番号は19132,19133とデフォルトのまま。
あとはいつも通り、OCIのVCNとサーバのiptablesで必要なポート解放。
クライアントでサーバの接続先を指定すれば無事に接続できた。
ただ、これだと新しいワールドを作っただけなので、
以下の方法でデータ移行を行う。
データ移行
データ移行も超簡単。
サーバの設定もワールドも含めて全部移行したい場合は、
新旧のコンテナをそれぞれ一旦停止させて、
永続ボリューム配下のファイルを丸ごとコピーだけ。
もう少し具体例。
どちらも"/docker/minecraftbe"にコンテナの永続ボリュームをマウントしているとすると、
以下のコマンドで移行データを作成。
tar zcvf /docker/minecraftbe ~/minecraftdata.tgz
生成されたtgzファイルを新しいサーバにSCPなどでコピーして解凍。
cd /docker/minecraftbe tar zxvf minecraftdata.tgz
あとはコンテナを起動すればOK。
メモリ使用率等の比較
OCI上のメトリック情報に使用率が顕著に表れていた。
まずはメモリ1GBのサーバ。
常時90%ぐらい使用していたけど、コンテナを停止した途端メモリ使用率がガクンと落ちた。
一方でメモリ24GBのサーバ。
コンテナを起動して少し増えたけど、まだまだ余裕w
新しいサーバでは、
一番処理が重いであろう場所でしばらく待機していたけど、
特にカクつくこともなく普通に動いていた。
動作上も特に問題ないっぽいので、これで当分は快適になるかな?
しばらく様子見たいと思います。
0 件のコメント:
コメントを投稿