純規の暇人趣味ブログ

手を突っ込んで足を洗う

これからマイクラ鯖を建てたい人に言いたい事

      2016/12/07    HimaJyun

こんにちは、AMiTサーバを運営している@HimaJyunです。

先日、私の運営するサーバが開始から800日を突破したので、この800日で得られた知見などを共有しようと思います。

また、あくまで「こうした方が良いよ」と言う方針を提案する記事であって、「こうするんだよ」と言う方法を書いてある記事ではありませんので、各項目、どうすれば実現できるかはググって下さい。

あと、見ての通り、超長い記事です、忙しい時には読まない方が良いでしょう。

目次

最初に

今回の記事の内容は公開サーバで24時間動かす場合の記事です。

ホワイトリストで動かしたり、生放送中のみ、などの場合は必ずしもこの通りとは限りません。

また、これはあくまで私の考え方です。

みなさんが考えている事とはきっと違う所があるでしょうから、場合によっては否定的な意見に見えるかも知れませんが、ご了承下さい。

みなさんから見ればどこの馬の骨だか分からない様な奴が書いている記事です、クソ真面目に受け取ったりせずに「そう言う物なのか」程度でご覧下さい。

自己責任

今更言うほどのモノでも無いかも知れませんが、サーバ運営は当然ながら自己責任です。

この記事を見て、真似して、失敗したとしても責任は取れませんのでご了承下さい。

Googleと仲良くなろう

キツい言い方に変えると「ググれカス」です。

いちいち人に聞いていてはいけません、他人に聞くのは最後の手段です。

英語が読めないと思えばGoogle翻訳を使えば良いですし、エラーが出たのならば調べれば良いのです。

起こり得る問題の殆どは調べれば解決します、毎度毎度人に聞いていては始まりませんよ。

確かに「聞くは一時の恥、聞かぬは末代の恥」と言うことわざは存在しますが、同時に「天は自ら助くる者を助く」と言うことわざも存在します。

私のサーバ

所謂宅鯖ですね、気になる方も多いでしょうからスペックとやらを……

Minecraft

実はあんまり高性能じゃないです。

  • OS:Linux(Ubuntu Server)
  • CPU:4Cores(Xeon X3360)
  • RAM:12GB(CFD DDR3)
  • Software:Spigot
  • その他:RAMディスク稼働、MySQL(データベース)同居、IntelNIC使用

メモリが中途半端に12GBなのはお金がないからです。(あと買い足したけど何故か認識しなかった)

Webサーバ

直接的に関係がある訳ではないですが、一応

  • OS:Linux(Ubuntu Server)
  • CPU:4Cores(Xeon X3360)
  • RAM:8GM(忘れた)
  • Software:nginx
  • その他:MySQL(データベース)同居、常時SSL、HTTP/2対応

Let's Encrypt製のSSL証明書を利用した暗号化接続とHTTP/2に対応しています。

監視(Munin)サーバ

各サーバを監視するためのサーバです。

  • Hardware:Raspberry Pi3
  • OS:Linux(Raspbian)
  • CPU:4Cores(ARM Cortex-A53)
  • RAM:1GB
  • Software:Munin
  • その他:グラフ描画をFastCGI化、rrdcachedあり、HDD稼働

これとは別にもう一つRaspberry Pi3で出来ているGitサーバがありますが、今回は関係ないので割愛

回線

ただの光回線です。

  • 種類:光1Gbps(実測30~100Mbps)
  • Ping:国内20ms前後
  • 契約:固定IP

何が必要?どれだけ必要?

サーバのスペック、環境周りの事ですね、私もちょくちょく聞かれます。

個人的な経験則に基づいているので、私の主観を多く含みますが、だいたい以下の通り

専用機を用意しよう

24時間動かすのであればサーバは必ず専用機を用意しましょう。

ここで言う専用機とは「サーバ専用で動かすための械」の事です。

サーバとして売られているマシンを買えと言う訳ではありませんのでご安心を、ラックに収める必要もありません、普通のケースで大丈夫です。

要は「サーバ専用に1台PCを割り当てろ」と言う訳です、24時間動かすなら絶対条件です。

これが不可能な場合はレンタルサーバなどを視野に入れましょう。

サーバマシンは下にスノコを敷くと通気性アップですよ、私のサーバは全てそうなっています。

OSはLinux

別にWindowsをアンチしたい訳ではありません、むしろ私もWindowsユーザです。Windowsでないと東方が動きませんからね。

しかし、サーバは別です、素直にLinuxを使いましょう、OSが動作するために必要なリソースが少なくて済みます。(すなわちMinecraftに割り当てられるメモリなどが増える)

