主题
Alibaba ECS Chengdu — 服务器全貌
IP: 39.106.170.204OS: Alibaba Cloud Linux 3 Region: Chengdu, China(GFW 内) SSH: ssh -i ~/.ssh/alibaba-ecs root@39.106.170.204用户主目录: /home/twilight/
运行中的容器(2026-05-15)
Stack 1 — warehouse stack
目录: /home/twilight/twilight/compose: /home/twilight/twilight/source/deploy/compose.ymlenv: /home/twilight/twilight/.env
| 容器 | 镜像 | 内部端口 | 公开地址 | 功能 |
|---|---|---|---|---|
twilight-data | ghcr.io/lacatfly/twilight-drive:<TWILIGHT_VERSION> | 127.0.0.1:8081 | api.fsagent.cc | Python FastAPI — DuckDB 数据仓库、bearer auth、warehouse 路由 |
twilight-mcp-tushare | ghcr.io/lacatfly/twilight-mcp-tushare:<ver> | 127.0.0.1:9100 | mcp.fsagent.cc | FastMCP Tushare server — Hermes agent 实时数据源 |
Stack 2 — app stack(SaaS 用户端)
目录: /home/twilight/twilight-app/compose: /home/twilight/twilight-app/compose.ymlenv: /home/twilight/twilight-app/.env
| 容器 | 镜像 | 内部端口 | 公开地址 | 功能 |
|---|---|---|---|---|
twilight-app-backend | ghcr.io/lacatfly/twilight-drive-backend:<ver> | 172.19.0.3:4000(内网) | 无直接公开,frontend 代理 | NestJS — 用户认证、订单、微信支付、provisioning |
twilight-app-frontend | ghcr.io/lacatfly/twilight-drive-frontend:<ver> | 127.0.0.1:8082 | app.fsagent.cc | React + nginx — 用户 SaaS 前端 |
twilight-postgres | postgres:16-alpine | 内网 5432 | 无 | 用户/订单/subscription 数据 |
Cloudflare Tunnel
Tunnel UUID: ec125552-c972-435f-a38d-e5ae1aeb983bTunnel 名: twilight-dataConfig: /home/twilight/.cloudflared/twilight-config.ymlCredentials: /home/twilight/.cloudflared/twilight-data-ec125552-*.json
api.fsagent.cc → http://127.0.0.1:8081 (warehouse FastAPI)
app.fsagent.cc → http://127.0.0.1:8082 (React SaaS 前端)
mcp.fsagent.cc → http://127.0.0.1:9100 (MCP Tushare)cloudflared 以 twilight 用户运行。
MCP Tushare 端点
正确端点:
GET /sse— SSE 连接入口(200 OK)POST /messages/?session_id=<id>— 消息传递(202 Accepted)
错误端点(404):
/mcp、/— 不存在,不要用
日志确认每 ~3 分钟有 ListToolsRequest,说明至少一个 Hermes agent 在正常调用。
twilight-app-backend 路由表(NestJS)
POST /auth/email/login # 邮箱 OTP 发送
GET /auth/email/consume # OTP 验证/消费
GET /me/profile # 当前用户信息
GET /plans # 套餐目录
POST /orders # 创建订单
GET /orders/:id/status # 订单状态查询
POST /payments/wechat/qrcode # 微信支付二维码生成
POST /payments/wechat/webhook # 微信支付回调(notify URL)
POST /payments/wechat/dev-mock-paid # 开发环境模拟支付成功
GET /subscriptions/current # 当前用户订阅状态
GET /services/status # Hermes 服务运行状态
POST /provisioning/retry-failed # 重试失败的 provisioning 任务微信支付 notify URL: https://app.fsagent.cc/payments/wechat/webhook
目录结构
/home/twilight/
├── .cloudflared/ # cloudflared tunnel 凭证 + config
│ ├── twilight-config.yml
│ └── twilight-data-<uuid>.json
├── .ssh/ # SSH keys
├── data -> twilight/data # symlink
├── hermes-profiles/ # Hermes profile 容器数据
├── twilight/ # warehouse stack
│ ├── .env # TWILIGHT_VERSION, NEWAPI_BASE_URL 等
│ ├── data/ # DuckDB 数据库文件
│ ├── logs/
│ ├── source/ # 代码(git clone)
│ │ └── deploy/compose.yml
│ └── build-v0.4.0-w2/ # 某次构建产物
└── twilight-app/ # app stack
├── .env # WeChat Pay / SMTP / JWT 等
├── compose.yml
└── pgdata/ # Postgres 数据目录关键环境变量(warehouse .env,敏感值省略)
bash
TWILIGHT_VERSION=v0.4.0-w2-qa-fix
WAREHOUSE_DB_PATH=/data/warehouse.duckdb
BEARER_DB_PATH=/data/bearers.sqlite
DUCKDB_PATH=/data/cache.duckdb
TWILIGHT_ALLOWED_HOSTS=api.fsagent.cc,localhost,127.0.0.1
LISTEN_HOST=0.0.0.0
LISTEN_PORT=8080
NEWAPI_BASE_URL=https://llm.fsagent.cc/v1
NEWAPI_API_KEY=<keychain: newapi-token-twilight-drive>关键环境变量(app .env,敏感值省略)
bash
PORT=4000
WECHAT_APP_ID=wx80a5d5278a90e8f8
WECHAT_OAUTH_ENABLED=false
WECHAT_PAY_APPID=wx80a5d5278a90e8f8
WECHAT_PAY_MCHID=1112368105
WECHAT_PAY_ENABLED=true
WECHAT_PAY_NOTIFY_URL=https://app.fsagent.cc/payments/wechat/webhook
EMAIL_DELIVERY_MODE=smtp
SMTP_HOST=smtp.qq.com
SMTP_PORT=465GFW 约束
| 服务 | 状态 |
|---|---|
Tushare (api.tushare.pro) | ✅ 可直连(国内 API) |
| Cloudflare tunnel | ✅ 可用(CF 在国内有边缘节点) |
ghcr.io image pull | ⚠️ 不稳定,需要 proxy 或 docker load |
| OpenAI / Anthropic | ❌ blocked — 通过 llm.fsagent.cc(Vultr Japan NewAPI gateway)绕行 |
| GitHub | ⚠️ 间歇可用 |
注意事项
twilight-app-backend无 healthcheck,重启后需手动确认docker logs是否Nest application successfully startedtwilight-app-backend不暴露端口到宿主机,只在twilight-app_defaultdocker 网络内(172.19.0.x)。frontend nginx 容器通过 container name 代理请求deploy用户尚未创建(ECS auto-deploy pipeline 前置条件)- cloudflared 无 SSH ingress 配置(
ssh-ecs.fsagent.cc尚未设置) build-v0.4.0-w2/是手动构建残留,可以清理