用一个小时搭建了一个Minecraft服务器,试试看!

开始

発端は友人複数人とMinecraftをやっているときでした.
友人「Java版でもマルチやりたいよね~」
鳩「いやいやアパート住みだからポート開放でき…」
その時鳩に電流走る――――――――――!
サーバ化したノートPCに外からSSH接続する時ngrokとかいうのを使って擬似的にポート開放していた…それを応用してDockerでなんやかんややれば何かこういい感じに何かできるのでは!!?
というわけで1時間くらいウンウン言ってマイクラ鯖建てることが出来たので個人的備忘録&参考にと記事を書いてみました.中高生とかで回線を引けない人だったり,出先で急にマイクラ鯖を建てたくなった人に役に立てば良いなと思い書いております.
あんまりサーバーとかわかんない人でも建てれるように書くつもりですがあんまりサーバーとかわかんない人はこの記事を読まない気がします.サーバーとかよく分かる人はこの記事ちょっとくどいかもしれませんのでななめ読み推奨です.

食材 (6份)

    • Ubuntuの入ったPC       …1台

 

    • Docker           …1匹

 

    • ngrok            …1摘み

 

    nohup         …お好みで

做法 (zuò fǎ)

服务器

まずはサーバーです.Dockerを使用するのでUbuntu(LinuxOS)が入ったサーバー(PC)が望ましいですが,Win10入りデスクトップをWSL2を使いながら電源入れっぱなしでやるって猛者がいても良いんじゃないかなと思います.(超個人的意見としてはDocker for Windowsはうまく動作しない印象あるので素のUbuntuを推します.)

Docker: 容器

一旦服务器准备好以后,我们来尝试引入Docker。或许有些人会纳闷,到底Docker是什么东西呢?简单来说,它是一个方便的工具,可以通过简单地点击几下来搭建开发环境或者数据库等繁琐的环境配置。如果你之前不知道它,那现在就试试吧!(我也想写一篇关于Docker的文章啊)阅读完这篇文章后,基本上就可以操作了,但是作为写文章的人,还是稍微加一点简单的解释来进行介绍。

首先,更新现有的软件包列表以安装软件包!

$ sudo apt update

安装所需的Docker下载包!

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

获取并保存已安装Docker存储库的GPG密钥!

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

让Apt能够安装Docker!

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

更新软件包列表!

$ sudo apt update

请确认安装目标仓库是否已更改…

$ apt-cache policy docker-ce

Dockerをインストール!

$ sudo apt install docker-ce

在Ubuntu的终端上了

$ sudo docker --version

如果您在终端中输入”docker”命令并回车,应该能够确认Docker正在运行。如果您想在没有使用sudo的情况下使用Docker,请参考先前提到的文章并尝试操作。

minecraftサーバのイメージ

無事Dockerを導入できたら次はマイクラ鯖を建ててみましょう!Dockerはちょちょいと触るだけで環境構築を済ませてしまうすごいやつなのでマイクラ鯖も既存のテンプレートを建てるだけで済んじゃいます.
itzg/minecraft-server
ここにあるDockerのイメージ(環境構築が完了した,複製元のデータみたいなの)をDockerでインストールして建てちゃいましょう.

$ sudo docker pull itzg/minecraft-server
$ sudo docker run -d -p 25565:25565 --name mc itzg/minecraft-server

待てば出来上がり.

以下日志确认的执行将会出现EULA的相关提示。

$ sudo docker logs mc

そのURLに貼ってある使用許諾契約を確認してください.
では次に行く前に,runに失敗してコンテナが止まってるので一旦消しておきましょう.

$ sudo docker rm `docker ps -alq`

では先程の規約を確認した上で同意する場合

$ sudo docker run -e EULA=TRUE -d -p 25565:25565 --name mc itzg/minecraft-server

を実行してください.こんどこそ待てば出来上がり.追記終わり.

