希望使用AWS来免费构建和运营集成版Minecraft服务器

首先这篇文章是针对那些在Switch或PS4上玩集成版Minecraft的玩家,他们想要搭建一个服务器进行多人游戏,但是因为只偶尔玩所以对于购买包月费用来购买Realm服务器有些犹豫的人。

此外,它将成为一个始终运行的服务器,以便您可以随时登录。

人数限制在同时连接6人以内进行测试时没有问题,但如果经常玩的话就需要采取后述的措施。
另外,由于纸张宽度的限制,有时可能会被迫介绍参考文章并解释“请阅读该文章以获取详细信息!”希望您能谅解。

简而言之以下是整体流程:
1. 创建AWS账号
2. 构建EC2实例
3. 下载Minecraft服务器软件
4. 启动Minecraft服务器
5. 访问Minecraft服务器
6. 运营Minecraft服务器的一些建议

Minecraft — 我的世界Minecraftは一人で遊ぶこともできますが、複数人で遊ぶとさらに楽しくなります。マルチプレイを行うには幾つかの方法があります。
1. 専用サーバーによるMinecraftサーバーの構築・公開
専用サーバーは、専用機を自前で運用する方法と、レンタルサーバーを利用する方法があります。
2. フレンドが遊んでいるワールドへアクセス
フレンドが遊んでいる場合、そのワールドへアクセスすることが可能です。ただし、フレンドがプレイしていない場合はそのワールドへ入れず、遊ぶことはできません。

本文是关于在“1. 使用租用服务器搭建和发布Minecraft服务器”中使用租用服务器的方法进行说明。原因是使用租用服务器比自己准备专用设备的成本更低。

租用服务器是贵的吗?
确实,大多数租用服务器每月都要超过2000日元(代表性的例子是Realm,这是Minecraft正式提供的租用服务器)。然而,在这些中,AWS是根据使用量计费(即只有用多少才需要支付费用),而且还有一个免费配额,因此我们选择了AWS。
关于使用AWS搭建Minecraft服务器的方法,其他文章中也有介绍,但是本次我们还会解释如何利用这个免费配额来进行游戏。

另外,Minecraft有Java版和一体化版,但这次我们要建立的是一体化版服务器。使用一体化版,可以利用各种设备进行Minecraft游戏。

    • Windows 10

 

    • iOS

 

    • Android

 

    • Xbox One

 

    • Nintendo Switch

 

    • PlayStation 4

 

    • Amazon Fire

 

    • Gear VR

 

    Oculus

您可以在租用服务器上安装Minecraft服务器软件。Minecraft服务器软件有针对Windows和Ubuntu Server的版本可供下载[1]。

[1] 下载Minecraft服务器软件(Alpha版本)
https://www.minecraft.net/ja-jp/download/server/bedrock

因此,我們將使用AWS來準備Ubuntu伺服器。

亚马逊网络服务 (AWS)AWS是指亚马逊网络服务(Amazon Web Services)的缩写,是亚马逊提供的超过100种云计算服务的总称。
云计算是指通过互联网来使用服务器、存储、数据库、软件等计算机相关的各种服务。与传统的物理服务器不同,云计算非常方便,无需准备自己的服务器设备。在本次中我们将使用EC2(弹性计算云)作为其中的一个服务器服务,但首先需要创建一个AWS账户才能使用AWS。

1. 创建AWS账号AWSアカウント自体は無料で作成できますが、クレジットカードの登録が必要です。
アカウント登録の方法は以下のリンク[2]を参考にしてください。

[2] AWS账户创建流程
https://aws.amazon.com/jp/register-flow/

また、AWSで使える無料枠[3][4]についても、見ておきましょう。これをしっかり理解しておかないと知らない間に課金していた!といったことが発生するため、隅々まで読んでおきましょう。
今回使う EC2 は12ヶ月間の間、性能の制限はありますが、月750 時間無料で使うことが可能です。1ヶ月は最大744時間なので、一台であれば常時起動していても問題ないですね。

[3] AWS 無料利用枠
https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all

[4] AWS免费使用范围常见问题
https://aws.amazon.com/zh/free/free-tier-faqs/

