sashimi4’s diary

日々の雑多なメモを書きます

コピペ一発で!さくらのVPSでマイクラマルチサーバー

はじめまして、おさしみです。 今回は、 さくらのVPSでマインクラフトのマルチサーバーを簡単に構築する方法を紹介したいと思います。

注意

  • 本ページ内容はMojang社の公式情報ではありません。 本ページ内容の手順を用いたことによって問題や損害が発生しても責任を負いかねます。 予めご了承ください。

  • 今回はver 1.12.1を利用しています。 気が向いたら本ページ内容・スクリプトも更新したいと思います。

関連知識

今回はコスパの面から、さくらのVPSを用います。下記の記事を読んでおくと、より理解が深まるかと思います。 参考までに。

作業手順

1. さくらのVPSの申込み

まずはじめに、さくらのVPSの申し込みが済んでいることが必要です。 上にも上げた、こちらの記事が参考になるかと思います。

ちなみにさくらのVPSでは、後からスペックをアップすることができるスケールアップ機能が提供されているので、 低価格なプランからのスモールスタートすると良いと思います。(「もたつく。処理落ちする。」等あれば後からスペックアップすれば良い)

2. スタートアップスクリプトの登録

さくらのVPSでは、最近スタートアップスクリプト機能がリリースされました。 今回は、このスタートアップスクリプト機能を利用して “簡単に” マインクラフトサーバーを構築します。

スタートアップスクリプト機能とは、サーバー作成完了後の初回起動時に任意スクリプトを実行し、 パッケージのインストールや各種設定作業の自動化などを簡単に実現できる機能です。

まずはマイクラマルチサーバーを起動するためのカスタムスクリプトを登録します。 3分クッキングですが、以下のスクリプトをキャプチャのようにまるまるコピー&ペーストします。

「なんて書いてあるかわからないけど、とにかくマイクラサーバーが起動すればいいんだ!」という方は、おまじないとでも思ってください…。←

なお、このスクリプトを使用する前に必ず次の許諾に目を通し、同意してください。https://account.mojang.com/documents/minecraft_eula

##############################
# It works on Ubuntu 16.04
# Agree to the license before using this script : https://account.mojang.com/documents/minecraft_eula
##############################

# Open serving port(25565) with SAKURA VPS Ubuntu16.04 default iptables config
cat > "/etc/iptables/iptables.rules" <<EOF
*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 -p tcp -m tcp --dport 25565 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF
iptables-restore < /etc/iptables/iptables.rules

apt -y update

# Install Java for running Minecraft server
apt -y install openjdk-8-jdk
# Screen as background task executor
apt -y install screen

# Make server dir
mkdir /home/ubuntu/minecraft/
cd /home/ubuntu/minecraft/

wget -O minecraft_server.jar https://s3.amazonaws.com/Minecraft.Download/versions/1.12.1/minecraft_server.1.12.1.jar

# Agree to the license
cat <<EOF > eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#$(date)
eula=true
EOF

# Generate a server start-up script
cat <<EOF > start_minecraft_server.sh
#!/bin/bash
screen -AdmS minecraft-server /bin/bash -lc 'cd /home/ubuntu/minecraft/ && java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui'
EOF

chmod +x start_minecraft_server.sh

# Set to start automatically at reboot
cat <<EOF > /var/spool/cron/crontabs/ubuntu
@reboot    /bin/bash -lc /home/ubuntu/minecraft/start_minecraft_server.sh 2>&1 >> /home/ubuntu/minecraft/cron.log
EOF
chown ubuntu /var/spool/cron/crontabs/ubuntu
chmod 600 /var/spool/cron/crontabs/ubuntu

chown -R ubuntu .**

# Reboot to trigger CRON
reboot

↓コピー&ペースト↓

コントロールパネルからスクリプトを追加。 f:id:sashimi4:20170808010955p:plain

コピー&ペーストで入力。 f:id:sashimi4:20170808011006p:plain 保存を押して完了です。

スクリプト内容について

このスクリプトは、サーバー(OS)が再起動するたびに自動でマイクラサーバーが立ち上がるようになっています。 不調時や、マイクラサーバーが落ちてしまった時は、サーバー(OS)を再起動するだけで自動で立ち上がります。

マイクラサーバーは screen によってバックグラウンドで動作しています。 マイクラサーバーの設定を行う方法は、後述の マイクラサーバーの設定を変更する方法 を確認してください。

3. OSの再インストール

続いて、先程追加したスクリプトを実行するためにOSを再インストールします。

メニューから"OSインストール"を選んで、 f:id:sashimi4:20170808012415p:plain

ダイアログで"標準OS"を選択。 f:id:sashimi4:20170808012432p:plain

各種項目を入力します。 f:id:sashimi4:20170808012453p:plain

  • 名前 : お好みの名前をどうぞ
  • パスワード : 簡易なものではなく、推測されにくいものを設定してください。※忘れないように注意してください

入力内容が間違っていないかを確認し、実行ボタンを押します。 f:id:sashimi4:20170808012538p:plain

インストール完了を待ちます。 コントロールパネルのマークが"起動中"になればインストール完了です。 (停止した状態でインストール実行した場合は、電源をONにしてください。) f:id:sashimi4:20170808012554p:plain

動作確認

実際に繋いでみます。 コントロールパネルに表示されているアドレスを接続先として入力します。 f:id:sashimi4:20170808012644p:plain ↓入力↓ f:id:sashimi4:20170808013309p:plain ↓接続↓ f:id:sashimi4:20170808013323p:plain 無事接続されました!