また、後々お話しするスペックもLinuxでの場合です。

加えて、難しい話ですが、Linuxですとepollと言う物が使えます、Windowsではepollは使えません。

epollの素晴らしさは説明しても理解して頂けないと思うので端折るとして、これを使うととても効率良くサーバが動作します。

Ubuntu ServerとCentOS、どちらが良いかと言われれば、どちらでも良いです、出来る事は同じです。

私的な感情を挟むとすればUbuntuですかね、基本的にCentOSよりパッケージのバージョンが新しいので。

過去に「Linuxで(とりあえず)Minecraftサーバを動かす」と言う記事を書いています、参考にして下さい。

Linuxで(とりあえず)Minecraftサーバを動かす

Windowsではダメ?

ダメです。

クライアント用(すなわち普通の)Windowsはライセンス上、同時接続は20人までとなっています。

それを超える同時接続は規約違反です、規約を守らない奴が考えたサーバルールを誰が守るのでしょうか?

そもそもクライアント用Windowsのサーバ目的での利用は認められていません。

Windows10ライセンス条項の「2.c.v」の項目をご覧ください。

WindowsServerはとても高価ですが、Linuxは無料です、よほどの事が無い限りこちらを利用するべきだと思います。

必要なスペックは?

どのくらいの規模になるのかと言った所ですが、Minecraftだけならば大した性能は必要ありません。

個人的な考察になりますが、私の考え方を参考までに……

ちなみに私のサーバでの過去最高同時接続数は20人です、実際もっと行けるとは思います。

CPU

私のサーバのCPUはXeonですが、これはXeonと言う銘を打ったただのCore2Quadです。

これでとりあえずは充分な性能です、i7なんて(よっぽど大規模でも無い限り)オーバースペックです、性能を上げる事より先に知名度を上げる事に力を入れましょう。

ですので、CPUはCore2DuoやCore2Quadでも大丈夫です。

もちろん、良い物が使えるのであればそちらの方が良いですけども

メモリ

当然ながらメモリは多ければ多いほど良いです。

データはRAMディスクに置く事になりますし、サーバ本体の稼働にも必要なので最低でも4Gは欲しいです。

8Gあればとりあえず充分、16GBもあれば余裕です、無駄な事(要らないマップを多数追加……など)をしない限りは捌ききれます。

メモリは後から買い足していく事が簡単ですので急ぐ必要はありません、足りなくなったら追加して行きましょう。

買い足す時は4GBを2本買うのではなく、8GBを1本買う様にしましょう。

1本の容量が少ない物を沢山刺すスタイルだと、後でもっと足したくなった時にスロットが足りなくなりますよ

ディスク

お好きな様にどうぞ、OS用とバックアップ用、各500GBもあれば足ります。(バックアップ用は1TBほどあると良いかも知れません)

個人的にはWDの赤がおススメですね。

省電力の緑が手頃かと思いますが、仮に緑を使う場合は殆どの場合「IntelliPark」と言う省電力機能を無効にしておかないと凄まじいスピードで寿命が縮みます(実体験)

SSDもかなり低廉化が進んだので悪くはないでしょう(良いとは言っていない)

ただ、MinecraftのサーバはSSDの苦手項目、寿命が縮む原因となる「書き込み」が多数発生します、データベースなんかを載せれば当然ながら書き込みは増えます。

RAMディスク+HDDでも十分問題ない性能を発揮できますので、無理にSSDにする必要はないでしょう。

SSDもHDDも壊れないのがベストではあるのですが……形あるものは必ず壊れる、重要なのは「壊れた時にどうするか?」です。

例えばRAIDを組んだり、厳重なバックアップ体制を整える事をおススメします。

あ、そうそう、RAIDを組む時は、少し時期をずらしたり、別の店舗から購入したディスクを使用するようにしましょう。

同じ時期に同じ店舗から同じ製品を複数買うと、同じロットで製造された製品に当たる確率が高いです。

同じロットで製造された製品でRAIDを組むと、ほぼ同時に壊れる可能性が跳ね上がり、せっかくのRAIDが意味を成しません。(この事を教えてくれる人、案外居ないんですよね……前に見掛けたSSD5枚使ってRAID組んだ人……ご愁傷様。)

グラボ

要りません、サーバの動作にグラボは関係ないです。

回線

多くの人の悩みの種はマシンよりも回線ではないでしょうか?

まぁ、近頃はレンタルサーバもあるので宅鯖に拘る必要もないのですが、一応書いておきましょう。

