TraderMemos
自托管

配置参考

API 读取的全部 TM_* 环境变量,含默认值与作用说明。

服务端的所有配置都通过带 TM_ 前缀的环境变量完成。可以在 shell、Compose 的 environment:,或本地开发用的 api/.env 中设置。修改后需重启 API 生效。

核心

变量默认值用途
TM_HTTP_PORT8080API 监听端口。仅当 TM_HTTP_PORT 未设置时,才会采用 PORT(Railway/Heroku 风格)
TM_DATABASE_URL(未设置 → SQLite)统一数据库连接串 —— sqlite:///data/tradermemos.db 或 postgres://user:pass@host:5432/db?sslmode=require。设置为空字符串会导致启动报错
TM_DB_PATHdata/tradermemos.db旧版 SQLite 路径,仅在 TM_DATABASE_URL 未设置时生效
TM_ATTACH_DIR(自动推导)附件 / 媒体文件的磁盘根目录。SQLite 默认为 <数据库目录>/attachments,Postgres 默认为 data/attachments —— Postgres 建议显式设置
TM_DEFAULT_CURRENCYUSD账户默认货币
TM_LOG_LEVELinfo日志级别(debug、info、warn、error)

认证与安全

变量默认值用途
TM_JWT_SECRETdev-insecure-change-meJWT 签名密钥,至少 32 个字符。检测到已知弱密钥时服务端会拒绝启动,除非设置 TM_ALLOW_INSECURE_JWT=true。生成方式:openssl rand -hex 32
TM_ALLOW_INSECURE_JWTfalse(随附的 Compose 为方便首次运行设为 true)允许使用弱 / 过短的 JWT 密钥。公网主机上切勿开启
TM_ALLOW_REGISTRATIONfalse初始化完成后开放 POST /auth/register。默认关闭 —— 除非主动开启,否则只存在 owner 账户
TM_CORS_ORIGINS(空 —— 禁用 CORS)CDN + API 分离部署时的来源白名单,逗号分隔。支持 https://*.vercel.app 之类的通配符主机。同源部署留空即可

上传限制

变量默认值用途
TM_ATTACH_MAX_BYTES10485760(10 MiB)交易截图与笔记媒体的单文件上限
TM_IMPORT_MAX_BYTES10485760(10 MiB)CSV / JSON 导入文件的上限
TM_OCR_MAX_BYTES10485760(10 MiB)截图扫描图片的上限(≤ 0 时回退到附件上限)

随附的 nginx 允许 client_max_body_size 20m。若将任一上限提高到 20 MiB 以上,nginx 的该值(以及上游反向代理的限制)也要一并调高。

AI —— 截图扫描与交易教练

这些变量仅作为默认值:一旦在设置 → AI 中保存过设置,数据库中的值优先。密钥只保存在 服务端,不会下发到浏览器。详见 AI 功能。

变量默认值用途
TM_OCR_ENABLEDfalse开启截图成交提取
TM_OCR_VISION_BASE_URLhttps://api.openai.com/v1视觉模型的 OpenAI 兼容端点
TM_OCR_VISION_API_KEY(空)视觉 API 密钥
TM_OCR_VISION_MODELgpt-4o-mini视觉模型
TM_OCR_VISION_TIMEOUT_SEC90视觉请求超时(秒)
TM_COACH_ENABLEDfalse开启 AI 交易教练
TM_COACH_BASE_URLhttps://api.openai.com/v1教练的 OpenAI 兼容端点
TM_COACH_API_KEY(空)教练 API 密钥
TM_COACH_MODELgpt-4o-mini教练模型

行情数据

变量默认值用途
TM_MARKET_DATA_ENABLEDtrue启用行情数据服务
TM_MARKET_DATA_PROVIDERyahoo数据源名称
TM_MARKET_DATA_API_KEY(空)数据源 API 密钥(如需要)
TM_ECON_CALENDAR_ENABLEDtrue启用财经事件日历数据源
TM_ECON_CALENDAR_FEED_URL(内置)覆盖事件数据源 URL
TM_ECON_CALENDAR_REFRESH_MIN60数据源刷新间隔(分钟)

分享与后台任务

变量默认值用途
TM_SHARE_LINKS_ENABLEDfalse开启公开分享页。默认关闭 —— 分享链接会让日志的一部分无需登录即可访问
TM_PUBLIC_WEB_URL(空)生成分享链接时使用的公开 Web 应用地址。若 API 与 Web 同源部署(自带 nginx),留空即可
TM_JOBS_ENABLEDtrue后台任务总开关。多副本部署时只在一个实例上开启
TM_JOB_EXCURSION_INTERVAL_MIN360MAE/MFE 回填间隔(分钟,0 为禁用)
TM_JOB_EXCURSION_LIMIT10每次回填处理的交易数(0 为禁用)
TM_JOB_FLEX_SYNC_INTERVAL_MIN360IBKR Flex 自动同步间隔(分钟,0 为禁用)
TM_JOB_ALERTS_INTERVAL_MIN60警报规则评估间隔(分钟,0 为禁用)
TM_JOB_WEEKLY_REVIEW_INTERVAL_MIN60每周回顾的检查间隔(分钟);回顾本身每周只发一次,于市场时区周六 09:00(0 为禁用)
TM_WEEKLY_REVIEW_NOW(未设置)仅供测试:把每周回顾的时钟固定为 RFC 3339 时间(例如 2026-10-03T09:00:00-04:00),并于 5 秒后执行首次检查
TM_BACKUP_ENABLEDtrueSQLite 定时快照(见备份与恢复)。TM_JOBS_ENABLED=false 时同样关闭;设置 → 关于中的“立即备份”始终可用
TM_BACKUP_DIR<dbDir>/backups快照目录(Docker:/data/backups)
TM_BACKUP_KEEP14保留的快照数量;每次成功后删除更早的快照
TM_BACKUP_INTERVAL_MIN1440快照间隔(分钟,0 为禁用定时任务)
TM_ALERTS_ALLOW_PRIVATE_WEBHOOKSfalse允许警报 Webhook 指向内网 / 回环地址(SSRF 防护 —— 仅当接收端在你的局域网内时开启)

Web 构建期变量

SPA 是静态的 —— 以下变量在构建时打包进产物,服务端不会读取:

变量用途
VITE_API固定的 API 基址(如 https://api.example.com/api/v1),编译进构建产物。留空则使用相对路径 /api/v1,或由用户在登录时填写 Server 字段

仅 Compose 使用的变量

由 docker compose 从根目录 .env 读取,不会传入容器:

变量默认值用途
DOCKERHUB_USERNAMEsinhong2011tradermemos-api / tradermemos-web 镜像所在的 Docker Hub 命名空间
TM_IMAGE_TAGlatest镜像标签 —— 生产环境建议锁定具体版本,如 0.15.0

本页内容