2. 建立 EC2 实例如果成功创建了AWS账户,那么就立即开始建立EC2实例吧。
关于EC2实例的建立方法,可以参考以下文章[5]的「3.3. 连接到EC2实例」部分。

【Minecraft for AWS】 在 EC2 实例上构建 Minecraft 服务器
https://dev.classmethod.jp/articles/minecraft-for-aws_ec2-instance/

ただし、《ステップ 1 : Amazon マシンイメージ(AMI)》 にて、 【Ubuntu Server 20.04 LTS】、《ステップ 2 : インスタンスタイプの選択》では【t2.micro】を選択するようにしてください。
性能は落ちるのですが、Bedrock版の場合、特に問題なく遊べています。(一方、Java版Minecraftの場合は起動するだけで落ちてしまいました。)

なお、「3.3. EC2 インスタンスに接続」の時に、SSH接続というのを行ったと思いますが、このコマンド自体は、インスタンス画面の右上にある、[接続] > [SSH クライアント] に記載してある例からコピペすることができます。 コマンドを書くのが面倒くさい、パブリックIPを確認するのが面倒くさいという方はぜひ。

3. Minecraft用サーバーソフトウェアのダウンロード
さて、構築したEC2インスタンスに接続できたら早速、Minecraft用のサーバーソフトウェアをダウンロードしていきましょう。ただ接続した段階では、ディレクトリが特にないと思います。なので、まずはMinecraft用のディレクトリを作成しましょう。

# ディレクトリがないことを確認
ls 
==============出力結果==============
#何も出力されないはず
===================================

# ディレクトリの作成
mkdir ~/minecraft

# もう一度確認
ls
==============出力結果==============
#作成したディレクトリが確認できる
minecraft 
===================================

# 作成したディレクトリへ移動
cd ~/minecraft/

# 現在の場所を確認
pwd
==============出力結果==============
# pwd を実行後に下記になっていることを確認
/home/ubuntu/minecraft
===================================

※ちなみに cd ..で一つ上のディレクトリに戻ることができます。
それでは、Minecraft用のサーバーソフトウェアをダウンロードします。方法としてはいくつかあるのですが、今回はwgetを使います。

先程のMinecraft公式サイト[1]から「UBUNTU 用 UBUNTU サーバー ソフトウェア」の[I agree to the Minecraft End User License Agreement and Privacy Policy]にチェックをつけた後、ダウンロードボタンの上で、右クリックし、[リンクのアドレスをコピー]を押します。

接下来,在刚才的目录下,粘贴复制的链接在wget之后。

# wget の後に、先ほどコピーしたリンクをペースト
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.17.10.04.zip

# zipファイルがダウンロードされていることを確認
ls 
==============出力結果==============
bedrock-server-1.17.10.04.zip 
===================================

# zipファイルを解凍するためにunzipをインストール
sudo apt install -y unzip

# zipファイルを解凍
unzip bedrock-server-1.17.10.04.zip 

# 解凍できたことを確認
ls
==============出力結果==============
Dedicated_Server.txt           permissions.json
bedrock-server-1.17.10.04.zip  premium_cache
bedrock_server                 release-notes.txt
bedrock_server_how_to.html     resource_packs
bedrock_server_symbols.debug   server.properties
behavior_packs                 structures
definitions                    treatments
development_behavior_packs     valid_known_packs.json
development_resource_packs     whitelist.json
development_skin_packs         world_templates
minecraftpe                    worlds
===================================

4. Minecraftサーバーの起動
それでは、Minecraftサーバーを起動してみましょう。
方法は、Minecraft公式ページにもあるように以下のコマンドを実行すれば良いです。

LD_LIBRARY_PATH=. ./bedrock_server