回線は光で

稀に「WiMAXなんですけど……」と言った方が居ますが、サーバは有線接続の光回線でやるべきです。

その理由は応答速度です。

Minecraftサーバはその特性上、「ブロックを置いた」、「ブロックを壊した」と言う非常に小さなデータ(パケット)が頻繁に往復する様になります。

国内での有線接続だとだいたい20ms、1秒の1/50の応答速度です。(ついでに言うと約1.25フレーム)

ですが、これがWiMAXなどの無線通信になると100msを余裕で上回ります。(約6.25フレーム)

仮に100msだとして、その速度差は実に5倍です。

1往復するたびに5倍の差が出ます、これがラグの原因になります。

ラグいサーバに人が集まりませんよ

出来れば固定IPを

IPアドレスはいわば「ネット上での住所」です、相手の元へたどり着くために必要な情報です。

一般的な回線の契約だと、動的IPと言ってグローバルIPアドレスが時間経過などで変わってしまうプランです。

普通の利用であればそれで良いのですが、サーバはIP=住所が変わると相手が接続出来なくなってしまいます。

DDNSと言う、ドメイン(jyn.jpなど)に対して紐づけされるIPを毎回更新する技術もありますが、接続をより安定させるためには固定IPがおススメです。

DDNSを利用したとしても、紐付けされている新しい情報が書き換わるまでには時間が掛かります。(この事を一般的に「浸透」と言います、もちろん浸透するまでは接続出来なくなります。)

ただし、固定IPは月額料金に追加でいくらか(場合によってはバカ高い料金が)必要になるので、財布とご相談なさって下さい。

UPSで電源喪失に備えよう

「うちブレーカー落ちないから」と言った考え方は良くありません。

ディスクの項目でも言いましたが、「落ちるか落ちないか」では無く、「落ちた時にどうするか」を考えるべきです。

サーバをより安定して稼働させるためにはUPSの導入を検討すると良いでしょう。

UPSは電源が喪失した時にバッテリ給電に切り替えて電子機器を落とす事無く稼働させることが出来る代物です。

ただし、あくまでUPSは電源が落ちた際にデータを保存したり、ブレーカを上げに行く、規模によっては発電機を始動するまでの時間稼ぎのための物です。

決して「電源が無くても動き続ける魔法の道具」ではありません、過信し過ぎは厳禁です。

ポート開放

「ポート開放が出来ない」、良く聞くお問い合わせですね。

ポート開放とは何かを簡単に説明すると……

普通のLANにはファイアウォールと言う物が居て、そいつが全ての送受信されるパケット(データ)を仕切っています。(手っ取り早く言えばルータ)
to-begin-minecraft-server-001

仮にサーバが192.168.1.5、ルータが192.168.1.1だとします。
to-begin-minecraft-server-002

「ルータ<-ユーザ」のパケットは基本的に(返信を除いて)全て破棄されます。
to-begin-minecraft-server-003

ここで設定するのがポート開放です。

ルータ側に「ポートxのパケットはyに送って下さい」と言う設定がポート開放だと思って下さい。

今回の場合は「ポート25565(Minecraft)のパケットは192.168.1.5に送って下さい」と設定します。
to-begin-minecraft-server-004

すると、「ユーザ->ルータ」のパケットがポート25565で送られてきた際に、ルータが「このパケットは192.168.1.5に送れば良いのね。」と、サーバへと送ってくれます。
to-begin-minecraft-server-005

そして、サーバがそのパケットの内容に返信する。

そうする事によって「サーバ<=>ルータ<=>ユーザ」の形が成り立ち、サーバへの接続が成立します。
to-begin-minecraft-server-006

ただし、上記の説明は簡単な説明です、実際はもう少し複雑です。

また、レンタルサーバとかになると、必ずしも上のイラストの通りとはならないでしょう。(最も、レンタルサーバであれば私以上のスキルを持った専門家のサポートを受けられるでしょうが……)

それらを踏まえて、ポート開放が上手く行かない理由をいくつかご紹介します。(細かい説明は行いませんので、Googleと仲良くして下さい。)

Hamachiは使わない

その前に、ポート開放が出来ないからと言ってHamachiを利用するのはイケない選択です。

例えば、お友達同士でなら構わないかも知れませんが、これを第三者に公開するなど以ての外です。

説明してお分かりいただけるか分かりかねますが、HamachiはVPN(バーチャルプライベートネットワーク)を構築します。

VPNはお互いを仮想的にローカル接続にしているようなモノだと思って下さい。

