LoginSignup
66
46

More than 1 year has passed since last update.

Minecraftサーバー(Spigot)を構築していい感じに設定する

Last updated at Posted at 2019-12-03

はじめに

最近、Minecraftサーバー(Spigot1)を運営し始めたので、その動作環境と設定や導入したプラグインについて書こうと思います。
ぼくのかんがえたさいきょうのマイクラサーバーを披露します。

  • Minecraft (Spigot) 1.14.4
  • バニラ
  • ホワイトリスト制
  • チャット日本語化
  • その他色々

既にサーバーの構築が終わっている方はサーバーの設定プラグインの導入からご覧ください。

サーバーの構築

Minecraftサーバーとして公式よりも高機能と言われているSpigotサーバーを導入します。

環境

GCPの無料枠2を活用して以下の環境を作成しました。なんの変哲もない環境で変な設定もしていません。

  • Ubuntu 18.04.3 LTS
  • n1-standard-1 (CPU 1 | 3.75 GB)

インストール

Spigotを動かすにはJava 8 以上が必要3なのでインストールします。

sudo apt-get install openjdk-8-jre-headless

無事Javaがインストールできたら、Spigot本体をビルドします。
https://www.spigotmc.org/wiki/buildtools/ の手順に従って進めていきました。
以下ように実行すると1.14.4のサーバーが手に入ります。

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
java -jar BuildTools.jar --rev 1.14.4

大人の事情4により必ずユーザーがビルドしなければならないようです。
ところが、https://getbukkit.org/download/spigot に堂々とビルド済みファイルが置いてあります。
結果としてspigot-1.14.4.jarのような実行ファイルが手に入れば成功です。

初回起動

java -jar spigot-1.14.4.jar

初回起動するとすぐに終了すると思います。

実行ファイルと同じディレクトリにeula.txtが生成されるので、ライセンス条項5に同意できる場合は編集してeula=falseとなっている部分をtrueに書き換えます。

eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Sep 01 00:00:00 UTC 2019
eula=true

もう一度spigot-1.14.4.jarを起動するとワールドが生成されサーバーが接続待機状態となります。

公開

Minecraftサーバーは25565番ポートで動作するので、25565番ポートを開放して、マシンのグルーバルIPを伝えるとアクセスすることができます。更に今回は所有していたドメインのサブドメインを作ってAレコードを登録しました。

Name TTL Type Value
craft.example.com 3600 A xxx.xxx.xxx.xxx

これでドメインを使ってサーバーに接続できます。
ポート開放やドメイン設定が面倒な場合はそれらを使わないサーバーの公開方法もあります。そこでよくHamachi6を使った方法が紹介されていますが、個人的にはngrok7を使うのがおすすめです。

起動スクリプトの作成

与えるメモリの容量を指定してバックグラウンドでサーバーを起動するスクリプトを作ります。
バックグラウンド実行のためにscreen8をインストールします。

sudo apt-get install screen

以下のようなMakefileを作成しました。

Makefile
start:
    screen -d -m -S "spigot" java -Xms1G -Xmx2G -XX:+UseConcMarkSweepGC -jar spigot-1.14.4.jar

これで、make startでサーバーを起動できます。

サーバーの設定

要求を満たすようにサーバーの設定を変更していきます。

基本設定

server.propertiesを以下のように変更しました。重要なのはホワイトリスト化したことだけで、それ以外は個人的な趣味です。

server.properties
# 見栄を張って最大接続数を少し増やしました
max-players=32
# 安全のためホワイトリスト制に変更
white-list=true
# サーバー紹介文を変更
motd=A Minecraft Server \u00A79[version 1.14.x] By Spigot

spigot.ymlrestart-scriptを自作の起動スクリプトに変更しています9

spigot.yml
settings:
  restart-script: make start

ホワイトリスト追加

前項でホワイトリスト化したので、基本的にはホワイトリストにユーザーを追加しなければサーバーに接続できません。
サーバーのコンソールから[username]に追加したいユーザー名指定して以下コマンドを実行します。screenを使っている場合はscreen -rでアタッチしてCtrl-A Dでデタッチできます。

whitelist add [username]

プラグインの導入

Spigotサーバーは./plugins/の中に実行ファイルを配置するだけで簡単にプラグインの導入ができます。

LunaChat

チャンネルチャットプラグインらしい10ですが、主にゲーム内のチャットを日本語化するために導入しました。
チャットにローマ字入力すると以下のように変換されます。
luna1.png

