尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

基于 Docker 和 MCSManager 搭建 SteamCMD 游戏服务器

基于 Docker 和 MCSManager 搭建 SteamCMD 游戏服务器
📅 发布时间:2026/6/21 18:25:21

本文使用 Gemini 润色

注: 本文方案适用于大多数支持 SteamCMD 的游戏服务端。为了方便演示,文中具体代码和配置以 《英灵神殿 (Valheim)》 为例,其他游戏请根据实际 AppID 和启动参数进行相应替换。

本文将介绍如何封装一个包含 SteamCMD 环境的 Docker 镜像,并配合 MCSManager 面板搭建专用游戏服务器。这种“环境与数据分离”的方式,能让服务器维护变得更加简单、安全。

1. 创建通用 Docker 镜像

首先,我们需要构建一个基础镜像。这个镜像负责提供 SteamCMD 工具以及游戏运行所需的系统级依赖库。

创建构建目录:

mkdir -p /opt/mcsm/valheim/docker
cd /opt/mcsm/valheim/docker

1.1 编写入口脚本 (entrypoint.sh)

该脚本是容器启动的第一步,它负责调用 SteamCMD 自动下载/更新游戏,并引导启动脚本。

新建 entrypoint.sh:

#!/bin/bash
set -e# --- 配置区域 (其他游戏请修改此处) ---
APP_ID=896660  # Valheim 的 Steam AppID
# ----------------------------------GAME_DIR="/app/game"echo "--- [1/3] 初始化 SteamCMD ---"
steamcmd +login anonymous +quit || trueecho "--- [2/3] 开始下载/更新游戏 (AppID: $APP_ID) ---"
# 强制安装到指定目录并验证文件
mkdir -p "$GAME_DIR"
steamcmd +force_install_dir "$GAME_DIR" +login anonymous +app_update $APP_ID validate +quitecho "--- [3/3] 准备启动服务器 ---"
cd "$GAME_DIR"# 判断是否有外部传入的命令
if [ -z "$1" ]; then# 优先寻找并执行数据目录下的本地启动脚本if [ -f "./start_mcsm_server.sh" ]; thenecho "执行本地启动脚本: ./start_mcsm_server.sh"chmod +x ./start_mcsm_server.shexec ./start_mcsm_server.shelseecho "错误: 未找到 start_mcsm_server.sh 文件!请在数据挂载目录中创建该文件。"exit 1fi
elseecho "执行传入的启动命令: $@"exec "$@"
fi

1.2 编写 Dockerfile

以官方 steamcmd 镜像为基础。注意:不同的游戏可能需要不同的依赖库(如 libpulse 是 Unity 引擎游戏常见的依赖),请根据具体游戏报错进行调整。

新建 Dockerfile:

