安卓手机使用Termux搭建MC Java Edition服务器

前言:由于云服务器太贵,同时又有不同地区的连接要求,最后选择使用淘汰的手机搭建服务器。

必要条件

安卓手机一台、配有SSH软件的电脑一台

不是那么必要的条件:科学上网路径

请将手机与电脑置于同意局域网下,如连接同一wifi

配置Termux

为了便于配置服务器,将采用SSH连接方式,安装过程主要是在电脑上操作。

进入Termux界面后,首先要操作本地包的更新。

使用下面指令更新本地包

apt update && apt upgrade

使用用户名、密码让电脑来连接手机,需要配置默认用户和密码,安装相关包

apt install termux-auth # 安装相关包
passwd #设置默认密码 比如passwd 123456 设置密码为123456
whoami #得到用户名

安装SSH

apt install openssh #安装ssh
sshd # 打开ssh 默认端口为8022

SSH连接

使用SSH电脑软件连接到手机(下面软件为Termius)

img

接下来全程使用电脑来安装Ubuntu,Java环境以及启动MCJE服务器

安装Linux(Ubuntu)

pkg install proot-distro # 安装proot-distro
proot-distro install ubuntu #安装ubuntu环境

安装完成后使用下面代码进入Ubuntu

proot-distro login ubuntu

img

前缀显示root@localhost:~# 代表进入Ubuntu环境了

安装服务器运行环境

此次运行的服务器版本为1.19.2,将使用Java18来运行服务器,首先更新Ubuntu软件库

apt update && apt upgrade

安装Java18

如果不知道官方库中的Java版本可以使用下面命令筛选出版本

apt search jdk

img

如上图筛选出了许多jdk版本,本此需要安装jdk18(java18),则安装对应的jdk环境

apt install openjdk-18-jre

安装完成后,查看Java是否正确安装以及版本是否正确

java -version

img

如上图,显示JDK版本为18.0.2-ea,表示正确安装

准备并上传服务器文件

本次使用的使forge的服务器,为了减缓手机压力,首先再电脑上运行forge服务器安装程序并运行服务器,此处不做展示,下载安装过程全程再Windows环境下运行,具体过程移步至纯手搭建MC-Forge服务器

在电脑上(Windows环境)运行run.bat,等待服务器初次启动完毕后,将整个服务器文件打包为压缩文件,并通过(FTP)软件上传至手机上,Termius自带文件传输功能,也可用其他FTP软件替代,用户、密码依旧为SSH连接时的用户、密码

FTP登录后可以点击...进入上一级文件夹,最外可以进入到/data/data/com.termux/目录,这是termux的根目录,Ubuntu的目录地址为:

/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu/

进入此目录后选择服务器的安放位置,我选择了home文件夹

img

将打包后的服务器文件上传至home目录后,准备进入终端解压压缩文件,需要使用 apt install unzip 安装解压软件

安装unzip后使用 cd /home进入home文件夹,再使用ls命令显示当前文件夹下的子文件夹和文件

cd /home #进入home 文件夹
ls  #显示home 文件夹下的文件

img

解压你的服务器压缩包

unzip mcjava.zip

img

解压完成后使用ls 查看目录文件,应多出一个与压缩包同名的文件夹,并进入文件夹,文件夹内容如下

img

ls    #显示文件夹内容,之后不再说明
cd mcjava   #进入服务器的目录

启动服务器

运行服务器,注意在Ubuntu环境下应执行“run.sh”脚本文件

sh run.sh

启动需要一定的时间

img

此处大部分警告是由于forge检查mod更新,但模组版本信息在墙外导致访问超时

服务器显示如图信息:

由于环境原因输出可能不完全一致

img

从上面看到,运行的版本为1.19.2,默认的模式为生存模式(SURVIVAL),服务器开在(*:25565)上,此处25565即是你的服务器端口,局域网下使用 手机局域网IP:25565连接,比如我的手机局域网IP为192.168.1.108,之后则用 192.168.1.108:25565连接

img

服务器运行到此处表示服务器已经启动成功了

进入游戏服务器

img

请使用你的IP以及服务器端口设置连接

img

可以看到以及可以连接到服务器了,若进入未能成功进入服务器,请确保你的mod与服务器相同,是否开启了版本验证,这些属于服务器设置问题,均可在网络上查找到

