基础环境:

操作系统:CentOS7
地址:192.168.31.230
网关:192.168.31.1

基础配置:

mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/

# 下载阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

# 清楚缓存并更新系统包
sudo yum clean all
sudo yum makecache fast
sudo yum update -y

下载和准备:

# 下载 zulu-repo rpm 包(包含 repo 定义和 GPG key)  
sudo yum install -y https://cdn.azul.com/zulu/bin/zulu-repo-1.0.0-1.noarch.rpm

# 安装 JDK 17  
sudo yum install -y zulu17-jdk

# 创建服务器目录
mkdir -p /mc-server/fabric-1.18.2
cd /mc-server/fabric-1.18.2

#下载fabic服务端启动器
wget https://meta.fabricmc.net/v2/versions/loader/1.18.2/0.14.22/0.11.2/server/jar -O fabric-server-launch.jar

# 初始化运行
java -Xmx4G -Xms2G -jar fabric-server-launch.jar nogui

# 关闭
/sopt

# 同意EULA协议
sed -i 's/eula=false/eula=true/' eula.txt

编辑服务器配置文件:

vim server.properties
----------------------------------------
# Minecraft 服务器属性文件
# 上次生成时间:Sun Sep 28 22:47:56 CST 2025

enable-jmx-monitoring=false      # 是否启用 JMX 监控(一般不需要,调试用)
rcon.port=25575                  # RCON 远程控制端口(远程管理服务器时使用)
level-seed=                      # 世界种子,留空随机生成
gamemode=survival                # 游戏模式:survival(生存)、creative(创造)、adventure(冒险)、spectator(旁观)
enable-command-block=false       # 是否启用命令方块
enable-query=false               # 是否允许服务器查询协议(外部工具获取在线人数等)
generator-settings={}            # 世界生成器的高级设置,默认空
level-name=world                 # 世界存档名称
motd=A Minecraft Server          # 服务器列表显示的名字(MOTD)
query.port=25565                 # 查询端口(与 enable-query 配合)
pvp=true                         # 是否允许玩家互相攻击
generate-structures=true         # 是否生成村庄、地牢、矿井等结构
difficulty=easy                    # 游戏难度:peaceful(和平)、easy、normal、hard
network-compression-threshold=256  # 网络压缩阈值(字节),过大可降低网络带宽消耗
max-tick-time=60000                # 服务器最大 tick 时间(ms),防止卡死时重启
require-resource-pack=false      # 是否强制玩家使用资源包
use-native-transport=true        # 是否启用原生网络传输(提高性能)
max-players=20                   # 最大玩家数量
online-mode=false                # 是否开启正版验证(true=必须正版)
enable-status=true               # 是否允许在服务器列表显示状态
allow-flight=false               # 是否允许玩家飞行(非创造模式)
broadcast-rcon-to-ops=true       # RCON 命令是否广播给 OP
view-distance=10                 # 服务器视距(区块数)
server-ip=192.168.31.230         # 服务器绑定的 IP,一般留空
resource-pack-prompt=            # 玩家连接时提示使用资源包
allow-nether=true                # 是否允许玩家进入下界
server-port=20000                # 服务器端口(玩家连接端口)
enable-rcon=false                # 是否启用 RCON
sync-chunk-writes=true           # 是否同步写入区块(提高稳定性,但可能降低性能)
op-permission-level=4            # OP 权限等级(1-4,4=全部权限)
prevent-proxy-connections=false  # 是否禁止代理连接
hide-online-players=false        # 是否隐藏在线玩家数量
resource-pack=                         # 服务器资源包 URL
entity-broadcast-range-percentage=100  # 实体广播范围百分比(越大,玩家越能看到远处实体)
simulation-distance=10                 # 服务器区块模拟距离(区块数)
rcon.password=                 # RCON 密码
player-idle-timeout=0          # 玩家闲置超时自动踢出(0=不踢)
force-gamemode=true           # 是否强制玩家进入指定游戏模式
rate-limit=0                   # 连接速率限制(0=无限制)
hardcore=false                 # 是否开启极限模式(玩家死亡永久删除角色)
white-list=false               # 是否开启白名单
broadcast-console-to-ops=true  # 控制台命令是否广播给 OP
spawn-npcs=true                # 是否生成 NPC(村民等)
spawn-animals=true             # 是否生成动物
function-permission-level=2    # 函数执行权限等级(1-4)
level-type=default             # 世界类型:default(默认)、flat(平坦)、largeBiomes(大生物群系)、amplified(放大)、customized(自定义)
text-filtering-config=         # 文本过滤配置(语言敏感过滤)
spawn-monsters=true            # 是否生成怪物
enforce-whitelist=false        # 是否强制白名单
resource-pack-sha1=            # 资源包 SHA-1 校验
spawn-protection=16            # 生成点保护范围(区块内玩家无法破坏方块)
max-world-size=29999984        # 世界最大边界(区块数)

安装模组:

# 在服务器目录下创建mods目录
mkdir -p mods
cd mods

# 这里示例:锂 
https://modfile.mcmod.cn/action/download/?key=73eb50a8aa2c6c2de9f256376ca0ed62

配置防火墙:

# 服务器配置文件中玩家连接端口是多少这里就写多少
firewall-cmd --permanent --add-port=20000/tcp
firewall-cmd --reload

启动后台服务器:

screen -S mc
java -Xmx4G -Xms2G -jar fabric-server-launch.jar nogui

# 退出 screen 保持运行
Ctrl + A + D

# 恢复
screen -r mc