MCSManager 是一款开源、免费、分布式的 Minecraft / Steam 游戏服务端管理面板。它把服务端进程管理、文件管理、实时终端、定时任务、多实例隔离等能力统一收敛到一个浏览器界面里,让你在绿联私有云(NAS)上也能像使用面板一样,一键部署《我的世界》Java 版 / 基岩版、《幻兽帕鲁》《方舟》《雾锁王国》等热门联机游戏服务端,彻底告别手敲命令行。

与常见的单体面板不同,MCSManager 采用 Web 面板 + Daemon 守护进程 的双容器架构:面板只管「人」和「节点」,守护进程才真正负责「干活」。理解这一点,后面所有的配置项都会变得顺理成章。

本文以绿联 Pro(UGREEN NAS)为例,使用 UGOS Pro 自带的 Docker 应用、以「项目(Docker Compose)」方式部署 MCSManager,并逐行拆解这份 Compose 配置文件的每一项参数,帮助你一次性部署成功。

1、容器简介

项目

说明

镜像(Web 面板)

githubyumao/mcsmanager-web:latest

镜像(守护进程)

githubyumao/mcsmanager-daemon:latest

容器名

mcsm-web / mcsm-daemon

管理面板端口

23333

守护进程端口

24444(面板与守护进程通信)

网络模式

bridge

数据目录

./daemon/data、./web/data

访问地址

http://NASIP:23333

MCSManager 双容器架构图

图 1 MCSManager 双容器架构:面板负责管理,Daemon 负责执行

从架构图上可以看到两条关键信息:

  • mcsm-web(23333):用户管理、权限、节点管理、API 服务。它本身不会去启动任何游戏服务端进程。

  • mcsm-daemon(24444):真正干活的一方,负责进程管理、文件管理、实时终端,并通过挂载进来的 /var/run/docker.sock 调用宿主机的 Docker 来创建游戏容器。

2、部署项目

2.1、准备工作

开始之前,请先确认以下三件事:

  1. 系统环境:绿联 NAS 已升级到 UGOS Pro,且「Docker」应用可用(对应固件版本约 1.6 及以上)。

  2. 创建存放目录:在「文件管理」中新建一个空目录,例如 /volume1/docker/mcsm。Compose 文件会放在这里,之后所有 Minecraft 服务端、存档和 Mod 也都会保存在这个目录下。建议放在 SSD 空间——服务端 24 小时运行会让机械硬盘无法休眠。

  3. 记录 NAS 的 IP 地址:在「控制面板 → 网络设置 → 网络连接」中查看,稍后访问面板和绑定节点都要用到。

2.2、Compose 配置

在绿联 NAS 的「Docker」应用中进入左侧「项目」页,点击「创建」,把下面的配置完整粘贴进去。

services:
  mcsm-daemon:
    image: githubyumao/mcsmanager-daemon:latest
    container_name: mcsm-daemon
    restart: unless-stopped
    network_mode: bridge
    ports:
      - "24444:24444"
    environment:
      # 项目目录在宿主机上的绝对路径(按你的实际路径填写)
      - MCSM_DOCKER_WORKSPACE_PATH=/volume1/docker/mcsm/daemon/data/InstanceData
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./daemon/data:/opt/mcsmanager/daemon/data
      - ./daemon/logs:/opt/mcsmanager/daemon/logs
      - /var/run/docker.sock:/var/run/docker.sock

  mcsm-web:
    image: githubyumao/mcsmanager-web:latest
    container_name: mcsm-web
    restart: always
    network_mode: bridge
    ports:
      - "23333:23333"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./web/data:/opt/mcsmanager/web/data
      - ./web/logs:/opt/mcsmanager/web/logs

2.3、部署步骤

绿联 Pro 部署 MCSManager 的五个步骤

图 2 在绿联 Pro 上部署一共只需五步

  1. 打开「Docker」应用,确认 Docker 服务处于运行状态。

  2. 进入「项目」页,点击「创建」,在向导中填写项目名称,并把存放路径指向第 2.1 步创建的空目录。

  3. 将上面的 docker-compose.yml 内容粘贴到编辑框中(也可选择上传文件),确认无误后保存。

  4. 点击「立即部署」。系统会自动拉取两个镜像并创建容器,首次拉取需要一些时间,请耐心等待。

  5. 等待 mcsm-web 与 mcsm-daemon 两个容器状态均变为运行中,即可进入下一步初始化面板。

3、配置逐项详解

