Files
wecom-ai-assistant/deploy/scripts/setup-ssl.sh
2026-02-05 16:36:32 +08:00

68 lines
1.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# SSL 证书配置脚本Let's Encrypt
# 用途:为备案域名配置 HTTPS 证书
set -e
if [ -z "$DOMAIN" ]; then
echo "错误: 未设置 DOMAIN 环境变量"
echo "请设置: export DOMAIN=your-domain.com"
exit 1
fi
if [ -z "$SSL_EMAIL" ]; then
echo "错误: 未设置 SSL_EMAIL 环境变量"
echo "请设置: export SSL_EMAIL=your-email@example.com"
exit 1
fi
echo "=== SSL 证书配置Let's Encrypt==="
echo "域名: $DOMAIN"
echo "邮箱: $SSL_EMAIL"
echo ""
# 检查 Certbot
if ! command -v certbot &> /dev/null; then
echo "安装 Certbot..."
if [ -f /etc/debian_version ]; then
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
elif [ -f /etc/redhat-release ]; then
sudo yum install -y certbot python3-certbot-nginx
else
echo "错误: 未检测到支持的 Linux 发行版"
exit 1
fi
fi
echo "[1/3] 确保 HTTP 服务运行(用于验证)..."
docker-compose up -d backend nginx
sleep 3
echo "[2/3] 获取 SSL 证书..."
sudo certbot certonly --nginx \
-d "$DOMAIN" \
-d "www.$DOMAIN" \
--email "$SSL_EMAIL" \
--agree-tos \
--non-interactive \
--preferred-challenges http
echo "[3/3] 更新 Nginx 配置..."
# 更新 nginx-ssl.conf使用实际证书路径
sed -i "s|ssl_certificate.*|ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;|" deploy/nginx-ssl.conf
sed -i "s|ssl_certificate_key.*|ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;|" deploy/nginx-ssl.conf
# 更新 docker-compose.yml挂载证书目录
# 注意:需要手动更新 docker-compose.yml 的 volumes
echo "✓ SSL 证书配置完成"
echo ""
echo "证书路径: /etc/letsencrypt/live/$DOMAIN/"
echo ""
echo "请更新 docker-compose.yml添加证书挂载"
echo " volumes:"
echo " - /etc/letsencrypt:/etc/letsencrypt:ro"
echo ""
echo "然后重启 Nginx: docker-compose restart nginx"