Files
banban/docs/architecture/07-deployment.md
2026-07-07 16:58:05 +08:00

1.9 KiB

Deployment

Public Deployment Shape

flowchart TD
  User["WeChat mini-program user"]
  Domain["banban.api.talkingq.com"]
  Nginx["Nginx container\nTLS + reverse proxy + static verify files"]
  FastAPI["talkingq-url FastAPI process\n/home/ubuntu/banban-backend"]
  MySQL["1Panel MySQL container\nMySQL 8.x"]
  MQTT["Configured MQTT broker"]
  COS["Tencent COS"]
  Certbot["certbot container\nLet's Encrypt renewals"]

  User -->|HTTPS| Domain --> Nginx --> FastAPI
  FastAPI --> MySQL
  FastAPI --> MQTT
  FastAPI --> COS
  Certbot --> Nginx

Startup Responsibilities

sequenceDiagram
  autonumber
  participant Proc as FastAPI process
  participant Init as init_db
  participant Scheduler as TaskScheduler
  participant MQTT as TalkingQMQTTService
  participant Roles as role_manager
  participant Firmware as firmware_scanner

  Proc->>Init: initialize and migrate database tables
  Proc->>Scheduler: start periodic tasks
  Proc->>MQTT: connect to configured broker
  Proc->>Roles: initialize role definitions
  Proc->>Firmware: scan firmware files
  Proc-->>Proc: serve API routes and assets

Deployment Notes

  • The mini-program production API base should resolve to https://banban.api.talkingq.com.
  • WeChat legal domains must include the API host and any audio/COS download domains used by mediaUrl.
  • MySQL table shape should be checked against the live database before direct data work, because deployment state can drift from local schema files.
  • Device identity data should normally enter through device_imei_mapping; device_auth is activated by device bootstrap unless a deliberate pre-activation path is required.

Source Anchors

  • Docker/Nginx assets: talkingq-url/docker-compose.yml, talkingq-url/nginx.conf
  • Runtime startup: talkingq-url/main.py
  • Database initialization: talkingq-url/database/init_db.py
  • Mini-program API config: banban-mini/config/prod.js, banban-mini/src/config/env.ts