内网穿透

如果你只需要在局域网游玩,可以跳过此过程,直接查看 保持服务器后台运行-无内网穿透 的步骤

此时若你想和在局域网外的朋友一起游玩,可以发现你的朋友并不能连接上你的服务器,此时有如下几种方案:

  1. 申请公网IP
  2. 使用IPv6
  3. 使用樱花frp内网穿透

公网IP申请在部分地区比较麻烦,需要和网络运营商工作人员扯皮,社恐直接pass这个方案

IPv6基本可以保证每个设备拥有一个独立IP,但是需要服务器与客户端均支持IPv6方案,并且不确定IPv6是否不变(未查证),并且学校暂时未分配IPv6因此pass了这个方案

基于自身具体情况,最后选择了樱花frp内网穿透,也是我见过大部分不使用云服务器玩家的选择

什么是内网穿透?

内网穿透主要使用一台拥有公网IP的设备,将其作为桥梁使两个没有公网IP的设备相互连接通信的技术。目前常用的软件为frp,网络上的内网穿透相关服务商都使用或魔改这类软件。 使用frp穿透后,你的游戏数据将会先发送给frp服务端,然后frp服务端转发到内网的游戏服务器,内网游戏服务器的数据也是通过服务端转发到你的游戏设备上,这样就让两个本不能通信的设备可以相互通信了

Sakura Frp

这里选择了樱花frp做穿透,也有许多其他的服务商,但本人很早便注册了樱花frp,并且全过程只需1元实名认证费用,每日签到的流量便远远足够支持一日的游戏使用。若选择其他的服务商,内容大差不差,关键设置都基本相同。

首先申请一个樱花Frp账号,并且按需实名认证(不清楚MC服务器的内网穿透是否需要实名),完成后进入控制台

img

每日签到均可获得免费流量

img

创建隧道

点击“服务-> 隧道列表”,进入隧道列表页面后,点击创建隧道

img

选择一个中国内地的节点

img

隧道类型应选择TCP协议

如果你是基岩版开服,则需要选择UDP协议

img

隧道名与备注可自行填写,关键设置为下面几项

  • 本地IP :127.0.0.1
  • 本地端口:25565

    • 这里是你服务器的端口,25565是Java服务器默认端口
  • 远程端口可自定义(但不能与其他人使用的冲突),推荐留空自动生成
  • 其他不加修改

img

单击创建便创建了一条隧道

img

隧道列表中有你的外部端口号,比如这里为45037,以后将使用这个端口号来连接

点击三个小点,查看配置文件

img

找到server_addr 项,如我这为“cn-zz-bgp-2.natfrp.cloud”,这时你以后连接的域名将域名和端口按下面组合,便是将来游戏要的连接地址,将其记录下来

cn-zz-bgp-2.natfrp.cloud:45037

请使用你自己的配置的域名和端口哦

点击“用户->用户信息”点击重置访问密钥,并记录访问密钥

img

软件下载

点击”服务-> 软件下载“,点击Linux,再点击arm64

img

下载对应的frp客户端

在服务器上创建一个目录,比如我在home下创建frp目录,部分FTP软件也支持软件内创建

cd /home    #进入到home目录
mkdir frp   #创建frp目录

将下载的文件上传到frp目录下,注意路径请按照上传服务器的步骤找到正确的home目录,接下来进入终端,如果你按流程来的,请使用/stop关闭你的游戏服务器

是这个:/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu/home

img

进入到你的frp目录下,比如我的目录在/home/frp 使用

cd /home/frp #进入到目录下
ls #展示目录文件
chmod +x frpc_linux_arm64   # 添加执行权限

img

运行frp

用下面命令运行(注意要进入frp文件目录)

./frpc_linux_arm64  #运行你的frpc_linux_arm64文件

img

输出你的访问密钥后点击Login in 并选择正确的节点点击Continue

img

程序便启动了

img

这里我们先按Ctrl + c 停止程序,并查看文件目录,可以注意到多了一个frpc.ini文件,这是隧道的配置文件,登录时自动获取了,你也可以学如何写配置文件

img

保持frp的后台运行

运行下面命令,回车运行后再回车

