本文档说明如何配置 AlphaGPT 的环境变量。
python scripts/setup_env.py脚本会:
- 从
.env.example创建.env文件 - 自动生成随机的 API 密钥和加密密钥
- 提示下一步操作
cp .env.example .env然后编辑 .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 |
启用测试模式 |
# 生成强密钥
python -c "import secrets; print(secrets.token_urlsafe(32))"
# 或使用 OpenSSL
openssl rand -base64 32- 永远不要将私钥直接写入
.env文件 - 考虑使用密钥管理服务(如 AWS Secrets Manager、HashiCorp Vault)
- 生产环境建议使用热钱包/冷钱包分离
# 限制 .env 文件权限
chmod 600 .env
# 检查权限
ls -la .env确保 .gitignore 包含以下内容:
.env
*.env.local
.secret_key
*.key
*.pem
API_SECRET_KEY=your-random-secret-key-here
API_PORT=8000
HOST=0.0.0.0DB_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-keyBIRDEYE_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-idTRADING_MODE=auto
TEST_MODE=false
MAX_TRADE_SOL=5.0
MAX_POSITION_PCT=0.1
STOP_LOSS_PCT=-0.05
TAKE_PROFIT_PCT=0.1MAX_DAILY_DRAWDOWN=-0.10
MAX_EMERGENCY_DRAWDOWN=-0.20
CONSECUTIVE_LOSS_LIMIT=3
MAX_DAILY_TRADES_HFT=50
MAX_DAILY_TRADES_NORMAL=20# 查看文件是否存在
ls -la .env
# 检查文件内容(不显示敏感值)
grep -v "SECRET\|KEY\|PASSWORD" .envfrom 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("✅ 所有必需的环境变量已配置")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}")cp .env.example .env
# 编辑 .env 文件# Docker Compose 会自动加载 .env 文件
docker-compose up -d如果需要覆盖环境变量:
# 方法 1: 在命令行中传递
docker-compose up -d -e TEST_MODE=true
# 方法 2: 使用 .env 文件(Docker Compose 默认行为)
docker-compose --env-file .env up -d# 使用 AWS Secrets Manager
import boto3
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId='alphagpt/production')
secret = json.loads(response['SecretString'])from cryptography.fernet import Fernet
# 加密敏感信息
key = os.getenv('ENCRYPTION_KEY')
cipher = Fernet(key)
encrypted = cipher.encrypt(b'sensitive-data')
# 解密
decrypted = cipher.decrypt(encrypted)记录所有配置更改:
# 添加配置更改到审计日志
echo "$(date): .env file modified by $USER" >> logs/config_audit.log# 确认文件存在
ls -la .env
# 确认文件位置(应该在项目根目录)
pwd
# 检查文件权限
chmod 600 .env# 确保安装了 python-dotenv
pip install python-dotenv
# 在代码中加载
from dotenv import load_dotenv
load_dotenv() # 默认加载当前目录的 .env# 确认 .env 在 docker-compose.yml 同级目录
ls -la .env docker-compose.yml
# 检查 docker-compose.yml 配置
# 应该包含: env_file: .env文档版本: 1.0
最后更新: 2026-01-24