PR

【マイクラ】Androidのスマホ/タブレットで”どこに持っていっても使える”MinecraftのForgeサーバーを建ててMODで遊んでみた

Rintaが書いた

皆さんこんにちは。
今回は、マイクラのサーバーをandroidスマホに入れてどこに行ってもアクセスできるものを作りたかったので作ってみました。

スポンサーリンク
スポンサーリンク
スポンサーリンク

今回作りたいもの

私は今まで、自分のパソコンをサーバーに立てて遊んでいたのですが

  • うるさい
  • 電気代
  • 学校で大きく設定変えたりしたいから持ち運びしたい

のでandoroidスマホに入れようと企みました。

前提

今回の方法は、私のよわよわなネット知識でゴリ押したものです。なので、少し自分の方法+未検証だけど多分動くもので書いていきます。そこはご了承ください。

また、多分パソコン初心者には難しいと思うのでチャッピーにこのサイトのリンクを投げてわかりやすく教えてもらってください。

Forgeと題名にはありますが、SpigotとMohist(spigot + forge)でのサーバー起動も確認しています。

必要なもの

  • サーバーにしたいandroidスマホ。そこそこのスペックで最低限8GBメモリが望ましい
  • 何処かに固定でおけるandoroidスマホor windwos もしくは  適当なVPS
  • 適当なドメイン(必要であれば)

です。
前者のメインサーバー用のデバイスはHelio G99(安い中華デバイスに入れられがちなSoC)と8GBの、プロセカができて原神は6fpsくらいしか出ないスペックのものです。

後者のデバイスについては、サーバー用スマホと通信させ、「そこにアクセスしたらいつでもサーバーandroidにネット転送できるデバイス」となります。
私は、学生プランだけど2コア2GB ramで使い道に迷っていた「さくらVPS」を使用しました。

多分皆さんは余っているVPSなどないと思うので、パソコンでlinuxを使用するか、同じく後記のtermux設定を別のデバイスで行い、自宅の固定IPでアクセスするなどしてください。

フロー詳細:

Androidタブレットの構成:

android tablet が基盤となるデバイスです。
その上で Android OSが動作しています。
Termux というLinuxターミナルエミュレーターアプリがAndroid上にインストールされています。
Termux の内部で Debian 環境がエミュレートされており、このDebian環境内で Forge サーバー (おそらくMinecraftサーバー) が稼働しています。
 また、termuxはproot-distroを使用しています。

SSH接続の確立:

android tablet (具体的にはTermux/Debian環境) から sakura VPS (Ubuntu) へ ssh 接続が確立されます。
このSSH接続はポートフォワーディングのために使用されており、30000:localhost:25565 という設定で、ローカルのポート30000がVPSの25565ポートに転送されます。この25565はMinecraftサーバーの標準ポートである可能性が高いです。
ssh 接続が確立されると、Ack (acknowledgement/確認応答) がSSH接続を介して返されます。

つまり、動的なandroidから固定のvpsに接続して、vpsにアクセスしたらandroidに通信がフォワードされるということです。

Sakura VPS (Ubuntu) の役割:

sakura VPS は Ubuntu OSで稼働しています。
VPSは、AndroidタブレットからのSSH接続を通じて、Minecraftサーバーへの通信を中継します。
xserverはドメインを管理してくれています。
 
ドメインとDNS設定:
外部からアクセスする際の入り口として Domain が設定されています。
この Domain は A record を通じて sakura VPS のIPアドレスを指しています。これにより、ドメイン名でアクセスするとVPSにルーティングされるようになります。

もしあなたが高専生なら、好きなlinuxのvpsが使えるみらいサーバーというサービスが高専キャリア / さくらのクラウド様から提供されているので使用できます。
ここで感謝を伝えさせてもらいます。ありがとうございます。
※デーモンプロセスの使用は規約的によくわからないので、使うときだけ使いましょう

やり方!

サーバー構築

termuxの設定

インストール方法は

【Android】Termuxをインストールして開発の準備をしよう!【①】 – Wither Home Blog’s

こちらの記事などを参考にしてください。

そしたら、

pkg update && pkg upgrade -y #更新の確認
termux-setup-storage #ストレージ権限
pkg install proot-distro #Distro入れるやつ
proot-distro install debian #debian入れる

と実行していってください。

Debian環境のセットアップ

debianのインストールが終わったら、いよいよLinux環境に入っていきます。 以下のコマンドで、インストールしたdebianにログインします。

proot-distro login debian

実行すると、コマンドの先頭が root@localhost:~# のように変わるはずです。これで、Androidの中のLinux(Debian)を操作していることになります。すごい!

まずは、このDebian環境も最新の状態にしておきましょう。また、Minecraftサーバーの起動に必要なJavaと、ファイルをダウンロードするためのwget、そして後でサーバーをバックグラウンドで動かすために便利なscreenをインストールします。

# パッケージリストの更新とアップグレード
apt update && apt upgrade -y

# 必要なソフトのインストール
# OpenJDK 17をインストールしていますが、サーバーバージョンに合わせて変更してください
apt install -y openjdk-17-jre


# 上位のコマンドが動かなかったときとかJDK8(1.12.2とか)が必要なときは↓
# 他のバージョンとかが欲しければ https://adoptium.net/temurin/releases ここからURL持ってきて

# 例:AdoptiumのJDK 8をダウンロード
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u462-b08/OpenJDK8U-jdk_aarch64_linux_hotspot_8u462b08.tar.gz