要は、お互いのPCをLANケーブルで繋いだ様な物です、セキュリティが甘い状態になりがちです。
to-begin-minecraft-server-007上のイラストの通り、余計な(悪意のある)パケットから鯖を守っていたルータがなくなってしまう訳です。

相手のPCにあるファイルなどをネットワークファイル共有を利用して操作したり、アプリケーションの脆弱性を突いて攻撃したり……

とにかく、クラッカー達が私でも知らない様な様々な手段を使って攻撃してきます。

確かにポート開放も危険性が無いかと言えば答えはNOですが、Hamachiに比べると遥かにマシです。

究極の回答ですが、Hamachi鯖に人は集まりません。

二重ルータ

二重ルータとは「サーバ<=>ルータ2<=>ルータ1<=>ユーザ」となってしまっている事です。

こうなると、ルータ1までは良くてもルータ2が再度パケットをチェックして破棄してしまいます。
to-begin-minecraft-server-008
(上のイラストではルータ2(左側)まで届いている風に描かれてありますが、実際にはルータ2まで届いていない事が殆どでしょう)

解決方法としては、ルータ1に送り先のIPアドレスとしてルータ2(ルータ1->ルータ2)を指定し、

ルータ2からサーバへ送って(ルータ2->サーバ)、「ルータ1->ルータ2->サーバ」を成立させるか、

もしくは、二重ルータを解除する(ルータ2をブリッジモードなどにする)事です。

と言うか、終端のルータ(この場合ルータ1)にサーバを接続すればそのような事態は起こりません。

終端に繋いだ方が応答速度も早いためおススメです。

ファイアウォール

ポート開放がきちんと出来ていても、PC内にあるファイアウォールが接続を拒否してしまう場合があります。

ファイアウォールの設定を変更して、ポート25565のパケットを許可する様にしてみて下さい。

あと、Windowsでハマりがちですが、ネットワークが「パブリックネットワーク」になっているとどんなに設定してもポート開放は出来ませんよ、「プライベートネットワーク」に切り替えて下さいね。(だからLinuxを使えと……)

ローカルIPがDHCP取得になっている

ポート開放は端折って説明すると「特定のパケットをどのローカルIPに送るか」の設定です。

このローカルIPをDHCPで取得しているとローカルIPが毎回変わってしまいます。

送り先は変わっている(サーバは192.168.1.6)のに、送り先の設定は変わらない。(ルータは192.168.1.5に送ろうとする)

そりゃ、接続出来ませんよね。

グローバルIPを割り当てしてくれない契約

マンション回線などの廉価な回線にありがちです。

どう頑張っても開放できません、回線契約を変更する必要があります。

ひとまず私の思い付く限りだとまずこんな感じですかねぇ……

とは言え、ここは初歩の初歩なので出来ないと話になりませんし

RAMディスクで動かそう

Minecraftはマップを「チャンク」と言う16x16x256の計65536ブロックで小分けにして処理しています。

このチャンクはプレイヤーが近付けばロードされ、離れるとアンロードされます。

これらのチャンクは、非常に細かく何度も何度も読み書きを繰り返されるため、ディスクへのアクセスが遅いとラグの原因になりえます。

そのため、MinecraftのサーバはRAMディスク上に配置するのが一般的です。

RAMディスク、とても難しいイメージをお持ちの方も多いかと思います。

確かにWindowsでRAMディスクを作成するのはとても厄介ですが、LinuxであればOSが標準でサポートしているため、とても簡単にRAMディスクの用意が出来ます。

RAMディスクに関しては過去に「マイクラ鯖に持って来い!!、LinuxでRAMディスク!!」と言う記事を書いています。

マイクラ鯖に持って来い!!、LinuxでRAMディスク!!

とは言え、「HDDに置いてるけど特に問題ないよ」と言う話も聞いた事ありますので、実際にRAMディスクだとラグが減るのかどうかは分かりません。

どなたかご存知でしたら如何ほどの物か教えて下さい。

サーバにはSpigotがおススメ

サーバソフトウェアには、よほどの理由でもない限りはSpigotを利用するのがおススメです。

SpigotはBukkitと言う、簡単に言えばプラグイン(いわゆるMOD)が使えるサーバを更に改良したもので、より軽量に動作します。

例えば、ドロップしているアイテムをまとめたり、TNTの起爆処理を小分けにする事で軽くしている様です。

これを使えば、よほどの事が無い限りはサーバが突然落ちる事は無いでしょうし、落ちた際にも起動スクリプトを自動で開始して再起動する事も可能です。

また、荒らし対策の殆どはプラグインを利用する必要があります。

