TraderMemos

常见问题与排查

新自托管用户真正会遇到的问题 —— 登录、CORS、端口、上传与数据。

初始化与登录

登录页提示“Could not reach API — check Server URL”

SPA 连不上 API。Docker 一体化部署:Server 字段留空(UI 使用同源 /api/v1)。 CDN + API 分离部署:将 Server 设为你的 API 源,如 https://api.example.com —— /api/v1 会自动追加。

没看到初始化向导 / 提示“setup already complete”

向导只在数据库没有任何用户时出现。已有用户就直接登录。想真正从零开始需要清空数据卷 (docker compose down -v —— 这会删除你的交易日志)。

为什么别人无法注册?

有意如此。Owner 创建后,POST /auth/register 返回 403,除非设置 TM_ALLOW_REGISTRATION=true。管理员也可以通过 CLI 添加用户: docker compose exec api /tradermemos create-user --email … --password …

密码被拒绝

密码至少需要 10 个字符

忘记密码了

没有自助重置功能(你的服务器没有邮件服务可以发送重置邮件)。使用 API 容器内的管理 CLI 重置:

docker compose exec api /tradermemos reset-password --email you@example.com --password '…'

服务端与部署

API 拒绝启动:“insecure JWT secret”

这是有意设计。请设置真正的密钥 —— TM_JWT_SECRET=$(openssl rand -hex 32) —— 或者仅限本地一次性测试时设置 TM_ALLOW_INSECURE_JWT=true(随附的 Compose 为方便首次 运行已这样设置;生产环境务必移除)。

3000(或 8080)端口被占用

修改 docker-compose.yml 中宿主机侧的端口映射(如 web 服务改为 "3001:80")。API 自身端口由 TM_HTTP_PORT 控制。

浏览器控制台出现 CORS 错误

只有分离部署(UI 与 API 不同源)才需要 CORS。在 API 上设置 TM_CORS_ORIGINS 为 SPA 的精确来源 —— 支持 https://*.vercel.app 之类的通配符。同源部署 (Docker 一体化、边缘重写)应保持留空

能把 API 跑在 Vercel 或 Cloudflare Workers 上吗?

不能 —— 它是 Go + SQLite + 文件上传,需要真实磁盘。API 请放在 Docker、VPS、NAS 或 Railway(挂数据卷)上;一键按钮只部署 Web UI。参见 Fork 并部署

我的数据到底在哪里?

Docker:tm_data 数据卷 —— /data/tradermemos.db 加上 /data/attachments。这个数据卷 就是你的日志本体;参见备份与恢复

选 SQLite 还是 Postgres?

个人实例选 SQLite(默认)—— 零额外组件,备份就是一个文件。多用户或已有数据库设施的 场景适合 Postgres(make up-postgres)。两者之间迁移:导出 ZIP,再导入即可。

功能

上传返回 413

文件超过了上限。API 各上限默认 10 MiB(TM_ATTACH_MAX_BYTESTM_IMPORT_MAX_BYTESTM_OCR_MAX_BYTES);随附 nginx 允许 20 MB。调高对应上限 —— 以及反向代理的 client_max_body_size —— 参见配置参考

同一个文件导了两次 —— 会有重复吗?

不会。成交按代码 + 方向 + 数量 + 价格 + 时间戳去重;重复部分计入已跳过。导错的批次 也可以在导入页面整批回滚。

支持列表里没有我的券商

先查看支持的券商 —— 预设覆盖了常见平台,MT4/MT5 对账单可直接导入。除此之外,任何包含代码 / 方向 / 数量 / 价格 / 日期列的 CSV 都能通过 列映射导入。常见表头会被自动识别。

截图扫描超时或报错

设置 → AI → 测试检查连通性,确认模型支持视觉;本地 / 较慢的模型请调高 TM_OCR_VISION_TIMEOUT_SEC 及代理的读取超时 (参见反向代理)。“503 not configured” 表示启用开关、基址与密钥尚未全部保存。

我的交易数据会被发送到哪里吗?

不会。一切都留在你的服务器上。所有例外都在你的掌控之中:AI 功能会调用配置的端点; 行情数据(默认开启,TM_MARKET_DATA_ENABLED)与财经日历(默认开启, TM_ECON_CALENDAR_ENABLED)会从各自数据源获取公开数据;你创建的警报通道会推送到你的 Webhook 地址或 Expo 推送;你创建的分享链接在撤销前会公开对应的统计页 (TM_SHARE_LINKS_ENABLED,默认关闭)。

还是没解决?

  • 查看 API 日志:make logs(或 docker compose logs -f api
  • curl http://localhost:3000/healthz —— 确认 API 存活并查看版本
  • 带上日志输出提交 issue

本页内容