Featured image of post 自宅で動かすMinecraftサーバー

自宅で動かすMinecraftサーバー

概要

自宅に置いているサーバー機で動かしているサービスの中でも、一番リソースを食っているのはMinecraft関連です。紹介と自分の脳内整理を兼ねて、自宅サーバーで動かすマイクラサーバーの構成とかについてつらつらと書いていこうかなという感じ。ほぼ雑記的な内容です。

構成

Proxmoxを入れた物理サーバー機を置き、そこに各種VMを建ててマイクラサーバーを動かしています。各種VMはこんな感じ。

プロキシサーバー
サーバーソフト : Velocity
役割 : プレイヤーのログイン処理、統合版プレイヤーの認証など

メインサーバー
サーバーソフト : Paper
役割 : メインワールドとサブワールドの管理

ロビーサーバー
サーバーソフト : Paper
役割 : 作成予定。各種サーバーへのハブ的な感じにしたいけど、実用化するかは不明

テストサーバー
サーバーソフト : Paper
役割 : プラグインのテスト、あとは負荷のテストに使う

図

ユーザーの通る順序としては、プロキシサーバー(認証、転送先の自動選択)→ロビーサーバー(予定、ログインワールドの選択予定?)→メインサーバー / テストサーバー(実際のプレイ部分)という感じ。

メインサーバーはMultiverse-core(以下mv-core)を利用して複数ワールドを一括管理しているのですが、本来ならそういった複数ワールドもサーバーを分けるというのがvelocityの使い方な気がします。まあ自分としてはメインサーバーが何かしらの原因でダウンする時は他のワールド含めてダウンして欲しい(モデレーション的な観点から)ので、この構成でもいいのかなと思ったり。Hypixelのような大規模サーバーではしっかりとサーバーが分けられているので流石だな~と思っています。

与太話

正直自宅で動かす同時接続数が10人行かないようなサーバーならVelocityを使わずVMは1台で何の問題もないと思います。自分がわざわざこういった構成にしているのは、マイクラサーバーに無差別ログインを試みるbotによるログ流しの対策であったり、単純に興味があったからという理由があるからです。

まあ、ログインを試行してくる外国人というのは基本的にホワイトリストで弾けるんですが、ハッククライアントを使って名前を偽装してログインを試みる人なんかもいて結構恐ろしかったりします。そこらへんもUUIDでちゃんと弾いてくれるmojangに感謝をしないといけない。

利点ももちろんある

プロキシサーバーを建てていて助かったなと思ったのは、リアルつながりの友人とマイクラを一緒にやろうとなった時です。友人は僕がサーバーを動かせることを知っているので、基本的に僕がホストをすることになるんですが、通常のマイクラサーバーだと特定のプレイヤーだけを別ワールドに転送させてインベントリをメインと同期しないで~などなどの設定が面倒です。

プロキシサーバーはそこらへんがかなり楽ちんで、新しいワールドで友達とやりたいならProxmoxでVMを1台増やしてそこにマイクラサーバーを建てて、Velocityのコンフィグをちょろっと書き換えるだけでOKです。しかもみんなが飽きたらVMをオフにして無駄なリソースを消費しないようにできるのがいいなと思います。

前述の通りmv-coreやmv-inventoryを用いた複数ワールドの管理でも同じことは一応できると思います。しかし、友達が飽きたあとに、そのワールドだけ切り離してリソース削減をするためには、一旦サーバーをダウンさせて、ワールドフォルダを別ディレクトリに移動して……といった手順を踏む必要があります。飽きたらVMをオフにするだけ、またやるときはオンにするだけというプロキシサーバーを用いた管理に比べて、スマートではないですよね。

そしてこれらも、Dockerで管理したらもっとスマート(多分)

データ保護

一番大事だと思います。うちのサーバーのワールドはかれこれ6年ほど続いているサバイバルワールドなので、これが消えてしまうとなるとかなり精神的にくるものがありそうです。

オタクの壁など

以前は配布されているプラグインを使ってワールドが動いているのと同じVMにワールドとプレイヤーデータのバックアップを行っていました。しかし、サーバーを動かす中で停電を何度か経験したことで、もう少しバックアップの体制を強いものにしたいと考えるようになりました。特にうちのサーバー機はお金をかけずに組み立てたせいで、電源だったりSSDだったり色々と安いです。もちろん無停電電源装置なんて高級品もありません。

そこで色々考えた結果、バックアップを取ったものをクラウドストレージにアップロードするプラグインを自作すればいいんじゃないか!?ということになり作りました。→MCS3-Backup

今のところ完全に自分用で作ってしまったので、githubにあるものは動くものではないのですが、そのうち一般向けに配布もしたいなと思います。これを作ったことでS3 glacierにバックアップが保存されるようになり、精神衛生上非常に良いです。満足。実際に停電でSSDがぶっ壊れたりするかどうかはさておき、そういった不安を解消できたというだけで作った価値はあると思っています。

おわり

正直もっと話したいことはあるんですが、恐らく読んでいる人の大半は興味がないことだと思うので割愛します。電気代と初期投資費用なんかを考えると、自宅サーバーでマイクラを24時間動かすのはやめといた方がいいです。

マイクラサーバーを建てる以外にも何か別のサービスを動かしたい(自分の場合はブログやその他webサービス、あとはmisskeyというSNS)みたいな場合を除けば、恐らく安めのVPS借りたほうが得すると思います。完全に趣味の領域なので全員やれとは言いませんが、興味があるならやってみて損はしないことを約束します!

ここまで読んでくれてありがとうございました。良ければいいねボタン押してください。ではまた次回👋

Hugo で構築されています。
テーマ StackJimmy によって設計されています。