https://github.com/ucchyocean/LunaChat/releases からLunaChat.jarをダウンロードして、./plugins/の中に配置します。
サーバーを再起動すると./plugins/LunaChat/の中に設定ファイルが作られています。
例えばconfig.ymlngwordにはデフォルトで以下のようなNGワードが設定されています。

config.yml
ngword: ['ちん(こ|ぽ|ちん)']

これに該当するワードをチャットで発言すると伏せ字になります。
luna2.png
当サーバーでは言論の自由を尊重するためNGワードは取っ払っておきました。

LegendaryMessages

ゲーム内の各種メッセージを独自に変更できるプラグイン11です。
これを利用して接続・切断時メッセージをオリジナルにしました。
legend.png

https://dev.bukkit.org/projects/joinmessages/files からLegendaryMessages.jarをダウンロードして、./plugins/の中に配置します。
サーバーを再起動して./plugins/LegendaryMessages/の中のconfig.ymlを編集して以下のようにしました。

config.yml
Returning_Join_Message:
  Message: '&d%player_name% さん登場!!ヽ(`▽´)/'
Quit_Message:
  Message: '&d%player_name% さんがお帰りです(´・ω・`)'

Slack

MinecraftサーバーとSlackと連携するプラグイン12です。
誰かがサーバーに接続するとSlackのチャンネルにメッセージを送るようにしました。
slcak.png

まず、https://my.slack.com/services/new/incoming-webhook にアクセスしてSlackのWebhook URLを取得します。
次に、https://github.com/mastercoms/SlackMC/releases からSlack.jarをダウンロードして、./plugins/の中に配置します。
サーバーを再起動して./plugins/Slack/の中のconfig.ymlを編集してwebhook URLを指定しました。

config.yml
webhook: https://hooks.slack.com/services/***/***/***

Minecart Speed Plus

トロッコの速度を変更できるプラグイン13です。
以下のようなを設置するとトロッコの速度を定数倍できます。
msp.png

https://www.spigotmc.org/resources/minecart-speed-plus.69639/ からMinecartSP.jarをダウンロードして、./plugins/の中に配置します。
プレーヤーにトロッコの速度を変更させるには権限を与える必要があるので、permissions.ymlに適当な権限を作ってmsp.signsを許可してやります。

permissions.yml
server.basics:
  description: Basic permissions
  default: true
  children:
    msp.signs: true

サーバーを再起動すると看板を用いてトロッコの速度が変更できるようになっています。

Dynmap

ブラウザから閲覧できるマップを導入するプラグイン14です。
Minecraftの世界がGoogle MapのようなUIで眺められるようになると思うといいと思います。
dynmap.png

https://github.com/webbukkit/dynmap/releases からMinecartSP.jarをダウンロードして、./plugins/の中に配置します。
サーバーを再起動して、コンソールから以下のようなコマンドを実行するとマップの描画が始まります。

dynmap fullrender world

Dynmapは8123番ポートで動作するので、8123番ポートを開放してブラウザからhttp://[IP Address]:8123にアクセスすることで閲覧できます。
しかし、8123番ポートにアクセスするのはどうもイケてないような気がしたので、リバースプロキシを使ってサブディレクトリに80番ポートで公開することにしました。

WebサーバーのNginx15をインストールします。

sudo apt-get install nginx

/etc/nginx/nginx.confを編集して/etc/nginx/sites-enabled/をincludeしないようにコメントアウトします。

/etc/nginx/nginx.conf
http {
  ...
  include /etc/nginx/conf.d/*.conf;
  # include /etc/nginx/sites-enabled/*;
}

/etc/nginx/conf.d/の中に適当な名前のファイルを作成して、/dynmapにアクセスしたときにDynmapが表示されるように設定します。

/etc/nginx/conf.d/minecraft.conf
server {
  listen 80;
  listen [::]:80;
  server_name minecraft;
  # `/dynmap`にアクセスすると8123番ポートのDynmapに繋がります
  location /dynmap/ {
    proxy_pass http://localhost:8123/;
  }
  # `/`にアクセスするとホームページが表示されます
  location / {
    root /home/xxxxx/web;
  }
}

rootで指定したディレクトリに適当なindex.htmlを追加してホームページを作っておきます。

~/web/index.html
<h1>Welcome to My Server</h1>
<a href="./dynmap">Dynmap</a>

Nginxを再起動するとhttp://[IP Address]/dynmapでマップが閲覧できるはずです。

sudo nginx -s reload

最後に

備忘録も兼ねて運営しているサーバーが今の状態になるまでに行ったことをすべて書いてみました。
自分と同じような要求でMinecraftサーバーを運営したいと思っている方々のお役に立てれば幸いです。

66
46
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
66
46