脚本特点
本脚本是基于MCSManager官方Linux版本修改的macOS专用一键安装脚本,继承了原版脚本的所有优点,针对 macOS 环境修改了个别命令,别的没有太大变动
sudo su -c "curl -fsSL https://jac0bshi.cn/files/setup_cn.sh | bash"
sudo su -c "wget -qO- https://jac0bshi.cn/files/setup_cn.sh | bash"
安装后,您可以使用以下命令来管理 MCSManager 服务:
sudo launchctl start com.mcsmanager.daemon
sudo launchctl stop com.mcsmanager.web
这是什么?
MCSManager 是一款开源,分布式,一键部署,支持 Minecraft 和 Steam 游戏服务器 的控制面板。
MCSManager 在 Minecraft 和 其他游戏 社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器。
环境要求
默认情况下,自动安装脚本应该已经包含一切所需环境,所以你不需要关心环境要求。
但如果是手动安装的情况下,你需满足 Node 16+ 运行时环境。
配置文件储存在何处?
面板配置文件
<Web 安装地址>/data/SystemConfig/config.json
节点配置文件
<Daemon 安装地址>/data/Config/global.json
实例配置文件
实例文件指的是 地图,玩家数据 和 插件 等,它们都存放在对应的节点机器上,它们储存在 <Daemon 安装地址>/data/InstanceData/<实例ID>/ 目录中。
实例的配置文件在 <Daemon 安装地址>/data/InstanceConfig/<实例ID>.json,这里储存了每个实例的配置,启动命令和参数等信息。
使用一键安装脚本时,<Daemon 安装地址> 默认为 \opt\mcsmanager\daemon\
使用一键安装脚本时,<Web 安装地址> 默认为 \opt\mcsmanager\web\
免责声明
本脚本为社区修改版本,非官方发布。使用前请备份重要数据,作者不对因使用本脚本造成的任何损失负责。
https://jac0bshi.cn/files/setup_cn.sh
#!/bin/bash
# 此脚本适配 macOS 系统,使用国内服务器加速文件下载
mcsmanager_install_path="/opt/mcsmanager"
mcsmanager_download_addr="https://download.mcsmanager.com/mcsmanager_linux_release.tar.gz"
package_name="mcsmanager_linux_release.tar.gz"
node="v20.12.2"
arch=$(uname -m)
if [ "$(id -u)" -ne 0 ]; then
echo "此脚本必须以 root 身份运行,请使用 'sudo bash' 代替"
exit 1
fi
printf "\033c"
echo_cyan() {
printf '\033[1;36m%b\033[0m\n' "$@"
}
echo_red() {
printf '\033[1;31m%b\033[0m\n' "$@"
}
echo_green() {
printf '\033[1;32m%b\033[0m\n' "$@"
}
echo_cyan_n() {
printf '\033[1;36m%b\033[0m' "$@"
}
echo_yellow() {
printf '\033[1;33m%b\033[0m\n' "$@"
}
# script info
echo_cyan "+----------------------------------------------------------------------
| MCSManager 安装脚本 (macOS 适配版)
+----------------------------------------------------------------------
"
Red_Error() {
echo '================================================='
printf '\033[1;31;40m%b\033[0m\n' "$@"
echo '================================================='
exit 1
}
# macOS 专用函数
macos_create_launchd_service() {
local service_type=$1
local working_dir="${mcsmanager_install_path}/${service_type}"
local plist_path="/Library/LaunchDaemons/com.mcsmanager.${service_type}.plist"
echo_cyan "[+] 创建 macOS LaunchDaemon 服务: ${service_type}"
cat > "$plist_path" << EOF
Label
com.mcsmanager.${service_type}
ProgramArguments
${node_install_path}/bin/node
app.js
WorkingDirectory
${working_dir}
StandardOutPath
/var/log/mcsm-${service_type}.log
StandardErrorPath
/var/log/mcsm-${service_type}.log
RunAtLoad
KeepAlive
EOF
chmod 644 "$plist_path"
launchctl load -w "$plist_path"
launchctl start "com.mcsmanager.${service_type}"
}
Install_Node() {
if [[ -f "$node_install_path"/bin/node ]] && [[ "$("$node_install_path"/bin/node -v)" == "$node" ]]; then
echo_green "Node.js 版本已是最新,跳过安装"
return
fi
echo_cyan "[+] 正在安装 Node.JS..."
rm -rf "$node_install_path"
cd /opt || Red_Error "[x] 未能进入 /opt 目录"
# 检测并创建 /opt 目录 (macOS 默认不存在)
if [ ! -d "/opt" ]; then
mkdir -p /opt
chmod 755 /opt
fi
rm -rf "node-$node-darwin-$arch.tar.gz"
# 使用国内镜像下载 Node.js
wget "https://registry.npmmirror.com/-/binary/node/$node/node-$node-darwin-$arch.tar.gz" ||
wget "https://nodejs.org/dist/$node/node-$node-darwin-$arch.tar.gz" ||
Red_Error "[x] 无法下载 Node.js"
tar -zxf "node-$node-darwin-$arch.tar.gz" || Red_Error "[x] 解压 Node.js 失败"
rm -rf "node-$node-darwin-$arch.tar.gz"
# 重命名目录以匹配安装路径
mv "node-$node-darwin-$arch" "node-$node-darwin-$arch"
if [[ -f "$node_install_path"/bin/node ]] && [[ "$("$node_install_path"/bin/node -v)" == "$node" ]]; then
echo_green "Node.js 安装成功"
else
Red_Error "[x] Node.js 安装失败!"
fi
echo
echo_yellow "=============== Node.JS 版本 ==============="
echo_yellow " node: $("$node_install_path"/bin/node -v)"
echo_yellow " npm: v$(env "$node_install_path"/bin/node "$node_install_path"/bin/npm -v)"
echo_yellow "=============== Node.JS 版本 ==============="
echo
sleep 3
}
Install_MCSManager() {
echo_cyan "[+] 安装 MCSManager..."
# 停止现有服务 (macOS)
launchctl unload "/Library/LaunchDaemons/com.mcsmanager.daemon.plist" 2>/dev/null
launchctl unload "/Library/LaunchDaemons/com.mcsmanager.web.plist" 2>/dev/null
# 确保安装目录存在
mkdir -p "${mcsmanager_install_path}" || Red_Error "[x] 未能创建 ${mcsmanager_install_path}"
cd "${mcsmanager_install_path}" || Red_Error "[x] 未能进入 ${mcsmanager_install_path}"
# 下载 MCSManager
wget "${mcsmanager_download_addr}" -O "${package_name}" || Red_Error "[x] 未能成功下载 MCSManager"
tar -zxf ${package_name} || Red_Error "[x] 未能成功解压 ${package_name}"
rm -rf "${mcsmanager_install_path}/${package_name}"
# 处理不同格式的压缩包
if [ -d "/opt/mcsmanager/mcsmanager" ]; then
cp -rf /opt/mcsmanager/mcsmanager/* /opt/mcsmanager/
rm -rf /opt/mcsmanager/mcsmanager
fi
# 安装依赖
cd "${mcsmanager_install_path}/daemon" || Red_Error "[x] 未能进入 daemon 目录"
echo_cyan "[+] 正在安装 MCSManager-Daemon 依赖库..."
env "$node_install_path"/bin/node "$node_install_path"/bin/npm install --registry=https://registry.npmmirror.com --production --no-fund --no-audit &>/dev/null ||
Red_Error "[x] Daemon 依赖安装失败"
cd "${mcsmanager_install_path}/web" || Red_Error "[x] 未能进入 web 目录"
echo_cyan "[+] 正在安装 MCSManager-Web 依赖库..."
env "$node_install_path"/bin/node "$node_install_path"/bin/npm install --registry=https://registry.npmmirror.com --production --no-fund --no-audit &>/dev/null ||
Red_Error "[x] Web 依赖安装失败"
echo
echo_yellow "=============== MCSManager ==============="
echo_green "Daemon: ${mcsmanager_install_path}/daemon"
echo_green "Web: ${mcsmanager_install_path}/web"
echo_yellow "=============== MCSManager ==============="
echo
echo_green "[+] MCSManager 安装完成!"
chmod -R 755 "$mcsmanager_install_path"
sleep 3
}
# macOS 环境检查
if [[ "$arch" == "x86_64" ]]; then
arch="x64"
elif [[ "$arch" == "arm64" ]]; then
arch="arm64"
else
Red_Error "[x] 不支持的架构: $arch"
fi
# 定义 Node 安装路径
node_install_path="/opt/node-$node-darwin-$arch"
# 安装必要工具
echo_cyan "[-] 当前系统架构: $arch"
echo_cyan_n "[+] 检查必要工具: "
if ! command -v wget &> /dev/null; then
echo_yellow "未找到 wget,尝试安装..."
if command -v brew &> /dev/null; then
brew install wget
else
Red_Error "[x] 请先安装 Homebrew (https://brew.sh/) 然后手动安装 wget"
fi
fi
echo_green "必要工具已就绪"
# 安装 Node
Install_Node
# 安装 MCSManager
Install_MCSManager
# 创建 macOS 服务
macos_create_launchd_service "daemon"
macos_create_launchd_service "web"
printf "\n\n\n\n"
echo_yellow "=================================================================="
echo_green "安装完成,欢迎使用 MCSManager!"
echo_yellow " "
echo_cyan_n "主控网页访问地址: "
echo_yellow "http://localhost:23333"
echo_cyan_n "被控守护进程地址: "
echo_yellow "ws://localhost:24444"
echo_red "注意:首次运行时需要在系统设置中允许网络连接"
echo_yellow " "
echo_cyan "面板开关指令:"
echo_cyan "sudo launchctl start com.mcsmanager.daemon"
echo_cyan "sudo launchctl stop com.mcsmanager.web"
echo_cyan "查看日志: /var/log/mcsm-{daemon,web}.log"
echo_yellow " "
echo_green "官方文档: https://docs.mcsmanager.com/zh_cn/"
echo_yellow "=================================================================="