Linux 下 Barotrauma(潜渊症)服务器的高可用部署方案

目录

  1. 背景与方案选择
  2. 方案一:使用 MCSM 面板的 Docker 容器部署
  3. 方案二:Docker Compose + Dockerfile 部署(K8S)
  4. 常见问题与解决方案
  5. 总结与最佳实践建议

当前方案的高可用性定位

当前方案基于 MCSM 面板 + Docker 容器 实现了基础层面的容错能力,适用于个人玩家或小型团队的轻量级部署需求。其核心高可用性设计包括:

  1. 容器自动重启 :通过 MCSM 面板配置的「自动重启」策略,实现服务崩溃后的快速恢复。
  2. 数据持久化 :通过 Volume 挂载 /home/mcsm/barot_server 目录,保障配置文件与存档数据不丢失。
  3. 基础健康检查 :手动执行 nc -uvz 检查 UDP 端口状态,辅助判断服务存活。

适用场景

  • 个人玩家开服娱乐
  • 小型社区(10人以下)稳定运行
  • 技术门槛较低的快速部署

背景与方案选择

近期,我的《潜渊症》网友们反馈游戏自带的 P2P 联机存在较高延迟,计划单独购置一台服务器,安装 Windows 系统、注册 Steam 账号并重新购买游戏。我认为这一方案过于冗余——我们现有的 主机上运行的 Ubuntu 系统已足够服务器部署。

本文将详细介绍如何在 Linux 系统上实现潜渊症(Barotrauma)服务器的高可用部署,涵盖以下两种主流方案:

  1. 使用 MCSM 面板的 Docker 容器部署
  2. Docker Compose + Dockerfile 部署(K8S):请见 P2

方案一:使用 MCSM 面板的 Docker 容器部署

优势

  • 图形化界面操作,适合不熟悉命令行的用户
  • 支持容器管理、日志查看和进程控制
  • 易于实现基础高可用性(如自动重启、数据持久化)

架构概述

  • MCSM 面板:提供可视化容器管理
  • Docker 容器:隔离服务器运行环境,支持跨平台部署
  • Volume 挂载:确保服务器配置和存档数据持久化
  • MCSM 自带功能:实现容器编排和监控

部署步骤

1. 安装 MCSM 面板和 Docker

一行命令快速安装 MCSM

1
sudo su -c "wget -qO- https://script.mcsmanager.com/setup_cn.sh | bash"

安装后的使用方法

1
2
systemctl start mcsm-{web,daemon}  # 开启面板  
systemctl stop mcsm-{web,daemon} # 关闭面板

说明

安装 Docker 并配置镜像加速

