#!/bin/bash # 设置变量,提高可维护性 DATA_DIR="/data" SCRIPT_DIR="/boot/脚本" COMPOSE_FILE="$SCRIPT_DIR/ru.yaml" # 检查是否以 root 权限运行 if [ "$EUID" -ne 0 ]; then echo "请使用 sudo 运行此脚本" exit 1 fi # 创建目录 echo "创建必要的目录..." mkdir -p "$DATA_DIR" mkdir -p "$SCRIPT_DIR" # 检查目录是否创建成功 if [ ! -d "$SCRIPT_DIR" ]; then echo "错误:无法创建目录 $SCRIPT_DIR" exit 1 fi # 创建 Docker Compose 配置文件 echo "创建 Docker Compose 配置文件..." cat > "$COMPOSE_FILE" << 'EOF' # Nginx Proxy Manager 配置 # 初始登录信息: # 邮箱: admin@example.com # 密码: changeme # 管理界面: http://服务器IP:81 services: app: image: 'docker.io/jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager restart: unless-stopped ports: - '80:80' # HTTP 流量 - '81:81' # 管理界面 - '443:443' # HTTPS 流量 volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt environment: - DISABLE_IPV6=false EOF # 检查文件是否创建成功 if [ ! -f "$COMPOSE_FILE" ]; then echo "错误:无法创建配置文件 $COMPOSE_FILE" exit 1 fi # 切换到脚本目录 cd "$SCRIPT_DIR" || exit 1 # 检查 Docker 是否运行 if ! systemctl is-active --quiet docker; then echo "启动 Docker 服务..." systemctl start docker sleep 5 fi # 部署服务 echo "启动 Nginx Proxy Manager..." docker compose -p nginx -f "$COMPOSE_FILE" up -d # 检查部署是否成功 if [ $? -eq 0 ]; then echo "等待服务启动..." sleep 5 echo "==================================================" echo "Nginx Proxy Manager 部署完成!" echo "管理界面: http://$(hostname -I | awk '{print $1}'):81" echo "初始账号: admin@example.com" echo "初始密码: changeme" echo "==================================================" echo "" echo "重要提示:" echo "1. 首次登录后请立即修改密码" echo "2. 确保防火墙已开放端口 80、81、443" echo "3. 数据保存在: $SCRIPT_DIR/data" else echo "错误:容器启动失败" exit 1 fi