おまけ

ちょうど目の前に村があったので、seed値を公開しておこうと思います。

/seed
[00:16:22] [Server thread/INFO]: Seed: 5456644412029101600

マイクラサーバーの設定を変更する方法

設定ファイルを書き換える

まず、シリアルコンソールにログインします。

vi minecraft/server.properties

次に、このコマンドを実行すると、VIというエディタで設定ファイルが開かれます。 VIの操作は特殊なので、こちら等を参考に、任意の項目を書き換えてください。

マイクラのサーバーコマンドから設定を変更する

今回紹介したスクリプトでは、サーバーをバックグラウンドで動かすために screen というツールを利用しています。 こちらもシリアルコンソールにログインして作業を行います。 サーバーの設定を変更するために下記のコマンドを実行して、既に起動しているscreenのセッションに入り(attachし)ます。

ubuntu@***-***-*****:~$ screen -r minecraft-server
[16:51:40] [Server thread/INFO]: Default game type: SURVIVAL
[16:51:40] [Server thread/INFO]: Generating keypair
[16:51:40] [Server thread/INFO]: Starting Minecraft server on *:25565
[16:51:40] [Server thread/INFO]: Using epoll channel type
[16:51:40] [Server thread/INFO]: Preparing level "world"
[16:51:41] [Server thread/INFO]: Loaded 488 advancements
[16:51:41] [Server thread/INFO]: Preparing start region for level 0
[16:51:43] [Server thread/INFO]: Preparing spawn area: 0%
[16:51:44] [Server thread/INFO]: Preparing spawn area: 42%
[16:51:45] [Server thread/INFO]: Done (4.456s)! For help, type "help" or "?"

attachすると、実行中のマイクラサーバーログが表示されます。

あとは通常どおり、 / でマイクラのコマンドを実行します。

/help
[16:54:45] [Server thread/INFO]: --- Showing help page 1 of 10 (/help <page>) ---
[16:54:45] [Server thread/INFO]: /advancement <grant|revoke|test> <player>
[16:54:45] [Server thread/INFO]: /ban <name> [reason ...]
[16:54:45] [Server thread/INFO]: /ban-ip <address|name> [reason ...]
[16:54:45] [Server thread/INFO]: /banlist [ips|players]
[16:54:45] [Server thread/INFO]: /blockdata <x> <y> <z> <dataTag>
[16:54:45] [Server thread/INFO]: /clear [player] [item] [data] [maxCount] [dataTag]
[16:54:45] [Server thread/INFO]: /clone <x1> <y1> <z1> <x2> <y2> <z2> <x> <y> <z> [maskMode] [cloneMode]
[16:54:45] [Server thread/INFO]: Tip: Use the <tab> key while typing a command to auto-complete the command or its arguments

/op sashimi3
[16:55:35] [Server thread/INFO]: Opped sashimi3

/banlist
[16:54:45] [Server thread/INFO]: There are 0 total banned players:
[16:54:45] [Server thread/INFO]:

設定が済んだら、 Ctrl キーを押した後に一旦離してから、 D キーを押すと離れることができます。

バージョンアップデート方法

サーバー実行ファイルのダウンロードページにアクセスし、ダウンロードリンクをコピーします。 https://minecraft.net/ja/download/server f:id:sashimi4:20170810162333p:plain

次に、シリアルコンソールにログインし、下記のように入力して実行します。

cd /home/ubuntu/minecraft && wget -O minecraft_server.jar [コピーしたダウンロードリンク]
ubuntu@xxx-xxx-xxxxx:~$ cd /home/ubuntu/minecraft && wget -O minecraft_server.jar https://s3.amazonaws.com/Minecraft.Download/versions/1.12/minecraft_server.1.12.jar
--20xx-xx-xx xx:xx:xx--  https://s3.amazonaws.com/Minecraft.Download/versions/1.12/minecraft_server.1.12.jar
Resolving s3.amazonaws.com (s3.amazonaws.com)... xx.xxx.xx.xx
Connecting to s3.amazonaws.com (s3.amazonaws.com)|xx.xxx.xx.xx|:xxx... connected
.
HTTP request sent, awaiting response... 200 OK
Length: xxxxxxxx (xxM) [application/octet-stream]
Saving to: ‘minecraft_server.jar’

minecraft_server.ja 100%[===================>]  xx.x0M  x.xxMB/s    in x.xs

20xx-xx-xx xx:xx:xx (x.xx MB/s) - ‘minecraft_server.jar’ saved [xxxxxxxx/xxxxxxxx]

ubuntu@xxx-xxx-xxxxx:~/minecraft$

このように表示されたら、アップデートのダウンロードは成功です。 サーバー(OS)を再起動すれば新しいバージョンでマイクラサーバーが起動されます。

雑感

  • 主題はゲームっぽかったが、個人的にはシェルスクリプト等々で色々と悩み勉強になりました…(つかれた)
  • 普段からマイクラの鯖管しているので、移行先作ったりとか楽になる〜
  • 普段からヘビーに使ってるだけあってステマっぽくなってしまったが、他の業者のVPS/クラウドにも対応できたらしようと思います。
  • マイクラたーのしー!!!

  • スクリプトに関する補足説明と、マイクラサーバーの設定変更手順を後ほど追記しようと思います。(ゲームモード変更など)