3.1、服务与镜像

  • services::Compose 的顶层服务定义块,其后缩进的就是一个个服务。这里定义了两个服务,名称分别为 mcsm-daemon 与 mcsm-web(服务名可自定义,仅作标识)。

  • image::指定拉取的镜像。:latest 表示始终使用最新版本;若追求稳定,也可以改为某个固定的版本号标签。注意 Web 与 Daemon 是两个不同的镜像,不能混用。

  • container_name::指定容器名称,方便在 Docker 容器列表中快速识别与排查问题。

3.2、重启策略

两个服务分别使用了 restart: unless-stopped 与 restart: always,效果基本一致:无论 NAS 重启还是 Docker 服务重启,容器都会被自动重新拉起。这样即使断电、系统更新,MCSManager 也能自己「爬」回来,保证游戏服务端 7×24 小时在线。若希望两者行为完全统一,可都写成 unless-stopped(唯一区别是手动停止后不会自动重启)。

3.3、网络模式与端口

MCSManager 端口占用说明

图 3 这套配置涉及的端口,以及 bridge 模式与端口占用的注意事项

network_mode: bridge 表示使用 Docker 默认的桥接网络,容器通过 ports: 显式映射端口到宿主机。本配置映射了两个端口:

  • 23333:Web 面板端口,浏览器访问的管理后台入口。

  • 24444:Daemon 通信端口,面板与守护进程之间的握手与数据通道,绑定节点时要填的就是它。

bridge 模式的好处是端口由 Compose 显式管理、互不干扰,能清楚看到谁占了哪个端口,出问题也好排查。但要注意一点:bridge 模式下游戏端口并不会自动开放。也就是说,当你之后创建 Minecraft 实例时,还需要在 mcsm-daemon 服务里补上游戏端口映射,例如:

  mcsm-daemon:
    ports:
      - "24444:24444"
      - "25565:25565"   # 《我的世界》Java 版默认端口,供玩家连接

若嫌麻烦,也可以把 Daemon 的 network_mode 改为 host(此时容器直接共享 NAS 网络,所有端口默认可用,ports: 将不再生效,仅作记录之用),代价是端口不再隔离、可读性会差一些。此外,若 23333 或 24444 已被其他服务占用,把映射左侧改成 23334、24445 等空闲端口即可,同时记得在面板绑定节点时同步修改端口。

3.4、目录挂载

MCSManager 目录挂载逐项说明

图 4 每一条 volumes 各自负责什么

挂载规则是 宿主机路径:容器内路径。本配置把「面板数据」与「守护进程数据」分开持久化,容器重建时数据不会丢失:

宿主机路径

容器内路径

作用

./daemon/data

/opt/mcsmanager/daemon/data

守护进程核心数据:服务端文件、实例配置、节点密钥

./daemon/logs

/opt/mcsmanager/daemon/logs

守护进程日志,排查启动失败先看这里

./web/data

/opt/mcsmanager/web/data

面板数据:用户账号、权限、节点列表

./web/logs

/opt/mcsmanager/web/logs

面板运行日志

/var/run/docker.sock

/var/run/docker.sock

Docker 控制通道,让 Daemon 能创建游戏容器,必须挂载

/etc/localtime

/etc/localtime(只读)

同步宿主机时区,避免控制台时间与 NAS 时间对不上

几点说明:

  • ./ 表示 Compose 文件所在目录。建议直接用绝对路径(如 /volume1/docker/mcsm/daemon/data)代替相对路径,避免因工作目录变化导致挂载「挂空」。

  • /var/run/docker.sock 是本方案的核心,也是最需要谨慎的一项。它相当于把 NAS 的 Docker 控制权交给了 Daemon 容器——MCSManager 正是靠它才能创建、启动、停止游戏容器。反过来说,一旦面板或该容器被攻破,攻击者也就拿到了宿主机 Docker 的控制权,因此切勿把面板端口直接暴露到公网。

  • /etc/localtime:ro 中的 :ro 表示只读挂载,容器无法改写宿主机时区文件,属于更安全的写法。

3.5、环境变量 MCSM_DOCKER_WORKSPACE_PATH(重点)

    environment:
      - MCSM_DOCKER_WORKSPACE_PATH=/volume1/docker/mcsm/daemon/data/InstanceData

这个变量的作用是告诉 Daemon:「游戏实例文件在宿主机的哪个位置」。当 Daemon 通过 Docker 创建游戏容器时,需要拿一个宿主机真实存在的绝对路径去做绑定挂载,所以:

  • 必须写成宿主机上的绝对路径,并且要与 ./daemon/data 的挂载点一一对应(daemon/data 对应的就是宿主机的 InstanceData 上级目录)。

  • 不要写成相对路径(即以 ./ 开头的写法)。相对路径在容器内无法被解析成宿主机路径,容易出现「面板里能建实例,但实例目录是空的 / 找不到服务端文件」这类问题。

  • 如果你把项目目录改到了别处,记得此处的绝对路径要同步修改,否则游戏文件会被写到意料之外的位置。

