なんでやろうとおもったの?
Ninjaが好きに使えるMinecarftの環境があったらいいよなぁと、おぼろげにずっとおもってました。 ある日聞いたら、Ninjaが借りて使っているMinecraftのサーバは、無料なんだけど結局ボランティアベース(?)だし、利用者が多いとかなり重い(Ninja曰く「ラグる」)という話を聞いていたので、じゃぁいっちょやるか、と。
思い立ったが吉日
2020年7月12日のCoderDojo 恵庭(オンライン)が始まって、Ninjaたちがそれぞれに活動始めると結構それだけでお互いの自助努力でDojoは回り始めるので、正直そうなってしまうとあんまりやることがない。
また、どうも事情はよく分からないんだけれど、Ninjaが借りているMinecraftのサーバにみんながつなげるのに、なんか結構苦労している様子が。。。
そしてNinjaの一人でマイクラ達人(K君)がいて、その彼が毎回件のサーバに接続して、いろいろ助けてくれているだけれど、それがもっと便利に、Ninjaの使い勝手よくできないかなぁとおもって、やるなら今だろう、ということで。
やったこと
- ドキュメント確認
- バイナリダウンロード
- 設定
- 起動
- ルータの穴あけ
- 権限移譲(丸投げ(笑))
- サーバ停止
- バックグラウンドで起動
- 効果
1. ドキュメント確認
とりあえず、公式のドキュメント確認。
minecraft_server.1.16.1.jar をダウンロードして以下のコマンドで実行しましょう:
java -Xmx1024M -Xms1024M -jar minecraft_server.1.16.1.jar nogui
あれ?これだけ?
2. バイナリダウンロード
サーバをダウンロード。ダウンロードしたバイナリは server.jar という名前だったので、先に書いたドキュメントとちょっと食い違う。 ファイルは適当なディレクトリに置いた。自分の場合は $HOME/minecraft/server.jar としておいた。
3. 設定
あとは公式のチュートリアルに沿って。
とりあえず一度起動する。
java -Xmx1024M -Xms1024M -jar server.jar nogui
ログを残すのを忘れちゃったのでよく覚えていないんだけど、一度起動に失敗する? 原因はEULA(使用許諾)を了承しなければいけないから。 これは(ドキュメントにももちろんあるんだけど)、起動したディレクトリに eula.txt というファイルが生成されるので、これを修正する。
eula=false
となっているところを、
eula=true
に直す。 僕の場合は、サーバは Ubuntu Server なので、サーバにログインして、 vi でちょこっと修正。
4. 起動
再度起動
java -Xmx1024M -Xms1024M -jar server.jar nogui
これでサーバが起動する。 最初はいろんなものをロードしているせいなのか数分かかったけど、2回目以降は早くなるみたい。
5. ルータの穴あけ
もともと NAT の内側で公開しているサーバに立てたので、グローバルのIPでアクセスできるんだけど、ルータに穴あけしてやる必要がある。 TCP のポート(25565)に外部からアクセスできるようにルータの設定を追加。
6. 権限移譲(丸投げ(笑))
ここまでやって、NinjaにIPアドレスとポート番号をチャットで公開。 試してもらったらあっさりつながった。
このままだとだれでも使えちゃう状態なので、何とかしたいなぁと思いK君に「認証とかないかねぇ?」と質問したら「ホワイトリスト」という答えがあっという間にかえってくる(笑) と言っている間にホワイトリストの設定をがしがしすすめてくれるので、僕既にやることなし(笑)
7. サーバ停止
起動したターミナルで、 /stop
でサーバ停止する。
そのほかのコマンドは、はやりMinecraftを起動したターミナルで、 help
と打つとずらずらっと出てきます。
このターミナルにはログがずらずら出てきて面白い。ログインしている人のチャットも出てくるので治安が悪くなったらわかる。
8. バックグラウンドで起動
screen 利用してバックグラウンドで起動して、いつでも利用できる状態にしておいた。
9. 効果
2020年7月26日のオンラインDojoで再度サーバを起動して、参加Ninja4人とメンター2名でログインしてやってみました。 いや、これ面白い。
あんまりコマンドがよくわかっていないNinjaが動物のオブジェクトを100だか200だか生成してしまい、サーバに負荷がかかったり、結果端末が重くなったり、それをK君が一気に削除して対応してみたり、、、
とりあえず自前のサーバなのでなんかあってもすぐ対応できるし、迷惑がかかる範囲はCoderDojo恵庭の中だけだし、それもそれでいろいろ学んでくれるだろうし、またなによりみんなで同じワールドでわいわいやるのは楽しかった(笑)。傍で見ているだけで楽しかった!
というわけで、しばらく運用してみるつもりです。