1
2
3
4
5
6
7
bash <(curl -f -s --connect-timeout 10 --retry 3 https://linuxmirrors.cn/docker.sh) \
--source mirrors.tencent.com/docker-ce \
--source-registry docker.1ms.run \
--protocol https \
--install-latested true \
--close-firewall false \
--ignore-backup-tips

参考来源


2. 创建潜渊症服务器实例

登录 MCSM 面板
访问 http://<服务器IP>:23333

创建数据持久化目录

1
2
3
sudo mkdir /home/mcsm/  
sudo mkdir /home/mcsm/barot_server
sudo chmod 777 /home/mcsm/barot_server

新建实例

  1. 点击 “创建实例”

  2. 选择 Steam 游戏服务器 > 使用 Docker 镜像快速部署

  3. 填写以下关键信息:

    • 实例名称:任意

    • 镜像名称cm2network/steamcmd:latest

    • 数据储存目录/data

    • 勾选:变更容器默认工作目录

    • 启动命令(暂时使用):bash

    • 服务端文件目录/home/mcsm/barot_server

      [!NOTE]

      确保信息如图所示

    QQ20250616-112122

确认信息无误后点击
创建实例选择 Steam 游戏服务器使用Docker镜像快速部署前往实例控制台开启

进入实例终端后,输入以下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /home/steam/steamcmd/  
# 确保该目录下可以看到以下文件:
# linux32 linux64 package public siteserverui steam.sh steamcmd.sh steamservice.so
./steamcmd.sh +force_install_dir ./barotrauma-server +login anonymous +app_update 1026340 validate +exit

# 将服务端文件复制到持久化目录
cp -r ./barotrauma-server /data

# 进入持久化储存的服务端目录
cd /data/barotrauma-server

# 首次启动会提示找不到 serversettings.xml 文件(正常现象)
./DedicatedServer

输出示例

1
2
Couldn't load xml document "serversettings.xml"! {Could not find file '/data/barotrauma-server/serversettings.xml'.}  
WARNING: File "serversettings.xml" not found. Starting the server with default settings.

退出服务端并配置文件

  1. 输入 exit 命令退出服务端
  2. 点击 右上角关闭实例
  3. 点击 文件管理 > barotrauma-server 目录
  4. 搜索 serversettings.xml 文件并打开编辑

建议RequireAuthentication规则改为False,其余配置自行更改,不是本次部署的重点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<serversettings
port="27015"
queryport="27016"
password="123456" #(可选)设置密码
...
ServerName="Server"
ServerMessageText="这里填写服务器简介"
IsPublic="False"
TickRate="20"
MaxLagCompensation="150"
RequireAuthentication="False" #将这里改为False
RandomizeSeed="True"
UseRespawnShuttle="True"
RespawnInterval="300"
MaxTransportTime="180"

然后点击应用实例设置,在基础设置中将启动命令更改为/data/barotrauma-server/DedicatedServer;然后点击容器化,点击开放端口编辑选项

  1. 点击 基础设置
  2. 将启动命令更改为:/data/barotrauma-server/DedicatedServer
  3. 点击 容器化 > 开放端口 > 编辑
  4. 添加端口映射:
    • 27015:27015(协议:UDP)
    • 27016:27016(协议:UDP)
QQ20250616-124741

如图添加端口映射

完成以上操作后
点击 确定保存启动实例
服务器连接地址为:你的 IP:27015


3. 实现高可用性

  • 自动重启策略
    在 MCSM 中设置实例重启策略为 “自动重启”“自动启动”

  • 兼容性配置
    关闭 仿真终端

  • 健康检查
    定期执行以下命令检查 UDP 端口:

    1
    nc -uvz your_IP 27015  
  • 数据备份
    定期备份宿主机 /home/mcsm/barot_server 目录


4. 内网穿透与公网访问

自行配置穿透工具

开放防火墙

1
2
sudo ufw allow 27015/udp  
sudo ufw allow 27016/udp

方案二:Docker Compose + Dockerfile 部署(K8S)

因篇幅所限,请见《Barotrauma_Docker_Compose_部署指南_P2.md》


常见问题与解决方案

问题现象 解决方案
XML 格式错误 使用在线工具修复,确保 <ServerSettings> 为唯一根节点
客户端连接失败 检查 UDP 端口映射,关闭 Steam 认证(<RequireAuthentication>false</RequireAuthentication>
容器自动退出 确保 DedicatedServer 有执行权限:chmod +x DedicatedServer
防火墙限制 开放 UDP 端口:sudo ufw allow 27015/udp

总结与最佳实践建议

方案 适用场景 优点 缺点
MCSM 面板部署 快速搭建、图形化操作 简单易用、内置管理功能 灵活性较低,依赖面板功能
Docker Compose + Dockerfile 自定义部署、CI/CD 集成 灵活、支持多容器编排 配置复杂,需熟悉 Docker

最佳实践建议

  1. 优先使用 MCSM 面板:适合快速部署和日常管理
  2. 进阶使用 Docker Compose:适合需要自定义配置、自动化部署和集群管理的场景
  3. 高可用性扩展:结合 Docker Swarm 或 Kubernetes 实现负载均衡和故障转移

版本迭代说明

  • 当前版本:v1.0(2025-06-16)
  • 更新日志:新增内网穿透配置指引、优化防火墙规则示例


Linux 下 Barotrauma(潜渊症)服务器的高可用部署方案
http://blog.dutyc.top/2025/06/16/2025061602/
作者
DUTYC Studio
发布于
2025年6月16日
许可协议