例えば、ユーザが置いたり壊したりしたブロック類を全てデータベースに記録して、荒らしユーザの破壊を巻き戻したり

チェストに保護を掛けるプラグインを使って、荒らしの窃盗を防いだり。

権限レベルを設けて、権限に応じて出来る事を制限(お初はTNT使用不可、など)、時間経過で権限を昇格したり

土地に保護を掛けて売買する事も可能ですよ。

もちろん、売買と言うからにはお金やお店の概念を追加する事も可能です。

複数の世界を追加していわゆる「資源マップ」を提供したり

Dynmapを使えば、リアルタイムマップの提供なども可能です。(Dynmapはメモリバカ食いするので8G以上を推奨)

Spigotのセットアップに関しても過去に「[Minecraft]1.10対応のSpigot(Bukkit)を用意する」と言う記事で取り扱いました。

[Minecraft]1.10対応のSpigot(Bukkit)を用意する

JVM起動オプション

JVM(JavaVirtualMachine:Java仮想マシン)はいわゆるJavaの実行環境です。

Ubuntuであれば「sudo apt-get install openjdk-8-jre」などでインストールするかも知れません。

このJVMの起動オプション、クラフターの方達が相手でしたら「メモリ割り当ての変更」とでも言った方が良いでしょうか?

普段は気にする事無く過ごしているかもしれませんが、より安定した動作を可能にするためにはとても重要な項目です。

とは言え、これらの項目に関してはJavaの知識も必要になってきますし、案外難しい項目です。

私が利用している設定を置いておくので、参考までにどうぞ。

以下がその設定です、各環境に合わせて調整して下さいね。
(ちなみに、G1GCを利用しているので要Java8です。)

-server -Xms8G -Xmx8G -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+UseTLAB

簡単に説明すると、「Xms,Xmx」がメモリ割り当てです、両方を同じ値にすると少し早くなるらしいです。

より高度で変態的なチューニングを行いたい方はGoogleさんと仲良くすれば良いでしょう。

サーバアイコンを設定しよう

ロゴマークはとても重要です。

例えば、私の運営するAMiTサーバでは以下の様なアイコンが設定されています。
to-begin-minecraft-server-009

サーバアイコンはserver.propertiesなどと同じディレクトリ(フォルダ)に「server-icon.png」と言うファイル名で入れておくだけで大丈夫です。

この画像は64px*64pxのPNG画像で、透過なども効きます。

有るのと無いのではサーバの印象の残りやすさや覚えやすさ、識別のしやすさなども段違いなので必ず設定しましょう。

最悪、自分のスキンの頭でも良いんじゃないですかね、何もないよりかは……

管理/運営

スラム街でも目指したりしない限りは鯖建てして放置ではいけません、管理が必要です。

と言うより、鯖建てはスタートラインに立つために必要な作業であり、実際の勝負はそこから先です。

私自身完璧な運営が出来てるとは言い難いですが、一応参考にしてみて下さい。

サーバのテストは仮想環境で

サーバに新機能を追加したりする際には必ずテストしてから導入しましょう。

テストの前にテスト勉強をするのと同じです。(ちなみに私はテスト勉強一切しないタイプです、クソ野郎ですね。)

テストを行うためには、より実際の環境に近い状態を再現する必要があります。(環境に依って発生するエラーが無いとは言い切れませんからね。)

そこで登場するのがVirtualBoxです。

詳しい使い方などはGoogleさんと仲良くして頂ければと思いますが、このソフトウェアを使うとWindows上で他のOSを実行する事が出来ます。

これでWindows上でサーバと同じ環境を動かし、実際にテストするのです。

仮想環境であれば失敗すれば消してやり直せば良いだけですからね。

絶対に実機の上でテストなんてしちゃダメですからね。(ちなみにですが、実機の上に仮想環境でテスト鯖を構築、なんてのはただの無駄です、普段使いPCでやれば良いことです。)

バックアップ体制を整えよう

さて、脳味噌の主成分がスポンジで構築されていたり、前頭葉が破壊されていたりでもしない限りは、バックアップの重要性は既におわかりだと思います。

今までの話を真面目に聞いて、理解出来た方であれば、サーバOSはLinuxを利用する事に決めたと思われます。

Linuxを使えばcronと言うモノを使って定期的に処理を実行する事が可能です。

それらを駆使して、サーバのバックアップを出来る限り細かく保存する様にしましょう。

私の場合ですが、マップのバックアップを1時間毎に7日分。

全体のバックアップを1日置きに180日(約半年)保存する様にしています。

定期再起動をさせよう