FROM steamcmd/steamcmd:latest
USER root# 1. 配置镜像源 (可选,国内机器建议开启以加速构建)
RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.aliyun.com@g' /etc/apt/sources.list.d/ubuntu.sources && \sed -i 's@//.*security.ubuntu.com@//mirrors.aliyun.com@g' /etc/apt/sources.list.d/ubuntu.sources# 2. 安装游戏运行依赖 (此处以 Valheim 需求为例)
RUN apt-get update && \apt-get install -y --no-install-recommends \curl ca-certificates libatomic1 libpulse-dev libpulse0 \&& rm -rf /var/lib/apt/lists/*# 3. 创建 steam 用户 (权限隔离)
RUN id -u steam &>/dev/null || useradd -m steam# 4. 创建并授权工作目录
RUN mkdir -p /app/game && chown -R steam:steam /app/game# 5. 拷贝入口脚本
COPY --chown=steam:steam entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh# 6. 设置环境变量与用户
USER steam
ENV HOME=/home/steam
WORKDIR /app/game
ENTRYPOINT ["/app/entrypoint.sh"]

1.3 构建镜像

执行以下命令构建镜像,建议根据游戏命名 Tag,例如 mcsm-valheim:

sudo docker build -t mcsm-valheim .

2. 编写服务器启动脚本

我们将游戏的配置和存档放在宿主机上,通过挂载的方式让容器读取。这样做的好处是:即使删除或更新 Docker 镜像,存档数据永远安全。

2.1 准备宿主机数据目录

# 创建数据存储目录 (后续将挂载到容器内)
mkdir -p /opt/mcsm/valheim/data
cd /opt/mcsm/valheim/data# 创建存档专用子目录
mkdir save

2.2 创建启动脚本 (start_mcsm_server.sh)

在 /opt/mcsm/valheim/data 目录下新建 start_mcsm_server.sh。
这是游戏具体的启动逻辑,如果搭建其他游戏,请修改此文件的启动命令。

#!/bin/bash
echo "正在启动 Valheim Dedicated Server..."# 添加库路径 (解决某些游戏找不到库的问题)
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH# --- 游戏启动命令 ---
# -port: 端口 (默认2456)
# -world: 世界存档名称
# -password: 服务器密码 (需大于5字符)
# -savedir: 存档保存路径 (映射到容器内的路径)
# -crossplay: 开启跨平台支持 (可选)./valheim_server.x86_64 -name "Dedicated" -port 2456 -world "world" -password "123456" -crossplay -savedir "/app/game/save"

2.3 修正权限

由于容器内使用 steam 用户运行(通常 UID 为 1000 或 1001),我们需要确保宿主机上的目录权限允许容器读写。

# 修改宿主机目录归属 (假设 Docker 内用户 ID 为 1001)
sudo chown -R 1001:1001 /opt/mcsm/valheim/data

明白,这是一个非常重要的流程分支。根据您的描述,配置“数据储存目录”时实际上决定了文件的管理方式:是挂载宿主机已有目录(方案一),还是让 MCSManager 自动接管并后续上传(方案二)。

以下是修改后的第三节内容,明确区分了这两种方案的操作流程:


3. 在 MCSManager 面板中配置实例

最后一步,我们使用 MCSManager 来接管这个 Docker 容器。

3.1 创建步骤

  1. 登录 MCSManager 面板,进入 “应用实例” 界面。
  2. 点击 “新建实例”。
  3. 选择 “使用 Docker 镜像创建实例”。

3.2 基础配置表单

请填写以下基础信息:

配置项 填写内容 / 说明
实例名称 Valheim-Server (建议标注游戏名)
实例类型 Steam 游戏服务器
镜像名称 mcsm-valheim (填写第一节构建的镜像名)
启动命令 留空 (使用镜像内置逻辑)
关闭实例命令 ^C (即 Ctrl+C 信号)
更变容器默认工作目录 /app/game (容器内路径。这是 Dockerfile 中定义的 WORKDIR,必须填对)

3.3 数据目录配置(二选一)

“数据储存目录” 决定了游戏文件的存放位置,请从以下两种方案中选择一种:

方案 A:使用自定义路径(推荐,对应本文第2节)

如果您已经按照本文 第 2 节 的步骤,在宿主机创建了目录并编写了脚本,请选择此方案。

  • 配置方式:
    在 “数据储存目录” 一栏中,填写宿主机的完整绝对路径:

/home/你的用户名/mcsm/valheim/data

  • 优点:直接加载第 2 节准备好的 start_mcsm_server.sh,创建即可直接启动。

方案 B:使用 MCSM 自动管理(需后续上传脚本)

如果您不想管理宿主机目录,或者跳过了第 2 节的文件准备工作,请选择此方案。

  • 配置方式:
    将 “数据储存目录” 留空(或保持默认)。MCSManager 会自动创建一个随机目录。
  • 后续必须操作:
  1. 点击“创建实例”。
  2. 进入实例的 “文件管理” 页面。
  3. 手动上传或新建 start_mcsm_server.sh 文件(文件内容参考本文 2.2 节)。
  4. 确保该脚本具有执行权限(通常面板内新建的文件默认有权限,如无法启动可检查此处)。

3.4 完成创建与启动

  1. 配置完成后,点击 “创建实例”。
  2. 进入控制台,点击 “开启实例”。

启动流程说明:
Docker 容器启动后,会首先运行 steamcmd 校验游戏文件。下载/校验完毕后,会自动寻找并执行数据目录下的 start_mcsm_server.sh。

  • 如果是方案 A,脚本已存在,服务器将直接启动。
  • 如果是方案 B,请务必确保你已经上传了启动脚本,否则容器会报错退出:错误: 未找到 start_mcsm_server.sh 文件!

相关新闻

  • LangGraph流程编排:构建复杂AI工作流的基础环境
  • 飞腾CPU+DCU组合适配:PyTorch-CUDA-v2.7移植可能性探讨
  • AutoGPT项目部署:PyTorch-CUDA-v2.7赋能自主代理

最新新闻

  • Forza Mods AIO:免费解锁极限竞速地平线4/5完整修改功能指南
  • Webhook安全防护:从身份验证到监控的七层防御体系
  • 2026年AI大模型开发培训机构综合评测 线上线下课程横向对比 - 互联网科技品牌测评
  • 天天工作台
  • 大模型微调/RAG/Agent开发培训选型指南 2026主流机构能力拆解 - 互联网科技品牌测评
  • 基于ColdFire微控制器的USB嵌入式开发:从协议原理到HID设备实战

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号