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.dbpostgres://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日志级别(debuginfowarnerror

认证与安全

变量默认值用途
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_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.1.6

本页内容