diff --git a/jsite.sh b/jsite.sh index b42a592..c95890b 100644 --- a/jsite.sh +++ b/jsite.sh @@ -41,6 +41,7 @@ PUBLIC_IP="" # 公网IP地址 (用于内网IP不可用时) # .env文件参数 SITE_URL="example.com" +SITE_EMAIL="email@example.com" REVALIDATE_TOKEN="" BACKEND_SERVER_URL="https://admin.example.com" BACKEND_API_KEY="" @@ -179,6 +180,10 @@ while [[ $# -gt 0 ]]; do BACKEND_API_SECRET="$2" shift 2 ;; + --site-email) + SITE_EMAIL="$2" + shift 2 + ;; # 帮助信息 -h|--help) @@ -215,9 +220,10 @@ while [[ $# -gt 0 ]]; do echo " --public-ip IP 公网IP地址 (用于内网IP不可用时)" echo "" echo ".env文件配置:" - echo " --site-url URL 网站URL (默认: starrbud.com)" + echo " --site-url URL 网站URL (默认: example.com)" + echo " --site-email EMAIL 网站邮箱 (默认: email@example.com)" echo " --revalidate-token TK 重新验证令牌" - echo " --backend-server-url URL 服务器URL (默认: https://admin.jingrow.com)" + echo " --backend-server-url URL 服务器URL (默认: https://admin.example.com)" echo " --backend-api-key KEY API密钥" echo " --backend-api-secret SECRET API密钥" echo "" @@ -1303,6 +1309,45 @@ install_traefik() { chown -R jingrow:jingrow /home/jingrow/traefik-docker log_success "设置traefik目录权限" + # 删除已存在的traefik.yml配置文件(如果存在) + rm -f "/home/jingrow/traefik-docker/traefik.yml" + + # 创建traefik.yml配置文件 + log_info "创建traefik.yml配置文件..." + cat > "/home/jingrow/traefik-docker/traefik.yml" << EOF +entryPoints: + web: + address: ":80" + websecure: + address: ":443" + traefik: + address: ":8080" + +api: + dashboard: true + insecure: false # 生产环境建议关闭 + +providers: + docker: + exposedByDefault: false + file: + directory: /etc/traefik/conf.d + watch: true + +certificatesResolvers: + myresolver: + acme: + email: $SITE_EMAIL + storage: /etc/traefik/acme.json + httpChallenge: + entryPoint: web +EOF + + # 设置traefik.yml文件权限 + chown jingrow:jingrow "/home/jingrow/traefik-docker/traefik.yml" + chmod 664 "/home/jingrow/traefik-docker/traefik.yml" + log_success "traefik.yml配置文件创建完成" + # 设置 acme.json 文件权限(Let's Encrypt 要求 600 权限) if [ -f "/home/jingrow/traefik-docker/acme.json" ]; then chmod 600 /home/jingrow/traefik-docker/acme.json @@ -1573,6 +1618,13 @@ show_deployment_info() { echo " - .env文件不存在" fi + log_info "Traefik配置信息:" + echo " - 网站配置文件: /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml" + echo " - 主配置文件: /home/jingrow/traefik-docker/traefik.yml" + echo " - SSL证书邮箱: $SITE_EMAIL" + echo " - 访问域名: $SITE_URL" + echo " - 后端端口: $(get_or_assign_port "$SITE_NAME")" + log_info "PM2管理命令:" echo " - 查看状态: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 list'" echo " - 查看日志: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 logs $SITE_NAME'" @@ -1867,6 +1919,8 @@ create_and_start_site() { echo " - Traefik目录: /home/jingrow/traefik-docker" echo " - Traefik管理界面: http://localhost:8080" echo " - Traefik网站配置: $TRAEFIK_CONFIG_DIR/$SITE_NAME.yml" + echo " - Traefik主配置: /home/jingrow/traefik-docker/traefik.yml" + echo " - SSL证书邮箱: $SITE_EMAIL" echo " - PM2配置文件: $JSITE_BASE_DIR/$SITE_NAME/ecosystem.config.cjs" echo " - PM2日志目录: $JSITE_BASE_DIR/$SITE_NAME/logs" @@ -2166,6 +2220,7 @@ main() { echo "" log_info ".env文件参数:" echo " - 网站URL: $SITE_URL" + echo " - 网站邮箱: $SITE_EMAIL" echo " - 站点名称: $SITE_NAME" echo " - 服务器URL: $BACKEND_SERVER_URL" echo " - 重新验证令牌: $REVALIDATE_TOKEN"