安装traefik时创建traefik.yml文件并传入email变量以便使用用户的邮箱申请ssl证书

This commit is contained in:
jingrow 2025-08-11 18:54:47 +08:00
parent 5d03d9a221
commit 8a52c54ddb

View File

@ -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"