Debianでminecraftサーバを立てワールドを公開してみた

minecraftサーバを立ててローカルで作業していたワールドを公開してみたのでそのやり方の紹介。公開といっても誰にでも公開しているというわけではないが。

Windowsでサーバを立てるならMinecraft Japan Wikiのまとめがおすすめ。

minecraft 基本的な話

minecraftについてはこれを見れば雰囲気はつかめるはず。PC版は20ユーロくらい。Xbox 360版、iOS/Android版もあるけどPC版がベスト、というか主流。

minecraftのPC版はjavaで動いているのでクロスプラットフォームで動作する。一人プレイとマルチプレイがありワールドデータを移行することも可能。

Debian/Ubuntuでminecraft_serverを実行する

環境構築

オフィシャルサイトのダウンロードページからマルチプレイのサーバ用にminecraft_server.jarが公開されており、サーバー側でレンダリングすることではないので単にjavaで実行すれば事足りる。Debian 6やUbuntu 12.04ではデフォルトのソースリストからsun-java6を入れられなくなっていてopensdkやoracle-java7を使うことが既定路線となりつつある。とは言え、相性などの問題からまだまだsun-java6を入れることが多いようなのだがセキュリティなどを考えると最新版を使うのがいい気もする。葛藤した挙句余計なトラップにハマりたくないので結局sun-java6をインストールする。

/etc/apt/sources.listに

>deb http://ftp.ja.debian.org/debian/ squeeze main non-free

を追加してsun-java6-jdkをインスコ。コンソールからの操作のためにscreenも入れておく

sudo apt-get update
sudo apt-get install sun-java6-jdk
sudo apt-get install screen

サーバのインストール

インストールというかダウンロードするだけ。ダウンロードページ minecraft_server.jarのリンクを引っ張ってくればよい。 面倒なのでログインユーザのホームディレクトリに管理することにして作業フォルダは~/minecraftとする。

mkdir ~/minecraft
cd ~/minecraft
wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar

実行用スクリプトの作成

Debian 6/Ubuntu 12.04なら.profileで$HOME/binがあればPATHに突っ込んでくれている(つまり新規に$HOME/binを生成した場合は次回ログイン時にPATHが通る)ので~/binに作成する。

mkdir ~/bin
cd ~/bin
vi minecraft-server

で以下内容を保存。

#!/bin/sh
cd ~/minecraft
screen -AmdS minecraft-server java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui

次にscreen起動用のスクリプト

vi minecraft-console

で以下内容を保存。

#!/bin/sh
screen -r minecraft-server

実行権限をつけたら終わり。

chmod u+x minecraft-server minecraft-console

これでminecraft-serverと打てばサーバを起動、起動中のコンソールにアクセスするにはminecraft-consoleと打てばいい。コンソール実行(screen)から戻るには「Ctrl+A」を押してから「D」を押す。

設定ファイルを書き出すために一回起動して終了させておく。minecraft-serverを実行して、次にminecraft-consoleを実行。コンソールでstopと入力してminecraft-serverを停止させる。これで~/minecraftに幾つかのファイルが作成される。

ワールドデータの転送とminecraft-serverの設定

たとえばNew Worldという名前のワールドデータはWindows 7のC:\Users\ユーザ名\AppData\Roaming\.minecraft\saves\New Worldにあるのでこれをサーバの~/minecraft/New WorldにFTPなどでファイルをコピーすればいい。

次に~/minecraft/server.propertiesを開く。level-name=worldという箇所がワールド名の読み込み部分なのでこれをlevel-name=New Worldにすると持っていたワールドデータでminecraft-serverを起動できる。

あとはops.txtに自分のminecraftユーザ名を入れて管理者になれるようにしておくとよい。

ワールドデータのバックアップ

管理者コマンドに/save-allがあるのだけどバックアップコマンドなのかよくわからなかったので

tar -czf world.`date '+%Y%m'`.tar.gz world

などでワールドデータのフォルダをバックアップしておいたほうが確実だと思われる。

サーバの公開

デフォルトだと誰でもアクセスできるようになっていて世間には破壊者みたいなユーザもいるのでサーバのアドレスをうかつに人に教えたりしない方がいい。ポートを変えたり、ホワイトリスト対応するなどの手段も有効。