Initial commit: Tencent DNSPod DNS deployment skill
- Support for single record deployment - Batch deployment from JSON config - Service quick deployment (Web/API/CDN) - .env file support for secure credentials - Complete documentation
This commit is contained in:
200
ENV_SETUP.md
Normal file
200
ENV_SETUP.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# 环境变量配置说明
|
||||
|
||||
## .env 文件(推荐方式)
|
||||
|
||||
`.env` 文件用于存储敏感配置信息,如API密钥。该文件**不会被提交到Git**(已添加到 `.gitignore`)。
|
||||
|
||||
### 配置步骤
|
||||
|
||||
1. **复制示例配置**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. **编辑 .env 文件**
|
||||
```bash
|
||||
# 使用你喜欢的编辑器
|
||||
vim .env
|
||||
# 或
|
||||
nano .env
|
||||
# 或
|
||||
code .env
|
||||
```
|
||||
|
||||
3. **填入你的腾讯云API密钥**
|
||||
```bash
|
||||
TENCENT_SECRET_ID=你的SecretId
|
||||
TENCENT_SECRET_KEY=你的SecretKey
|
||||
```
|
||||
|
||||
4. **保存文件**
|
||||
|
||||
### 获取API密钥
|
||||
|
||||
访问腾讯云控制台: https://console.cloud.tencent.com/cam/capi
|
||||
|
||||
- 点击「新建密钥」或查看现有密钥
|
||||
- 复制 `SecretId` 和 `SecretKey`
|
||||
- ⚠️ **重要:** SecretKey只在创建时显示一次,请妥善保存!
|
||||
|
||||
## 环境变量方式
|
||||
|
||||
如果不使用 `.env` 文件,可以直接设置系统环境变量。
|
||||
|
||||
### Linux/Mac
|
||||
|
||||
**临时设置(当前会话有效):**
|
||||
```bash
|
||||
export TENCENT_SECRET_ID="你的SecretId"
|
||||
export TENCENT_SECRET_KEY="你的SecretKey"
|
||||
```
|
||||
|
||||
**永久设置(添加到 ~/.bashrc 或 ~/.zshrc):**
|
||||
```bash
|
||||
echo 'export TENCENT_SECRET_ID="你的SecretId"' >> ~/.bashrc
|
||||
echo 'export TENCENT_SECRET_KEY="你的SecretKey"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
**PowerShell临时设置:**
|
||||
```powershell
|
||||
$env:TENCENT_SECRET_ID="你的SecretId"
|
||||
$env:TENCENT_SECRET_KEY="你的SecretKey"
|
||||
```
|
||||
|
||||
**PowerShell永久设置:**
|
||||
```powershell
|
||||
[System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_ID', '你的SecretId', 'User')
|
||||
[System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_KEY', '你的SecretKey', 'User')
|
||||
```
|
||||
|
||||
**CMD临时设置:**
|
||||
```cmd
|
||||
set TENCENT_SECRET_ID=你的SecretId
|
||||
set TENCENT_SECRET_KEY=你的SecretKey
|
||||
```
|
||||
|
||||
## 验证配置
|
||||
|
||||
### 方式1: 查看 .env 文件
|
||||
```bash
|
||||
cat .env
|
||||
```
|
||||
|
||||
### 方式2: 查看环境变量
|
||||
```bash
|
||||
# Linux/Mac
|
||||
echo $TENCENT_SECRET_ID
|
||||
|
||||
# Windows PowerShell
|
||||
echo $env:TENCENT_SECRET_ID
|
||||
|
||||
# Windows CMD
|
||||
echo %TENCENT_SECRET_ID%
|
||||
```
|
||||
|
||||
### 方式3: 测试连接
|
||||
```bash
|
||||
python scripts/list_records.py --domain example.com
|
||||
```
|
||||
|
||||
如果成功,将显示域名记录列表(可能为空)。
|
||||
|
||||
## 安全建议
|
||||
|
||||
### ✅ 推荐做法
|
||||
|
||||
1. **使用 .env 文件** - 方便管理,不会被Git跟踪
|
||||
2. **使用 .env.example** - 提供配置模板,不含真实密钥
|
||||
3. **定期轮换密钥** - 定期更换API密钥提高安全性
|
||||
4. **使用子账号** - 创建独立的子账号,只授予必要权限
|
||||
5. **设置IP白名单** - 在腾讯云CAM中限制API调用来源IP
|
||||
|
||||
### ❌ 避免做法
|
||||
|
||||
1. ❌ 不要将密钥硬编码在代码中
|
||||
2. ❌ 不要在Git仓库中提交 .env 文件
|
||||
3. ❌ 不要在生产环境使用默认密钥
|
||||
4. ❌ 不要在公开场合分享密钥
|
||||
5. ❌ 不要使用弱密钥或重复使用密钥
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q1: .env 文件不生效?
|
||||
|
||||
**原因:** 可能是文件权限问题或路径错误。
|
||||
|
||||
**解决:**
|
||||
```bash
|
||||
# 确认文件存在
|
||||
ls -la .env
|
||||
|
||||
# 确认文件内容
|
||||
cat .env
|
||||
|
||||
# 确认文件格式(无BOM,Unix换行符)
|
||||
file .env
|
||||
```
|
||||
|
||||
### Q2: 还是提示找不到密钥?
|
||||
|
||||
**解决:** 检查 `.env` 文件是否在项目根目录:
|
||||
```bash
|
||||
pwd # 应该在 tencent-dnspod 目录
|
||||
ls .env # 应该能看到 .env 文件
|
||||
```
|
||||
|
||||
### Q3: Git提交时意外包含了 .env?
|
||||
|
||||
**解决:**
|
||||
```bash
|
||||
# 1. 从Git中移除(但保留本地文件)
|
||||
git rm --cached .env
|
||||
|
||||
# 2. 确认 .gitignore 包含 .env
|
||||
echo ".env" >> .gitignore
|
||||
|
||||
# 3. 提交修改
|
||||
git add .gitignore
|
||||
git commit -m "Remove .env from tracking"
|
||||
|
||||
# 4. 更换已泄露的密钥!
|
||||
# 访问: https://console.cloud.tencent.com/cam/capi
|
||||
```
|
||||
|
||||
### Q4: 多个项目需要不同的密钥?
|
||||
|
||||
**解决:** 每个项目使用独立的 .env 文件:
|
||||
```bash
|
||||
# 项目A
|
||||
cd /path/to/project-a
|
||||
echo "TENCENT_SECRET_ID=项目A的ID" > .env
|
||||
|
||||
# 项目B
|
||||
cd /path/to/project-b
|
||||
echo "TENCENT_SECRET_ID=项目B的ID" > .env
|
||||
```
|
||||
|
||||
## 权限管理建议
|
||||
|
||||
### 创建专用子账号
|
||||
|
||||
1. 访问: https://console.cloud.tencent.com/cam
|
||||
2. 创建子账号,只授予DNSPod权限
|
||||
3. 为子账号创建API密钥
|
||||
4. 使用子账号密钥而非主账号密钥
|
||||
|
||||
### 最小权限原则
|
||||
|
||||
只授予必要的权限:
|
||||
- DNSPod只读权限(查询记录)
|
||||
- DNSPod读写权限(管理记录)
|
||||
- 避免授予所有产品的访问权限
|
||||
|
||||
## 参考文档
|
||||
|
||||
- **腾讯云访问管理(CAM):** https://cloud.tencent.com/document/product/598
|
||||
- **API密钥管理:** https://console.cloud.tencent.com/cam/capi
|
||||
- **子账号权限:** https://console.cloud.tencent.com/cam/user
|
||||
Reference in New Issue
Block a user