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

本頁內容