マルチサーバーの運用管理に必須のプラグインを導入する
前回は、現在主流のMOD「spigot」を用いてマルチサーバーを立ちあげ、プラグインで機能を追加する方法を紹介しました。今回からは2回に渡って、メジャーなプラグインの導入方法やその設定方法、注意点などについて紹介します。
プラグインで機能を増やす
プラグインの導入方法や設定方法には、ある程度パターンがあるので少しずつ試して慣れていきましょう。ある程度慣れたら、あとは自分の欲しい機能を持ったプラグインを集めて組み合わせれば貴方のマルチサーバーの完成です。主要なプラグインは、有志のユーザーによって運営されている「Minecraft Japan Wiki」のプラグインページに分かりやすく纏められています。
なお、Minecraft Japan Wikiではプラグインに関する質問を一切受け付けていないとの事なのでご注意ください。
プラグインの導入やバージョンアップを行う際の注意点は多岐に渡るため、作業時の問題発生を最小限に抑えるには経験が物を言います。そこでプラグインを紹介する前に、このような注意点について少しだけ紹介したいと思います。
プラグインを導入した際にエラーが発生した場合
プラグインの導入時にエラーが発生した場合は、その症状により様々な対応が求められます。エラーが発生しているかどうかはコンソールを確認してください。コンソールに異常[ERROR]または警告[WARN]レベルのメッセージが表示された場合は何らかの問題が発生している可能性があります。警告の場合は対応不要かもしれませんが、必ずメッセージ内容を理解した上で判断してください。
エラーが発生している場合は、図1のように「ERROR」の文字とJavaが出力するバックトレースが表示されます。バックトレース部分は表示されず、エラーの原因を記載したメッセージのみが表示される場合もあります。新しくプラグインを追加した事で導入済みのプラグインがエラーになる場合もあるので注意してください。
エラーが発生した場合は、次の事項をそれぞれ検証してください。
エラーメッセージから内容を推測する
エラーメッセージにその原因や解決方法がそのまま書いてある場合があります。可能であれば翻訳サイトなどを駆使してメッセージを翻訳してみると良いでしょう。ただし、図1のようにバックトレースのみが出力されているケースでは判別は難しいかもしれません。トレースの内容や前後の他の出力メッセージからエラーとなったプラグインが分かる場合には、その対象のプラグインを外したり設定を確認したりしてみてください。
問題の原因となっているプラグインを特定する
エラーメッセージから問題の原因となるプラグインが分かりづらい場合や、プラグインのエラーは出ていないが動作がおかしい場合は、1つずつプラグインを抜いていく事で原因がつかめる場合があります。逆に1つずつ足していく方法でも構いません。
使用しているサーバーのバージョン向けか確認する
プラグインは基本的に古いものでもspigotで動作しますが、spigotがビルドされた環境のJavaバージョンが古いと、より新しいJavaバージョンで作成されたプラグインが動作しない場合があります。また、spigotの開発が進むにつれて古いAPIが廃止される場合があり、その際にも古いプラグインが異常動作する可能性があります。大抵は配布元に動作確認済みのMinecraftバージョンが記載されているのでspigotも含めてバージョンを合わせるようにしましょう。
前提プラグインがないか確認する
プラグインによっては、他のプラグインの導入を前提として動作する場合があります。前提プラグインが必要な場合は、その旨が配布元に書いてあるはずなので、導入前に必ず導入方法を確認してください。
データベースの要否を確認する
プラグインが大量のデータを扱う場合、殆どの場合はデータベースが必要です。場合によりMySQLなど外部のSQLサーバーを必要とする場合がありますので、配布元の導入手順をよく確認しましょう。
エラーの原因がつかめない場合は情報収集する
エラーメッセージの一部をGoogleで検索すると、同じ問題に遭遇した人の対処法が分かる場合があります。また配布元が掲示板などを備えている場合は、掲示板上に情報があるかもしれません。掲示板の検索機能や検索サイトを使用して、プラグイン名やエラーメッセージをキーに情報収集してみましょう。最終的には掲示板やその他のコミュニティで自分が調べた事項や結果を共有して質問してみると回答が得られるかもしれません。ただし、その場合は各々のコミュニティの規則を必ず守り、インターネットにおける基本的なマナーは必ず守るようにしましょう。
諦めるか他のプラグインを使用する
プラグインは有志が作成した物であるため、どうしてもサーバーのアップデートに追随するためのメンテナンスが行き届かず、使用不可能になってしまう事もあります。特にしばらく更新が滞っているプラグインはサーバーの更新についていけずバグを抱えているケースが多いです。そのような場合は諦めて似た機能の他のプラグインを探すか、その機能自体を諦める必要があります。Minecraftのサーバー維持に際して他者が作成したプラグインに依存するのは様々なリスクがあるため、その機会にプラグインを自分で作成するという手もあります。
サーバーをアップデートする際の注意点
プラグイン導入の契機はサーバーを立ち上げるときだけではありません。サーバーをバージョンアップする際に、サーバーの新機能に合わせてプラグインをアップデートしなくてはいけない場合があります。サーバーをアップデートする際のプラグインの扱いについて、主だった作業と注意点を紹介します。
プラグイン検証用のサーバーを別途用意する
サーバーのアップデートで最も注意を要するのは、アップデート後にプラグインが正常に動作するかの確認です。新しいバージョンのspigotと、今まで使用していたプラグインのデータを使用して検証用のサーバーを立ち上げ(図2)、今までと同じ動作をするか、また最新バージョンのMinecraftの新規要素に対応できているかどうかを確認します。このとき検証用サーバーは運用環境と同等のメモリを使用する可能性があるので、極力別の装置を使用しましょう。同一サーバー装置上でもポート番号を変更すれば対応できますが、最悪メモリ不足やリソースの競合で本番環境ごと停止する場合があります。運用環境を一旦停止して検証する場合はこの限りではありません。
実際に検証用サーバーで動かして問題を探る
まずサーバーが異常を起こさずに起動するかどうかを確認し、異常が発生する場合は前述の「プラグインを導入した際にエラーが発生した場合」を参考に対処します。無事に起動したらプラグインの機能についてそれぞれ大まかに動作を確認し、問題がなければ本番環境もアップデートしましょう(図3)。ユーザーデータを検証環境側に移行して検証環境を運用環境に変更する手もあります。この検証では、特に保護や権限関係のプラグインに問題が発生しないかを注視する必要があります。最新バージョンのサーバーで新しいブロックやアイテムが追加される場合はよく注意しましょう。権限を検証する場合は他のプレイヤーに手伝ってもらうか、自分で複数のMinecraftを購入し同時に起動するなどして確認すると非常に効率が良いです。
アップデートの延期を検討する
プラグインやサーバーの不具合は時間が経てば修正される可能性があります。多くのサーバー管理者が困っている場合は代替のプラグインが開発される可能性もあるので、数か月ほどサーバーアップデートを延期するのも手です。もちろんリスクを許容してアップデートする事もできますが、そのあたりは管理者の手腕によります。
必ずフルバックアップを取る
本番環境をアップデートする際は、サーバー構成ファイルを全て別の場所にコピーしておき、問題発生時にいつでも復旧できるようにしておきましょう。データベースを使用している場合はデータベースのバックアップも忘れずに実施してください。アップデート後しばらくして問題が発覚する場合もあるので、バックアップファイルは安定動作が確認できるまで数週間は保存しておくと安心です。既に遊んでいるユーザーがいる場合は、予めバックアップ時点のデータに戻す可能性がある事を通知しておくと良いでしょう。仮に破損しても問題ないデータであればバックアップ対象から除いても構いませんが、その判断ができない場合には必ずバックアップするようにしましょう。
権限設定プラグインを導入する
ここまで、プラグイン導入時の手順や注意事項が長くなりましたが、導入時の手順や注意事項をある程度把握したうえで、必須プラグインをいくつか導入してみましょう。
初めに、権限設定用のプラグインを導入します。Minecraftのサーバー機能としてはOP(オペレータ)権限があります。spigotにもコマンドの使用権限を設定する機能がありますが、これらでは細かく権限が設定できないため、別途有志が作成した権限管理用のプラグインを導入するのが一般的になっています。今回はMinecraft Japan Wikiからプラグインのダウンロードと導入までの手順を試してみましょう。Wikiは有志による編集でメンテナンスされている事から、情報が古い可能性があるので注意してください。
- まずはMinecraft Japan Wikiのプラグインページにアクセスします(図4)。
- プラグイン一覧から「PermissionsEx」というプラグインを探します(図5)。
- 見つかったら[PermissionsEx]の文字をクリックして「BukkitDev」のプラグイン配布ページ(図6)に移動します。補足ですが、BukkitDevは前回プラグインのダウンロードサイトとして紹介した「Curse」が別途展開しているプラグイン開発者向けのサービスで、プラグインがダウンロードできる点ではどちらも変わりません。
- ページ右側の「Download」や下方にある「Recent files」から任意のバージョンを選択(図7)するとダウンロードページに移動します。移動先のページで再度「Download」をクリックするとプラグインのダウンロードが開始されます(図8)。今回の例ではWikiから辿ったためBukkitDevの配布ページに辿りつきましたが、前回で紹介した「Curse」からも同様にダウンロード可能です(図9)。
- もう1つ、Wikiのプラグインページから「Modifyworld」プラグインもダウンロードしてください(図10)。プラグインの検索から導入までの手順は前述した通りです。
これで必要なプラグインはダウンロードできましたが、権限を設定するには権限の割り振りを検討した上でPermissionsExの設定ファイル(permissions.yml)を作成しなくてはなりません。当該ファイルはplugins\PermissionsEx\permissions.ymlに配置されていると思います。このYAMLファイルをテキストエディタで編集します。ゲーム内やコンソールからコマンドでも編集可能ですが、効率が良くないため直接編集する事をお勧めします。
PermissionsExを設定すると、マルチサーバーに参加するユーザーへの様々な権限操作が可能になります。例えば、一部のブロックを特定のワールドでのみ使用不可にしたり、特定のユーザーから特定のユーザーへ攻撃のみ有効にしたりと、設定次第で大きくゲーム性を変えていく事が可能です。具体例は今後、目的別のサーバー構成を解説する際に詳細を紹介したいと思います。今回は基本的な設定ファイルの記述方法を紹介します(図11)。
permissons.ymlの記述は非常に複雑で、図11は説明用に省略しているものなので注意してください。これ以外にも権限を無効化するための記述や記載していない様々な権限ノードが存在します。権限を設定しない場合はModifyworldプラグインにより殆どの行動が制限されるので、必ず権限を設定した上で管理者および一般参加ユーザーの動作確認を行いましょう。動作確認の際はサーバーを起動した状態でpermissions.ymlを編集し、/pex reloadコマンドで再読み込みを行うとスムーズに確認できます。
参考までにMinecraft Japan Wikiに説明ページがありますので、より詳しく知りたい方はそちらを参照してください(図12)。
サーバーのログ採取とロールバックプラグインの導入
サーバーのログ採取とログを元にロールバック(操作の巻き戻し)する操作は、サーバー運営上で要となる機能と言っても過言ではありません。ロールバックプラグインを導入する前に、まずサーバーログおよびロールバック操作の利用例を紹介します。
・ブロックの損壊などを行った荒らしユーザーへの対処
ブロックの損壊箇所でコマンドを実行するか、ツールブロックを使用して時刻と当該座標の設置破壊ログ(ブロック名・操作者)を参照し、当該操作のみ、または該当ユーザーの操作全てをロールバックして元の状態を復旧します。荒らしユーザーにはBAN対応などを行います。
・溶岩や水流による悪戯への対処
バケツによる設置ログからユーザーを特定し、当該操作や該当ユーザーの操作全てをロールバックしてBAN対応などを行います。
・畑を荒らす悪戯への対処
荒らしユーザーによるものか、動物によるものかなどをログから判断し、荒らしユーザーの場合はBAN対応などを行います。
・チャットの荒らしユーザーへの対処
チャットのログから問題ユーザーのチャットログを抽出し、サーバー運営上で問題と判断した場合はBAN対応などを行います。
・長期間放置された建築物への対処
長期間の建築放置を是としない場合、建築ユーザーを特定し記録した上で最終ログイン日時を確認して撤去などの対応を行います。
・グローバルBANシステムからのログ照会への対応
グローバルBANシステムなどを利用している際は、グローバルBANシステム運営からのログ照会に応じて操作ログの提出などを行います。
・その他局所的な対応など
部分的に特定の時期の状態に戻したい場合などに、日時指定で指定範囲やプレイヤー単位でロールバックを行います。
これらはあくまで一例ですが、殆どのロギングプラグインはサーバーログを事細かに保存しているため、いくつかのコマンドを使用するだけで簡単にログの参照やロールバックが行なえます。問題が発生した際の事後処理には必須で、これらがないとサーバー公開中は管理者やモデレータがいないと問題に対応できない、といった事にもなりかねません。
プラグインとデータベース環境を導入する
ログ採取やロールバックを行うためのプラグインはいくつもありますが、今回は「LogBlock」プラグインを導入してみましょう(図13)。ダウンロードおよびインストール方法は、前述の説明を参考にしてください。
- LogBlockプラグインは、ログをMySQLデータベースに格納します。本稿では詳細を説明しませんが、インターネット上の情報を参考にMySQLを導入し、データベースを1つ作成しましょう。作成したらLogBlockのconfig.ymlにデータベースの情報を記述します。
- また、LogBlockはログを採取するワールドを指定する必要があります。もし通常のワールド以外に独自にワールド追加する場合には、config.ymlの以下の部分を編集して、別途ワールドごとの定義ファイルを作成する必要があります。
- ワールドごとの定義ファイルはworld.ymlなどの初期構成ファイルをコピーして、必要なワールドの定義ファイルを作成しましょう。その際にファイル名(ワールド名)と定義ファイル内のテーブル名称(任意)は必ず変更するようにします。ファイル内に書かれている何をログ採取の対象とするかの指定は、配布元のConfigurationページにある「World Config」の項を参考にしてください。
mysql:
password:(データベースのパスワード)
host: localhost ※別のマシンにMySQLを導入し連携させる場合は該当ホストを指定
port: 3306 ※MySQLのインストール時に変更している場合は合わせる
database:(データベース名)
user:(データベースのユーザー名)
loggedWorlds:
- world
- world_nether
- world_the_end
table: lb-world
以上でLogBlockを導入できました。実際にコマンドやツールブロックを用いたログの参照、ロールバック方法などは別途紹介したいと思います。プラグインの配布元ページでもFAQやCommand referenceの形で説明されているので、各自確認してみましょう。
今回はプラグイン導入時の注意点や、一部のプラグインについてダウンロードからインストール、使用方法までを紹介しました。次回は今回紹介できなかったプラグインをいくつか紹介したいと思います。
Minecraftの公式記事ではありません。本連載の内容はMojangから承認されているわけではなく、Mojangとは関係ありません。