配置参考

配置参考

M-Doc 通过 config.yaml 文件进行配置,所有配置项均支持通过环境变量覆盖。


服务器配置

server:
  mode: release      # 运行模式:debug, release, test
  addr: ":8080"      # 监听地址
  base_url: "https://your-domain.com"  # 外部访问基础 URL

base_url 用于生成 OpenAPI 清单中的文章链接,生产环境务必设置为实际域名。

HTTP 配置

http:
  load_static: false    # 是否加载前端静态文件
  static_mode: embed    # embed(嵌入二进制)或 disk(磁盘读取)
  static_dir: []        # 自定义静态文件目录

数据库配置

database:
  driver: postgresql     # 数据库驱动:postgresql, mysql, sqlite
  host: "localhost"
  port: 5432
  username: "mdoc"
  password: "password"
  dbname: "mdoc"
  charset: utf8mb4
  max_idle_conns: 10     # 最大空闲连接数
  max_open_conns: 100    # 最大打开连接数
  conn_max_lifetime: 3600  # 连接最大生命周期(秒)

SQLite(开发环境)

database:
  driver: sqlite
  dbname: "mdoc.db"

数据库迁移

migration:
  enabled: true                    # 启动时自动迁移
  dir: "."                         # 迁移文件目录
  table_name: "schema_migrations"  # 版本表名
  halt_on_failure: true            # 迁移失败是否停止启动

Redis 配置

redis:
  host: localhost
  port: 6379
  password: ""
  db: 0
  pool_size: 10
  min_idle_conns: 5

缓存配置

cache:
  driver: redis    # 缓存驱动

JWT 认证

jwt:
  secret: "your-secret-key"   # JWT 签名密钥(生产环境请使用强密钥)
  expire_hours: 168            # Token 过期时间(小时),默认 7 天

OIDC 配置

oidc:
  enabled: false
  issuer: "https://your-oidc-provider.com"
  client_id: "your-client-id"
  client_secret: "your-client-secret"
  redirect_uri: "https://your-domain.com/auth/callback"
  scopes:
    - openid
    - profile
    - email

CORS 配置

cors:
  allow_origins:
    - "https://your-domain.com"
  allow_methods:
    - "GET"
    - "POST"
    - "PUT"
    - "DELETE"
    - "OPTIONS"
  allow_headers:
    - "Origin"
    - "Content-Type"
    - "Authorization"

日志配置

log:
  level: info          # 日志级别:debug, info, warn, error
  filename: logs/app.log
  max_size: 100        # 单文件最大大小(MB)
  max_age: 30          # 日志保留天数
  max_backups: 10      # 最大备份文件数
  compress: true       # 是否压缩归档

S3 文件上传

s3:
  enabled: true
  region: "us-east-1"
  bucket: "your-bucket"
  access_key: "your-access-key"
  secret_key: "your-secret-key"
  endpoint: ""                    # S3 兼容存储的 endpoint(AWS S3 留空)
  cdn: ""                         # CDN 加速域名(可选)
  upload_path: "mdoc/uploads"     # 上传路径前缀
  max_file_size: 52428800         # 最大文件大小(字节),默认 50MB
  allowed_types:                  # 允许的 MIME 类型
    - "image/jpeg"
    - "image/png"
    - "image/gif"
    - "image/webp"
    - "image/svg+xml"
    - "application/pdf"

向量化配置

vectorize:
  enabled: false
  collection_name: article_vectors
  provider: openai
  embedding_model: text-embedding-3-small
  chunk_size: 512          # 文本分块大小
  chunk_overlap: 50        # 分块重叠大小
  batch_size: 256          # 批量处理大小
  max_retries: 3           # 最大重试次数
  base_url: "https://api.openai.com/v1/"
  api_key: "your-api-key"

文章摘要配置

summarize:
  enabled: false
  model: gpt-4o-mini
  base_url: "https://api.openai.com/v1/"
  api_key: "your-api-key"
  max_length: 200          # 摘要最大字数

向量存储配置

vectorstore:
  enabled: false
  driver: pgvector
  pgvector:
    index_type: hnsw            # hnsw 或 ivfflat
    distance_metric: cosine     # cosine, l2, inner_product

使用 pgvector 前需安装 PostgreSQL 扩展:CREATE EXTENSION IF NOT EXISTS vector;

API Key 配置

api_key:
  master_key: "change-this-to-32byte-key-now!!!"  # AES 主密钥(32 字节)
  signature:
    service: "mdoc"
    region: "us-east-1"
    time_window: 900       # 签名时间窗口(秒),默认 15 分钟

事件队列配置

event_queue:
  enabled: false
  consumer_group: "mdoc-workers"
  workers: 3
  max_retries: 3
  retry_delay: 30s
  claim_interval: 5m

环境变量覆盖

所有配置项均可通过环境变量覆盖,格式为大写加下划线:

export DATABASE_HOST=localhost
export DATABASE_PORT=5432
export JWT_SECRET=your-secret
export API_KEY_MASTER_KEY=your-32-byte-key