Skip to content

Latest commit

 

History

History
377 lines (266 loc) · 6.75 KB

File metadata and controls

377 lines (266 loc) · 6.75 KB

环境变量配置指南

本文档说明如何配置 AlphaGPT 的环境变量。


快速开始

方法 1: 使用自动配置脚本(推荐)

python scripts/setup_env.py

脚本会:

  • .env.example 创建 .env 文件
  • 自动生成随机的 API 密钥和加密密钥
  • 提示下一步操作

方法 2: 手动复制

cp .env.example .env

然后编辑 .env 文件,填入实际配置。


配置文件说明

.env.example

这是一个模板文件,包含所有环境变量的说明和默认值。该文件可以安全地提交到版本控制系统。

.env

这是实际使用的环境变量文件,包含敏感信息。永远不要提交到版本控制系统


必需配置(最低要求)

以下是运行系统必须配置的环境变量:

变量名 说明 获取方式
API_SECRET_KEY API 认证密钥 自动生成(使用 setup_env.py)
DB_PASSWORD 数据库密码 设置强密码
BINANCE_API_KEY Binance API 密钥 https://www.binance.com/en/my/settings/api-management
BINANCE_API_SECRET Binance API 密钥 同上
SOLANA_PRIVATE_KEY Solana 钱包私钥 solana-keygen new
QUICKNODE_RPC_URL Solana RPC 节点 https://www.quicknode.com

可选配置

开发环境

以下配置在开发阶段可选,生产环境建议配置:

变量名 说明
TELEGRAM_BOT_TOKEN Telegram 机器人令牌
TELEGRAM_CHAT_ID Telegram 聊天 ID
BIRDEYE_API_KEY Birdeye 数据 API
COINGECKO_API_KEY CoinGecko 数据 API
TWITTER_BEARER_TOKEN Twitter API 令牌

测试环境

变量名 说明
BINANCE_TESTNET_API_KEY Binance 测试网 API 密钥
BINANCE_TESTNET_API_SECRET Binance 测试网 API 密钥
TEST_MODE=true 启用测试模式

安全建议

1. 密钥管理

# 生成强密钥
python -c "import secrets; print(secrets.token_urlsafe(32))"

# 或使用 OpenSSL
openssl rand -base64 32

2. 私钥安全

  • 永远不要将私钥直接写入 .env 文件
  • 考虑使用密钥管理服务(如 AWS Secrets Manager、HashiCorp Vault)
  • 生产环境建议使用热钱包/冷钱包分离

3. 权限设置

# 限制 .env 文件权限
chmod 600 .env

# 检查权限
ls -la .env

4. .gitignore 验证

确保 .gitignore 包含以下内容:

.env
*.env.local
.secret_key
*.key
*.pem

环境变量分类

API 配置

API_SECRET_KEY=your-random-secret-key-here
API_PORT=8000
HOST=0.0.0.0

数据库配置

DB_USER=postgres
DB_PASSWORD=your-database-password
DB_HOST=localhost
DB_PORT=5432
DB_NAME=alphagpt

交易所配置

# Binance
BINANCE_API_KEY=your-api-key
BINANCE_API_SECRET=your-api-secret
BINANCE_TESTNET=false

# OKX (备用)
OKX_API_KEY=your-api-key
OKX_API_SECRET=your-api-secret
OKX_API_PASSPHRASE=your-passphrase

区块链配置

# Solana
QUICKNODE_RPC_URL=https://api.mainnet-beta.solana.com
SOLANA_PRIVATE_KEY=your-private-key

# Ethereum
ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/YOUR-KEY
ETHEREUM_PRIVATE_KEY=your-private-key

外部 API 配置

BIRDEYE_API_KEY=your-api-key
COINGECKO_API_KEY=your-api-key
TWITTER_BEARER_TOKEN=your-bearer-token
TELEGRAM_BOT_TOKEN=your-bot-token
TELEGRAM_CHAT_ID=your-chat-id

交易配置

TRADING_MODE=auto
TEST_MODE=false
MAX_TRADE_SOL=5.0
MAX_POSITION_PCT=0.1
STOP_LOSS_PCT=-0.05
TAKE_PROFIT_PCT=0.1

风控配置

MAX_DAILY_DRAWDOWN=-0.10
MAX_EMERGENCY_DRAWDOWN=-0.20
CONSECUTIVE_LOSS_LIMIT=3
MAX_DAILY_TRADES_HFT=50
MAX_DAILY_TRADES_NORMAL=20

验证配置

1. 检查 .env 文件

# 查看文件是否存在
ls -la .env

# 检查文件内容(不显示敏感值)
grep -v "SECRET\|KEY\|PASSWORD" .env

2. 验证配置完整性

from dotenv import load_dotenv
import os

load_dotenv()

required_vars = [
    "API_SECRET_KEY",
    "BINANCE_API_KEY",
    "BINANCE_API_SECRET",
    "SOLANA_PRIVATE_KEY",
]

missing = [var for var in required_vars if not os.getenv(var)]

if missing:
    print(f"❌ 缺少必需的环境变量: {missing}")
else:
    print("✅ 所有必需的环境变量已配置")

3. 测试数据库连接

import psycopg2
from dotenv import load_dotenv
import os

load_dotenv()

try:
    conn = psycopg2.connect(
        user=os.getenv("DB_USER"),
        password=os.getenv("DB_PASSWORD"),
        host=os.getenv("DB_HOST"),
        port=os.getenv("DB_PORT"),
        database=os.getenv("DB_NAME")
    )
    print("✅ 数据库连接成功")
    conn.close()
except Exception as e:
    print(f"❌ 数据库连接失败: {e}")

Docker 部署

1. 创建 .env 文件

cp .env.example .env
# 编辑 .env 文件

2. 使用 Docker Compose

# Docker Compose 会自动加载 .env 文件
docker-compose up -d

3. 传递环境变量

如果需要覆盖环境变量:

# 方法 1: 在命令行中传递
docker-compose up -d -e TEST_MODE=true

# 方法 2: 使用 .env 文件(Docker Compose 默认行为)
docker-compose --env-file .env up -d

生产环境建议

1. 使用密钥管理服务

# 使用 AWS Secrets Manager
import boto3

client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId='alphagpt/production')
secret = json.loads(response['SecretString'])

2. 使用加密存储

from cryptography.fernet import Fernet

# 加密敏感信息
key = os.getenv('ENCRYPTION_KEY')
cipher = Fernet(key)
encrypted = cipher.encrypt(b'sensitive-data')

# 解密
decrypted = cipher.decrypt(encrypted)

3. 审计日志

记录所有配置更改:

# 添加配置更改到审计日志
echo "$(date): .env file modified by $USER" >> logs/config_audit.log

故障排查

问题 1: 环境变量未加载

# 确认文件存在
ls -la .env

# 确认文件位置(应该在项目根目录)
pwd

# 检查文件权限
chmod 600 .env

问题 2: Python 无法加载 .env

# 确保安装了 python-dotenv
pip install python-dotenv

# 在代码中加载
from dotenv import load_dotenv
load_dotenv()  # 默认加载当前目录的 .env

问题 3: Docker 无法读取 .env

# 确认 .env 在 docker-compose.yml 同级目录
ls -la .env docker-compose.yml

# 检查 docker-compose.yml 配置
# 应该包含: env_file: .env

参考资源


文档版本: 1.0
最后更新: 2026-01-24