Files
DNSPod-Skill/ENV_SETUP.md
OpenClaw 7abea390ad 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
2026-03-01 11:44:05 +08:00

201 lines
4.3 KiB
Markdown

# 环境变量配置说明
## .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