NOFX 快速上手:Docker 一键部署 AI 交易终端的完整指南(含密钥安全配置) NOFX 快速上手Docker 一键部署 AI 交易终端的完整指南含密钥安全配置【免费下载链接】nofxYour AI trading terminal assistant for US stocks, commodities, forex, and crypto.项目地址: https://gitcode.com/gh_mirrors/nof/nofx想把一个能自动产生交易决策、对接真实交易所账户的 AI 交易终端跑在自己机器上又怕环境依赖、密钥初始化这些环节踩坑NOFX 是一个面向美股、大宗商品、外汇与加密市场的 AI 交易终端助手你用 Docker 一键部署前后端通过 Web 界面接入 AI 模型和交易所凭证即可让 AI 绑定账户自动生成并执行交易决策。本文带你走完「环境自检 → 一键启动 → 密钥配置 → AI 模型接入 → 首个交易员上线」全流程并覆盖安全配置与常见故障排查让你从零到一个可运行、可监控、密钥强度达标的自托管实例。两个容器一条网络NOFX 的架构长什么样NOFX 是前后端分离的项目核心由两个容器协作完成后端nofxGo 编写的 API 与核心业务逻辑AI 决策、交易所接入、持仓与风控、数据存储容器名nofx-trading监听8080镜像由 docker/Dockerfile.backend 构建Alpine Go 多阶段编译内置 TA-Lib前端nofx-frontendReact Vite 构建的 Web 控制台容器名nofx-frontend镜像由 docker/Dockerfile.frontend 构建Node 构建产物交给 Nginx 托管容器内80端口映射到宿主机3000。两个服务通过 docker-compose.yml 编排进同一个nofx-network网桥。官方推荐部署方式就是 Docker镜像里已含全部依赖你不需要本机装 Go、Node 或 TA-Lib。部署前自检两条路径的前置条件按你选择的部署方式核对环境缺一项先补一项路径前置条件说明Docker 方式推荐Docker 20.10Docker Compose V2docker compose子命令start.sh 同时兼容旧版docker-compose会自动探测手动编译方式Go 1.21Node.js 18TA-Lib 技术指标库macOSbrew install ta-libUbuntuapt-get install libta-lib0-devDocker 路径下你只需要确认一件事docker version和docker compose version都能正常输出。一条命令拉起前后端实际部署命令先说明一个版本差异避免被旧文档误导官方快速开始文档里的示例是cp config.json.example config.json./scripts/start.sh start --build但当前仓库的实际结构已经变化——仓库根目录提供的是.env.example环境变量模板管理脚本位于根目录 start.sh不再需要手动复制配置文件脚本会自动完成全部初始化。当前版本的实际部署流程是# 1. 获取代码并进入仓库根目录 git clone https://gitcode.com/gh_mirrors/nof/nofx cd nofx # 2. 首次启动--build 强制构建镜像首次运行必带 ./start.sh start --build--build参数会强制重新构建镜像不加该参数则直接拉起已有镜像。启动脚本的完整生命周期首次 start 时它做了什么.env.example 是唯一需要关注的配置模板。首次执行start时start.sh 会依次完成四步全程无需人工干预check_docker校验 Docker 与 Compose 是否安装并自动探测使用docker compose还是旧版docker-composecheck_env若不存在.env自动从.env.example复制生成check_encryption检查三项核心密钥缺失则自动生成并写回.envJWT_SECRETopenssl rand -base64 32生成 JWT 签名密钥DATA_ENCRYPTION_KEYopenssl rand -base64 32生成 AES-256 数据加密密钥RSA_PRIVATE_KEYopenssl genrsa 2048生成 RSA 私钥换行用\n转义为单行用于浏览器端到服务器的敏感数据加密。生成后脚本会对.env执行chmod 600并明确提示不要把它提交到版本控制check_database创建data/数据目录权限700持久化 SQLite 数据库默认data/data.db。启动完成后脚本会输出 Web 控制台地址默认http://localhost:3000、日志与停止命令并提示接下来的三个动作注册并配置 AI 模型、添加交易所、可选配置 Telegram Bot。命令速查日常运维只需这八条命令作用./start.sh start [--build]启动服务--build表示重建镜像./start.sh stop停止服务./start.sh restart重启服务./start.sh logs [backend\|frontend]跟踪日志可指定服务名./start.sh status查看容器状态并请求http://localhost:8080/api/health做健康检查返回 JSON 即后端存活./start.sh clean删除所有容器和数据破坏性操作需输入yes确认./start.sh updategit pull拉取最新代码并重建镜像./start.sh regenerate-keys重新生成全部加密密钥破坏性操作已有加密数据将不可读编排与健康检查服务挂了谁负责恢复docker-compose.yml 定义了完整的容错行为重启策略两个服务均restart: unless-stopped配合健康检查实现故障自动恢复健康检查后端每 30 秒探测/api/health超时 10 秒、重试 3 次、start_period: 60s前端每 30 秒探测自身/health优雅停机后端stop_grace_period: 30s端口绑定${NOFX_BIND_ADDRESS:-127.0.0.1}默认只绑定本机回环地址。.env.example中的注释也建议远程访问请走带认证的 TLS 反向代理而不是直接把端口暴露出去卷挂载.env绑定挂载进容器便于初学者引导流程把钱包信息写回宿主机文件、./data持久化数据库、/etc/localtime只读挂载保持时区一致。安全专题哪些是硬要求哪些是可选所有运行配置都通过.env注入模板见 .env.example。安全相关的配置分两档部署前必须分清。硬要求三项认证密钥缺一项都别上线变量用途要求JWT_SECRETJWT HS256 签名密钥至少 32 字节随机串openssl rand -base64 32且不得等于历史默认值DATA_ENCRYPTION_KEY数据库敏感字段API 密钥等的 AES-256 加密Base64 编码的 32 字节密钥RSA_PRIVATE_KEY浏览器到服务器端到端加密敏感数据PEM 格式换行用\n转义为单行JWT 密钥强度是硬性校验不是建议。config/config.go 中的initConfig()会拒绝启动MustInit直接 panic在以下任一情况JWT_SECRET缺失、等于历史默认值default-jwt-secret-change-in-production、或长度不足 32 字节minJWTSecretLength 32。这是防止服务用可被暴力破解的弱密钥静默签发令牌。可选服务、时区与数据库NOFX_BACKEND_PORT默认8080与NOFX_FRONTEND_PORT默认3000宿主机端口映射冲突时在此修改NOFX_TIMEZONE默认Asia/Shanghai容器时区数据库默认 SQLiteDB_TYPEsqlite、DB_PATHdata/data.db.env.example同时给出了 PostgreSQL 选项DB_TYPEpostgresDB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME/DB_SSLMODE。传输加密一个容易配反的开关TRANSPORT_ENCRYPTION默认false开启后浏览器会用 Web Crypto API 在发送前加密 API 密钥但它只在 HTTPS 或 localhost 环境生效如果你通过 IP HTTP 访问必须保持false否则前端加密链路不可用。认证链路登录之后发生了什么从 auth/auth.go 可以看到完整实现密码用 bcrypt 哈希校验登录成功后签发 HS256 JWTClaims携带UserID、Email24 小时过期退出登录的令牌进入内存黑名单超过 10 万条时自动清理过期项。存储层方面API 密钥在数据库中经DATA_ENCRYPTION_KEY加密实现见 crypto/crypto.go 与 store/ 目录两层加密把凭据泄露的爆炸半径压到最小。单用户自托管三步开启 Admin 模式单租户场景可以开启严格管理员专属访问启用后未认证用户无法访问一切非必要端点。第 1 步在config.json中设置两个字段{ admin_mode: true, jwt_secret: YOUR_JWT_SECRET }第 2 步设置环境变量NOFX_ADMIN_PASSWORD——管理员密码明文启动时会被哈希处理Docker Compose 已接线该变量。第 3 步在/login页面使用管理员密码登录。从 api/server.go 的路由设计可以看到Admin 登录是公开路由// Admin login (used in admin mode, public)GET /api/config等系统配置接口同样无需认证——它们的作用是让前端在登录前判定当前是否处于 Admin 模式与注册状态。管理员账号由 store/user.go 的EnsureAdmin()保证存在ID 固定admin邮箱adminlocalhost密码在启动时由NOFX_ADMIN_PASSWORD经 bcrypt 哈希后写入。AI 模型接入内置提供商 任意 OpenAI 兼容 API当前版本所有 AI 与交易员配置都通过 Web 界面完成config.json仅保留基础设置早期在配置文件中直接声明 trader 的方式已弃用。内置提供商可直接配置 DeepSeek、Qwen 等。仓库 mcp/provider/ 目录下提供了 Claude、DeepSeek、Gemini、Grok、Kimi、MiniMax、OpenAI、Qwen 的客户端实现模型接入通过 mcp/registry.go 注册与路由——你在 Web 界面看到的模型能力清单就来自这些实现自定义 API支持任何 OpenAI Chat Completions 兼容端点包括 OpenAI 官方 API、OpenRouter可访问 Anthropic Claude、Meta Llama 等多种模型、本地部署模型Ollama、LM Studio、Azure OpenAI 及其他兼容服务。自定义 API 的四个硬性要点custom_api_url只填Base URL系统自动追加/chat/completions若端点已包含完整路径在 URL 末尾加#强制使用完整地址#会被自动去除端点必须支持Authorization: Bearer {api_key}认证并返回标准 OpenAI 响应格式默认超时 120 秒慢速模型注意调整。完整配置字段说明与多 AI 对比交易示例见 docs/getting-started/custom-api.md。跑通第一个交易员四步落地路线服务起来后按顺序推进每步都在 Web 界面http://localhost:3000完成配置 AI 模型→ 在设置中添加内置提供商或自定义 API设置交易所→ 添加 Binance / Hyperliquid / OKX / Bybit / Aster 等凭证各交易所的凭证申请指南见 docs/getting-started/ 下的binance-api.md、hyperliquid-agent-wallet.md、okx-api.md、bybit-api.md、aster-api-wallet.md创建交易员→ 将 AI 模型与交易所绑定设置初始资金与扫描间隔开始交易→ 在仪表板中监控持仓、收益曲线与交易日志。交易前风控清单 故障速查风控先读这四条再放真金先在测试网充分验证策略从小金额开始充分了解交易风险阅读 SECURITY.md 安全策略API 密钥管理绝不提交到 git.env已被脚本强制chmod 600且不在版本控制中、优先用环境变量注入、在交易所侧限制 IP 白名单、为交易所账户启用 2FA。症状 → 解决五类常见问题症状解决Docker 构建失败确认 Docker 升级到 20.10并安装 Docker Compose V2找不到 TA-Lib仅手动部署macOSbrew install ta-libUbuntuapt-get install libta-lib0-dev端口 8080 被占用修改.env中的NOFX_BACKEND_PORT前端同理改NOFX_FRONTEND_PORT再./start.sh start --build前端无法连接后端./start.sh status观察健康检查或curl http://localhost:8080/api/health确认后端存活启动即报 JWT 错误按 config/config.go 的校验规则为JWT_SECRET设置至少 32 字节的随机值如openssl rand -base64 48更多问题见 docs/guides/faq.zh-CN.md 与 docs/guides/TROUBLESHOOTING.zh-CN.md。回顾与延伸阅读回到起点./start.sh start --build一条命令背后脚本替你完成了「复制.env→ 生成三项密钥 → 建data/目录 → 拉起前后端 → 健康检查」的全链路而强 JWT 校验、bcrypt 哈希、AES/RSA 双层加密则把安全底线内建到了部署环节本身。进一步深挖快速开始文档中英双语docs/getting-started/README.md、docs/getting-started/README.zh-CN.md自定义 AI API 完整指南docs/getting-started/custom-api.md部署脚本start.sh服务编排docker-compose.yml配置加载与校验config/config.go认证实现auth/auth.go加密实现crypto/crypto.go文档首页docs/README.md【免费下载链接】nofxYour AI trading terminal assistant for US stocks, commodities, forex, and crypto.项目地址: https://gitcode.com/gh_mirrors/nof/nofx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考