上一篇文章讲述了Windows下载安装Minecraft终端,这样我们就可以在自己的电脑上玩我的世界了,但是如何和朋友一起玩呢,主要有三种方法
-
局域网:类似的场景就是高中微机课大家一起联机打cs,所有设备连接同一个Wi-Fi就是在同一个局域网之下,小伙伴的电脑开了个Minecraft房间,就是在路由器内广播,这样假如我的电脑连了同一台路由器,就可以搜索到小伙伴的广播加入游戏。这样的缺点也是很明显的,必须要在同一个子网内,我和小伙伴必须要住在一起
-
VPN:既然不住在一起,让小伙伴加入我的子网就可以了,假设我在我家Wireguard开一个VPN,让小伙伴连入我家的VPN,同样就是加入了子网可以联机玩了
-
使用别人的服务器:上述做法有一个缺点就是小伙伴如果想加入我的房间,我必须要在线,不然他搜索不到我的房间。使用服务器就可以解决这个问题,因为服务器是24h不间断运行的。我之前好像使用过游侠的服务器,但是现在买了MiniPC之后可以自己搭建服务器了
这篇文章讲一下在个人服务器中搭建Minecraft服务器,我们可以直接在服务器中安装环境,但是我是比较倾向于使用Docker安装所有程序的,便于程序之间的隔离以及管理。
需要准备
- 一台miniPC,或者旧电脑,搭载Debian操作系统,可以24h运行
安装教程
准备阶段
-
安装Docker,我的Debian没安装GUI,只有一个命令行,因此只需要Docker Engine即可,详见Docker官网。
-
创建目录,进入你的MiniPC,在想要存放服务器的地方创建一个文件夹,假设我的位置就在
~/minecraftcd ~ mkdir minecraft cd minecraft -
为了方便管理不同的游戏版本,我们再创建版本文件夹,假设我mc运行的版本是
1.18.2,就再创建一个mc-1182mkdir mc-1182 cd mc-1182
Docker
-
准备Docker Compose配置文件
docker-compose.ymlversion: "3.8" services: mc: image: itzg/minecraft-server # 镜像名 tty: true # 支持容器交互 stdin_open: true # 允许命令行输入 ports: - "25565:25565" # 端口映射:宿主机25565 映射到容器25565 environment: EULA: "TRUE" # 必填,表示同意 Minecraft 的 EULA 协议 TYPE: "FORGE" # 服务端核心类型:可选 PAPER / SPIGOT / VANILLA / FORGE / FABRIC VERSION: "1.18.2" # Minecraft 游戏版本 INIT_MEMORY: 1G # JVM 初始内存分配 MAX_MEMORY: 2G # JVM 最大内存分配 ONLINE_MODE: "FALSE" # 是否启用正版验证(FALSE 表示允许离线启动) LEVEL: "world" # 世界名称 LEVEL_SEED: "Kyxie" # 世界种子(可为字符串或纯数字) # 可添加更多环境变量,格式为 KEY: VALUE,注意冒号后需空格 volumes: - ./server:/data # 将当前目录下 server 文件夹挂载到容器的 /data,用于保存世界、配置等数据 restart: unless-stopped # 自动重启策略:除非手动停止,否则容器异常时自动重启 -
关于选择游戏版本,如果你希望玩匠魂工业等大型模组,
1.18.2是个比较好的选择,但是服务器核心要选择FORGE,如果只想轻量化的打打生存,那么可以选择1.20.1,游戏核心选择PAPER -
运行docker compose
docker compose up -d -
这时候服务器就开始运行了,我们打开HMCL,点击Launch Game,等待进入游戏,点击Multiple Player,然后点击Add a server,Server的地址就填服务器的IP地址
配置管理员
-
我们需要修改一些服务器的数据,把你的角色成为管理员(OP)
-
首先找到容器的ID
docker ps第一个
CONTAINER ID就是要找的内容 -
输入以下命令,监控容器的主进程
docker attach <CONTAINER ID> -
这时我们进入了一个terminal,输入
op <Your Username>我的用户名就是
Kyxie注意这里区分大小写 -
退出的时候不能直接
CTRL C,应该使用CTRL P再CTRL Q离开窗口
常见命令
- 在服务器Linux的terminal中启动或者重启容器:
docker compose up -d(和一开始相同) - 把一个角色升级为管理员之后,角色游戏内点击
/打开的terminal,就和docker attach的terminal效果一致了 - 切换模式:
/gamemode creative切换为创造模式,有自动补全帮助可以切换其他模式 - 结束服务:
/stop
详细的文档见:Minecraft Server on Docker (Java Edition)
远程访问
完成了上述步骤就已经成功搭建好了一个Vanilla Minecraft服务器了,剩下的内容就是要将服务暴露到公网,有几种选择
- 如果你没有公网IP,可以使用内网穿透,比如花生壳,向日葵,ZeroTire,Cloudflare ZeroTrust
- 如果你有公网IP,可以使用路由器端口转发,上述Docker Compose File提到的25565就是路由器要转发的端口,外网到25565端口的请求到达路由器,路由器将流量全部转发到miniPC的25565端口
端口转发
由于我有公网IP,我就只介绍这种方法了,国内还是没有公网IP的多,因此内网穿透的教程应该也很多。
-
打开路由器的Web Manager,我们家的就是
192.168.2.1,不同路由器的内网IP不一定一样,常见的还有192.168.1.1等等 -
配置入站出站规则
Rule Name Protocol Internal Port External Port Local IP Address Minecraft TCP 25565 25565 Server的IP Address -
进入后台(
docker attach或者游戏内的terminal),输入命令whitelist on -
然后添加朋友的用户名(角色名)到whitelist,(OP总是可以加入游戏,不管在不在白名单内)
whitelist add Kyxie whitelist add friend_username whitelist reload -
然后再让朋友搜索你家的公网IP就可以直接进入游戏了
-
有些运营商会经常变动IP地址,如果你有自己的域名,可以通过DDNS来把IP地址配置为域名,详见:OpenWrt配置DDNS | Kunyang’s Blog