2026-02-24 20:56:36 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
#
|
|
|
|
|
# FunMC 一键 Docker 部署脚本
|
|
|
|
|
#
|
|
|
|
|
# 用法:
|
2026-02-25 20:35:01 +08:00
|
|
|
# curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/deploy.sh | bash
|
2026-02-24 20:56:36 +08:00
|
|
|
# 或
|
|
|
|
|
# ./deploy.sh
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
# 颜色
|
|
|
|
|
GREEN='\033[0;32m'
|
|
|
|
|
YELLOW='\033[1;33m'
|
|
|
|
|
CYAN='\033[0;36m'
|
|
|
|
|
RED='\033[0;31m'
|
|
|
|
|
NC='\033[0m'
|
|
|
|
|
|
|
|
|
|
echo -e "${CYAN}"
|
|
|
|
|
echo "╔═══════════════════════════════════════════════════════════╗"
|
|
|
|
|
echo "║ FunMC Docker 一键部署脚本 ║"
|
|
|
|
|
echo "║ 魔幻方开发 ║"
|
|
|
|
|
echo "╚═══════════════════════════════════════════════════════════╝"
|
|
|
|
|
echo -e "${NC}"
|
|
|
|
|
|
|
|
|
|
# 检查 Docker
|
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
|
|
|
echo -e "${RED}错误: 未安装 Docker${NC}"
|
|
|
|
|
echo "请先安装 Docker: https://docs.docker.com/get-docker/"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
|
|
|
|
echo -e "${RED}错误: 未安装 Docker Compose${NC}"
|
|
|
|
|
echo "请先安装 Docker Compose: https://docs.docker.com/compose/install/"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo -e "${GREEN}✓ Docker 已安装${NC}"
|
|
|
|
|
|
|
|
|
|
# 创建目录
|
|
|
|
|
INSTALL_DIR="${FUNMC_DIR:-/opt/funmc}"
|
|
|
|
|
mkdir -p "$INSTALL_DIR"
|
|
|
|
|
cd "$INSTALL_DIR"
|
|
|
|
|
|
|
|
|
|
# 下载文件 (如果不存在)
|
|
|
|
|
if [ ! -f "docker-compose.yml" ]; then
|
|
|
|
|
echo -e "${YELLOW}下载配置文件...${NC}"
|
2026-02-25 20:35:01 +08:00
|
|
|
curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/docker-compose.yml -o docker-compose.yml
|
|
|
|
|
curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/Dockerfile.server -o Dockerfile.server
|
|
|
|
|
curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/Dockerfile.relay -o Dockerfile.relay
|
|
|
|
|
curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/.env.example -o .env.example
|
2026-02-24 20:56:36 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 生成配置
|
|
|
|
|
if [ ! -f ".env" ]; then
|
|
|
|
|
echo -e "${YELLOW}生成配置文件...${NC}"
|
|
|
|
|
|
|
|
|
|
# 获取服务器 IP
|
|
|
|
|
SERVER_IP=$(curl -s ifconfig.me || curl -s ipinfo.io/ip || hostname -I | awk '{print $1}')
|
|
|
|
|
|
|
|
|
|
# 生成随机密码和密钥
|
|
|
|
|
DB_PASSWORD=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
|
|
|
|
JWT_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | head -c 48)
|
|
|
|
|
ADMIN_PASSWORD=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 12)
|
|
|
|
|
|
|
|
|
|
cat > .env << EOF
|
|
|
|
|
SERVER_IP=$SERVER_IP
|
|
|
|
|
SERVER_NAME=FunMC Server
|
|
|
|
|
SERVER_DOMAIN=
|
|
|
|
|
DB_PASSWORD=$DB_PASSWORD
|
|
|
|
|
JWT_SECRET=$JWT_SECRET
|
|
|
|
|
ADMIN_USERNAME=admin
|
|
|
|
|
ADMIN_PASSWORD=$ADMIN_PASSWORD
|
|
|
|
|
RUST_LOG=info
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
echo -e "${GREEN}✓ 配置文件已生成${NC}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 加载配置
|
|
|
|
|
source .env
|
|
|
|
|
|
|
|
|
|
# 启动服务
|
|
|
|
|
echo -e "${YELLOW}启动服务...${NC}"
|
|
|
|
|
if command -v docker-compose &> /dev/null; then
|
|
|
|
|
docker-compose up -d --build
|
|
|
|
|
else
|
|
|
|
|
docker compose up -d --build
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 等待服务启动
|
|
|
|
|
echo -e "${YELLOW}等待服务启动...${NC}"
|
|
|
|
|
sleep 10
|
|
|
|
|
|
|
|
|
|
# 显示结果
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${CYAN}╔═══════════════════════════════════════════════════════════╗${NC}"
|
|
|
|
|
echo -e "${CYAN}║ ${GREEN}FunMC 部署完成!${CYAN} ║${NC}"
|
|
|
|
|
echo -e "${CYAN}╚═══════════════════════════════════════════════════════════╝${NC}"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${GREEN}服务器信息:${NC}"
|
|
|
|
|
echo -e " API 地址: http://${SERVER_IP}:3000"
|
|
|
|
|
echo -e " 管理面板: http://${SERVER_IP}:3000/admin"
|
|
|
|
|
echo -e " 下载页面: http://${SERVER_IP}:3000/download"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${GREEN}管理员登录:${NC}"
|
|
|
|
|
echo -e " 用户名: admin"
|
|
|
|
|
echo -e " 密码: ${ADMIN_PASSWORD}"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${YELLOW}重要提示:${NC}"
|
|
|
|
|
echo -e " 请确保以下端口已开放:"
|
|
|
|
|
echo -e " - 3000/tcp (API)"
|
|
|
|
|
echo -e " - 3001/udp (内置中继)"
|
|
|
|
|
echo -e " - 7900-7901/udp (中继服务器)"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${CYAN}常用命令:${NC}"
|
|
|
|
|
echo -e " 查看日志: docker logs -f funmc-server"
|
|
|
|
|
echo -e " 重启服务: docker-compose restart"
|
|
|
|
|
echo -e " 停止服务: docker-compose down"
|
|
|
|
|
echo -e " 更新服务: docker-compose pull && docker-compose up -d"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "${GREEN}魔幻方开发 - 让 Minecraft 联机变得简单${NC}"
|