LoginSignup
3
6

More than 5 years have passed since last update.

AzureのUbuntuVMにマインクラフト・サーバーを設置する(ついでにJavaScriptプログラミングできるようにする)

Last updated at Posted at 2016-09-05

去年Azureに設置していたマインクラフトサーバーを消してしまったんで、またやり直すことにしました。
AzureのVM設定手順など、多少変わっていたので改めてステップ・バイ・ステップで最新の手順としてQiitaに投稿することにしました。

前提

  • マインクラフト(クライエント)をインストールしている。
  • Azureのサブスクリプションを持っている。
  • Windows 10 Anniversary Update から操作する。

マインクラフトの購入や体験版などに関してはこのブログ記事がよさそうです。
Windows 10 Anniversary Updateはどうしてもじゃないけど、bashシェルが使えるようになったのでssl接続するときに便利。PuTTyがあればそれでもOK。

手順1 AzureにUbuntuのVMを作る

まずはホストマシーンとしてVMを作る。OSはUbuntu Server 16.04 LTS(2016年9月現在最新)を選んだ。
image

VMの新規作成手順の詳細は省く。Authentication TypeにはPasswordを選ぶ。
User NameとPasswordは後で必要なので書き留めておく。
image

手順2 VMのDNS名を設定する

VMをスタートするとIPアドレスは設定されいるが、DNS名はまだ設定されていない。静的IPサービスを利用しない限りIPアドレスは一定ではないので、安定した別名としてDNS名を設定しておく。
以下は設定が完了した状態。PUBLIC IP ADDRESS/DNS NAME LABELのリンクからDNS名の設定画面に行ける。
2016-09-04 16_35_36-Properties - Microsoft Azure.png

手順3 マインクラフトサーバー用にポートを開く

マインクラフトサーバーはデフォルトでポート25565でゲームクライエントからの接続を待ちます。しかし新規作成されたVMは25565を開いていないので、以下のようにポート25565へのInboundの接続を許可するルールを新たに加える。
ちなみにルールの名前はなんでも構わない。私はminecraft-server-portにした。
2016-09-04 16_49_40-ywatanaubuntu16-nsg - Microsoft Azure.png

手順4 VMにssh接続する

Windows 10 Anniversary Updateから利用可能になったBashシェルを開く。
image

次にsshコマンドを実行し、

ssh <user>@<fully-qualified-domain-name>

  • <user> VM作成時に指定したUser Name
  • <fully-qualified-domain-name> VM作成後に設定したDNS名

パスワードを聞かれたら、VM作成時に指定したPasswordを入力してssh接続を完了する。以下はsshコンソール内での作業。

手順5 Ubuntu側でもマインクラフト・サーバー用のポートを開く

iptablesコマンドを使って、ポート25565を新規ファイアウォール・ルールとして加える。AzureVMとUbuntuOSの両方でポートが開いて初めてクライエントが接続できるようになることに注意。
sudo iptables -I INPUT -p tcp -m tcp --dport 25565 -j ACCEPT

確認のため sudo iptables -Lコマンドを実行して以下のように設定されていれば完了。
2016-09-04 17_15_50-.png

手順6 必要なツールをインストールする

次にjavaとgitをインストールする。
sudo apt-get install openjdk-8-jre-headless(javaはビルドおよびマインクラフトサーバーの実行に必要)
sudo apt-get install git (ビルドに必要)

手順7 サーバー関連ファイル用の新規ディレクトリを作成

サーバーのファイル類を保存するためのディレクトリを作成する。名前はなんでも構わないが、サーバーにはSpigotを使用するのでminecraft_spigotと指定することにした。
mkdir minecraft_spigot

手順8 SpigotサーバーのBuildToolsをダウンロードする

SpgotサーバーファイルはBuildToolsと呼ばれるjarファイルをローカルに保存し、それをJavaでビルドすることによって配布する形をとっている。
以下のコマンドを実行する。
cd minecraft_spigot (上の手順で作成したディレクトリに移動)
wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastStableBuild/artifact/target/BuildTools.jar
(このURLは常に最新の安定したバージョンを指している。)

目的のファイルがダウンロードされれば完了。
image

手順9 Spigotをビルドする

ダウンロードしたBuildTools.jarをJavaで実行することで自動的にGitレポジトリが複数クローンされ、成果物が生成される。ビルドが完了するのに5分~10分ぐらいはかかると思う。

java -jar BuildTools.jar

以下のようなjarファイルが生成されれば成功。このファイル以外にもいくつかアウトプットが生成される。
image

手順10 EULA合意のために一旦マインクラフトサーバーを実行する

マインクラフトサーバーを初めて実行すると
java -Xmx1024M -Xms1024M -jar spigot-1.10.2.jar nogui

"You need to agree to EULA in order to run the server." というメッセージとともにサーバープロセスが終了する、と同時にeula.txtというファイルが生成される。
image

EULAはEnd User License Agreement(利用許諾契約)の略。先に進むためには、eula.txtファイルをエディターで開いてfalsetrueにして保存しなくてはならない。
以下、nanoを使って編集した様子。

image

手順11 いよいよサーバーを実行

コマンドは上の手順と全く同じだが、今回はEULAに合意済みなのでサーバーがロードされ実行が始まる。
java -Xmx1024M -Xms1024M -jar spigot-1.10.2.jar nogui

これを何度も打ち込むのは面倒なのでスクリプトファイルに保存しておく。

echo java -Xmx1024M -Xms1024M -jar spigot-1.10.2.jar nogui > ./start.sh
chmod +x ./start.sh

以下のようなプロンプト画面になればサーバースタート完了。この状態でクライエントから接続できる。
2016-09-04 18_58_02-ywatana@ywatanaubuntu16_ ~_minecraft_spigot.png

手順12 クライエントからサーバーに接続する

マルチプレイヤーゲームを選択した後、ダイレクト接続を選ぶ。
image

サーバーアドレスに手順2で設定したDNS名を入力する。IPアドレスでも構わないが、友達を招待して遊ぶ場合などDNS名の方が名前が変わらなくて便利。
2016-09-04 19_11_11-Minecraft 1.10.2.png

完了!

image

サーバーの終了の仕方

サーバーに接続して遊んでいない間は、課金されないようにVMをStopして置いた方が良いのは言うまでもない。その際、ゲームの内容が正しく保存されるように、まずマインクラフトサーバーは終了する。

image

番外編 ScriptCraftプラグインでJavaScriptを使う

手順1 ScriptCraftプラグインをダウンロード

まずScriptCraftをScriptCraftのgithubレポジトリーからscriptcraft.jarpluginsという名前のサブ・ディレクトリーにダウンロードする。

cd plugins
wget https://github.com/walterhiggins/ScriptCraft/releases/download/3.2.0/scriptcraft.jar

以下の目的ファイルがダウンロードされたら完了。
image

手順2 ユーザーをOP(オペレータ)にする

ScriptCraftを使ってJavaScriptを実行するにはOP権限が必要。マインクラフトサーバーのコンソールから以下のコマンドを実行。(yoshionminecraftは私のユーザー名)

image

これでマインクラフトでJavaScriptプログラミングが出来る環境が整いました。
例えばマインクラフトのゲーム画面から以下を実行すると、幅5ブロック、高さ6ブロック、奥行き8ブロックの「石」でできた立方体を作ることができるようになります。
/js box(blocks.stone, 5, 6, 8)

マインクラフトJavaScriptプログラミングの詳細はこちらから

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6