自托管
配置參考
API 讀取的全部 TM_* 環境變量,含默認值與作用說明。
服務端的所有配置都通過帶 TM_ 前綴的環境變量完成。可以在 shell、Compose 的
environment:,或本地開發用的 api/.env 中設置。修改後需重啓 API 生效。
| 變量 | 默認值 | 用途 |
|---|
TM_HTTP_PORT | 8080 | API 監聽端口。僅當 TM_HTTP_PORT 未設置時,纔會採用 PORT(Railway/Heroku 風格) |
TM_DATABASE_URL | (未設置 → SQLite) | 統一數據庫連接串 —— sqlite:///data/tradermemos.db 或 postgres://user:pass@host:5432/db?sslmode=require。設置爲空字符串會導致啓動報錯 |
TM_DB_PATH | data/tradermemos.db | 舊版 SQLite 路徑,僅在 TM_DATABASE_URL 未設置時生效 |
TM_ATTACH_DIR | (自動推導) | 附件 / 媒體文件的磁盤根目錄。SQLite 默認爲 <數據庫目錄>/attachments,Postgres 默認爲 data/attachments —— Postgres 建議顯式設置 |
TM_DEFAULT_CURRENCY | USD | 賬戶默認貨幣 |
TM_LOG_LEVEL | info | 日誌級別(debug、info、warn、error) |
| 變量 | 默認值 | 用途 |
|---|
TM_JWT_SECRET | dev-insecure-change-me | JWT 簽名密鑰,至少 32 個字符。檢測到已知弱密鑰時服務端會拒絕啓動,除非設置 TM_ALLOW_INSECURE_JWT=true。生成方式:openssl rand -hex 32 |
TM_ALLOW_INSECURE_JWT | false(隨附的 Compose 爲方便首次運行設爲 true) | 允許使用弱 / 過短的 JWT 密鑰。公網主機上切勿開啓 |
TM_ALLOW_REGISTRATION | false | 初始化完成後開放 POST /auth/register。默認關閉 —— 除非主動開啓,否則只存在 owner 賬戶 |
TM_CORS_ORIGINS | (空 —— 禁用 CORS) | CDN + API 分離部署時的來源白名單,逗號分隔。支持 https://*.vercel.app 之類的通配符主機。同源部署留空即可 |
| 變量 | 默認值 | 用途 |
|---|
TM_ATTACH_MAX_BYTES | 10485760(10 MiB) | 交易截圖與筆記媒體的單文件上限 |
TM_IMPORT_MAX_BYTES | 10485760(10 MiB) | CSV / JSON 導入文件的上限 |
TM_OCR_MAX_BYTES | 10485760(10 MiB) | 截圖掃描圖片的上限(≤ 0 時回退到附件上限) |
隨附的 nginx 允許 client_max_body_size 20m。若將任一上限提高到 20 MiB 以上,nginx
的該值(以及上游反向代理的限制)也要一併調高。
這些變量僅作爲默認值:一旦在設置 → AI 中保存過設置,數據庫中的值優先。密鑰只保存在
服務端,不會下發到瀏覽器。詳見 AI 功能。
| 變量 | 默認值 | 用途 |
|---|
TM_OCR_ENABLED | false | 開啓截圖成交提取 |
TM_OCR_VISION_BASE_URL | https://api.openai.com/v1 | 視覺模型的 OpenAI 兼容端點 |
TM_OCR_VISION_API_KEY | (空) | 視覺 API 密鑰 |
TM_OCR_VISION_MODEL | gpt-4o-mini | 視覺模型 |
TM_OCR_VISION_TIMEOUT_SEC | 90 | 視覺請求超時(秒) |
TM_COACH_ENABLED | false | 開啓 AI 交易教練 |
TM_COACH_BASE_URL | https://api.openai.com/v1 | 教練的 OpenAI 兼容端點 |
TM_COACH_API_KEY | (空) | 教練 API 密鑰 |
TM_COACH_MODEL | gpt-4o-mini | 教練模型 |
| 變量 | 默認值 | 用途 |
|---|
TM_MARKET_DATA_ENABLED | true | 啓用行情數據服務 |
TM_MARKET_DATA_PROVIDER | yahoo | 數據源名稱 |
TM_MARKET_DATA_API_KEY | (空) | 數據源 API 密鑰(如需要) |
TM_ECON_CALENDAR_ENABLED | true | 啓用財經事件日曆數據源 |
TM_ECON_CALENDAR_FEED_URL | (內置) | 覆蓋事件數據源 URL |
TM_ECON_CALENDAR_REFRESH_MIN | 60 | 數據源刷新間隔(分鐘) |
| 變量 | 默認值 | 用途 |
|---|
TM_SHARE_LINKS_ENABLED | false | 開啓公開分享頁。默認關閉 —— 分享鏈接會讓日誌的一部分無需登錄即可訪問 |
TM_PUBLIC_WEB_URL | (空) | 生成分享鏈接時使用的公開 Web 應用地址。若 API 與 Web 同源部署(自帶 nginx),留空即可 |
TM_JOBS_ENABLED | true | 後臺任務總開關。多副本部署時只在一個實例上開啓 |
TM_JOB_EXCURSION_INTERVAL_MIN | 360 | MAE/MFE 回填間隔(分鐘,0 爲禁用) |
TM_JOB_EXCURSION_LIMIT | 10 | 每次回填處理的交易數(0 爲禁用) |
TM_JOB_FLEX_SYNC_INTERVAL_MIN | 360 | IBKR Flex 自動同步間隔(分鐘,0 爲禁用) |
TM_JOB_ALERTS_INTERVAL_MIN | 60 | 警報規則評估間隔(分鐘,0 爲禁用) |
TM_ALERTS_ALLOW_PRIVATE_WEBHOOKS | false | 允許警報 Webhook 指向內網 / 回環地址(SSRF 防護 —— 僅當接收端在你的區域網內時開啓) |
SPA 是靜態的 —— 以下變量在構建時打包進產物,服務端不會讀取:
| 變量 | 用途 |
|---|
VITE_API | 固定的 API 基址(如 https://api.example.com/api/v1),編譯進構建產物。留空則使用相對路徑 /api/v1,或由用戶在登錄時填寫 Server 字段 |
由 docker compose 從根目錄 .env 讀取,不會傳入容器:
| 變量 | 默認值 | 用途 |
|---|
DOCKERHUB_USERNAME | sinhong2011 | tradermemos-api / tradermemos-web 鏡像所在的 Docker Hub 命名空間 |
TM_IMAGE_TAG | latest | 鏡像標籤 —— 生產環境建議鎖定具體版本,如 0.1.6 |