読者です 読者をやめる 読者になる 読者になる

AQUAALTA

マインクラフトの設定, mod紹介のブログ

【Minecraft】1.10対応 Linux(CentOS) 常時稼働マルチサーバの建て方 on さくらVPS

常時接続できるマルチサーバを建てたい!

f:id:neko_aquaalta:20160702230317j:plain

マイクラサーバといえば、公式が提供している Realms がありますが、ワールドデータの書き換えができなかったりとまだ不便な点が多いのが現状です。

今回は、レンタルサーバ上にマイクラのサーバを建てることで、カスタマイズしやすいサーバを構築しましょう。

パッと読むための見出し [表示]

SPONSORED LINK

必要となる知識

レンタルサーバの説明

今回は初心者でも扱いやすい さくらVPS を使っていきます。

一番安いプランでも mod なしで 5〜6 人であれば、遅延なく動くことを確認しています。 (参考までに、地上とネザーで同時に作業しても問題ないです)

  • 初期費用: 1080円
  • 月額費用: 685円

常時起動状態だと さくらの VPS が一番安いと思いますが、一度選んだプランをグレードアップはできませんので、ご注意ください。

  • 夜間は落とす
  • 休日のみ稼働

などの使い方であれば、AWS EC2 の方が安いです。 ただ、落とすのを忘れてしまうとコストがかさむため、ご注意を。

SPONSORED LINK

レンタルサーバを借りる

では、さくらVPS を借りていきましょう。

さくらVPS申し込み から申し込みボタンをクリックします。

f:id:neko_aquaalta:20160620070647p:plain

選択画面が出てきますので、「はじめての方」をクリックします。

f:id:neko_aquaalta:20160620070933p:plain

512MB プランを選択します。他は変更しなくて問題ありません。このままカートに入れます。

f:id:neko_aquaalta:20160620071123p:plain

あとはユーザ情報の登録などをし、購入まで進めてください。

レンタルサーバ情報を確認する

レンタルが完了しましたら、サーバ情報を確認します。 さくらの VPSにアクセスし、コントロールパネルログインをクリックします。

f:id:neko_aquaalta:20160620072220p:plain

v4 の箇所に 123.456.78.912 のような数字があると思います。 これが、レンタルしたサーバの IPアドレス(住所)にあたるものですので、これをメモしてください。

また、下記画像をクリックします。

f:id:neko_aquaalta:20160620072846p:plain

メニューから 標準 OS インストールをしてください。

f:id:neko_aquaalta:20160620073345p:plain

root 権限のパスワードを問われますので、忘れないようなパスワードを設定します。

f:id:neko_aquaalta:20160620084200p:plain

※ ある程度マシなパスワードを設定しましょう。

ssh 環境の準備

手持ちの PC から レンタルサーバへアクセスします。

ssh と呼ばれるセキュリティを担保した接続を試みます。

Windows の方

Tera Term をインストールしてください。

Mac の方

特に入れるものはありません。 ターミナルを開いてお待ち下さい。

Linux サーバへのアクセス

接続の仕方は下記の通りです。

$ ssh root@123.456.78.900
root@123.456.78.900's password:

ssh コマンドで root ユーザで さきほどメモした IP アドレスを指定して接続しようとすると、パスワードが聞かれますので入力します。

SAKURA Internet [Virtual Private Server SERVICE]

と表示されれば成功です。ここから各種設定をしていきます。

各種インストール

java のインストール

minecraft は java で動いているので導入します。

# は、root ユーザで実行するという意味です。コマンド入力する必要はありません。

# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

screen のインストール

マイクラサーバをバックグラウンドで動かすのに必要なツールになります。

# yum install -y screen

wget のインストール

wget は、 url を指定してダウンロードするためのものです。

# yum install -y wget

iptable( firewall )の設定

いわゆる ファイアウォール の設定を行います。 vim を使って編集していきますので、使い方を確認しながら編集してください。

# vim /etc/sysconfig/iptables

下記をコピペします。(25565 が開いているのがポイントです)

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25565 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

設定を読み直します。

# service iptables restart

ユーザの追加

root ユーザはすべての実行権限を持っているのですが、このユーザで操作を行うと、誤ってシステムを破壊してしまうなどセキュリティ上好ましくないため、マイクラのサーバを動かすためのユーザを別で作ります。

minecraft という名のユーザを追加します。 パスワードは忘れないようにしてください。

# adduser minecraft
# passwd minecraft