では待ってる今のうちに軽く-p 25565:25565の部分について説明を.
例えばGoogleChromeでhttp://www.google.com にアクセスするとGoogleのサイトを運営しているサーバーの住所(IPアドレス)を調べてそのPCに向かいます.IPアドレスとは172.217.174.100みたいな数字の羅列です.(ちなみにこの数字の羅列をURL打ち込む所に書くとGoogleに飛べます.)このサーバで行っているサービスは一つと限らないのでどのサービスを受けるのかを判別する必要があります.それを決めるのがポート番号です.
イメージとしては複数の企業が入ってるオフィスビルがサーバでそれぞれの階層にそれぞれ企業がいたり空き階だったりのその階層がポートみたいなものです.多分.
そしてこの記事ではオフィスビルはUbuntuの入ってるPCに,企業が入ってる階層は-p 25565:25565の左の25565にあたります.サーバの25565階にたどり着くと今度はDockerの25565階に繋がるトンネルがあります.そのトンネルを通りDockerの25565階にたどり着くと,そこでマイクラのサーバ運営が行われているイメージです.
例えと実物をごっちゃに説明しちゃってますが気合で読んでください().

さてマイクラサーバは立ちましたでしょうか.
現状どうなっているか,以下のコマンドで確認できます.

$ sudo docker logs -f mc

ngrok 是一种用于创建反向代理的工具。

マイクラのサーバを建てることは出来たので後はUbuntuサーバにお客さんを招き入れるだけです.ポートを開放したいのですが私はアパート住み,ここの住所(IPアドレス)を出入り可能にしても何階の何号室に住んでる誰のオフィスビルに向かえばいいのか,僕のIPアドレスを訪ねる人にはわかりません.つまりポート開放ができません.
そんなあなたにngrok!こいつもすごい.ポチポチするだけで個人の回線を引かずともポート開放を擬似的に行えちゃう!!アパート回線でも,外部と繋がれるngrokのトンネルをひくことで僕のお家のサーバへ直でアクセスできちゃう!
というわけでダウンロード&インストール
ダウンロードに必要なパッケージをインストールして…

$ sudo apt update
$ sudo apt install wget unzip

下载ngrok…

$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

解冻!

$ unzip ngrok-stable-linux-amd64.zip

邪魔だしパスが通ってないと思うので動かしましょう.

$ sudo mv ngrok /usr/bin/ngrok

这个应该可以使用(待验证后再确认,可能需要登录之类的)。
如果现在访问服务器的25565端口,就可以访问我的Minecraft服务器。请将隧道连接到那里。

$ ngrok tcp 25565

と叩くとそこに外部からアクセスできるURLが発行されます.
tcp://X.tcp.ngrok.io:YYYYY(X,YYYYYは数字)のようなURLが発行されると思われます.
これを使えば友人たちもJavaマイクラのマルチに誘えます!やったー!!!
Java版でマイクラを開いて「マルチプレイ」→「サーバーを追加」でサーバー名は自由に,サーバーアドレスは先程表示された「X.tcp.ngrok.io:YYYYY」(X,YYYYYは数字)にして参加するとみんなで遊べます!!

后台执行

ここは別にやらなくてもいいのですがサーバで他のプロセスも行わせたいと思った時,もしくはサーバのSSH接続を切断したい時,ngrokを停止しなければならなくなります.そのため裏で回しといてもらう必要があります.そこで役立つのがnohupです.ngrokでポート開放する時に

$ nohup ngrok tcp 25565&

と叩くだけでターミナルが返ってきます.でもこれではURLが確認できないので,

$ curl localhost:4040/api/tunnels

当叩击时,您可以检查ngrok的状态和其他信息。在顶部有一个名为“public_url”的项目,其中包含URL。现在您已成功将我的世界服务器完全搭建在后台!恭喜!!!!

随便说说(到此为止,你可以关闭浏览器了)

最近終於建好的我的Minecraft伺服器,但最後我的朋友們還是玩整合版的數據,完全沉迷於數據中,沒有人來伺服器了。

(´・ω・`) 只需要一种选择,将以下内容用中文进行同义转述:

再多说一句,这次的文章里听说Celeron在低功耗方面对服务器很好,于是我用UbuntuServer覆盖了笔记本电脑上的Windows系统,把它变成了服务器。但是听说把笔记本电脑当作服务器使用会导致过热,所以考虑租用服务器。嗯,这样的话租用了服务器后这篇文章就不再需要了。
嗯,我想肯定有那种想自己搭建服务器的高中生之类的需求吧。