いくら24時間動かすサーバだからと言っても、年中無休で一切無停止稼働させるのは危険です。

プラグインに依っては、どうしても仕様上、時間経過でメモリを徐々に圧迫して行く物もあります。

より安定した動作を可能にするためには1日1回、決まった時間に自動で再起動するように細工するのがオススメです。

私のサーバでは毎朝4時に停止させて、そこからバックアップ処理が走り、完了次第再起動します。

Ubuntuに標準でインストール済みのcronとscreenを利用して、プラグインを使わずに自動化しています。

もちろん、プラグインで自動再起動しても良いでしょう。

cron+screenでの再起動に関しては「Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する」で解説しています。

Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する

Japan Minecraft Serversに登録しよう

Japan Minecraft Serversとか言うのがあります、公開サーバであればとりあえず登録しておきましょう。

ここに登録してあるのを見て来る人も沢山居ます、むしろそれが殆どです。

(もちろん、ひっそり楽しみたいからあえて登録しない、と言うのも良いでしょう。)

最初の方は誰も来ない

当たり前ですね。

最初の方は1週間で出入りした人の数が指を半分切り落とされた片手でもまだ余るくらいしか来ません。

それが普通です、初っ端から何十人も来る訳ないです。

ここで幻滅して辞めてしまう人も多いかも知れませんが、Webサイトでも更新しながら地道に待ちましょう。

Webサイトを用意しよう

Webサイトを用意しましょう、これがあるかないかではかなり遊びやすさに差が出ます。

Webサイトにサーバに入った際に守って欲しいルールやチュートリアルなどを書くのですよ。

そうすればサーバに入って来た方達も迷いませんし、鯖缶もイチイチ説明する手間が省けます。

どこかの無料ホームページスペースやWikiを借りても良いですし、WordPressを使うのも良しです。

個人的には、@WikiとかSeesaaWIkiを用意すれば良いと思います。(そしてユーザ達に編集してもらいましょう)

たまにとてもお洒落なデザインのサーバサイトがありますね、お洒落なのは結構ですが、情報が見つけにくくなっていませんか?

洒落たデザインなのは結構ですが、トップページだけにするとか、ほどほどにしましょうね。

お洒落なせいで読み込みが遅くて情報が探し辛い、なんてのは本末転倒、ユーザに優しいとは言えませんから

運営の手間を減らす様に工夫しよう

私が失敗したポイントです。

つい、自分のサーバを良くする事ばかりに気を取られ、手間やコストを下げる事を忘れてしまいました。

結果として、今、自分自身に降り注ぐ莫大な運営コストと管理の時間に悩まされています。

多機能であれば良いと言う訳ではありません、自動化や住民同士で助け合う仕組みなどを作り、少ない手間で動く様にしましょう。

実装しておきたい機能

多くの場合はプラグインが使えるサーバを利用する事になると思います。

せっかくプラグインを使えるのならば、実装しておきたい機能をご紹介しますので参考にしてみて下さい。

資源マップを用意しよう

まず最初にこちらをご覧下さい、私の運営しているAMiTサーバの資源マップの写真です。
to-begin-minecraft-server-011to-begin-minecraft-server-012

この様に、人が増えれば増えるほどより多くの資源を必要とする様になるため、資源マップは必須です。

MultiWorldなどの複数マップを管理出来る様にするプラグインもあるため、資源マップは必ず用意しましょう。

そして、メインマップでの資源採掘は禁止しましょう。

資源マップがあるにも関わらず勝手に掘りまくる奴も居るので。

/home系プラグインを導入しよう

マルチプレイでは、オンラインのユーザ全員がベッドで寝ないと寝られない=リスポーン地点を変えられない仕様です。

