皆さんは、こう思ったことはありませんか?
「Minecraftサーバーをスマホで立ち上げたい!」
...え?ない?
今回はそんなお悩み(?)に対処するため、色々調べました(暇だったので調べてたら面白そうなのが出てきたのでQiitaにも書こうかなと思いました)
今回はこちらのWebサイトを参考にさせていただきました。
完成形
[17:05:55 INFO]: Timings Reset
と出ているので、ちゃんと起動できていることが分かります。
PCのJava版からアクセスするとこんな感じ
静止画だとわかりませんが、一人だと快適に遊べるくらいではあったようです。
前提、環境
ホスト機(サーバー起動するスマホ):Rakuten Hand P710
それにSSHとMinecraft Java版でアクセスするPC:Windows11 Core i9-12900H、RTX 3070Ti
次の章からは実際の手順を示します。
構築編① termuxをインストールしよう
警告:自分は大丈夫でしたが、F-Droidからアプリをダウンロードすることは少なからずリスクがあります。すべて自己責任で行ってください。
APKをAndroidにインストールしてください
(この際、Google Play Store版はバージョンが古いらしいのでF-Droidからダウンロードしてください。)
下の方にスクロールすると、APKをダウンロードというリンクがあるはずなのでそれを押してください。
(現時点2023/5/23ではバージョン0.118.0が最新)
ダウンロードできたら「開く」→「インストール」を押してください。
この時に、「不明な発行元のアプリはインストールできません」と言われたら、
このページを参考にして許可してあげてください。
不明な発行元のアプリをインストールできる状態にしておくことは、セキュリティ上の観点から好ましくありません。このアプリをインストールした後は、必ず設定からオフにしておいてください。
インストールしたら、termuxのアイコンがホーム画面に追加されているはずですので、それを押して起動してください。
起動すると、
このような画面になると思います。
この画面が出てくることを確認すれば、①のtermux導入は完了です。お疲れさまでした。
構築編② termuxにubuntuをインストールしよう
①でインストールしたtermux上で作業することになります。
次のコマンドを実行してください。
$ termux-setup-storage
このコマンドを実行すると、termuxにストレージの許可を求められますが、許可してください。
success的な文章が表示されたら(なんじゃそりゃ)
$ pkg update
$ pkg upgrade
この二つのコマンドは、いろいろアップデートするコマンドなので、多分しなくてもいけるはず(要検証)ですがしておいてください。
次に、SSHの設定などをします。これは、別にしなくてもスマホ本体からやれば大丈夫ですが、PCなどの画面から操作したい場合、SSHの設定をすると楽に接続できます。
(やらなくてもいい)TermuxでのSSH設定
$ pkg install openssh
このコマンドでSSHをインストールします
次にこのコマンドでSSHサーバーを起動してください。
$ sshd
次に、UIDとIPアドレスを確認します。
#IPアドレス確認
$ ip -4 a
#↓実行例
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
30: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 3000
inet 192.168.1.10/24 brd 192.168.1.255 scope global wlan0
#↑この192.?.?.?.?(この例だと192.168.1.10)がIPアドレス
valid_lft forever preferred_lft forever
ここでIPアドレスをメモしたら、次にUIDを確認します。
$ id
#↓実行例
uid=10000(u0_a000) gid=10000(u0_a000) groups=10000(u0_a000),0000(inet),0000(everybody),00000(u0_a000_cache),00000(all_a000)
#↑u0_a???の部分(今回だとu0_a000)がUIDになる
(勿論ですがこれはUIDを伏せてあるので実際には000が123になったり521になったりすると思います)
最後にSSHのパスワードを設定します
$ passwd
#↓実行例
New password: #ここで何も入力されていないように見えても、ちゃんと入力されているので気にせず進めてください
Retype new password: #ここも上と同様でパスワードは見えませんが、ちゃんと入力されています。
New password was successfully set.
これでsshの設定は完了したので、PCなどを立ち上げてSSHコマンドを打ってみましょう。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
PS C:\Users\0266st> ssh -p 8022 u0_a000@192.168.1.10
# ↑UID ↑IPアドレス
#この例ではUIDがu0_a000、IPアドレスが192.168.1.10という体で行っています。
#↓実行例
u0_a000@192.168.1.10s password: #passwdの時と同じく、見えないが入力はされているので続ける
# 正しくパスワードを入力すればこのようになるはずです。
Welcome to Termux!
Community forum: https://termux.com/community
Gitter chat: https://gitter.im/termux/termux
IRC channel: #termux on libera.chat
Working with packages:
* Search packages: pkg search <query>
* Install a package: pkg install <package>
* Upgrade packages: pkg upgrade
Subscribing to additional repositories:
* Root: pkg install root-repo
* X11: pkg install x11-repo
Report issues at https://termux.com/issues
~ $
注意:指定したUIDが間違っていても間違っているというメッセージは表示されません。アクセスできないと言われます。
アクセスできないというエラーが発生した際は、UIDがあっているかどうか、ちゃんとパスワードを設定していたかどうかを確認してください。
これでSSHの設定は完了です。
次からubuntuのインストールに戻ります。
ubuntuのインストール(続き)
ここからは一応PCからの作業で記事を書いています。しかし、スマホでも手順通りにやればSSHはいらないはずなのでやってみてください。
$ pkg install wget openssl-tool proot -y
$ hash -r
$ wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Ubuntu/ubuntu.sh
$ bash ubuntu.sh
これはAnLinux-ResourcesのLinuxを使用する方法だそうです。
上のコマンドを4つ実行すると、最後に
You can now launch Ubuntu with the ./start-ubuntu.sh script
と出てくると思うので、それが出てきたら、
$ ./start-ubuntu.sh
でUbuntuを起動します。
すると、表示が
root@localhost:~#
に変わります。
これで無事にubuntuがインストールできました。お疲れさまでした。
次はここにJavaのインストールとPaperなどのインストールを行っていきます。
構築編③ JavaとPaperのインストールをしよう
ここでは、Javaとサーバー本体であるPaperをインストールします。
まずはJavaをインストールします。次のコマンドを実行してください。
root@localhost:#~ apt install openjdk-17-jvm
インストールが終了したら
root@localhost:#~ java -version
#↓実行例
openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment (build 17.0.7+7-Ubuntu-0ubuntu122.04.2)
OpenJDK 64-Bit Server VM (build 17.0.7+7-Ubuntu-0ubuntu122.04.2, mixed mode, sharing)
このようにバージョン情報が出てくればOKです。
これでJavaのインストールが完了しました。
次にPaperをダウンロードします。
PaperはMinecraftのModが使えるサーバーの一種で、軽いのでこのサーバーを使います。
wgetでjarファイルを持ってきます。
Paperはここからダウンロードできますが、コマンドライン操作しかないので、jarファイルのURLをwgetで指定してダウンロードさせます。
今(2023/5/23)現在、最新バージョンは1.19.4なので、
https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/538/downloads/paper-1.19.4-538.jar
このアドレスですが、更新された場合、
Paperダウンロードページ
ここにある
Paper 1.?.?の青いボタン部分を右クリック→リンクアドレスをコピーからコピーしたリンクを使用してください。
URLを取得できたら、SSHに戻り、
root@localhost:#~ wget https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/538/downloads/paper-1.19.4-538.jar
#↑ここの部分を取ったURLに置き換える
を実行し、paper-1.?.?-???.jarを取得します。
取得できたら、mvコマンドを使用して名前を変更します。(自分はserver.jarにしました)
root@localhost:#~ mv ./paper-1.19.4-538.jar ./server.jar
#↑取ったファイルの名前 ↑変更後の名前
ここまで出来たらあともう少しです。
root@localhost:#~ java -jar server.jar
#↑変更したファイル名
これでしばらく待つと、エラーが出てきます。
しかし、心配しないでください。
root@localhost:#~ ls
banned-ips.json commands.yml libraries plugins usercache.json world
banned-players.json config logs server.jar version_history.json world_nether
bukkit.yml eula.txt ops.json server.properties versions world_the_end
cache help.yml permissions.yml spigot.yml whitelist.json
lsコマンドを打つと、ちゃんとeula.txtなんかがあることが分かります。
これをviエディタなんかで編集(初心者の方にはクセが強くて使いづらいと思いますがLinuxのお勉強だと思って頑張ってみてください)
viエディタを使用するために、
root@localhost:#~ apt install vim
からvimをインストールし、
このサイトを参考にしてViエディタを使い、
eula=false
から、
eula=true
に変更してみてください。
変更ができたら、esc→:wqで保存し、
もう一度
root@localhost:#~ java -jar server.jar
で起動してみてください。
道中、root権限で起動する意味ないよーみたいなメッセージや、「file not found or not readable」エラーなどが表示されますが、無視しても大丈夫そうだったので無視しました。
気になる人はユーザーを追加してやってみるといいかも?
これで最後に
[17:05:55 INFO]: Timings Reset
など出れば、完了です。
入る際は
スマホのIPアドレス、ポートは25565(既定の場合)で入ることができました。
これでMinecraftサーバーを動かすことができました。
最後までお疲れさまでした。
ついでに
プラグインを入れる際はwgetでpluginsフォルダに入れればいいだけです。
(プラグインを入れる際はwgetでjarファイル自体のURLを指定してください)
root@localhost:#~ cd plugins
root@localhost:#~ wget #プラグインのURLをここに