3.6、时区同步

两个服务都挂载了 /etc/localtime:/etc/localtime:ro,使容器与 NAS 使用同一时区。这样监控面板上的运行时长、定时重启与自动备份任务,都会按照你本地的实际时间来执行,排查日志时也不会出现「时间对不上」的困惑。

4、初始化面板

4.1、创建管理员账号

在浏览器中访问 http://NAS的IP地址:23333,首次打开会进入初始化向导,按照提示设置语言并创建管理员账号。

第一个注册的账号即为超级管理员,请务必设置一个强密码并妥善保管;该面板后续拥有对 NAS 上 Docker 的控制能力,密码泄露等于把整台设备的容器控制权交出去。

4.2、绑定本地节点(关键一步)

MCSManager 绑定本地节点的字段填写说明

图 5 面板提示「未能连接到任何远程节点」时,按此表填写即可

登录后如果看到「面板未能连接到任何一个远程节点,请先前往节点界面添加远程节点」的提示,请不必紧张——这是 Docker 部署方式下的正常现象。因为 Web 与 Daemon 是两个互相独立的容器,各自回环地址 127.0.0.1 指向的都是容器自己,面板无法自动发现对方,需要手动绑定一次。

在顶部导航点击「节点」,选择「新建节点」,按下表填写:

字段

填写内容

节点备注

随意填写,例如「本地节点」

远程节点 IP

绿联 NAS 的局域网 IP(不要填 127.0.0.1)

远程节点端口

24444(若已改端口则填新端口)

节点密钥

取 daemon/data/Config/global.json 中 key 字段的值

是否 SSL

关闭(局域网内无需开启)

其中节点密钥的获取方式很简单:用绿联「文件管理」打开项目目录下的 daemon/data/Config/global.json,找到 key 字段,其冒号后的字符串(含引号内的内容)就是节点密钥,复制粘贴填入即可。保存后回到节点列表点击「刷新」,节点状态变为绿色的「在线」,说明面板与守护进程已经成功握手。

5、创建第一个 Minecraft 服务端

节点绑定成功后,就可以开服了:

  1. 进入「应用实例」页面,点击「新建实例」。

  2. 可以选择「从模板 / 镜像市场快速创建」(面板会自动下载服务端核心),也可以上传自己准备好的 服务端整合包。注意:服务端包与客户端整合包不是一回事,请勿混淆。

  3. 实例类型按需选择「Minecraft Java 版」或「Minecraft 基岩版」;若使用 Docker 方式运行实例,可选择对应的 Java 镜像。

  4. 启动实例。第一次启动通常会看到 You need to agree to the EULA in order to run the server. 的提示——这是 Mojang 的用户协议要求,在实例的「服务端配置文件」中打开 eula.txt,把 eula=false 改为 eula=true 并保存,然后回到控制台重新启动即可。

  5. 当控制台出现服务端监听 25565 端口的日志时,说明开服成功。局域网内的玩家在游戏中填写 NAS的IP:25565 即可进入服务器。

6、注意事项

  1. 安全第一:Daemon 挂载了宿主机的 Docker 套接字,能力极大。请勿把 23333 面板端口直接暴露到公网;如确需远程管理,建议通过内网穿透服务并配合强密码使用,或仅在可信内网访问。

  2. 端口规划:本配置使用 bridge 模式,游戏端口需要在 mcsm-daemon 中显式映射后外部才能连接;多开实例时注意各游戏端口不要冲突(尤其是 25565 这类默认端口)。

  3. 性能与散热:游戏服务端对 CPU 与内存占用偏高,NAS 性能有限时建议控制实例数量(纯净服较为轻松,重度模组服压力较大),并留意 NAS 温度与内存占用,避免影响影音、同步等其他服务。

  4. 数据备份:定期备份项目目录,重点是 ./daemon/data(存档与实例)与 ./web/data(面板账号与配置)。迁移到新设备时,把这两个目录原样带过去即可。

  5. 外网联机:想让外网的朋友一起玩,可自行做端口转发,或使用内网穿透工具;绿联 UGOS Pro 系统有对应的穿透配置指南可参考。

  6. 版本升级:需要更新面板时,在绿联 Docker 的「项目」页面重新拉取镜像并重建容器即可,数据都在挂载目录中,不会丢失。

至此,绿联 Pro 上的 MCSManager 面板就部署完成了。绑定好节点之后,你已经拥有了一个可以随时开关服、查看控制台、管理存档的图形化开服环境,接下来就可以在浏览器里愉快地开服了。