このままではユーザにとっても不便ですし、中にはいちゃもん付けてくる奴も居ます(実体験

そこで登場するのが/home系のプラグインです。

これらのプラグインを使うと/sethomeで登録した場所に/homeで移動出来る様になります。

でもって、大抵の/home系プラグインには、ベッドをクリックするとそこをリスポーン地点に変更してくれる機能が付いています。

これを使って、複数の人が居て寝られない状況であってもリスポーン地点を変更出来る様にしましょう。

アクションログとロールバックを実装しよう

もしサーバが荒らされたとしたらどうしますか?

毎度毎度サーバを止めてバックアップから復元するのですか?

それとも、鯖缶らで手直しするのですか?

どちらにせよ、とても非効率な事ですね。

そこで私がおススメするのは「HawkEye Reloaded」と言うプラグインです。(他に、CoreProtectと言う物もあります。)

こちらのプラグインを使えば、サーバ上でのユーザの活動を記録し、問題があった際にロールバックが可能です。

もちろんサーバの停止などは必要ありません。

MCBansを導入しよう

確かに、サーバが荒らされても大丈夫な体制を整えるのは重要ですが、最も重要なのは荒らされない様にする事です。

そのためには、他所で頻繁に荒らしまわってる曰く付きユーザの接続を拒否してしまうのも有効な手立てです。

接続を拒否してしまうのは可哀想かと思うかも知れませんが、どこかで荒らしを行ったユーザは必ずまた別の場所で同じ事を行います。

可哀想だと思う必要はありません、荒らすのが悪いのですから。

考えて下さい、自分のサーバを使って自分のサーバを荒らされてるんですよ?

サーバを維持するお金は自分が出しているのですよ?、すなわち自分でお金を払って自分のサーバを荒らしてる様なモノですよ、絶対に阻止したいですね。

そのためにはMCBansと言うプラグインがとても有効です。

公式サイトでアカウント登録を行い、APIキーを取得する必要がありますが、面倒な事では無いです、必ず利用しましょう。

追記:ただ、ここ最近証拠画像サーバが落ちたまま数か月復旧しなかったりと先行きが怪しいので、導入すればそれでOKと言う訳には行かなくなってきました。

WorldGuardを入れよう

MCBansが入っている状況にも関わらず荒らしやがる奴も居やがります。

かと言ってそれを毎度毎度ロールバックするのもただひたすらに手間でしかありません。

荒らされない様にするためには建物を保護出来る様にしましょう。

建物を保護出来る様にするためにはWorldGuardがおススメです。

このプラグインを使えば、各ユーザで好きな領域を選択して保護が可能です。

選択機能の実装にWorldEditが必要なので合わせて導入しましょう。

チェストロックも合わせて導入しよう

WorldGuardでもチェストの保護は可能です。

しかし、WorldGuardはあくまで「予め保護を掛けた場所」のみ有効になります。

チェストなどは保護の無い所に置く事も良くありますし、窃盗などで狙われる事は更に良くあります。

窃盗から守るためには、WorldGuardとは別にチェストにもロックを掛ける様にしましょう。

LWCを利用する事でチェストにロックを掛ける事が可能です。

また、このプラグインはチェストを置いた際に自動で保護が掛けられます。

Dynmapを導入しよう

Dynmapとは何かを最初に説明すると、Webで閲覧可能なリアルタイムマップの事です。

参考にAMiTサーバのDynmapをご覧下さい。

このプラグインを導入すれば、今からサーバに入りたい方にも世界観を伝える事が出来ますし、自分が日頃行かない様な遠く離れた場所で起こった荒らしなども見つける事が出来ます。

メモリをそこそこ食う重量系プラグインなので、サーバの性能がイマイチの場合には苦しいかも知れませんが、もし性能に余裕がある場合は導入すると良いでしょう。

PermissionEXの導入も忘れずに

各プラグインにはコマンドがあり、それらのコマンドにはPermissionと言う物が定められています。

このPermissionを設定する事で様々なコマンドをユーザやグループに応じて許可/拒否する事が出来ます。

そのPermissionを柔軟に設定出来るプラグインとして「PermissionEX」と言う物があります。

柔軟故に使いこなすのが多少難しいですが、ほぼ必須のプラグインなので必ず導入しましょう。

プラグインのデータは可能な限りデータベースへ

Hawkeyeなどは、データを保存するために別途MySQLと言うデータベースのサーバが必要です。

他にも、LWCやWorldGuard、DynmapもMySQLへの保存に対応しています。

MySQLに保存しておくと、デフォルトの状態で使うのに比べてデータの件数が多くなっても快適に動作します。

例えばLWC、デフォルトのままだと保護されたチェストが増えると重くなっていくと言う報告もあります。

他にもMySQLに対応しているプラグインは色々ありますが、対応しているのであれば可能な限りMySQLを利用する様にしましょう。

データベースと聞くと難しそうですが、Linuxですと簡単にインストール可能です。

Ubuntuの場合は「sudo apt-get install mysql-server」でOKです。

その他

他にもあります、小さな小ネタ。

サーバ監視を行いましょう

どれだけ高性能なサーバであっても限界は存在します。

日頃、どれくらいの負荷が掛かっていて、何がボトルネックになっているのかを特定する事はとても重要です。

サーバを増強するにしても、ボトルネックが分かっていれば効率良く増強する事が出来ます。

サーバがダウンした際にも、ボトルネックが分かっていれば何が原因でダウンしたかの特定も早いです。

そのためにはサーバを監視する必要があります。

個人的にはMuninで監視するのがセットアップも簡単でおススメだと思います。

Muninを使うと、サーバの状態が以下の様なグラフで出力されます。(例としてHDDの温度です、もちろん空きメモリやCPU使用率も監視出来ます。)
to-begin-minecraft-server-010

個人的に監視をしていないサーバは存在しない、監視されていないサーバはサーバとは言えないと言いたいくらいです。

監視機能の多くは別途、監視したデータを参照するためにWebサーバが必要になります。

もし、Webサーバなどを設置する予定が無い方はSavaMoni.Mackerelと言ったサービスの利用を検討してみるのも良いでしょう。(他にもググれば色々あるはず)

電気通信事業の届出

これ、一部のサービスを提供する場合は法律的には本当はやらなくちゃならなかったりするんですよ

ただ、個人程度の規模なんてどうでも良いからお咎めがない、と言うだけで

大雑把に説明すれば、ユーザとユーザが直接やり取り出来る様なサービスを提供する場合は必要です。

例えばですけど、SNSやメール、多分ですがボイスチャットもですね。

これらのサービスを提供していて、なおかつそれで利益が出る時(寄付、広告も含む、利益がマイナスの場合でも)は申請が必要だったはずです。

掲示板はWeb上で誰でも見られるので直接では無い、と言う理論で不要らしいです。(それだとプライベートメッセージとかどうなるのかが疑問ですけどね)

こう言うの苦手なのでちょっと曖昧ですけど、500円くらいあれば出せるので、一応届出を出しておけば良いでしょう。

もちろん私は届出済みで届出番号を持っています。

子供ユーザの扱い

重要な項目です。

私がMinecraftサーバを始めてから驚いた事、そして未だに対応に困っているのは、いわゆる「キッズユーザ」の存在です。(子供とかキッズとかオブラートに包んでますけど、あえて言うならば「ガキ」です)

とにかく数が多い、日本でのMinecraft人口の7割は子供だと言っても過言ではないのではないでしょうか?(ゲームばっかやってねぇで勉強しろ、後悔するぞ!!)

中学生ならまだマシな方です、過去に確認出来た中でも最年少は小学4年生とかそう言うレベルまで居ました。

Minecraftはエロくてボインなお姉ちゃんが登場する訳でもありませんし、誰がプレイするのも勝手だと思います。

しかし、この「キッズユーザ」の厄介な点は「Webサイト読まない,ルール守らない,態度が悪い」の三強がとても多く目立つ事です。

確かに、キッズでもマナーが良い奴は居ますし、大人でもマナーの悪い奴は居ますが、キッズはこのマナーの悪い奴がやたらと多いです。

荒らしはまず10割子供です。(え?大人も居るって?そんな大人は身体が大きいだけの子供だよ!!)

みなさんがマイクラ鯖を始める際には必ずこのキッズの存在を忘れないようにして下さい。

あいつら、群れると途端に偉そうに威張り始めますよ、管理人への態度もクソもへったくれもありません。

イライラの連続は精神を蝕み、着実に病んでいきます、私はこれだけを理由に「マイクラ鯖なんかやめておけ」と言っているくらいですから……

最後に

ここまで読んで下さった方にこう言う事を言うのもどうかと思われますが……

個人的には「必要ないならやめておけ」と言っておきましょう。

せいぜい自分が自由に使えるサーバが手に入るくらいで、その割には案外管理する手間がかかり、そのための時間やお金は容赦なく飛んで行きます。(例えボランティアと言えど最低限セキュリティ対策を行ったりする責任や義務も発生します。)

私自身がそうなのですが、自分自身が忙しくなってきてサーバにログイン出来なくなってきた、そうなると沸き起こる感情は「果たして自分が遊ばないサーバに意味はあるのだろうか?」と言う事

自分のサーバなのに自分が楽しめない、しかし既に定住しているユーザが居てやめる事は出来ない。

そう言った事に莫大な時間とお金を費やしてから気付く羽目になる訳です。

誰かと遊びたいだけなら他所のサーバを利用させてもらったので良いのです、誰かと遊びたいだけならRealmsを利用したので良いのです、なにも自分でサーバを運営する必要はないのです。

サーバ運営なんてやってる暇があったら勉強すべきだ、と、私はそう思います(ちなみに私はそれで色々失敗している)

最後の最後でこんな事を書くのは良くないのでしょうが、もう一度落ち着いて冷静に考えて下さい「本当にやる必要があるか」と言う事を……

 - サーバ運営