第03章:FDE的部署工具箱——环境、网络与安全
第03章:FDE的部署工具箱——环境、网络与安全
去客户现场之前,确保你的笔记本就是一个完整的部署平台。不要到了现场才发现缺少某个工具。
FDE笔记本标准配置
必装软件清单
# 开发环境
Python 3.11+ # 主语言
Node.js 18+ # MCP Server运行时
Docker Desktop # 容器化部署
Git # 版本控制
# IDE & 工具
VS Code # 主编辑器
+ Python Extension
+ Docker Extension
+ Remote SSH Extension
DBeaver/pgAdmin # 数据库客户端
Postman/Insomnia # API测试
# 基础设施
Terraform/Pulumi # IaC(如果需要cloud部署)
kubectl # K8s管理(如果客户用K8s)
AWS CLI / gcloud / az # 云平台CLI
# 网络工具
curl / httpie # HTTP调试
ngrok # 临时隧道(demo用)
Wireshark # 网络调试(极端情况)
SSH # 远程连接
# AI相关
OpenAI/Anthropic CLI # 快速测试LLM
LangSmith CLI # Agent调试
ChromaDB # 本地向量数据库
离线工具包(Air-Gapped客户必备)
有些客户的环境完全没有网络。提前准备:
# 1. Docker镜像离线包
docker save hermes-agent:latest > hermes-agent.tar
docker save openclaw:latest > openclaw.tar
docker save chromadb:latest > chromadb.tar
docker save postgres:15 > postgres.tar
# 2. Python依赖离线包
pip download -r requirements.txt -d ./offline-packages/
# 3. 本地LLM模型文件
# 下载Llama 3 / Mixtral的GGUF文件
# 通常8-30GB,提前下载到移动硬盘
# 4. MCP Server离线包
npm pack @modelcontextprotocol/server-postgres
npm pack @modelcontextprotocol/server-filesystem
环境初始化脚本
一键初始化(到客户现场第一件事运行这个)
#!/bin/bash
# fde-init.sh — FDE环境初始化脚本
echo "=== FDE Environment Setup ==="
# 1. 创建项目结构
mkdir -p ~/fde-project/{config,data,logs,scripts,docs}
cd ~/fde-project
# 2. 创建docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
postgres:
image: postgres:15
environment:
POSTGRES_DB: openclaw
POSTGRES_USER: fde
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
chromadb:
image: chromadb/chroma:latest
volumes:
- chromadata:/chroma/chroma
ports:
- "8100:8000"
openclaw:
image: openclaw:latest
environment:
DATABASE_URL: postgresql://fde:${DB_PASSWORD}@postgres:5432/openclaw
CHROMA_URL: http://chromadb:8000
LLM_PROVIDER: ${LLM_PROVIDER}
LLM_API_KEY: ${LLM_API_KEY}
depends_on:
- postgres
- chromadb
ports:
- "8200:8000"
hermes:
image: hermes-agent:latest
environment:
OPENCLAW_URL: http://openclaw:8000
LLM_PROVIDER: ${LLM_PROVIDER}
LLM_API_KEY: ${LLM_API_KEY}
depends_on:
- openclaw
ports:
- "8300:8000"
volumes:
- ./config:/app/config
volumes:
pgdata:
chromadata:
EOF
# 3. 创建环境变量模板
cat > .env.template << 'EOF'
DB_PASSWORD=changeme_to_strong_password
LLM_PROVIDER=anthropic
LLM_API_KEY=sk-ant-xxxxx
EOF
# 4. 创建健康检查脚本
cat > scripts/health-check.sh << 'EOF'
#!/bin/bash
echo "Checking services..."
curl -s http://localhost:5432 > /dev/null 2>&1 && echo "✅ PostgreSQL" || echo "❌ PostgreSQL"
curl -s http://localhost:8100/api/v1/heartbeat | grep -q "nanosecond" && echo "✅ ChromaDB" || echo "❌ ChromaDB"
curl -s http://localhost:8200/health | grep -q "ok" && echo "✅ OpenClaw" || echo "❌ OpenClaw"
curl -s http://localhost:8300/health | grep -q "ok" && echo "✅ Hermes" || echo "❌ Hermes"
EOF
chmod +x scripts/health-check.sh
echo "=== Setup Complete ==="
echo "Next: cp .env.template .env && edit .env && docker-compose up -d"
网络配置
常见客户网络拓扑
[互联网]
↕ (防火墙)
[客户DMZ]
↕ (内部防火墙)
[客户内网]
├── [办公网络] ← 你的笔记本在这里
├── [服务器区] ← 部署目标在这里
├── [数据库区] ← 客户数据在这里
└── [IoT/OT网络] ← 传感器数据在这里(制造业)
FDE需要申请的网络权限
| 权限 | 用途 | 通常审批时间 |
|---|---|---|
| SSH到服务器 | 部署和调试 | 1-3天 |
| 数据库read access | 查询业务数据 | 3-5天 |
| 出站HTTPS (443) | 调用LLM API | 1-2天 |
| 内部API access | 连接ERP/CRM | 3-7天 |
| VPN access | 远程办公 | 5-10天 |
FDE Pro Tip:到客户现场的第一天就提交所有access request。不要等到需要的时候才申请——等审批会浪费你最宝贵的现场时间。
网络不通时的排查步骤
# 1. 检查DNS
nslookup 目标地址
# 2. 检查连通性
ping 目标IP
telnet 目标IP 端口号
# 3. 检查防火墙规则
# (通常需要客户网络团队帮忙看)
# 4. 检查代理
echo $HTTP_PROXY
echo $HTTPS_PROXY
# 5. 如果在客户代理后面访问LLM API
export HTTPS_PROXY=http://客户代理:端口
curl -x $HTTPS_PROXY https://api.anthropic.com/v1/messages
安全配置
Credential管理
# ❌ 永远不要做的事
# 把密钥写在代码里
API_KEY = "sk-ant-abc123..." # NEVER
# ❌ 把密钥commit到git
git add .env # NEVER
# ✅ 正确的做法
# 1. 使用环境变量
export LLM_API_KEY="sk-ant-abc123..."
# 2. 使用.env文件 + .gitignore
echo ".env" >> .gitignore
# 3. 使用密钥管理服务(如果客户有)
# AWS Secrets Manager / HashiCorp Vault / Azure Key Vault
# 4. Docker secrets
echo "sk-ant-abc123..." | docker secret create llm_api_key -
数据安全配置
# OpenClaw的数据安全配置示例
security_config = {
# 1. 数据加密
"encryption": {
"at_rest": True, # 数据库加密
"in_transit": True, # TLS传输加密
"embedding_encryption": True # 向量也加密
},
# 2. 访问控制
"access_control": {
"authentication": "oauth2", # 或 LDAP/SAML
"role_based": True,
"roles": {
"admin": ["read", "write", "delete", "configure"],
"analyst": ["read", "query"],
"viewer": ["read"]
}
},
# 3. 数据脱敏
"data_masking": {
"pii_detection": True, # 自动检测PII
"mask_in_logs": True, # 日志中脱敏
"mask_in_responses": False # 响应中是否脱敏(看客户要求)
},
# 4. 审计
"audit": {
"log_all_queries": True,
"log_all_responses": True,
"retention_days": 365, # 保留1年(看合规要求)
"export_format": "json"
}
}
客户安全review常见问题及回答
| 客户问题 | 你的回答 |
|---|---|
| “数据会传到外部吗?” | “只有LLM API调用会离开内网。如果需要,我们可以用本地部署的模型(Llama/Mixtral),数据完全不出内网。” |
| “谁能看到数据?” | “系统有基于角色的访问控制。只有被授权的用户才能查询数据。所有操作都有审计日志。” |
| “AI会’记住’敏感数据吗?” | “OpenClaw的记忆是可审计和可删除的。每条记忆都有明确的来源和时间戳。可以随时删除特定记忆。” |
| “如果AI给出错误信息怎么办?” | “系统会标注信息来源。关键操作采用human-in-the-loop模式——AI建议,人工确认。” |
| “你走了之后谁维护?” | “我会做知识转移,包括:运维手册、监控dashboard、常见问题排查指南。你的团队可以独立维护。” |
客户环境评估模板
到客户现场第一天填写这个
# Client Environment Assessment
## 基本信息
- 客户名:
- 行业:
- 主要联系人:
- IT团队规模:
## 技术环境
- 操作系统:[ ] Linux [ ] Windows Server
- 容器化:[ ] Docker [ ] K8s [ ] 无
- 数据库:[ ] PostgreSQL [ ] MySQL [ ] Oracle [ ] SQL Server [ ] 其他
- 云平台:[ ] AWS [ ] GCP [ ] Azure [ ] 私有云 [ ] 无
- 网络:[ ] 可访问外网 [ ] 代理 [ ] Air-gapped
## 数据情况
- 主要数据源:
- 数据量估计:
- 数据格式:
- 敏感等级:[ ] 公开 [ ] 内部 [ ] 机密 [ ] 极机密
## 安全要求
- 认证方式:[ ] LDAP [ ] OAuth [ ] SAML [ ] 其他
- 合规要求:[ ] SOC2 [ ] HIPAA [ ] PCI-DSS [ ] GDPR [ ] 等保
- 数据出境限制:[ ] 不能出内网 [ ] 可以调用云API [ ] 无限制
## 已有系统
- ERP:
- CRM:
- 邮件:
- 即时通讯:
- 其他关键系统:
## 部署方案选择
- [ ] Cloud(客户VPC内)
- [ ] On-Premise
- [ ] 混合
## Access需求(第一天提交!)
- [ ] SSH到目标服务器
- [ ] 数据库read access
- [ ] 出站HTTPS
- [ ] VPN
- [ ] 其他:
本章核心结论
- 笔记本就是你的部署平台——出发前确保所有工具都装好、离线包都准备好。
- 第一天就提交所有access request——这是最容易浪费时间的地方。
- 安全不是可选项——credential管理、数据加密、访问控制、审计日志,每一项都必须配置。
- 客户环境评估模板是你的第一个deliverable——填完它,你才知道用哪个部署方案。
- 准备好回答安全review的常见问题——你的回答决定了客户是否信任这个系统。
下一章:Day 1部署——带着你的工具箱,在4小时内从零搭建一个可演示的MVP。