Changing password for user minecraft.
New password: (#パスワードを入力して Enter を押す)
Retype new password: (#パスワードを再入力して Enter を押す)

minecraft サーバのダウンロード

まずは 公式サイト で最新のサーバダウンロード URL を確認してきます。

右クリックから「リンクのアドレスをコピー」的なものを選択します。

f:id:neko_aquaalta:20160702215854p:plain

今回は /usr/local/minecraft の階層にマイクラサーバをダウンロードします。

# mkdir -p /usr/local/minecraft
# chown minecraft:minecraft /usr/local/minecraft
# cd /usr/local/minecrft
# wget https://s3.amazonaws.com/Minecraft.Download/versions/1.10.2/minecraft_server.1.10.2.jar
# mv minecraft_server.1.10.2.jar minecraft_server.jar

wget している url は、コピーしたリンクのアドレスをペーストしてください。

ユーザの切り替え

さて、ここまで設定ができましたら、ユーザを切り替えます。

まずは今のサーバから抜けましょう。

# exit

minecraft ユーザで入りなおします。

$ ssh minecraft@123.456.78.900
minecraft@123.456.78.900's password: (パスワードを入力して Enter を押す)

minecraft の起動

マイクラサーバを起動してみます。

$ cd /usr/local/minecraft
$ java -Xmx512M -Xms512M -jar minecraft_server.jar nogui

[22:09:38] [Server thread/INFO]: Loading properties
[22:09:38] [Server thread/WARN]: server.properties does not exist
[22:09:38] [Server thread/INFO]: Generating new properties file
[22:09:38] [Server thread/WARN]: Failed to load eula.txt
[22:09:38] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[22:09:38] [Server thread/INFO]: Stopping server
[22:09:38] [Server Shutdown Thread/INFO]: Stopping server

起動しようと試みているのですが、失敗するはずです。

ls コマンドで配下のファイルが確認できます。

$ ls
eula.txt  logs  minecraft_server.jar  server.properties

eula.txt の修正

EULA(使用許諾契約)同意 しなければ、サーバの起動ができないようになっています。

$ vim eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sat Jul 02 22:09:38 JST 2016
eula=false

最終行の eula=falseeula=true に変更して、再度サーバを起動します。

$ java -Xmx512M -Xms512M -jar minecraft_server.jar nogui

[22:17:30] [Server thread/INFO]: Starting minecraft server version 1.10.2
[22:17:30] [Server thread/INFO]: Loading properties
[22:17:30] [Server thread/INFO]: Default game type: SURVIVAL

中略

[22:17:44] [Server thread/INFO]: Preparing spawn area: 81%
[22:17:45] [Server thread/INFO]: Preparing spawn area: 93%
[22:17:46] [Server thread/INFO]: Done (12.765)! For help, type "help" or "?"

これで起動できました。一度ログインできるか確認してみます。

マイクラからサーバに接続

いつも通りマイクラを起動しましょう。(サーバのバージョンと同じバーションで起動してください。)

「マルチプレイ」をクリックします。

f:id:neko_aquaalta:20160702222554p:plain

「サーバを追加」ボタンを押します。

サーバ名は適当につけ、「サーバアドレス」に契約した さくらVPS の IP アドレスを入力し、完了ボタンを押します。

f:id:neko_aquaalta:20160702222936p:plain

正常に接続ができていれば、緑色のアンテナマークが出るはずです。

f:id:neko_aquaalta:20160702223154p:plain

まずはこの状態で接続ができるところまで確認してください。 (これで接続ができない場合は、iptables の設定が怪しいことが多いです。再確認しましょう。)

無事に接続が終わったら、 stop と打って一旦サーバを落としましょう。

ワールドデータの設置

普段使っているワールドデータを Linux サーバに設置しましょう。

ちょっとわかりにくいかもしれませんが、以下のような感じです。

$ exit
$ scp コピーしたいローカルのファイルパス ユーザ名@リモートのホスト名:保存したいパス
$ cd マイクラのワールドデータが置いてあるPATH
$ scp -r world minecraft@サーバのIPアドレス:/usr/local/minecraft

マイクラのワールドデータは saves ディレクトリにあるフォルダになります。

参考: マイクラのセーブデータ保存場所

マイクラサーバの常時起動設定

さて、今の状態では ssh 接続が切れてしまうと、サーバも落ちてしまいます。

これを、いちいち起動せずに常時サーバが立ち上がっている状態にしましょう。

基本的には、公式が載せているコマンドをサーバ上で実行すればいいだけです。

参考資料: Tutorials/Server startup script

起動スクリプト( start_server.sh ) の作成

  • minecraft ユーザのみ実行可能
  • すでに起動している場合はなにもしない
$ cd /usr/local/minecraft
$ vim start_server.sh
#!/bin/bash

# Settings
SERVICE='minecraft_server.jar'
USERNAME='minecraft'
SCREENNAME='minecraft'
MC_PATH='/usr/local/minecraft'
XMX='512M'
XMS='512M'

ME=`whoami`

cd $MC_PATH

if [ $ME == $USERNAME ] ; then
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is already running!"
  else
    echo "Starting $SERVICE..."
    screen -AmdS $SCREENNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
  fi
else
  echo "Please run the minecraft user."
fi

実行権限の設定もしておきます。

chmod 744 start_server.sh

これで準備完了。

あとは、以下のコマンドを打つことでサーバが常時起動するようになります。

$ /usr/local/minecraft/start_server.sh

ここまで終われば一応設定は完了です!

終了スクリプト( stop_server.sh ) の作成

サーバの落とし方もワンコマンドでできる方が何かと便利なので、終了スクリプトも一応載せておきます。

  • minecraft ユーザのみ実行可能
  • すでに停止している場合はなにもしない
#!/bin/bash

# Settings
SERVICE='minecraft_server.jar'
USERNAME='minecraft'
SCREENNAME='minecraft'
MC_PATH='/usr/local/minecraft'

ME=`whoami`

cd $MC_PATH

if [ $ME == $USERNAME ] ; then
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Stopping $SERVICE"
    screen -p 0 -S $SCREENNAME -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'
    screen -p 0 -S $SCREENNAME -X eval 'stuff \"save-all\"\015'
    sleep 10
    screen -p 0 -S $SCREENNAME -X eval 'stuff "stop"\015'
    echo "Stopped minecraft server"
  else
    echo "$SERVICE was not runnning."
  fi
else
  echo "Please run the minecraft user."
fi

実行権限の設定もしておきます。

chmod 744 start_server.sh

これで準備完了。

あとは、以下のコマンドを打つことでバックグラウンドで動いているサーバを落とすことができます。

$ /usr/local/minecraft/stop_server.sh

長くなってしまったので、とりあえず以上です。 希望があれば、定期的にバックアップをとる方法も追記します。

mod 入りサーバを Linux で建てるのも機会があれば書きます。

それではみなさん、よいマイクラライフを!


SPONSORED LINK