Files
FunConnect/deploy.sh

125 lines
4.3 KiB
Bash
Raw Permalink Normal View History

#!/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
# 或
# ./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
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}"