如何用 fabric 和 velocity 群组代理搭建一个高版本红石生电服务器

1.说明

生电玩法一直是mc非常有趣的玩法之一,但是找了挺久也没有一个系统的开服教程,正好趁着暑假有空,来填补这个空白。(挂科预定

本文将介绍如何在centos下打造属于你自己生电服,隔壁的小伙伴们都羡慕极了~


重要说明

本篇文章的最后一章——杂项,是从买来主机,安装系统,升级核心,直到能够配置mc服务端的全过程。如果你是第一次使用centos,最后那些希望能给你一点参考。

也就是说,第三章将直接从配置服务端开始。

我会在文章末尾把本次用到软件,资料,以及搭建好的服务端上传的网盘链接贴上,各位有需要自取

你必须拥有基本的linux知识,了解基本的命令等,本篇文章不会有太基础的内容

本文若有任何疏漏之处,还请各位大佬多多斧正;若对教程有任何疑问,欢迎评论或者私信。谢谢各位。


本文中示范的软件,硬件以及环境配置如下

硬件

CPU: 锐龙R7-5800H

内存:32G双通道

硬盘:512G SSD

软件

python版本:python3.9.7

jdk版本:OpenJDK Runtime Environment (Alibaba Dragonwell)-17.0.3.0.3+7-GA

mc核心:VanilaFabric服务端1.18.1 / 1.19.2

系统

centos stream 8

当然其他的系统也是一样的,操作大差不差。


为何jdk使用了Dragonwell

简单来说,就是比官方的jdk占用小,运行效率高。

CPU占用和内存占用极其稳定,
即使进行大规模跑图、生成实体,tnt爆炸也几乎无波动
经测试,在用于开mc服务器的时候,节省 20~40% 左右的内存,提升 10~30% 左右的CPU效率

以上内容来自mcbbs, id:紅葉


2.介绍

2.1 架构介绍

以TIS为例,使用velocity群组代理,连接三个主要服务器,分别为生存服(Servival),镜像服(Mirror)以及创造服(Creative)。并且使用了另外的一个服务器作为跨服聊天服务器(ChatBridge)。

2.1.1典型的生电服结构.jpg

生存服务器、镜像服务器和创造服务器结构的主体部分。三个服务器在计算机上同时运行,有着不同作用。

生存服务器是主服务器,作为生电生存的平台。
创造服务器可以有若干个,可以作为生电机器的展示和交流平台等。
镜像服务器是生存服务器的副本,用来进行机器实装前的测试等工作。

以上内容来自b站专栏,id:春雨尋风

这三个主要服务器均是MCDR + vanillaFabric的服务器组合,通过velocity群组服代理与用户通信,通过charbridge server进行跨服对话。

MCDR仓库在此

MCDR插件列表在此

之后搭建镜像服时会使用MCDR插件。


3.搭建服务端

3.1 配置jdk

我本次使用的是alibaba的dragonwell版本的jdk

当然,若是使用zulujdk等其他版本也是一样的过程。

首先下载dragonwell,一般情况下下载x64_linux版本就行。

官网链接

你可以用wget直接下载到你的linux主机上,也可以先下载到自己的主力机上,再通过SFTP服务上传,更方便。

解压jdk到/usr/local文件夹下

tar -zvxf Alibaba_Dragonwell_17.0.3.0.3+7_x64_linux.tar.gz -C /usr/local

配置环境变量

vi /etc/profile

在最后添加以下内容

#java path config
JAVA_HOME=/usr/local/dragonwell-17.0.3.0.3+7-GA
CLASS_PATH=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH

保存退出后,使其生效

source /etc/profile

可以输入java -version查看是否配置成功

# 若不想配置环境变量,则需要输入绝对路径,对于含有多个jdk的情况比较好
# 例:/usr/local/dragonwell-17.0.3.0.3+7-GA/bin/java -version
[root@localhost ~]# java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment (Alibaba Dragonwell)-17.0.3.0.3+7-GA (build 17.0.3+7)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell)-17.0.3.0.3+7-GA (build 17.0.3+7, mixed mode, sharing)

3.2 配置velocity

velocity是类似于BungeeCord的群组代理,非常适合于这种使用vanillaFabric核心的情况。对高版本(1.13+)支持较好,转发效率高。对于模组服不建议使用。

以下服务端类型因为支持使用 Velocity 的modern转发协议,因此推荐使用 Velocity 进行跨服:
1.13+(含) 的 Paper(需要构建版本高于1.13 Build377)(及其非Forge Mod支持的分支) 服务端
任意版本,安装了FabricProxy Mod 的 VanilaFabric 服务端

以上内容来自mcbbs, id: 贺兰兰

下载Velocity

建议下载stable稳定版本的Velocity

但是注意,若服务端为mc1.19.1及以上带有公钥验证的版本,请使用development开发版本。

访问官网以下载

或者使用使用wget下载

# 新建一个文件夹,用来放Velocity所需文件
mkdir mc
# 下载稳定版本Velocity到mc文件夹
wget -P mc https://api.papermc.io/v2/projects/velocity/versions/3.1.1/builds/98/downloads/velocity-3.1.1-98.jar
# 开发版本更新速度太快,请自行到官网下载完再上传至服务器。

第一次运行以生成配置文件

# cd到mc文件夹,这是刚才存放Velocity的文件夹
cd mc
# 新建并编辑脚本文件
vi start.sh

将以下内容放进去

注意:占用内存设置可大可小,若你服务器时常在线人数只有个位数,完全可以改为256M或512M

#!/bin/sh

java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity*.jar

保存退出后运行bash start.sh,开始运行,你可以看到以下内容,代表运行成功。

[root@localhost mc]# bash start.sh
[14:38:21 INFO]: Booting up Velocity 3.1.1...
[14:38:21 INFO]: Loading localizations...
[14:38:21 INFO]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 1.1.x (Linux x86_64) ciphers
[14:38:21 WARN]: Player info forwarding is disabled! All players will appear to be connecting from the proxy and will have offline-mode UUIDs.
[14:38:21 INFO]: Loading plugins...
[14:38:21 INFO]: Loaded 0 plugins
[14:38:21 INFO]: Listening on /[0:0:0:0:0:0:0:0%0]:25577
[14:38:21 INFO]: Velocity and some of its plugins collect metrics and send them to bStats (https://bStats.org).
[14:38:21 INFO]: bStats collects some basic information for plugin authors, like how many people use
[14:38:21 INFO]: their plugin and their total player count. It's recommended to keep bStats enabled, but
[14:38:21 INFO]: if you're not comfortable with this, you can opt-out by editing the config.txt file in
[14:38:21 INFO]: the '/plugins/bStats/' folder and setting enabled to false.
[14:38:21 INFO]: Done (0.51s)!
> 

使用end命令退出,然后修改配置文件

在本文中,我将只说明必要的修改项,其余保持默认即可。若有其他需求,你可以浏览这个帖子(感谢贺兰兰)查看详细配置说明。配置说明在文章中部。

vi velocity.toml

下面开始说明主要配置项目(mc1.19.1及以上配置项目在下方)

  1. bind = "0.0.0.0:25577",表示将监听来自所有ip地址,端口25577的连接,可以按需更改。

  2. motd = "&#09add3A Velocity Server",这项将在玩家mc服务器列表内显示服务器介绍信息,按需更改。

  3. show-max-players = 500,这项将在玩家服务器列表内显示最大玩家数量。注意:Velocity不能真正的限制玩家数量,如有需要,请在下游服务器设置人数上限。

  4. online-mode = true,启用正版登录。

  5. player-info-forwarding-mode = "NONE"修改为player-info-forwarding-mode = "modern",使用Velocity原生转发玩家的 IP 和 UUID。

  6. forwarding-secret = "wVt1HBsKmLmM",将引号内的字符串记住,将来要用。

  7. kick-existing-players = false,可以修改为true,在开启正版登录情况下,若有相同用户名的玩家重复登录服务器,将服务器内的玩家踢出以令新玩家进入。

  8. 修改[servers]信息,一共有三个主要服务器,可以参考以下设置,按需更改。

[servers]
        # Configure your servers here. Each key represents the server's name, and the value
        # represents the IP address of the server to connect to.
        # 在下面配置你的服务器信息
        survival = "127.0.0.1:30066"
        mirror = "127.0.0.1:30067"
        creative = "127.0.0.1:30068"
        # In what order we should try servers when a player logs in or is kicked from a server.
        # 若玩家被踢出服务器或第一次连接服务器,则按照以下顺序连接
        # 若要尝试多个服务器,则按照以下配置
        # try = ["survival","creative"]
        try = ["survival"]
  1. 修改[forced-hosts]信息,以下内容仅供参考,按需更改。
[forced-hosts]
        # Configure your forced hosts here.
        "survival.example.com" = ["survival"]
        "mirror.example.com" = ["mirror"]
        "creative.example.com" = ["creative"]

修改完成,[advanced]设置无需更改,保存退出。


mc1.19.1版本及以上配置项目如下。

  1. bind = "0.0.0.0:25577",表示将监听来自所有ip地址,端口25577的连接,可以按需更改。

  2. motd = " add3A Velocity Server",这项将在玩家mc服务器列表内显示服务器介绍信息,按需更改。

  3. show-max-players = 500,这项将在玩家服务器列表内显示最大玩家数量。注意:Velocity不能真正的限制玩家数量,如有需要,请在下游服务器设置人数上限。

  4. online-mode = true,启用正版登录。

  5. force-key-authentication = true,强制公钥验证,我的建议是改为false,配合NoChatReports模组禁用玩家举报。

  6. player-info-forwarding-mode = "none",将其改为morden,使用Velocity原生转发玩家的 IP 和 UUID。

  7. forwarding-secret-file = "forwarding.secret",和之前的Velocity版本不同,将密钥字符串保存到了相同目录下的forwarding.secret文件中,请将其打开复制保存备用。

  8. kick-existing-players = false,可以修改为true,在开启正版登录情况下,若有相同用户名的玩家重复登录服务器,将服务器内的玩家踢出以令新玩家进入。

  9. 修改[servers]信息,以下内容供参考。

[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
survival = "127.0.0.1:30066"
mirror = "127.0.0.1:30067"
creative = "127.0.0.1:30068"
  1. 修改[forced-hosts]信息,以下内容供参考。
[forced-hosts]
# Configure your forced hosts here.
"survival.example.com" = [
"survival"
]
"mirror.example.com" = [
"mirror"
]
"creative.example.com" = [
"creative"
]

放行centos防火墙端口

若是使用腾讯云,阿里云等云主机厂商,记得在控制台内放行25577端口(以本文为例)。

并且由于以上两个厂商的安装的系统默认不开启系统防火墙,以下命令可以忽略。

firewall-cmd --zone=public --add-port=25577/tcp --permanent
firewall-cmd --reload

3.3 搭建MCDR框架以及搭建mc服务端

3.3.1 初始化MCDR

建议安装python3.9,不但是因为MCDR依赖python3.6-3.9,而且某些MCDR插件仅支持此python版本。

点击此处访问MCDR文档。

安装MCDR

使用清华源来加速下载

pip3 install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple

初始化MCDR

在mcdrs文件夹中运行MCDR,使用以下命令初始化MCDR运行环境。

# 新建mcdrs文件夹并转到mcdrs文件夹
mkdir mcdrs && cd mcdrs
# 初始化MCDR
python3 -m mcdreforged init

运行成功后,类似于以下提示

[root@localhost ~]# mkdir mcdrs
[root@localhost ~]# cd mcdrs
[root@localhost mcdrs]# python3 -m mcdreforged init
Initialized environment for MCDReforged in /root/mcdrs

3.3.2 配置survival子服务端

在fabricmc网站下载服务端。本次演示mc版本是1.18.1,你也可以安装其他版本。

下载fabric服务端

服务端核心下载

注意:要将服务端核心下载到存放mcdr文件夹的server文件夹内。

cd server
curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.18.1/0.14.8/0.11.0/server/jar

启动MCDR的同时启动mc服务端

退回上一个目录,修改MCDR配置文件,以启动服务端。

cd ..
vi config.yml

可以按照以下配置修改,其他默认即可

  1. language: en_us,可以修改为zh_cn,这样输出为中文。

  2. start_command: java -Xms1G -Xmx2G -jar minecraft_server.jar nogui,将启动命令中 *.jar 文件修改为你的服务器核心的文件名,最大和最小内存自行修改。例如:java -Xmx6G -jar fabric-server-mc.1.18.1-loader.0.14.8-launcher.0.11.0.jar nogui

修改结束,保存退出。

启动MCDR

python3 -m mcdreforged

因为是第一次启动,会让你同意eula

[Server] [16:37:36] [main/ERROR]: Failed to load properties from file: server.properties
[Server] [16:37:36] [main/WARN]: Failed to load eula.txt
[Server] [16:37:36] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[MCDR] [16:37:36] [MainThread/INFO]: 服务端进程返回代码: 0
[MCDR] [16:37:36] [MainThread/INFO]: 服务端已关闭
[MCDR] [16:37:36] [MainThread/INFO]: 正在关闭 MCDR
[MCDR] [16:37:36] [MainThread/INFO]: 正在关闭高级控制台
>
[MCDR] [16:37:37] [MainThread/INFO]: bye

修改eula.txt

cd server
vi eula.txt

现在,请做两件事

1) 退回上级目录,将mcdrs文件夹(存放mcdr的文件夹)另存为副本,等会配置creative子服务端时更方便。

# 转到用户目录
cd ~
# 创建mcdrc文件夹,用于存放Creative子服务器的文件
mkdir mcdrc
# 复制文件
cp -r mcdrs/* mcdrc/

2) 由于镜像服的同步功能使用了MCDR的插件,事先将mcdrs下的文件另存到Mirror文件夹下,等会配置Mirror子服务端时更方便。

# 退回上级目录
cd ..
# 转到mcdrs目录
cd mcdrs
# 创建 Mirror 文件夹
mkdir Mirror
# 将mcdrc文件夹下的文件复制到mcdrs/Mirror文件夹下
cp -r /root/mcdrc/* Mirror/

现在,就可以编辑survival子服务端的server.properties配置文件了

cd server
vi server.properties
  1. difficulty=easy可以修改为hard

  2. max-players=20可以自行设置最大人数。

  3. online-mode=true由于之前在Velocity配置文件内设置了"Modern"转发模式,正版服务器可以无需更改。关于此项,请看评论区,感谢 @MrPiper。

  4. server-port=25565,端口按照之前在Velocity配置的端口设置,我设置为30066

其他无需修改,保存退出即可。

由于使用了Velocity转发,要在mods文件夹内安装FabricProxy-Lite

Fabric-API网站在此处

FabricProxy-Lite网站在此处

# 转到mods文件夹
cd mods
# 下载Fabric-API
wget https://cdn.modrinth.com/data/P7dR8mSH/versions/0.46.6+1.18/fabric-api-0.46.6%2B1.18.jar
# 下载FabricProxy-Lite
wget https://cdn.modrinth.com/data/8dI2tmqs/versions/v1.1.6/FabricProxy-Lite-1.1.6.jar

现在要启用服务端,需要修改第一次启动FabricProxy-Lite模组的配置文件

# 转到mcdrs文件夹内
cd /root/mcdrs
# 启动MCDR
python3 -m mcdreforged

成功启动后输入stop停止服务端运行。

# 转到配置文件的文件夹
cd cd server/config
# 修改配置文件
vi FabricProxy-Lite.toml

hackEarlySend = false,改成true,便于minihud等模组正确渲染结构。

现在将之前保存的Velocity的配置文件的字符串复制过来。

secret = "",将字符串填入引号内部。保存退出。

现在,可以启动suivival服务端看能否连接上了

# 转到mcdrs文件夹
cd /root/mcdrs
# 启动MCDR
python3 -m mcdreforged

大功告成

(若不设置上一步的secret,就会出现如下图所示的错误)

Velocity连接成功提示
3.3.2-1Velocity.jpg

Survival服务端连接成功提示
3.3.2-2Mcdrs.jpg


3.3.3 配置Mirror子服务端

我使用了MCDR插件列表中的MirrorServerReforged插件,其Mirror存放在Survival子服务端下。

仓库地址在此

将这个插件下载到./mcdrs/plugin目录下。

# 转到./mcdrs/plugin目录
cd /root/mcdrs/plugin
# 下载MirrorServerReforged插件
wget https://github.com/EMUnion/MirrorServerReforged/releases/download/1.0.3/MirrorServerReforged-v1.0.3.mcdr

启动一次MCDR以生成配置文件

# 转到上级目录
cd ..
# 启动MCDR
python3 -m mcdreforged
# 停止运行
stop

编辑MirrorServerReforged配置文件

cd config
vi MirrorServerReforged.json

rcon要打开,便于控制Mirror服务端,配置如下,以便参考

{
  "world":[
    "world"
  ],
  "command":"python3 -m mcdreforged",
  "rcon":{
    "enable":true,
    "host":"localhost",
    "port":25575,
    "password":"password"
  }
}

保存退出

Mirror子服务端也需要安装FabricProxy-Lite

直接将之前下载的mod和配置文件复制一份就行。

cd ..
# 复制mod
cp server/mods/* Mirror/server/mods/
# 复制配置文件
cp -r server/config Mirror/server/

编辑Mirror子服务端的server.properties

cd Mirror/server
vi server.properties
  1. rcon.port=25575,确保rcon端口是25575。

  2. difficulty=easy可以修改为hard

  3. max-players=20可以自行设置最大人数。

  4. online-mode=true由于之前在Velocity配置文件内设置了"Modern"转发模式,正版服务器可以无需更改。关于此项,请看评论区,感谢 @MrPiper。

  5. server-port=25565,端口按照之前在Velocity配置的端口设置,我设置为30067

  6. enable-rcon=false,将其改为true以启用rcon。

  7. rcon.password=,将之前设置的rcon密码填入。例如:password

设置完成,保存退出。

测试是否工作正常

# 回到mcdrs文件夹
cd /root/mcdrs
# 启动survival子服务端
python3 -m mcdreforged
# 转到Velocity文件夹
cd mc
# 启动Velocity代理
bash strat.sh

登录游戏,查看插件是否运行正常

可以输入指令

命令列表
!!msr help - 显示帮助信息
!!msr sync - 同步服务器地图至镜像
!!msr reload - 重载配置文件
!!msr start - 启动镜像服务器
!!msr stop - 关闭镜像服务器(需要开启Rcon)
!!msr init - 初始化镜像服务器(仅MCDR类服务器可用)
!!msr status - 查看镜像服务器状态

以上内容来自msr仓库,点击访问

启动参数参数中内存果然要调大一点,不然启动得慢

运行完美

3.3.3-1Mirror.jpg


3.3.4 配置Creative子服务端

Creative子服务端就没那么繁琐了

编辑server.properties

cd /root/mcdrc/server
vi server.properties
  1. gamemode=survival,改为creative

  2. enable-command-block=false,可以改为true,启用命令方块。

  3. difficulty=easy,可以改为hard,困难模式。

  4. max-players=20,可以更改人数上限。

  5. online-mode=true是否开启正版验证。关于此项,请看评论区,感谢 @MrPiper。

  6. allow-flight=false,可以改为true,允许飞行。

  7. server-port=25565,端口改为之前在Velocity配置文件内的端口。如:30068

  8. level-type=,这一项可能没有,可以直接在最后一行添加,可以设置为超平坦flat

将之前的FabricProxy和配置文件复制一份

cd ~
# 复制mod
cp mcdrs/server/mods/* mcdrc/server/mods/
# 复制配置文件
cp -r mcdrs/server/config mcdrc/server/

测试是否能够切换服务器

3.3.4-1creative.jpg

3.3.4-2creative.jpg

大功告成


4.跨服聊天搭建

使用MCDR的ChatBridge插件实现跨服聊天功能。

仓库地址在此

4.1 服务端环境搭建

事先安装pycryptodome以及colorlog的python包

需要Python 3.6+

# 安装python包
pip3 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install colorlog -i https://pypi.tuna.tsinghua.edu.cn/simple

4.1.1 配置服务端

下载插件到chatbridge文件夹

# cd到用户文件夹
cd ~
# 新建文件夹,用来存放文件。
mkdir chatbridge
cd chatbridge
# 下载插件
wget https://github.com/TISUnion/ChatBridge/releases/download/v2.2.0/ChatBridge.pyz

第一次运行会生成配置文件

[root@localhost chatbridge]# python3 ChatBridge.pyz server
Configure file not found!
Default example configure generated
Traceback (most recent call last):
  File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/root/chatbridge/ChatBridge.pyz/__main__.py", line 4, in <module>
  File "/root/chatbridge/ChatBridge.pyz/chatbridge/cli_entry.py", line 43, in main
  File "/root/chatbridge/ChatBridge.pyz/chatbridge/cli_entry.py", line 15, in server
  File "/root/chatbridge/ChatBridge.pyz/chatbridge/impl/cli/cli_server.py", line 81, in main
  File "/root/chatbridge/ChatBridge.pyz/chatbridge/impl/utils.py", line 20, in load_config
FileNotFoundError: ChatBridge_server.json

编辑配置文件

vi ChatBridge_server.json

以下配置供参考

{
    "aes_key": "ThisIstheSecret",
    "hostname": "localhost",
    "port": 30001,
    "clients": [
        {
            "name": "survival",
            "password": "survival"
        },
        {
            "name": "mirror",
            "password": "mirror"
        },
        {
            "name": "creative",
            "password": "creative"
        }
    ],
    "show_chat": true,
    "log_chat": false
}

保存退出。

使用python3 ChatBridge.pyz server运行跨服聊天服务端。


4.1.2 配置客户端(以Survival子服务端为例)

由于使用了MCDR,客户端配置很简单。

将插件下载到mcdrs/plugins文件夹下

# 转到plugins文件夹下
cd ~/mcdrs/plugins
# 下载插件
wget https://github.com/TISUnion/ChatBridge/releases/download/v2.2.0/ChatBridge.pyz
# 退回上级目录
cd ..
# 启动MCDR
python3 -m mcdreforged

第一次启动会生成配置文件,需要修改

# 停止Survival子服务端
stop
# 编辑配置文件
vi config/chatbridge/config.json

按照之前的设置服务端的信息修改配置文件。以下供参考。

{
    "aes_key": "ThisIstheSecret",
    "name": "survival",
    "password": "survival",
    "server_hostname": "127.0.0.1",
    "server_port": 30001,
    "debug": false
}

保存退出。

使用python3 -m mcdreforged启动Survival子服务端。

再把另外两个子服务端也按照上面的步骤配置一遍,测试效果。

完美

4.1.2-1chatbridge.jpg

可以在各个子服务器文件夹内将python3 -m mcdreforged保存为脚本文件,这样下次启动更方便。


5.插件及模组推荐

经过这么长时间的搭建,终于是可以正常游玩了。但是呢,优化模组以及有趣的插件必不可少。我在这里推荐几项。

5.1 Fabric模组推荐

下载好的模组直接拖入mods文件夹就行

  1. Startlight,光照优化,下载网址

  2. Concurrent Chunk Management Engine(C^2M引擎),区块加载优化,下载网址

  3. Carpet Mod,为你的服务器添加更多功能,不解释,下载网址

  4. [PCA]plusls-carpet-addition,Carpet附属,PCA同步协议,用于容器预览(客户端配合Masa Gadget使用),玩家(假人)数据同步等,具体介绍以及下载网址

  5. [GCA]gugle-carpet-addition,Carpet附属,用于查看假人背包,假人开服自动上线等功能,具体介绍以及下载网址

  6. servux,唯一作用便是为了传递结构,便于在安装了minihud模组的客户端上正确渲染结构。但是使用minihud的史莱姆区块渲染仍然需要种子。下载网址

  7. Lithium(锂),原版优化,下载网址

5.2 MCDR插件推荐

下载好的插件放入plugins。请详细阅读Readme,确保安装好需要的python包。

插件列表

  1. QuickBackupM,多槽位备份,回档。仓库

  2. Timed QBM,定时触发QBM备份。仓库

  3. Minecraft Data API,获得玩家数据的API。仓库

  4. Join MOTD,向玩家发送欢迎信息。仓库

  5. Here,高亮玩家,显示坐标。仓库

  6. Beep,@某人,@ all可作用于所有玩家。仓库

  7. DayCountNBT,获取开服时间。仓库

  8. Stats Helper,获取玩家信息,计分板。仓库

  9. Simple OP,获取op,创造服可用。仓库


x.杂项

说明

以下内容是我从刚开始买来主机装系统,配置完环境,直到能用于正常配置mc服务端的所有过程。如果你是新手,第一次配置服务端,可以仔细阅读。希望对你有所启发。

x.1 安装系统

x.1.1 制作启动盘

准备一个u盘(16G足够),记得把数据备份出来,写盘后数据会全部丢失。

推荐软件:FedoraMediaWriter,使用这个软件制作的linux系统启动盘安装的bug比较少。如果你使用软碟通等软件记得把写入方式改为RAW,否则可能会出现找不到安装源的问题。

打开软件,点击“选择.iso文件”,下一步

x.1.1.1-1FedoraMediaWriter软件界面.jpg

点击“选择”,选择你的系统镜像文件

x.1.1.1-1FedoraMediaWriter软件界面2.jpg

耐心等待

x.1.1.1-1FedoraMediaWriter软件界面3.jpg

大功告成

x.1.1.1-1FedoraMediaWriter软件界面4.jpg

注意:windows上无法直接将u盘格式化,请用这个软件将其重置后才能正常使用

x.1.1.1-1FedoraMediaWriter软件界面5.jpg

x.1.2 开始安装系统

进bios/uefi将u盘设为第一启动项

大多数电脑狂按delete能进bios,某些电脑可能特殊,自行百度。

将"Boot Option #1"和"~ #2"都设置为你的u盘。然后"save & exit"保存退出。

x.1.2bios1.jpg

选第一项,开始安装centos stream 8

x.1.2-2安装步骤.jpg

注意:若选择使用软碟通制作的启动盘,在此处会出现无法进入安装程序的问题。

可以翻到下面,选择中文

x.1.2-3安装步骤.jpg

键盘可以不用选,汉语和英语键盘布局一样的。

语言支持最好添加一个英文(美国)。

x.1.2-4安装步骤.jpg

软件选择直接最小安装。无需其他软件。

安装目的地选择时把你的硬盘打上勾,可能会提示分区,可以直接删除全部,系统会帮你自动分区。

x.1.2-5安装步骤.jpg

root账户和普通账户要设置一下,密码简单的情况下需要点两下完成才能设置成功

x.1.2-6安装步骤.jpg

设置全部完成后如下图所示,最后点击开始安装

x.1.2-7安装步骤.jpg

安装完成后重启即可

x.1.2-8安装步骤.jpg


x.2 配置网络

输入root账号密码登录系统,注意密码输入时不可见

CentOS Stream 8
Kernel 4.18.0-383.e18.x86_64 on an x86_64
localhost login: root
Password: 
Last login: Sat Jun 25 11:42:27 on tty1
[root@localhost ~]#

输入nmcli查看当前网络

nmcli
[root@localhost ~]# nmcli
eno1: unavailable
    "Realtek RTL8111/8168/8411"
    ethernet (r8169), 50:A1:32:1F:32:D9, hw, mtu 1500

enp1s0: unavailable
    "Realtek RTL8111/8168/8411"
    ethernet (r8169), 50:A1:32:1F:32:D8, hw, mtu 1500

lo: unmanaged
    "lo"
    loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.

显然,我们没有连上任何网络。

由于我这台主机比较新,而众所周知,centos的内核版本比较旧,导致每次主机一开机报错一大片;我的wifi6无线网卡也无法显示。这就需要我们更新内核版本,下一部分会讲到。

照常理来说,连网只要一根网线就行了,可是现在身边既没网线,又没路由器,接下来分享一个应急的办法。

将你的手机和电脑用usb线连起来,我以vivo手机为例:设置->其他网络与连接->个人热点->其他共享方式->通过USB共享网络打开开关。当然,其他手机也可以直接在设置里搜索,这里不再赘述。

打开开关后,再次输入nmcli,会多出一个连接,出现connected to ...的字样并且变为绿色时,说明已经连上网了。

由于系统对汉字没有支持,所以connected to后面的字符为方框,我这里用...代替了

nmcli
[root@localhost ~]# nmcli
enp5s0f3u2: connected to ... 1
    "vivo iQOO Neo5"
    ethernet (rndis_host), 1E:39:13:6C:48:71, hw, mtu 1500
    ip4 default
    inet4 192.168.124.143/24
    route4 192.168.124.0/24 metric 100
    route4 default via 192.168.124.7 metric 100
    inet6 fe80:7026:abb5:86b6:13e0/64
    route6 fe80::/64 metric 1024

eno1: unavailable
    "Realtek RTL8111/8168/8411"
    ethernet (r8169), 50:A1:32:1F:32:D9, hw, mtu 1500

enp1s0: unavailable
    "Realtek RTL8111/8168/8411"
    ethernet (r8169), 50:A1:32:1F:32:D8, hw, mtu 1500

lo: unmanaged
    "lo"
    loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.

但是有时候多出来的连接仍然是灰色,不能自动配置网络,那就需要手动配置了

输入nmtui,打开文本界面(光敏性癫痫警告)

nmtui

x.1.3-1网络配置.jpg

打开第一个Edit a connection,看左边一栏是否有你手机创建的网络连接,若没有,选择右边的Add(我这里左边有了手机的共享,但是汉字无法显示,只有框框)

x.1.3-2网络配置.jpg

有线连接选第二个Ethernet

x.1.3-3网络配置.jpg

有线连接名称随意,第二行的设备名不要搞错,我刚刚连手机的是enp5s0f3u2,也就是说第二行要填刚刚nmcli命令下方的顶格的名称,例如:eno1, enp1s0等等。

x.1.3-4网络配置.jpg

下方的设置默认就行,选择OK返回。再选择Back返回到最开始的界面。

x.1.3-1网络配置.jpg

再选择第二个Activate a connection

x.1.3-5网络配置.jpg

选择USB Ethernet下方的连接,再点击右边的Activate,激活连接。退出这个页面,已经连上网了。


x.3 升级内核

为了确保系统正常,最重要的是更新驱动,不然开机时的一排排error真是让人“赏心悦目”。这里使用安装ELRepo源,自行编译的方法升级内核,原因是官方的更新慢,无法适用我的主机。而且不能自行选择功能。

x.3.1 下载内核源代码

可以打开这个内核网站查看内核版本

建议下载stable版的内核源代码

安装一下wget以及tar工具

dnf install wget
dnf install tar

下载内核(后面的链接可自行替换)

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.18.6.tar.xz

若此种方法速度过慢,可以先在主力机上下载好,使用u盘拷贝。下面介绍此种方法。

注意:u盘必须为fat32格式

将文件拷贝进你的u盘,将u盘插进你的linux主机。

创建挂载目录

mkdir /mnt/usb

看存储设备名称

fdisk -l

x.3.1-1fdisk.jpg

看最后一行,确定为14.7G的设备,名称为sda1.

挂载u盘

mount /dev/sda1 /mnt/usb

转到挂载目录

cd /mnt/usb

列出文件

ls
[root@localhost usb]# ls
linux-5.18.6.tar.xz 'System Volume Information'

将其拷贝到主机上

cp linux-5.18.6.tar.xz /root/5.18.6.tar.xz

解除目录占用,取消挂载

fuser -k /mnt/usb
umount /dev/sda1

解压文件

cd /root
xz -d 5.18.6.tar.xz
tar -xf 5.18.6.tar

x.3.2 编译前的准备

安装epel源

dnf install epel-release

安装依赖

dnf install gcc make ncurses-devel openssl-devel flex bison  elfutils-libelf-devel

安装编译过程中需要的软件

dnf install python39 bc perl

将当前版本配置文件复制到前面解压的内核源代码文件夹内

cd /root/linux-5.18.6
cp /boot/config* .config

然后编辑此配置文件

vi .config

直接在命令模式下输入/CONFIG_SYSTEM_TRUSTED_KEYS,回车

找到这一行,按i键变为编辑模式,将引号内"certs/rhel.pem"清空

这行变为CONFIG_SYSTEM_TRUSTED_KEYS=""

esc变为命令模式,输入/CONFIG_DEBUG_INFO_BTF,查找后将后面的y改为n

esc变为命令模式,输入:wq保存退出


x.3.3 开始编译

配置文件更改设置

make menuconfig

有许多配置能够自行更改
用enter键切换目录,用空格键选择功能

x.3.3-1内核配置.jpg

比如要添加NTFS以及exFAT的支持
File systems ---> DOS/FAT/EXFAT/NT Filesystems --->

x.3.3-2内核配置.jpg

记得按Save后再Exit

编译内核

-j 数字是将编译任务分成多少份,能加快进度。

make -j 32

时间可能需要1到2小时,请耐心等待

安装内核模块

make modules_install

最后安装核心文件

make install

x.3.3-3内核配置.jpg

安装完成后输入reboot重启

启动项第一个应该就是5.18.6版本的内核了

正常启动

跳转到内核源码目录,将内核源代码以及编译后的清理干净。

cd linux*
make clean

x.3.4 连接无线网

现在主机开机后已经不会出现一排排的[error]了,代表驱动已经安装上了,我的无线网卡也显示成功了。

然而,显示的是"plugin missing"状态,需要一些操作才能联网。

x.3.4-1连无线网.jpg

安装NetworkManager-wifi

dnf install NetworkManager-wifi

安装后reboot重启,wifi网卡应该已经启动,如果未启动执行nmcli r wifi on开启无线网

配置wifi

可以使用文本编辑界面,简单易用。

nmtui

x.3.4-2连无线网.jpg

选第二个Activate a connection,在Wi-Fi一栏下面有wifi名称,在要连的的wifi回车,输入密码就行了,连上以后退出。可以输入nmcli看连接情况。

x.3.4-3连无线网.jpg

x.3.4-4连无线网.jpg

你也可以使用命令行来连接wifi

#扫描可用于连接wifi
nmcli dev wifi
#添加一个wifi的连接
nmcli dev wifi con “无线网络名称” password “无线网络密码” name “任意连接名称(删除,修改时用)”
#添加成功后查看已创建的wifi连接
nmcli conn

以上内容来自CSDN

设定静态ip

由于要搭服务器,dhcp最好关掉,ip动态会比较麻烦

可以看一下ip,网关等信息,待会可以直接输入

ip route show

x.3.4-5连无线网.jpg

显然,第一个就是网关,后面的是ip

先cd到网络配置文件目录

cd /etc/sysconfig/network-scripts

列出文件

ls
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-Connectify-me  ifcfg-eno1  ifcfg-enp1s0  ifcfg-····_1  keys-Connectify-me

可以看到一共有5个配置文件,现在来编辑我连上的wifi,将其改为静态

# 要将配置文件名改为你的
vi ifcfg-Connectify-me

i进入编辑模式,将BOOTPROTO=dhcp改为BOOTPROTO=static,并在后面添加以下内容

IPADDR=     # ip地址
NETMASK=    # 子网掩码
GATEWAY=    # 网关
DNS1=       # DNS1
DNS2=       # DNS2

贴上我的配置供参考

x.3.4-6连无线网.jpg

ESC进入命令模式,:wq保存退出

可以reboot重启看是否配置成功。


至此,全部章节结束,现在可以正式开始你的mc之旅了。

感谢你的阅读。

我会将本次用到的文件以及配置好的服务端上传至网盘,各位有需要自取。

链接

感谢名单及参考资料

(按字母顺序排列)

  1. BiliBili,@春雨尋风,开设我的世界生电服务器之一:总体架构与环境安装
  2. CSDN,@JY丫丫,tar 批量打包一个文件夹下的多个目录(tar批量打包与解压)
  3. GitHub,@Alex3236,MCDReforged 文档
  4. GitHub,@Fallen-Breath,MCDReforged
  5. mcbbs,@紅葉,[服务器应用] [2022.1.29] 换个 JVM,最高节省43.3%内存,提高36.9%CPU效率
  6. mcbbs,@贺兰兰,[进阶开服] [2020.12.16][SCT] 跨服端搭建教程 —— 搭建 Waterfall 和 Velocity
  7. mcbbs,@jinshanha666,[进阶开服] [2021.12.19][进阶向]开一个专业的生电服(持续更新中)