#!/bin/bash # # FunMC 一键 Docker 部署脚本 # # 用法: # curl -fsSL https://gt.funmc.cn/xiaobai/FunConnect/raw/main/deploy.sh | bash # 或 # ./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}" 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 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}"