安卓手机使用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)
接下来全程使用电脑来安装Ubuntu,Java环境以及启动MCJE服务器
安装Linux(Ubuntu)
pkg install proot-distro # 安装proot-distro
proot-distro install ubuntu #安装ubuntu环境
安装完成后使用下面代码进入Ubuntu
proot-distro login ubuntu
前缀显示root@localhost:~# 代表进入Ubuntu环境了
安装服务器运行环境
此次运行的服务器版本为1.19.2,将使用Java18来运行服务器,首先更新Ubuntu软件库
apt update && apt upgrade
安装Java18
如果不知道官方库中的Java版本可以使用下面命令筛选出版本
apt search jdk
如上图筛选出了许多jdk版本,本此需要安装jdk18(java18),则安装对应的jdk环境
apt install openjdk-18-jre
安装完成后,查看Java是否正确安装以及版本是否正确
java -version
如上图,显示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文件夹
将打包后的服务器文件上传至home目录后,准备进入终端解压压缩文件,需要使用 apt install unzip 安装解压软件
安装unzip后使用 cd /home进入home文件夹,再使用ls命令显示当前文件夹下的子文件夹和文件
cd /home #进入home 文件夹
ls #显示home 文件夹下的文件
解压你的服务器压缩包
unzip mcjava.zip
解压完成后使用ls 查看目录文件,应多出一个与压缩包同名的文件夹,并进入文件夹,文件夹内容如下
ls #显示文件夹内容,之后不再说明
cd mcjava #进入服务器的目录
启动服务器
运行服务器,注意在Ubuntu环境下应执行“run.sh”脚本文件
sh run.sh
启动需要一定的时间
此处大部分警告是由于forge检查mod更新,但模组版本信息在墙外导致访问超时
服务器显示如图信息:
从上面看到,运行的版本为1.19.2,默认的模式为生存模式(SURVIVAL),服务器开在(*:25565)上,此处25565即是你的服务器端口,局域网下使用 手机局域网IP:25565连接,比如我的手机局域网IP为192.168.1.108,之后则用 192.168.1.108:25565连接
服务器运行到此处表示服务器已经启动成功了
进入游戏服务器
可以看到以及可以连接到服务器了,若进入未能成功进入服务器,请确保你的mod与服务器相同,是否开启了版本验证,这些属于服务器设置问题,均可在网络上查找到
内网穿透
此时若你想和在局域网外的朋友一起游玩,可以发现你的朋友并不能连接上你的服务器,此时有如下几种方案:
- 申请公网IP
- 使用IPv6
- 使用樱花frp内网穿透
公网IP申请在部分地区比较麻烦,需要和网络运营商工作人员扯皮,社恐直接pass这个方案
IPv6基本可以保证每个设备拥有一个独立IP,但是需要服务器与客户端均支持IPv6方案,并且不确定IPv6是否不变(未查证),并且学校暂时未分配IPv6因此pass了这个方案
基于自身具体情况,最后选择了樱花frp内网穿透,也是我见过大部分不使用云服务器玩家的选择
Sakura Frp
这里选择了樱花frp做穿透,也有许多其他的服务商,但本人很早便注册了樱花frp,并且全过程只需1元实名认证费用,每日签到的流量便远远足够支持一日的游戏使用。若选择其他的服务商,内容大差不差,关键设置都基本相同。
首先申请一个樱花Frp账号,并且按需实名认证(不清楚MC服务器的内网穿透是否需要实名),完成后进入控制台
每日签到均可获得免费流量
创建隧道
点击“服务-> 隧道列表”,进入隧道列表页面后,点击创建隧道
选择一个中国内地的节点
隧道类型应选择TCP协议
隧道名与备注可自行填写,关键设置为下面几项
- 本地IP :127.0.0.1
本地端口:25565
- 这里是你服务器的端口,25565是Java服务器默认端口
- 远程端口可自定义(但不能与其他人使用的冲突),推荐留空自动生成
- 其他不加修改
单击创建便创建了一条隧道
隧道列表中有你的外部端口号,比如这里为45037,以后将使用这个端口号来连接
点击三个小点,查看配置文件
找到server_addr 项,如我这为“cn-zz-bgp-2.natfrp.cloud”,这时你以后连接的域名将域名和端口按下面组合,便是将来游戏要的连接地址,将其记录下来
cn-zz-bgp-2.natfrp.cloud:45037
点击“用户->用户信息”点击重置访问密钥,并记录访问密钥
软件下载
点击”服务-> 软件下载“,点击Linux,再点击arm64
下载对应的frp客户端
在服务器上创建一个目录,比如我在home下创建frp目录,部分FTP软件也支持软件内创建
cd /home #进入到home目录
mkdir frp #创建frp目录
将下载的文件上传到frp目录下,注意路径请按照上传服务器的步骤找到正确的home目录,接下来进入终端,如果你按流程来的,请使用/stop关闭你的游戏服务器
进入到你的frp目录下,比如我的目录在/home/frp 使用
cd /home/frp #进入到目录下
ls #展示目录文件
chmod +x frpc_linux_arm64 # 添加执行权限
运行frp
用下面命令运行(注意要进入frp文件目录)
./frpc_linux_arm64 #运行你的frpc_linux_arm64文件
输出你的访问密钥后点击Login in 并选择正确的节点点击Continue
程序便启动了
这里我们先按Ctrl + c 停止程序,并查看文件目录,可以注意到多了一个frpc.ini文件,这是隧道的配置文件,登录时自动获取了,你也可以学如何写配置文件
保持frp的后台运行
运行下面命令,回车运行后再回车
nohup ./frpc_linux_arm64 -c frpc.ini &
可以看到程序输出了一个数字我的设备输出为19046,请将其记录下来
查看目录发现多了一个nohup.out的文件,原本的程序输出的字符将输出到这个文本文件内,你可以下载这个文件,也可以使用vim 等软件在线查看修改
这样我们便运行起来了穿透软件
接下来我们进入服游戏服务器文件夹,启动服务器文件
cd /home/mcjava
sh run.sh
等待服务器启动完成后,启动我的世界,尝试使用外网连接,比如我的cn-zz-bgp-2.natfrp.cloud:45037
可以看到呢服务器成功启动,并能够连接上了
值得注意的是,若你在局域网内,你可以发现局域网的连接依旧可行,并且延迟要远远小于外网穿透连接,因此若设备在同一局域网,推荐局域网连接
此时若你关闭电脑上的SSH软件,服务器将关闭,接下来将使用保持服务器与穿透软件同时运行
首先找到frp运行时输出记录下来的数字,比如我的*19046*,输入/stop 关闭服务器后使用
kill 19046 #关闭后台运行的frp穿透程序
保持服务器后台运行-内网穿透情况
我们是使用手机运行的服务器程序,有如下要求
- Termux终端在前台,保证拥有最佳性能
- 随时随地查看服务器情况,并能操作服务器
对应的解决方案有许多:
- 安装MCSM来管理游戏服务器
- 使用Tmux来创造多窗口前台运行服务器
MCSM是一个功能非常强大的应用,它可以以网页的形式管理你的游戏服务器,但在我的尝试中,在Ubuntu环境下运行MCSM后并不能访问,因此排除此方案,如果你能解决那一定是最优选择
Tmux是一个分屏应用,可以在一个屏幕上操作两个终端,首先安装Tmux
apt install tmux
启动服务器
接下来操作请在手机上运行,如果你是按照本文顺序来的,你手机的光标第一个字符应该为$,也是每次你启动服务器的情况,因此请记住下面过程,它将是每次服务器启动的必要过程,你可以选择将其保存下来,这里图片截取的都是电脑环境下,手机情况类似
proot-distro login ubuntu #登录ubuntu
tmux #进入tmux终端环境
下面有提示就是tmux环境,运行下面命令 划分上下两个窗格,如下图
tmux split-window
我们选择一个窗格为frp窗格,另一个为服务器窗格,如上图现在光标在下面窗格,你可以使用ctrl + b + o跳转窗格,我们先随便选一个执行下面命令启动穿透
cd /home/frp #进入你的frp位置
./frpc_linux_arm64 -c frpc.ini #运行frp穿透程序
如上图,我选择了上面窗格作为穿透,运行成功后我们ctrl + b + o跳转到另一个窗格,运行下面命令开启服务器
cd /home/mcjava #进入服务器目录
sh run.sh #启动服务器
可以看到我们的服务器跑起来了,等待服务器启动完毕,再通过前文说的方式连接服务器就行了
停止服务器
ctrl + b + o 让光标转移到服务器窗格位置输出/stop 停止服务器,等服务器完全停止(行开始的字符为root@localhost时),输入exit关闭当前窗格此时只有一个窗格了
再按ctrl + c 关闭frp穿透程序,再输入exit 推出tmux模拟的终端,此时的屏幕最下面一行没有提示了,再输入exit,退出到Termux的终端(行开头为$),即可关闭app应用
最后说明
手机设置相关
不同手机的设置不一样,息屏后可能导致应用断网或分配性能下降,既然都做服务器了,可以设置不息屏,并且开启性能模式,保持24小时前台运行
服务器相关
强行关闭服务器可能导致服务器回档,造成一些问题,因此请通过/stop命令关闭服务器或者定期使用/save-all 保存数据。关于服务器的一些命令,请移步我的世界服务器命令大全,并在服务器窗格输入
SRV解析
现在若通过外网连接服务器,需要带端口,如果你拥有一个域名,你可以设置SRV解析,使用域名连接,具体设置请移步:SakuraFrp设置SRV解析