nohup ./frpc_linux_arm64 -c frpc.ini &

img

可以看到程序输出了一个数字我的设备输出为19046请将其记录下来

查看目录发现多了一个nohup.out的文件,原本的程序输出的字符将输出到这个文本文件内,你可以下载这个文件,也可以使用vim 等软件在线查看修改

这样我们便运行起来了穿透软件

接下来我们进入服游戏服务器文件夹,启动服务器文件

cd /home/mcjava
sh run.sh

img

等待服务器启动完成后,启动我的世界,尝试使用外网连接,比如我的cn-zz-bgp-2.natfrp.cloud:45037

img

可以看到呢服务器成功启动,并能够连接上了

img

值得注意的是,若你在局域网内,你可以发现局域网的连接依旧可行,并且延迟要远远小于外网穿透连接,因此若设备在同一局域网,推荐局域网连接

此时若你关闭电脑上的SSH软件,服务器将关闭,接下来将使用保持服务器与穿透软件同时运行

首先找到frp运行时输出记录下来的数字,比如我的*19046*输入/stop 关闭服务器后使用

kill 19046  #关闭后台运行的frp穿透程序

保持服务器后台运行-内网穿透情况

我们是使用手机运行的服务器程序,有如下要求

  1. Termux终端在前台,保证拥有最佳性能
  2. 随时随地查看服务器情况,并能操作服务器

对应的解决方案有许多:

  • 安装MCSM来管理游戏服务器
  • 使用Tmux来创造多窗口前台运行服务器

MCSM是一个功能非常强大的应用,它可以以网页的形式管理你的游戏服务器,但在我的尝试中,在Ubuntu环境下运行MCSM后并不能访问,因此排除此方案,如果你能解决那一定是最优选择

Tmux是一个分屏应用,可以在一个屏幕上操作两个终端,首先安装Tmux

apt install tmux

启动服务器

接下来操作请在手机上运行,如果你是按照本文顺序来的,你手机的光标第一个字符应该为$,也是每次你启动服务器的情况,因此请记住下面过程,它将是每次服务器启动的必要过程,你可以选择将其保存下来,这里图片截取的都是电脑环境下,手机情况类似

proot-distro login ubuntu   #登录ubuntu
tmux                        #进入tmux终端环境

img

下面有提示就是tmux环境,运行下面命令 划分上下两个窗格,如下图

tmux split-window

img

我们选择一个窗格为frp窗格,另一个为服务器窗格,如上图现在光标在下面窗格,你可以使用ctrl + b + o跳转窗格,我们先随便选一个执行下面命令启动穿透

cd /home/frp     #进入你的frp位置
./frpc_linux_arm64 -c frpc.ini    #运行frp穿透程序

img

如上图,我选择了上面窗格作为穿透,运行成功后我们ctrl + b + o跳转到另一个窗格,运行下面命令开启服务器

cd /home/mcjava    #进入服务器目录
sh run.sh          #启动服务器

img

可以看到我们的服务器跑起来了,等待服务器启动完毕,再通过前文说的方式连接服务器就行了

img

img

img

停止服务器

ctrl + b + o 让光标转移到服务器窗格位置输出/stop 停止服务器,等服务器完全停止(行开始的字符为root@localhost时),输入exit关闭当前窗格此时只有一个窗格了

img

再按ctrl + c 关闭frp穿透程序,再输入exit 推出tmux模拟的终端,此时的屏幕最下面一行没有提示了,再输入exit,退出到Termux的终端(行开头为$),即可关闭app应用

最后说明

手机设置相关

不同手机的设置不一样,息屏后可能导致应用断网或分配性能下降,既然都做服务器了,可以设置不息屏,并且开启性能模式,保持24小时前台运行

服务器相关

强行关闭服务器可能导致服务器回档,造成一些问题,因此请通过/stop命令关闭服务器或者定期使用/save-all 保存数据。关于服务器的一些命令,请移步我的世界服务器命令大全,并在服务器窗格输入

SRV解析

现在若通过外网连接服务器,需要带端口,如果你拥有一个域名,你可以设置SRV解析,使用域名连接,具体设置请移步:SakuraFrp设置SRV解析

最后修改:2024 年 11 月 22 日
如果觉得我的文章对你有用,请随意赞赏