目次
Minecraft統合版サーバー(Bedrock版)をGCPで立てる
MinecraftのBedrock edition、便利ですよね。スマホからもwindows10からも遊べます。
このBedrock版ですが、アルファ版のサーバーが公式から出ています。
今回はこのサーバーを、Google Cloud Platform上に立てたので、その方法をまとめて紹介します。
Google Cloud Platformに登録する
- Google Cloud Platformに行き、自分のGoogleアカウントでログイン
- Google Cloud Platformを使ったことがない場合、以下の画面が表示される。規約に同意できる場合は、そのまま登録する。
- プロジェクトのダッシュボードへ移動。
- 新規プロジェクトを作成
- 適当なプロジェクト名を入力して作成
- ダッシュボードが更新されれば終了
インスタンスを立てる
GCPでは、Googleの保有するサーバーから仮想上のPCを構成できます。これはインスタンスと呼ばれていて、Compute Engineというサービスの一種です。今回は4人同時に遊べるくらいの最低限のサーバーを作っていきます。
-
Compute Engine > VMインスタンスへ移動
因みに、無料トライアルやクレジットカードの登録が済んでいないアカウントでは作成できないので注意です。
-
作成をクリック
-
下記画像のように赤枠内を設定
この時、マシンタイプをカスタムにしてCPUとメモリを調節してください。これは後から調節可能なため、「人が増えてスペックが必要になった」などの場合でもスケールできます。また、ブートディスクはUbuntu 18.04 LTSにしてください。公式の出しているBedrock-serverはUbuntuのみサポートしています。 -
管理、セキュリティー…の部分を開き、管理>可用性ポリシーからプリエンプティブをオンにします。
これはGoogleの余ったリソースを使う方式で- 24時間で自動シャットダウン
- リソースが足りなくなったら勝手に切られる
というデメリットがありますが、非常に価格が安くなります。
プリエンプティブにしてサーバーを起動し続けた場合の価格は以下の通りに再計算されました。
つまり、土日に合計6時間遊ぶ程度であれば、月24時間×2.2円=52.8円のみの支払いで遊べます。
そもそもMinecraftサーバーは身内でやる限りは一日数時間のみ起動していればいいので、かなり好都合です。
次回の記事でdiscordからminecraftサーバーを起動する方法を解説します。こうすれば、遊びたい人がコマンド一つでサーバーを起動・停止でき、費用も必要最小限に抑えられます。
-
ネットワーキング>ネットワークインターフェースの外部IPを選択。エフェメラルをIPアドレスを作成にします。
-
適当な名前を付け、予約をクリック
この時に出てきたIPアドレスがインスタンスのIPとなります。このIPを使って接続するため、メモしておきましょう。
-
ネットワークタグに
minecraft-server
を入力
これは後でポートを開放する際に使用します。GCPのポート開放は非常に簡単なので、安心してください。 -
「作成」をクリックして作成完了です。お疲れさまでした!
ポート開放(ファイヤーウォールの設定)
Minecraftを接続するには、Minecraftが通信するためのポート開放が必要です。
- GCPダッシュボード>ネットワーキング>ファイヤーウォールをクリック
- ファイヤーウォールルールを作成をクリック
- 名前に「minecraft-server」のように名前を付ける
- ターゲットタグに「minecraft-server」を入力。これは先程インスタンスに設定したネットワークタグです。
- プロトコルとポートのtcpとudpにチェックを入れ、「19132,19133」ポートを入力する
- 作成を選択して終了
これで、ファイヤーウォールルールに作成した名前と開放されたポートが出ました。
以上でポート開放が終わりました。非常に簡単ですね!
Java版のMinecraftとは違い、udpポートも開ける必要があります。また、ポート番号も19132になっているため、注意が必要です。
Minecraftサーバーのダウンロード
-
VMインスタンスへ移動します。
-
先程作成したインスタンスにチェックを入れて、開始をクリックします。
しばらくして起動していれば、右にSSHボタンが表示されます。
-
このボタンを押し、ブラウザのSSH画面を開きましょう。
SSHとは、サーバーに直接つないでコマンド操作することと考えてください。Windowsでいうコマンドプロンプトのリモート版です。 -
接続できると、このような黒い画面にコマンドが入力できるようになります。
-
Minecraft用サーバーソフトウェア(公式)にいき、Ubuntu用サーバーソフトウェアのチェックを入れます。
この時、ダウンロードリンクの右クリックから、リンクをコピーしてください。
-
SSHの画面に戻り、以下のコマンドを入力して、Enterで実行します。
wget コピーしたリンク
貼り付けるときはCtrl + Vです。
すると、コマンドが走り、今いるフォルダにzipファイルが保存されます。 -
ls
を入力して、zipファイルがあることを確認しましょう。
-
このzipファイルを解凍します。そのためにunzipコマンドをインストールしましょう
以下のコマンドを実行し、unzipをインストールします。
sudo apt update
sudo apt-get install zip unzip
-
その後、
unzip bedrock-server-1.13.0.34.zip
を入力します。入力時に「bed」まで入れて、Tabキーを押すと補完してくれます。 -
実行すると、解凍されたファイル群が見つかります。
これでMinecraftサーバーのダウンロード・インストールは完了です。
Minecraftサーバーの実行
いよいよサーバーを実行します。
ファイルを解凍したフォルダで以下のコマンドを実行してみましょう。
LD_LIBRARY_PATH=. ./bedrock_server
実行されれば、下記画像のようになります。
これで、サーバー起動完了です!
Minecraftから接続してみる
まず、インスタンスのIPアドレスをメモしておきましょう。IPアドレスはCompute Engineのダッシュボードから確認できます。
Minecraftを起動し、サーバーアドレスにそのIPを入力します。
無事に接続できました!
統合版のサーバーですので、もちろんスマホからも接続できます。
※現時点ではSwitchのみ対応していないようです。
サーバーを止める
サーバーが起動している画面でstop
と入力します。
これで安全にサーバーを落とせます。
SSHを切断しても動くようにする:Screenコマンド
このままでは、SSHの切断と同時にサーバーも停止してしまいます。
これを防ぐため、バックグラウンドで実行し続けるScreenコマンドを使います。
minecraftサーバーがあるディレクトリ上で、以下のコマンドを実行しましょう。
screen -DmS bds ./bedrock_server
これで、サーバーがバックグラウンドで起動します。
screenコマンドは、違う端末が開かれるイメージです。Minecraftサーバーを起動している端末に入ってみましょう。
screen -r
を入力すると、サーバーの起動画面が出ます。
この端末から離れる時は、ctrl + a
の後にd
を押します。これで端末から離脱(デタッチ)できます。
デタッチ後は、SSHのウィンドウを閉じても、Minecraftサーバーは動き続けます。
以下まとめると、
Minecraftサーバーを起動したい場合は、
- SSHでログイン
screen -DmS bds ./bedrock_server
で起動
Minecraftサーバーを停止したい場合は、
- SSHでログイン
screen -r
でサーバー起動画面へ移動stop
コマンドを打つ(ここで自動的にscreenが終了する)
となります。
インスタンスの停止
インスタンスを起動している時間で課金されるので、安く済ませるためにはインスタンスを停止したいですね。
これは非常に簡単です。
Compute Engine > VMインスタンス から、サーバーのインスタンスにチェック入れて停止を押してください。
以上の操作でインスタンスがシャットダウンされ、その間は料金がかかりません。
自分のワールドをアップロードする
上記の方法では新しいワールドを生成しています。次に既存のワールドをアップロードして起動する方法を紹介します。
Realmsの場合
- Realmsのバックアップからワールドをダウンロードする
- ローカルの世界に追加されていることを確認する
これで必要なワールドデータが自分のPCに保存されました。次にこれをアップロードしていきましょう。
ローカルのワールドをアップロードする
- ワールドの編集ボタンを押す
- 「世界をエクスポート」を選択
- 適当な名前を付け、好きな場所に保存する
この.mcworld
形式のファイルは、実際にはzipファイルです。 - 名前をzipに変更する
- GCPのプロジェクト画面に飛び、minecraft鯖にssh接続する
- sshのコンソール(黒い画面)の右上にある歯車マークをクリック。そこから「ファイルのアップロード」を選択
- 先程のワールドのzipファイルを選ぶ
cd ~
でホーム画面に戻り、ls
をしてzipファイルがあるか確かめる
これでGCPのサーバーにワールドがアップロードされました。
ワールドを登録する
一度起動したサーバーのファイルは、ls
で確認してみると以下のようになっています。
このworldsフォルダの中にファイルがなければいけません。今回はmyworld.zipという名前のファイルだと仮定して登録方法をお伝えします。
- サーバーのあるフォルダに
mv myworld.zip worlds/
コマンドでzipファイルを移す。 cd worlds
でworldsフォルダに移動。ls
でmyworld.zipがあることを確認するmkdir myworld
でフォルダを作り、mv myworld.zip myworld/
でフォルダ内にzipファイルを移動させるcd myworld
でフォルダに入り、unzip myworld.zip
で解凍する
このようにファイルが解凍されれば成功です。cd
でホームに戻り、nano server.properties
で設定ファイルを開くlevel-name=
のBedrock level
を消して、myworld
に置き換えるctrl + O
に続きEnter
を押して保存。ctrl + X
で編集を終わる。
これでワールドの登録・変更が完了しました!
もう一度LD_LIBRARY_PATH=. ./bedrock_server
でサーバーを実行して、minecraftから接続してみてください。
もっと先へ
今回設定した条件では、24時間で自動でサーバーがシャットダウンされるため、そのたびにインスタンスを起動し、SSHで接続し、Minecraftサーバーを起動しなければなりません。
それでは不便なので、次回以降にDiscordのコメントからインスタンスとMinecraftサーバーを自動起動・停止する方法を紹介します。お楽しみに!
記事ありがとうございます
`sudo apt-get install zip unzip`
こちらで以下のようなエラーが出ました
“`
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package zip
E: Unable to locate package unzip
“`
初回はapt自体のアップデートが必要なようだったので
`sudo apt update`
をするように書いておいた方がいいかもしれません。
コメントありがとうございます。
ご指摘、本当に助かりました…追記させていただきますね!
このサイトを参考にさせてもらいながらサーバーを立てたのですが、
サーバーになかなか接続できなく、設定をいじっていたのですがインスタンス作成時の
ファイアウォールの項目の「HTTP トラフィックを許可する」などは関係あるのでしょうか?
コメントありがとうございます!
通信するポートが違うため、そちらの項目は入れなくても大丈夫なはずです。
通信を許可するポートにUDPは入っていますでしょうか?私は最初その項目を見落としてしばらく接続出来ませんでした。
質問主ではないのですが、TCP,UDP共に通信許可していてSSHでコマンド実行後Server started.といす表示は出るのですがMinecraftからサーバーにアクセスできません。
IPアドレスは外部、内部ともに試しました。
こんにちは
記事を参考にサーバーを立てました。
ここで既存のワールドデータを使用したいのですがどのようにすればいいでしょうか?
SFTPで接続したのですが、権限の関係でアクセスができず、データをコピーできませんでした。
もし可能でしたら教えていただきたいです。
コメントありがとうございます!
GCPにsshで接続した際に出てくるウィンドウからファイル転送出来ます。
こんにちは
サーバーは建てられたのですがワールドデータを置き換えるとエラーが出てしまいます。
以下エラー文
[2020-04-04 04:33:07 INFO] Starting Server
[2020-04-04 04:33:07 INFO] Version 1.14.32.1
[2020-04-04 04:33:07 INFO] Session ID ca389ceb-bf5e-4ed1-b8f7-8fffd057ccae
[2020-04-04 04:33:07 INFO] Level Name: Bedrock level
[2020-04-04 04:33:07 INFO] Game mode: 1 Creative
[2020-04-04 04:33:07 INFO] Difficulty: 1 EASY
[2020-04-04 04:33:07 INFO] opening worlds/Bedrock level/db
[2020-04-04 04:33:07 WARN] LevelDB worlds/Bedrock level/db status NOT OK(IO error: fopen failed.). Trying repair.
[2020-04-04 04:33:07 ERROR] Failed to open LevelDB!
[2020-04-04 04:33:07 ERROR] IO error: fopen failed.
[2020-04-04 04:33:07 ERROR] Network port occupied, can’t start server.
ネットワークポートがすでに使われていると書かれています。一度起動したサーバーを閉じて、インスタンスをシャットダウン→再起動して再度お試しください。
返信ありがとうございます。
説明して頂いた通りにインスタンスの再起動をしたらサーバーは立ち上がるようになりましたが、既存のセーブデータでプレイする方法がわかりません。
ほかの方への返信を読みましたがGCPにsshで接続した際に出てくるウインドウとは何でしょうか…
コマンド実行のウインドウかと思いファイルをドロップしてみましたがPCにインストールされるだけでした。
大変お待たせいたしました。
既存のワールドデータをアップロードして登録する方法を本記事に追記しましたので、参考にしていただければ幸いです。
何か不明点がありましたら気軽にご質問ください!
コメント失礼します。
こちらの記事を参考にサーバーを立てることはできたのですが、ワールドデータを既存のワールドデータに変えることができません。
アップローダ経由でZIPファイルでダウンロードしてunzipで解凍してもサーバーを開放すると別のワールドになってしまいます。
ほかの方への返信でSSHにログインした際に出てくるウィンドウと書いてありますがどのウィンドウか分かりません…
コマンドを入力している黒いウィンドウにワールドデータをドラックアンドドロップしてもファイルの転送はできませんでした。
もし可能でしたらワールドデータの変更方法を教えていただきたいです。
長文コメント失礼しました。
コメントありがとうございます!
大変お待たせしてすいません。本記事に既存のワールドで遊ぶ方法を追記しましたので、ぜひ参考にしてください。よろしくお願いいたします。
ありがとういございます!
無事置き換えができました、わかりやすい記事ありがとうございます!
何度もコメント申し訳ありません。
レルムからアドオン、リソースパックが入ったワールドを置き換えようとするとワールドは置き換えられるのですが、アドオン、リソースパックが適用されません。
バージョンは同じなのですが…
なにか理由がわかるようでしたら御教授願います…
自己解決しました。
worlds内ではなく、zip展開時に作成されるファイルに入れたらできました。
質問失礼します。
ワールドデータのバックアップを取りたいのですが、GCPからworldsファイルをPCにダウンロードすることは可能でしょうか。
もし可能でしたらご教授願います。。
コメントありがとうございます!
①「zip -r worlds.zip worlds」でzipファイルを作成
②「readlink -f worlds.zip」でパスを取得、コピー
③sshウィンドウの右上の歯車メニューから「ファイルをダウンロード」を選び、コピーしたパスを貼り付ける
これでローカルのパソコンにデータがバックアップできます!
ありがとうございます!
以前何度か質問させていただいたものです
今回はワールドの登録について聞きたいことがありコメントさせていただきます
手順通りワールドを登録してみようと試みたのですが必ず新規マップになってしまいます
設定が間違えているのでしょうか?
質問なんですが、サーバーアドレスがどれを刺しているのかわかりません