サーバの建て方
Last-modified: 2016-11-04 (金) 23:01:41
マインクラフトのマルチサーバの建て方 (Linux版)
まず実際に手を動かす前に、一度最後まで読んでイメージを掴んでいただくのが成功のコツです。
ここでは、以下の様な構成を前提として解説します。なるべくわかりやすいようにしているつもりですが、それでもどうしてもLinux独特のルールなどの知識が必要になってきますが、基本的にディレクトリの移動などのやり方がわかっていれば作業は進められます。Linuxに関する情報は簡単に調べることができるので、わからない事があれば調べてください。また、本ページ最後に、書き込む場を設けてありますので、そちらへ書き込んでいただいても構いません。
- OS
UbuntuServer12.04 LTS 日本語インストール (操作はすべてsshで行います)
- マシン
サーバ用に別マシンを用意しているものとします。もちろんVirtualBOXやXenなどの仮想環境でも可能です。
- ルータ
モデム直付けは論外です。ルータ等でLANを構築していることを前提とします。
- root
権限が必要なときはコマンドの頭にsudoを入力するなどしてください。
- CUI環境
GUI環境は説明や管理が煩雑になるので、ここではCUI環境を用います。
- エディタ
細かいことを言うと宗教戦争になるので何も言いません。ここでは、CUI環境でも簡単に扱えるnanoを使います。もちろんviやvim、emacsでも可能です。信者は各自置き換えてください。
- 「~」の入力
Shift押しながらひらがなの「へ」の部分です。まぁ、カレントディレクトリを理解できる人は別にいらないと思います。
- サーバに必要なスペック
当サーバはCPU:Atom230(シングルコア1.6GHz)、メモリ:2GBで運営されています。が、かなり重いです。人数にもよりますが、CPU:デュアルコア2.0GHz以上、メモリ4GB以上はあったほうがいいと思います(あくまでも私の感覚)。スペックについてはここも参考にしてみてください。※ただし、サーバにGPU性能は必要ありません。
導入の流れ
OpenJDK導入(Java環境)→ユーザーの作成→サーバソフト設置→設定
Java環境構築 
ユーザーの作成 
- ユーザーの作成
マインクラフト用のユーザーを作成します。
ここでは、マインクラフト用のユーザーに対してデフォルトの設定をします。設定が必要な場合は適宜自身で設定してください。またマインクラフト用ユーザー名を"mc"として作業をしています。
$ sudo adduser mc
コマンドを実行すると、パスワードの入力を2度求められます。このパスワードはマインクラフト用ユーザー"mc"のパスワードとなります。Adminユーザーとは違うパスワードを設定することが望ましいです。
- ユーザーの切替え
マインクラフト用ユーザー"mc"へログインします。
$ su - mc
パスワードの入力を求められるので、先に設定したパスワードを入力します。
念のため、ユーザー"mc"のディレクトリへ移動するためのコマンドを入力しておきます。
$ cd
マインクラフトサーバの設置 
- サーバ用ディレクトリの作成
マインクラフトサーバを設置するためのディレクトリを作成しカレントディレクトリを移動します。
別になんでもいいですので、わかる方は適宜対応してください。
$ mkdir ~/mc
$ cd ~/mc
- サーバファイルのダウンロード
ここでは便利な便利な「wget」コマンドを使い、カレントディレクトリへ「minecraft_server.jar」をダウンロードします。
もちろん、他の手段でも大丈夫ですのでたとえばGUI環境でしたら「http://www.minecraft.net/download
」のサイトの「Multiplayer Server」にある「minecraft_server.jar(※Minecraft_Server.exeはWindows版ですので、ここでは使用出来ません)」をダウンロードして、適宜移動してもらっても構いません。
$ wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar
ダウンロードしたディレクトリにサーバファイルがあるのかを確認します。
$ ls ~/mc
minecraft_server.jar
[minecraft_server.jar]と出てきたらダウンロード成功です。
- サーバの起動
ダウンロードしたファイルを実行します。
$ cd ~/mc
$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
実行すると、何やら端末内でゴニョゴニョ始まるのが見れると思います。少し待つ(スペックによっては1分くらいかかります)と、一段落するので、stopと入力してエンターキーを押し、一旦終了します。
※なお、Xmxの部分(1024のところ)を書き換えることによって、Minecraftサーバへ割り当てるメモリ割り当てプールの最大サイズを決定することができます。これは2Mバイトより大きい1024の倍数で指定します。キロバイトの場合はKを、メガバイトの場合はMを数字の末尾に追記します。上記では1024MBを割り当てています。また、Xmsの値はメモリ割り当てプールの初期値サイズです。
- 起動確認
起動がうまく行っていると、いくつかのファイルやディレクトリが生成されているはずです。確認しましょう。
$ ls ~/mc
world banned-ips.txt banned-players.txt minecraft_server.jar ops.txt server.log
server.properties white-list.txt
上記のように8つの名前が出てきていれば成功です。うまくいってない場合は、もう一度実行ししばらく待ってみましょう。
- シェルスクリプトの作成
先述のような起動方法だと面倒なので、シェルスクリプトを作成します。
$ nano ~/mc/server.sh
と実行すると、白紙(というか黒?)の画面が出てくるので、
#!/bin/sh
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Ctrl+x→yで終了・保存します。
そして、このスクリプトに実行権を付与します。
$ chmod 700 ~/mc/server.sh
これで、シェルスクリプトは完成です。
試しに実行してみましょう。
$ cd ~/mc
$ ./server.sh
うまく行っていれば、見覚えの画面が出てくるはずです。stopで終了しましょう。
- バックグラウンドでの実行
このままだと"端末"を閉じるとサーバアプリケーションも閉じてしまうので、バックグラウンで実行できるようにします。
Ubuntuにデフォルトでscreenは入っているようなので、(※1)へスキップしていただいても構いません。
バックグラウンで実行するためにscreenという仮想端末を利用します。導入するためには、一度権限を持ったユーザーになります。
$ su - OS導入時に設定したアカウント名
パスワードの入力を求められるので、OS導入時に設定したパスワードを入力します。
その後screenを
$ sudo apt-get install screen
で導入し、
$ su - mc
で元のユーザーに戻ります。
(※1)
次に先に作ったシェルスクリプトを再編集します。
$ nano ~/mc/server.sh
で次の画面が開くので編集します。(赤が追記した部分)
#!/bin/sh
screen -AmdS mc java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Ctrl+x→yで終了・保存します。
試しに先の記述お同じように起動してみましょう。
$ cd ~/mc
$ ./server.sh
すると、一瞬何も起きてないように思うかもしれません。しかし、うまくいっていればバックグラウンドで起動しています。それを確認しましょう。
$ screen -r mc
実行すると、見覚えのある画面になると思います。マインクラフトのサーバコマンドなどの入力はこの状態で行うことになります。
※注意~~~~~~~~~~~~~~~~~~~~~~~
Cannot open your terminal '/dev/pts/0' - please check.
というエラー?が出て、何も起こらない場合があります。その時は、
$ script /dev/null
を実行した後に
$ screen -r mc
を実行してください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~
この画面から元のLinuxの画面に戻るときは、
Ctrl+a→d
で戻ることができます。
これで、マインクラフトサーバの設置は終了です。以後、マインクラフトサーバを起動する際はユーザー"mc"でログインした後に
$ cd ~/mc
$ ./server.sh
を実行することで、起動が可能です。
設定 
コマンド | 説明 | |
grow-trees=<true/false> | 苗木の成長のON/OFF | |
level-name=<name> | マップデータを保存するフォルダの名前 | |
level-type=<DEFAULT/FLAT> | マップ生成時の地形、DEFAULT=通常 FLAT=平坦 | |
hell-world=<true/false> | trueにすると通常世界にネザーの世界が生成される | |
allow-nether=<true/false> | "trueにするとネザーの行き来ができるようになる | |
view-distance=<3-15> | サーバーで許可するマップのchunksの表示範囲(?) デフォルトは10 | |
spawn-monsters=<true/false> | モンスターの出現ののON/OFF <false>にするとPeacefulい、に<true>の場合、難易度はdifficultyの値によって設定される。 | |
online-mode=<true/false> | Minecraft公式サーバに接続してユーザ認証を行うかどうか | |
difficulty=<0-3> | 難易度の設定。0=Peaceful 1=Easy 2=Normal 3=Hard ※デフォルトEasy | |
gamemode=<0/1> | ゲームモードの設定。0=サバイバルモード 1=クリエイティブモード | |
spawn-animals=<true/false> | 動物の出現のON/OFF | |
max-players=<0-256> | "プレイヤーの最大同時接続数 | |
server-ip=<blank/IP> | NICが複数ある場合にどのNICにバインドするか | |
pvp=<true/false> | Falseにすると他のプレイヤーを攻撃できなくなる | |
level-seed=<seed> | ワールド作成時のシード値 | |
server-port=<1-65535> | サーバーで使用するポート デフォルトでTCP25565 | |
allow-flight=<true/false> | falseにすると不正な移動があった場合自動でキックする | |
white-list=<true/false> | trueにするとホワイトリスト以外のメンバーは参加できなくなる | |
generate-structures=<true/false> | 建物を生成するか(村) | |
motd=A Minecraft Server | サーバーリストに表示されるメッセージ(サーバー名の下) | |
enable-query | GameSpy4 protocol serverを許可するかどうか | |
enable-rcon | サーバーコンソロールにリモートアクセスを許可するかどうか | |
- 接続設定
# ifconfig
で表示される数字の中にサーバPCのIPアドレスが表示されるので、控えておきます。
(多くの場合は、[192.]で始まり末尾が[.1]ではないもの、例えば[192.168.0.8]などである。がもちろん例外もある。)
サーバファイルを起動後、同じLAN内のあるPCでMinecraftを起動し、マルチサーバを選択して先に控えたIPアドレスを入力し接続出来れば、マルチサーバ構築は成功です。
※ただし、この状態だとまだ家の外、つまりネット上の人に接続してもらうことは出来ません。詳細はポート開放を参照してください。
質問受付 
- Ubuntuへのログイン時にマイクラサーバーを自動的に起動させることは可能でしょうか。/etc/profile.d/に.shファイルを置いてみたのですが、うまくいきませんでした。 -- mrvuzumy?
>mrvuzumyさん 返信おくれて申し訳ありません。 このやり方の場合、"mc"ユーザーに実行権限があるので、それ以外のユーザーでログインした場合自動起動できないかもしれません。"mc"ユーザーでログインした上で自動起動できない場合は、実行権限を付け直してみてください。また、別ユーザーでも実行権限を"mc"以外に与えればログイン時の自動起動が可能だと思いますが、あまりおすすめしません。 -- 鯖主?
- ここに載ってる以外の方法で悪戦苦闘しておりましたが、おかげさまでサーバーを開くことができ、友達と楽しく遊んでます。 -- bako?
>bakoさん そういっていいただけると、このページ書いてよかったなーって思います! ありがとうございます!! -- 鯖主?
- 返信ありがとうございます! 少しでも感謝の気持ちが伝わればと思いコメントさせていただきました!。 あと、ご相談なのですが、bukkitなどの導入方法はこの記事の「マインクラフトサーバーの設置」から下を参考に導入を進めることは可能でしょうか -- bako?
- 投稿しやすいように、掲示板
を設置してみました。そちらをご利用下さい。