Debianでminecraftサーバを立てワールドを公開してみた
Minecraft Server Manager 0.8.16 Betaを試した。
Minecraft Server Managerとは
Minecraft Server Managerは本家のWikiで以下のような説明。
- 動作環境はDebian/Ubuntuをサポート
- MinecraftやBukkitサーバたちを管理できるスクリプト
- 定期的にWorld Edit互換のバックアップを作成できる
- “あと10秒でシャットダウンします”といったメッセージをプレーヤーに通知できる
- Terminalからゲーム内のコマンド(“say”, “op”, “whitelist”など)が使える
- すべてのコマンドがTabで補完されるので簡単に学習できる
http://msmhq.com/がサイト。複数のマイクラサーバを管理してコマンドであたらしいマイクラサーバを作成したり、開始したり、停止したりできるサーバ管理者向けのツールっぽい。ちょうどDebianサーバを持っているので1マイクラサーバでもいろいろ便利そうなので使ってみることに。
実際にDebianのサーバで動かしているが、コマンドのテストの多くはローカルの仮想環境にあるUbuntuで行った。
インストール
インストールコマンドだと途中でパッケージの更新(apt-get update; apt-get upgrade)が入るので関係のないソフトウェアも全部最新にさせられることに注意(嫌ならManual Installationをする)。wgetだけは先にsudo apt-get install wget
で入れとく。
$ wget -q http://git.io/Sxpr9g -O /tmp/msm && bash /tmp/msm
MSM INSTALL: Configure installation
Install directory [/opt/msm]: (リターン)
New server user to be created [minecraft]:(リターン)
Complete installation with these values? [y/N]: y(リターン)
上記のデフォルトでは/opt/msmにユーザminecraftでインストールすることになる。パッケージが更新され依存するscreen rsync zip
がインストールされる。サイトではRedhutはwget -q http://git.io/lu0ULA -O /tmp/msm && bash /tmp/msm
でと書いてあるのでCentOSでも動くのかもしれない。
No directory, logging in with HOME=/,ディレクトリがありません。HOME=/ としてログインしますと警告がうるさいのでminecraftユーザのホームディレクトリを作成しておく。
sudo mkdir /home/minecraft
sudo chown minecraft:minecraft /home/minecraft
コマンド
インストールが成功するとmsm help
を打てといわれる。MSMではすべての操作をmsm xxxx
のような形で実行する。
セットアップコマンド
コマンド | 説明 |
---|---|
server list | マイクラサーバを一覧 |
server create <name> | 新しいマイクラサーバの生成 |
server delete <name> | 存在するマイクラサーバの削除 |
server rename <name> <new-name> | 存在するマイクラサーバのリネーム |
サーバ管理コマンド
コマンド | 説明 |
---|---|
<server> start | マイクラサーバを起動 |
<server> stop [now] | プレーヤーに警告をしてマイクラサーバを停止、またはいますぐ停止 |
<server> restart [now] | プレーヤーに警告してマイクラサーバを再起動、またはすぐに |
<server> status | マイクラサーバの起動状態(running/stopped)を見る |
<server> connected | マイクラサーバに接続しているプレーヤーの一覧 |
<server> worlds list | worldstorageにあるワールドの一覧 |
<server> worlds load | worldstorageにあるワールドのリンクをマイクラサーバディレクトリに作成する |
<server> worlds ram <world> | 指定したワールドをRAMで上で動かすかDiskかのトグル |
<server> worlds todisk | RAM上のワールドをディスクに同期する |
<server> worlds backup | マイクラサーバ持っているすべてのワールドのバックアップを作成する |
<server> worlds on|off <world> | 指定したワールドをアクティブまたは非アクティブにする、非アクティブなワールドはバックアップされない |
<server> logroll | ログの縮小化のためマイクラサーバログを移動しgzipでアーカイブする |
<server> backup | マイクラサーバのディレクトリのバックアップを作る |
<server> jar <jargroup> [<file>] | マイクラサーバのjarファイルを設定する |
<server> console | インタラクティブコンソールに接続する、アクセスは制限される |
<server> config [<setting> <value>] | マイクラサーバを指定の値を設定する、指定しなかった場合は設定の一覧 |
マイクラサーバゲーム内コマンド
コマンド | 説明 |
---|---|
<server> wl on|off | ホワイトリストチェックの有効・無効 |
<server> wl add|remove <player> | ホワイトリストへプレーヤーを追加または削除する |
<server> wl list | ホワイトリストにあるプレーヤーの一覧 |
<server> bl player add|remove <player> | プレーヤーをバンまたはバン解除する |
<server> bl ip add|remove |
IPアドレスでバンまたはバン解除する |
<server> bl list | バンしているプレーヤーとIPアドレスの一覧 |
<server> op add|remove <player> | プレーヤーに管理者権限を与えるまたは取り消す |
<server> op list | 管理者権限のあるプレーヤーの一覧 |
<server> gm survival|creative <player> | プレーヤーのゲームモードを変更する |
<server> kick <player> | マイクラサーバーからプレーヤーをキックする |
<server> say <message> | マイクラサーバ上のすべてのプレーヤーへ(ピンク)メッセージを送る |
<server> time set|add <number> | マイクラの時刻を設定または追加する(0-24000) |
<server> toggledownfall | 雨または雪のトグル |
<server> give <player> <item> [amount] [data] | プレーヤーにアイテムを与える |
<server> xp <player> <amount> | プレーヤーに経験値を与える、負数なら減らす |
<server> save on|off | ワールドの変更をファイルに書き込むかの有効・無効 |
<server> save all | 強制的に保存していないワールドの変更をファイルに書き込む |
<server> cmd <command> | コマンド文字列をマイクラサーバに送る |
<server> cmdlog <command> | cmdコマンドと同じだが、結果のログ出力を表示する(Ctrl+Cで終了) |
Jarコマンド
コマンド | 説明 |
---|---|
jargroup list | jarファイルの一覧 |
jargroup create <name> <download-url> | ダウンロードURLとしてjarグループを生成する |
jargroup delete <name> | jarグループを削除する |
jargroup rename <name> <new-name> | jarグループをリネームする |
jargroup changeurl <name> <download-url> | jarグループのダウンロードURLを変更する |
jargroup getlatest <name> | jarグループのダウンロードURLから最新のjarファイルをダウンロードする |
グローバルコマンド
コマンド | 説明 |
---|---|
start | すべてのアクティブなマイクラサーバを開始する |
stop [now] | すべての起動中のマイクラサーバを停止する |
restart [now] | すべてのアクティブなマイクラサーバを再起動する |
version | Minecraft Server Managerのバージョンを表示する |
config | MSMで使われている設定の一覧 |
update [–noinput] | MSMのファイルを最新のバージョンに更新する |
コマンドから使い方を推測すると複数のマイクラサーバを管理するのでマイクラサーバに名前をつけて、マイクラサーバの名前を指定してコマンドを送ることになる。
またjargroupコマンドがありマイクラサーバと分離されている模様。マイクラサーバをどのjarファイルで生成するのか管理でき、例えばmodを当てたserver.jarを何処かに公開してそれを使って構築したり、あるマイクラサーバは公式のserver.jarから構築するなどの使い方ができると思われる。
サーバの作成と起動
まずは公式のマイクラサーバのminecraft_server.jarをminecraft
という名前のjargroupで作成する。(ドキュメントではデフォルトでcraftbukkit、minecraftのjargroupがあるらしいのだが無いと怒られるので作成する)
sudo msm jargroup create minecraft https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar
sudo msm jargroup create craftbukkit http://dl.bukkit.org/latest-rb/craftbukkit.jar
次にmyserver1
というマイクラサーバを作成し、minecraft
jargroup、つまり公式のminecraft_server.jarを指定して開始する。
sudo msm server create myserver1
sudo msm myserver1 jar minecraft
sudo msm myserver1 start
以下の情報は今のところ気にしなくていい。
[MSM Info: Assuming 'minecraft/1.3.0' for this server.You should override this value by adding 'msm-version=minecraft/x.x.x' to '/opt/msm/servers/myserver2/server.properties' to make this message go away]
コマンドなどバージョンによって下位互換を取らないといけないときにMSMにminecraft_serverのバージョンを教えてあげないといけないことがある。どうしても気になるならsudo msm myserver1 config msm-version minecraft/1.5.2
などを実行する。
マイクラサーバ実行中でも以下のようにしてLinuxのターミナルから管理者権限を与えることができる。
sudo msm myserver1 op add username
2つ目のマイクラサーバを起動してみる。複数のマイクラサーバを公開するにはそれぞれポートを別にしないといけない。
sudo msm server create myserver2
sudo msm myserver2 jar minecraft
sudo msm myserver2 config server-port 25566
sudo msm myserver2 start
デフォルトのポート以外に接続する場合、クライアントは Server Addressに 127.0.0.1:25566 というようにコロンとポート番号を指定する。
マイクラサーバは/opt/msm/servers/myserver2/
といったディレクトリにファイルがあるのでMSMを使わないで直接server.propertiesファイルなどの設定を変更することも可能。ファイル階層は以下のようになる。
/opt/msm
`- servers
`- server_name
|- world -> /opt/msm/servers/server_name/worldstorage/world
`- worldstorage/
|- world/
|- worldstorage_inactive/
|- server.jar
|- server.properties
|- server.log
|- ops.txt
|- white-list.txt
|- banned-ips.txt
`- banned-players.txt
ワールドの管理
基本的にMSMでワールドを管理するときにはworldstorageというディレクトリにワールドの実体ファイル(ディレクトリ)を置いてあげないといけない。
最初にマイクラサーバを起動するとworldというディレクトリにワールドを作成されるので、これをに以下のようにしてworldstorage下へ移動しworlds loadコマンドでシンボリックリンクを作成する。
sudo msm myserver1 stop now
cd /opt/msm/servers/myserver1
sudo mv world worldstorage/
sudo msm myserver1 worlds load
バックアップ
これでsudo msm myserver1 worlds backup
を実行するとworldstorageにあるワールドのバックアップ(zip)がWORLD_ARCHIVE_PATH(/opt/msm/archives/worlds)に作成されるようになる。
なおworldstorageに複数ワールドがあるとすべてバックアップされる。これは <server\> worlds on\|off <world\>
コマンドでアクティブ・非アクティブを切り替えることでアクティブなものだけがバックアップされるようになる。
リストア
リストアのコマンドは今のところないようなのでバックアップファイルから戻す。
sudo msm myserver1 stop now
cd /opt/msm/servers/myserver1/worldstorage
sudo mv world world_org
sudo unzip /opt/msm/archives/worlds/myserver1/world/{日付}.zip
sudo chown -R minecraft:minecraft world
sudo msm myserver1 start
RAMを使う
ワールドをRAMに置くことでパフォーマンスが期待できる。
デフォルトでは/dev/shm/msm
を使うことになっている。/dev/shmにディレクトリがない場合は以下のようにして作っておく。パスは/etc/msm.cnfのRAMDISK_STORAGE_PATHで変更することもできる。
sudo mkdir /dev/shm/msm
sudo chown minecraft /dev/shm/msm
sudo chmod -R 775 /dev/shm/msm
以下のようにサーバ名、ワールド名を指定してRAMに配置する。ワールドのパスを変えるので当然マイクラサーバは止めないといけない。
sudo msm myserver1 stop now
sudo msm myserver1 worlds ram world
sudo msm myserver1 start
ワールドはstopコマンドでサーバを止めたときなどのタイミングでディスクに同期されるので壊されてもいいようなテンポラリなワールドとして使えるわけではない。
マイクラサーバのバージョンアップ
jargroupコマンドで取得したjarファイルを置き換えることで可能。
停止してバックアップを取る。
sudo msm myserver1 stop now
sudo msm myserver1 backup
sudo msm jargroup getlatest minecraft
sudo msm jargroup list
でjarファイルのリストが見れるので日付で使うファイル名をきめて
sudo msm myserver1 jar minecraft 日付-minecraft_server.jar
起動するとバージョンが上がっているはず。
sudo msm myserver1 start
cronの修正
cronで定期的にバックアップ処理が走るのだが出力がメール送信されるので出力をnullにする。/etc/cron.d/msm ファイルを修正する。
02 05 * * * minecraft /etc/init.d/msm all worlds backup >/dev/null 2>&1
55 04 * * * minecraft /etc/init.d/msm all logroll >/dev/null 2>&1
*/30 * * * * minecraft /etc/init.d/msm all worlds todisk >/dev/null 2>&1
@hourly minecraft /etc/init.d/msm start >/dev/null 2>&1
まとめ
MSMを使うとscreenを意識しなくていいし、バックアップもコマンド一つで取れるので楽ちん。マルチサーバを一台管理するだけでも便利だと思う。