From 8a52c54ddbb26615c6db4adbf23c36781b467ed5 Mon Sep 17 00:00:00 2001 From: jingrow Date: Mon, 11 Aug 2025 18:54:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E8=A3=85traefik=E6=97=B6=E5=88=9B?= =?UTF-8?q?=E5=BB=BAtraefik.yml=E6=96=87=E4=BB=B6=E5=B9=B6=E4=BC=A0?= =?UTF-8?q?=E5=85=A5email=E5=8F=98=E9=87=8F=E4=BB=A5=E4=BE=BF=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=94=A8=E6=88=B7=E7=9A=84=E9=82=AE=E7=AE=B1=E7=94=B3?= =?UTF-8?q?=E8=AF=B7ssl=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jsite.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) 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"