こんにちは。初めて記事を書きます。お手柔らかにお願いします。
今回はDDNSを用いてMinecraftサーバを構築していきたいと思います。DDNSを用いることで、グローバルIPアドレスが変動する環境においても固定されたドメインを得ることができます。
ここでは、Minecraftサーバを動作させるために必要なJava(JDK)をインストールします。SSH or サーバのターミナルを用いて作業をしていきます。
リポジトリを追加します。
$ sudo add-apt-repository ppa:webupd8team/java
[ENTER]
$ sudo apt updateapt経由でJDKをインストールします。 少し時間かかりますので、ゆっくり待ちます。
$ sudo apt install oracle-java8-set-default確認 インストールができたら、JDKの確認をします。
$ javac -versionバージョンが表示されたら、JDKのインストールは完了です。
ここでは、Mincraftのサーバプログラムをダウンロードし初期動作を行います。
Minecraftサーバプログラムのダウンロード
Minecraft公式ページからダウンロードします。ブラウザからダウンロードしてもOKですが、今回はwgetコマンドを使用してダウンロードします。
記事作成時の最新バージョンは1.13.2です。
$ wget https://launcher.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jarダウンロードが完了すると、ディレクトリにserver.jarファイルが存在することが確認できます。
初期動作
server.jarをダウンロードしたら、わかりやすいようにserverというディレクトリに移動させます。
$ mkdir server
$ cp server.jar server
$ cd server次は初期動作です。Minecraftを遊ぶには、EULAと呼ばれる使用許諾契約に同意しなければいけません。サーバ初期起動時には、同じディレクトリに複数のファイルが生成されます。その中に、eula.txt というファイルが生成されます。このファイルを編集して同意します。
$ java -jar server.jar nogui初期起動をすると、以下のようなログが出力されます。
~~~省略~~~
[21:26:09] [main/INFO]: Loaded 0 recipes
[21:26:09] [main/INFO]: Loaded 0 advancements
[21:26:09] [Server thread/INFO]: Starting minecraft server version 1.13.2
[21:26:09] [Server thread/INFO]: Loading properties
[21:26:09] [Server thread/WARN]: server.properties does not exist
[21:26:09] [Server thread/INFO]: Generating new properties file
[21:26:09] [Server thread/WARN]: Failed to load eula.txt
[21:26:09] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[21:26:09] [Server thread/INFO]: Stopping server
[21:26:09] [Server thread/INFO]: Saving worlds
[21:26:09] [Server Shutdown Thread/INFO]: Stopping server
[21:26:09] [Server Shutdown Thread/INFO]: Saving worlds次に、eula.txtを編集します。
$ nano eula.txtnanoエディタを用いて編集します。中身は以下のようになっています。
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://$
#Fri Feb 08 21:26:09 JST 2019
eula=false最後の行にあるeula=falseをeula=trueに変更します。
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://$
#Fri Feb 08 21:26:09 JST 2019
eula=truenanoエディタで上書き保存するには、Ctrl+wの後にYを入力し、ファイル名を確認の上でEnterキーを押します。
動作確認 さて、初期設定は完了したのでテストとしてサーバを起動します。
$ java -jar server.jar noguiサーバを起動すると以下のようなログが出力されます。
~~~省略~~~
[21:35:13] [Server thread/INFO]: Preparing spawn area: 88%
[21:35:13] [Server thread/INFO]: Preparing spawn area: 92%
[21:35:14] [Server thread/INFO]: Preparing spawn area: 96%
[21:35:14] [Server thread/INFO]: Preparing spawn area: 100%
[21:35:14] [Server thread/INFO]: Time elapsed: 14431 ms
[21:35:14] [Server thread/INFO]: Done (25.659s)! For help, type "help"この状態になったら、サーバは正常に起動しています! やったね!
テストでワールドに参加してみる
もし、サーバを構築しているマシンでMinecraftを起動しているのならlocalhost:25565でログインできます。
それ以外の場合、サーバのローカルIPアドレスを指定してログインします。
$ ifconfiginetアドレスにあるアドレスを確認します。192.168.1.7と仮定します。
192.168.1.7:25565でサーバにログインできます。
ローカルに建っているサーバを外部(Internet)に公開します。そのためには、ルータの設定を変更し、外部から25565番ポートへのアクセスを許可します。
ルータの種類によってはUIが異なりますが、本質的には同じなので頑張って設定してみよう。
ルータへアクセスする
ここからは筆者の環境で行います。192.168.1.1が私の環境のデフォルトゲートウェイです。
http://192.168.1.1にブラウザでアクセスします。ログインを求められるので、ログインをします。
NAT or NAPTの設定をする
今回は25565<--->25565のポート変換ですが、NAPTを設定しています。
同ポート間のアドレス変換なのでNATでももちろん可能
上の画像の例では以下のようなネットワークとなっています。
Internet
|
|
| --- Global IP Address
|
|
(X.X.X.X:25565)
Gateway --- IP変換(Global<--->Local)
(192.168.1.1)
|
|
| --- Local IP Address
|
|
Server
(192.168.1.7:25565)
X.X.X.XはグローバルIPアドレス外部からアクセスして確認
前項ではNAT or NAPTで設定をしました。正常に設定出来てるならば、グローバルIPアドレスを元にMinecraftサーバへアクセスすることができます。
X.X.X.X:25565でログインしてみよう!
ルータは再起動等が起きると、グローバルIPが変動します。つまり、前項の設定ではグローバルIPを皆に通知しないとログインできなくなります。
そこで、DDNSというものを利用して、X.X.X.X:25565 <---> boyon.hoge:25565のように独自ドメインを持つことができます。また、IPが変動しても、設定をしていれば自動でこの対応が持続します。
DDNSサービスを利用します
今回では無料で利用できるhttps://f5.si/を利用します。アカウントを作成すると、グローバルIPを設定することで、アカウント名.f5.siというドメインと対応付けすることができます。
f5.siで設定
アカウント名.f5.siとサーバのグローバルIPを対応させます。以下の画像のように設定します。
設定を更新すれば、アカウント名.f5.si:25565でMinecraftサーバにログインすることができます。
グローバルIPの通知設定
IPアドレスに変動が起きた場合に、現在アカウント名.f5.siに対応付けされているグローバルIPを更新します。通知に用いるプログラムはDiCEと呼ばれるもので、公式サイトに設定方法が書いてあります。また、APIも公開されているので、通知プログラムを自分で作成してみるのも楽しいです。
さてさて、ここまで全て成功すれば見事にお家Minecraftサーバの完成です!!! おめ!!! イェーーーーイ!!!!
あとは、serverディレクトリにあるserver.properties等を編集して好みサーバにしましょう。
また、以下のような設定を行うことでよりサーバを管理しやすくなります。
Minecraftサービスをsystemdに登録する
設定こちらの設定を行うことで、systemctlコマンドを利用してMinecraftサービスの自動起動、再起動、ステータス確認、停止を行うことができて便利です。
独自拡張機能
Minecraftサーバのログを収集することで、誰がログインしたかなどを知ることができます。journalctlコマンドを利用したり、プログラミング言語のライブラリ等を使用することで、色々な機能を実装することができます。筆者はログインすると自動でツイートするスクリプトを組んでいます。
ぜひ、皆さんもチャレンジしてみてください!!!