# ダウンロードしたファイルを展開
tar -xzvf OpenJDK8U-jdk_aarch64_linux_hotspot_8u462b08.tar.gz

# ダウンロードしたファイルを削除(容量を節約)
rm OpenJDK8U-jdk_aarch64_linux_hotspot_8u462b08.tar.gz

# 展開したフォルダをホームディレクトリに移動
mv jdk8u462-b08 ~/jdk8

# パス付け
echo "export JAVA_HOME=\$HOME/jdk8" >> ~/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

java -version と打って、Javaのバージョンが表示されれば成功です。

Minecraftサーバーのセットアップ

いよいよサーバー本体を準備します。 今回はForgeサーバーを例に進めますが、基本的な流れは他のサーバー(SpigotやPaperなど)でも同じです。

まずはサーバーファイルを置くためのフォルダを作りましょう。

# minecraftサーバー用のディレクトリを作成して移動
mkdir ~/minecraft_server
cd ~/minecraft_server

次に、Forgeの公式サイトなどからサーバー用のjarファイルをダウンロードします。 今回は例として1.20.1のForgeサーバーをwgetコマンドで直接ダウンロードしてみます。(URLは適宜最新のものや希望のバージョンに読み替えてください)

# Forge 1.20.1 のインストーラーをダウンロード
wget https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.2.0/forge-1.20.1-47.2.0-installer.jar

ダウンロードしたら、インストーラーを実行してサーバーファイルを展開します。


java -jar forge-1.20.1-47.2.0-installer.jar --installServer

しばらく待つと、たくさんのファイルが生成されます。 次に、マインクラフトの利用規約(EULA)に同意する必要があります。eula.txtというファイルが作られているので、これを開いて編集します。

# eula.txtを開く (nanoじゃなくても可)
apt install -y nano
nano eula.txt

eula=false となっている部分を eula=true に書き換えて、Ctrl+Xを押し、YEnterの順に押して保存・終了します。

これでサーバーを起動する準備が整いました!一度テストで起動してみましょう。 環境やForgeのバージョンによって起動コマンドは少し変わりますが、run.shというスクリプトが生成されているはずです。

# 実行権限を与えてから起動
chmod +x run.sh
./run.sh

初回はワールド生成などで時間がかかりますが、Done!という文字が表示されれば成功です。stopと入力して一度サーバーを止めましょう。

VPSへのトンネル接続とサーバーの公開

ここがこの構成のキモです。 Androidスマホ(Debian環境)から、固定IPを持つVPSに対して「リバースSSHトンネル」という接続を確立します。

1. VPS側の設定

まず、VPS側で外部からのアクセスを受け付けるポートを開放する必要があります。 さくらVPS(Ubuntu)なら、ufwというファイアウォール管理ツールが便利です。 VPSにSSHでログインし、以下のコマンドを実行します。今回は記事冒頭のフロー詳細に合わせて30000番ポートを開けてみます。

# 30000番ポートのTCP通信を許可
sudo ufw allow 30000/tcp

# 設定をリロード
sudo ufw reload

# パススルー設定
sudo nano /etc/ssh/sshd_config
'''
GatewayPorts yes
AllowTcpForwarding yes
'''

2. Android(Termux/Debian)からの接続

Debian環境に戻り、以下のコマンドを実行します。 これで、「VPSの30000番ポートに来た通信を、このAndroid(Debian)の25565番ポートに転送する」というトンネルができます。

# リバースSSHトンネルを確立
# ssh -R [VPSのポート]:localhost:[マイクラサーバーのポート] [VPSのユーザー名]@[VPSのIPアドレス]
ssh -R 30000:localhost:25565 user@vps-ip-address &

user@vps-ip-address の部分はご自身のVPSの情報に書き換えてください。 SSHのパスワードを聞かれたら入力します。接続が成功すれば、VPSのコンソールが表示された状態になります。このターミナルはトンネルとして使い続けるので、このままにしておきます。

これでSSH接続はバックグラウンドで維持され続けます。

3. Minecraftサーバーの起動

もう一つDebianのターミナルを開き(Termuxの画面をスワイプして新しいセッションを開き、proot-distro login debianする)、先ほどのminecraftサーバーのディレクトリに移動して、サーバーを起動します。 これもscreenの中で起動すると、Termuxアプリを閉じてもサーバーが動き続けてくれるので便利です。

# サーバーディレクトリに移動
cd ~/minecraft_server

# サーバーを起動!メモリはスマホのスペックに合わせて調整してください
# 例: 4GB割り当てる場合
./run.sh
# もしくは java -Xms4G -Xmx4G -jar [サーバーjarファイル名] nogui

これで、あなたのAndroidスマホでマイクラサーバーが起動し、VPS経由で全世界に公開された状態になりました!

サーバーへの接続

別にドメインがなくても良い方はvpsや中間用デバイスのグローバルIPを使用して、公開してください。
ドメインが必要な方は、自分のドメインにAレコードを追加して中間用デバイスのIPを設定してください。

Minecraftのクライアントを開き、マルチプレイからサーバーを追加します。 サーバーアドレスには、VPSのIPアドレスまたは設定したドメインを入力し、ポート番号は**VPS側で開放した30000**を入力します。

例:

  • vps-ip-address:30000
  • your-domain.com:30000

これで接続できれば、すべて成功です!
modを入れるには、wget等を使用して./modsにダウンロードしてください。

コメント

タイトルとURLをコピーしました