==============出力結果==============
NO LOG FILE! - setting up server logging...
[2021-08-07 02:28:25 INFO] Starting Server
[2021-08-07 02:28:25 INFO] Version 1.17.10.04
[2021-08-07 02:28:25 INFO] Session ID 9698e79d-197c-42e9-95a1-07c27368068c
[2021-08-07 02:28:25 INFO] Level Name: Bedrock level
[2021-08-07 02:28:25 INFO] Game mode: 0 Survival
[2021-08-07 02:28:25 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 supported, port: 19133
[INFO] IPv4 supported, port: 49811
[INFO] IPv6 supported, port: 57063
[INFO] Server started.
===================================

一旦进入这种状态,就表示启动完成。
如果想要停止服务器,只需输入“stop”即可停止。

stop 
[INFO] Server stop requested.
[INFO] Stopping server...
Quit correctly

5. 进入Minecraft服务器唯一需要的一个选项,以下是对原文进行的汉语再述:

除此之外,只需要在Minecraft服务器运行的状态下,从Minecraft访问EC2实例的公共IP就可以了。但是,对于Switch或PS4来说,存在无法访问外部服务器(除了专题服务器)的问题。

当我试图找出怎么办时,我发现了以下的文章[6]。

[6]【无需改装】Xbox One、Switch、PS4连接其他特定服务器的方法
https://novablog.work/be-join-any-server/

しっかりとソースコードを精読したわけではないのですが、どうやら海外の方がDNSサーバーを用意して、特集サーバーから外部サーバーへリダイレクトしているような雰囲気を感じます。

方法だけを抜粋すると以下の通りです。

<スイッチ>
①「設定」を開きます
②左メニューから「インターネット」を選びます
③「インターネット設定」を選びます
④接続中のSSIDを選択して、「設定の変更」を選びます
⑤「DNS設定」を「自動」から「手動」に変えます
⑥「優先DNS」に「104.238.130.180」を入力します(ポイント!!)
⑦「代替DNS」に「8.8.8.8」を入力します
⑧「保存する」をタップして保存します

これで設定は完了です。次に実際にサーバーに接続してみましょう。
(ここからは共通の方法です)

①マインクラフトを起動します
②「サーバー」タブを選択します
③「特集サーバー」のどれかに接続します(どれでもいいです)
④接続に完了すると、「ServerList」という画面が出てきます。
⑤「Connect to a Server」を選びます
⑥「Server Address」にサーバーのアドレスを、「Server Port」にサーバーのポート番号を入力します。
(「Add to server list」をオンにすると、次回接続時に一覧として登録されます)
⑦「Submit」をタップします。

PS4の場合は少し工程が増えます。まずは、Javaの実行環境であるJREを導入しておく必要があります。
以下のサイト[7][8]を参考にすると導入できると思います。

[7] JRE(Java実行環境)の確認方法
https://www.jpki.go.jp/e-apply/confirm.html

[8] Javaの実行環境JREをWindowsにダウンロードしてインストール、セットアップ設定、アンインストール
https://atmarkit.itmedia.co.jp/ait/articles/1604/19/news027.html

如果能够成功导入,接下来按照先前网站上的说明进行操作即可。

①https://github.com/Pugmatt/BedrockConnect/releasesから最新版のBedrockConnect-1.0-SNAPSHOT.jarをダウンロードします。

②ダウンロードしたファイルを、デスクトップ等にフォルダを作成して、その中に移動させます。

③そのフォルダをエクスプローラーで開いて、ファイルリストの何もないところで「Shift+右クリック」をして、メニューを開きます。

④「PowerShell ウィンドウをここで開く」を選択して、PowerShellを起動します。

⑤「java -jar BedrockConnect-1.0-SNAPSHOT.jar nodb=true」コマンドを実行して、ServerListサーバーを起動します。

これでPC側の準備は完了です。
PS4に移りましょう。

①Minecraftを起動して、「フレンド」タブを選択します。

②「LANゲーム」に表示されている「Join to open Server List」に参加します。

③あとは前章の「共通の方法」⑤からと同じです。

6. Minecraftサーバーを運用する上でのTipsさて、あとは思う存分遊ぶと良いと思いますが、いくつか運用する上で気をつけたほうが良いこと、覚えておくと便利なことについて説明します。

6.1 弹性 IP 地址構築したEC2インスタンスにはパブリックIPというのが付与されており、そのIPアドレスにアクセスすることで、どこからでもMinecraftサーバーに入ることができます(そのため、実際にはアクセス制限をセキュリティグループやファイアウォールなどを使って行います)。
しかし、このパブリックIPはインスタンスを再起動すると変わってしまいます。
そこで、そのパブリックIPを固定化するためのサービスがElactic IP アドレスと言います。
このElastic IP アドレスをインスタンスに紐付ける方法は以下のドキュメント[9]の「Elastic IP アドレスを割り当てる」を読んでいただければと思います。

[9] 弹性 IP 地址 (https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)

ただし、気をつけていただきたいのがElastic IP アドレスの料金です。
Elastic IP アドレスと紐付けたインスタンスが稼働していれば課金されませんが、インスタンスが停止していたり、どのインスタンスとも紐づけられていない場合、IPアドレスの無駄遣いと判断され課金されてしまいます。

そのため、Elastic IP アドレスを使用する場合は、インスタンスを停止せずに、起動したままにしましょう。

6.2 屏幕 (liù èr
「4. サーバーを起動できることを確認します。」でMinecraftサーバーを起動できるようになりましたが、起動したままにしておくにはパソコンをずっと開いておかないといけないことに気づいた方がいるかもしれません。

在Linux(CentOS/Ubuntu)和Mac系统中,有一个非常方便的命令叫做”screen”命令。

这个screen命令的好处有以下三点。

    • SSH接続を切断してもマイクラサーバーを動作させたままにできる

 

    • 起動したマイクラサーバーのプロセスに再度接続できる

 

    不慮の事故でサーバーとの切断が切れても、マイクラサーバーの動作に影響しない

让我们开始充分利用它。首先进行SSH连接,然后安装screen。

#screenをインストール
sudo apt install -y screen

そして、minecraftディレクトリに移動して、以下のようにコマンドを実行します。

#minecraftディレクトリへ移動
cd ~/minecraft/

#minecraftという名前のセッションを立ち上げ、そこでMinecraftサーバーを起動する
screen -UAmdS minecraft ./bedrock_server 

#minecraftセッションが立ち上がっていることを確認
screen -ls
==============出力結果==============
bedrock-server-1.17.10.04.zip 

There is a screen on:
    336148.minecraft    (08/07/21 03:01:00) (Detached)
1 Socket in /run/screen/S-ubuntu.
===================================

你可以在后台启动它。
要参加会话,请使用screen -r <会话名称>,或者如果只有一个会话,请简单地使用screen -r。

screen -r minecraft

セッションから抜けたい(デタッチしたい)時は、Ctrl+a d でセッションをデタッチできます。
この状態であればSSH接続を切断しても問題ありません。
ちなみにexit と打つことでSSH接続を切断することができます(今更ですが)。

6.3 CPU Credits – 6.3中央处理器信用これで遊ぶことができる!と、思う存分に遊んでいると、ふと急にMinecraftサーバーが重くなり、ラグが発生して思うように遊べない…といったことが起こるかもしれません。
この時確認していただきたいのが、CPUクレジットです。

実はEC2インスタンスはベースラインレベルの CPU 使用率を超えると、このCPUクレジットというのを消費していきます。
今回構築したEC2インスタンスのインスタンスタイプはt2.microですが、このインスタンスタイプのベースラインは10%となっています。
つまり、10%を超えるCPU使用率を継続した場合、CPUクレジットが消費されていき、じきに枯渇します。CPUクレジットが枯渇してしまうとEC2インスタンスの性能が落ちてしまい、急にラグが発生するようになるのです。

您可以通过AWS的EC2管理控制台界面来查看CPU积分的余额。

図1.png

図2.png

図3.png你可以看出来CPU点数已经用完了呢…
当CPU点数低于基准使用率时,CPU点数会恢复,所以在这种情况下,需要停止Minecraft服务器并让其休息一下。 对于t2.micro实例,上限是144,每小时恢复6点,所以最好让它休息一天左右。

适度观察并管理Minecraft服务器是保持信用良好的管理员的职责。

每天凌晨6点40分执行的定时任务
然而,如果我们一直持续监视并且每当资源快耗尽时都联系并停止服务器的话,那将会非常困难。
我建议为服务器设置定期休息以恢复CPU积分。
所以,我想向您推荐cron。

cronとは、スクリプトを自動実行するためのデーモンプロセスで、Linuxのシステム管理で、バックアップなどの定期的に自動実行したい時に使用されます。

今回cronを使用する目的としては、Minecraftサーバーを決まった時間に停止して、CPUクレジットを回復する時間を設けるというものになります。

まずは、SSH接続した状態で、1. Minecraftサーバーを起動するためのスクリプト(start.sh)、2. 停止させるためのスクリプト(stop.sh)、3. 再起動するためのスクリプト(restart.sh)を書きます。
スクリプトは vim start.shのようにコマンドを実行することで、書くことができます。vim コマンドについては、以下の記事[10]とか読んでみると良いかもしれません。

[10] 从零开始Vim教程

#!/bin/bash

screen -UAmdS minecraft /home/ubuntu/minecraft/bedrock_server 

#!/bin/sh

# screenの名前
SCREEN_NAME='minecraft'

if [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]; then
    # 停止開始
    echo 'server stop script start'
    # サーバー内にアナウンス
    screen -S $SCREEN_NAME -X stuff 'say 30秒後にサーバーを停止します\015'
    sleep 30s
    # 停止コマンド発行
    screen -S $SCREEN_NAME -X stuff 'stop\015'
    #停止実行待機
    sleep 30s
else
    echo 'server is not runnning'
fi

#!/bin/bash

# 休止時間(6時間休止させる場合)
SLEEP=21600

# スクリプトの指定
STARTSCRIPT=./start.sh
STOPSCRIPT=./stop.sh

#サーバーの停止
$STOPSCRIPT

#サーバーの休止
echo 'sleep '"$SLEEP"'秒' 
sleep $SLEEP

#休止終了後、サーバーを起動
echo 'start script start'
$STARTSCRIPT

这是一个简单的脚本,我按照这种方式进行了编写。
接下来,只需要每天在固定时间执行restart.sh就可以了。你可以在crontab -e中打开crontab的编辑界面。
由于每天从6点到12点都要暂停执行,所以我们将其设置为6点(在UTC时间中是21点)。


crontab -e

==============crontab 編集画面==============
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
0 21 * * * /home/ubuntu/restart.sh


=============================================

每天早上6点00分执行脚本。

図4.png这是表示一周的CPU信用额度的,但通过定期设置休止时间,可以适度恢复CPU信用额度,以避免耗尽。

最后記事は以上となります。
Minecraftをきっかけとして、サーバーに触れ始めた初心者向けに分かりやすく書こうと思いましたが、ご不明な点や「ここはこうした方が良い」などあれば、気軽にコメントいただければと思います。

请您享受舒适的Minecraft生活。

参考信息
[1] マインクラフト用サーバー ソフトウェア (アルファ版) をダウンロード
https://www.minecraft.net/ja-jp/download/server/bedrock

[2] AWS账户的创建流程
https://aws.amazon.com/cn/register-flow/

[3] AWS 無料利用枠
https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all

[4] AWS 免费使用额度常见问题
https://aws.amazon.com/jp/free/free-tier-faqs/

【AWS中的Minecraft】在EC2实例上搭建Minecraft服务器
https://dev.classmethod.jp/articles/minecraft-for-aws_ec2-instance/

[6]【无需改动】Xbox One、Switch、PS4连接非特定服务器的方法
https://novablog.work/be-join-any-server/

[7] JRE(Java Runtime Environment)的确认方法
https://www.jpki.go.jp/e-apply/confirm.html
JRE(Java运行环境)的确认方法,请访问https://www.jpki.go.jp/e-apply/confirm.html。

[8] Javaの実行環境JREをWindowsにダウンロードしてインストール、セットアップ設定、アンインストール
https://atmarkit.itmedia.co.jp/ait/articles/1604/19/news027.html

[9] 弹性 IP 地址
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html

【10】从零开始学习Vim的教程
https://qiita.com/JpnLavender/items/fabcc79b4ab0d52e1f6d

bannerAds