Files
chongming-core/config.toml
T

188 lines
6.5 KiB
TOML
Raw Normal View History

2026-07-21 15:39:47 +08:00
[default]
app.debug = false
app.description = "基于 FastAPI 的 chongming 打包脚手架"
app.name = "chongming"
app.version = "chongming"
env = "development"
prefix = "/api/v1"
upload_path = "uploads"
[zenoh]
json5_path = "./config/zenoh_config.json5"
[cache]
2026-09-21 14:03:47 +08:00
backend = "sqlite" # "sqlite"(默认,本机共享) | "redis"(跨主机)
2026-09-18 09:31:53 +08:00
# backend = "redis"
2026-09-04 14:50:34 +08:00
# path = "./cache_data/cache.db"
2026-07-21 15:39:47 +08:00
# 配置优先来源模式(同时决定 [workers.config] 与 count 在启动时的取舍):
# "toml" (默认) = 以文件为准:启动时用 config/workers/<type>/config.toml 的
# [workers.config] 与 count 覆盖写入 cache(前端读 cache,因此随之显示
# toml 值);运行期经管理接口(/admin/workers/<type>/config、/scale)
# 改的值仅本次运行有效,重启网关即被文件覆盖。
# "cache" = 以缓存为准:chongming-cache 为单一事实来源,插件初始化即读缓存值,
# 管理接口改动跨重启保持;toml 仅在 cache 缺失时引导。启动日志会提示
# toml 与 cache 的差异键(以 cache 为准);如需让 toml 改动生效,先删除
# worker:cm:configs:<type>(运行时配置)/ worker:cm:counts:<type>(副本数)
# 缓存键再重启,或改用 "toml" 模式。
2026-08-27 09:49:47 +08:00
launch_worker_count = "toml"
2026-08-17 15:16:36 +08:00
# redis 后端专用(backend = "redis" 时生效,均有默认值)
2026-09-04 14:50:34 +08:00
redis_host = "127.0.0.1"
redis_port = 6379
redis_db = 0
redis_password = ""
redis_prefix = "chongming:"
2026-08-17 15:16:36 +08:00
2026-07-21 15:39:47 +08:00
[security]
algorithm = "HS256"
secret_key = "your-secret-key-change-in-production"
2026-09-21 14:03:47 +08:00
[license]
# 机器码授权(插件白名单)。未授权插件不加载、不注册路由、管理接口禁止操作。
#
# enabled 只在**非打包态**(uv run serve / 测试)决定是否执行拒绝:打包产物
# (Nuitka/PyInstaller)恒为强制校验 —— 部署目录的 config.toml 是明文可写的,
# 若以配置开关为准,改一行就能绕过授权。
enabled = false
# 授权文件路径(相对网关工作目录)
path = "license.lic"
# 厂商公钥(base64 裸 32 字节,或 PEM)。公钥可明文放置:换公钥只会验签失败,
# 无法据以伪造授权(伪造需要厂商私钥)。构建时由 build.py 从
# CHONGMING_LICENSE_PUBKEY / license_public.key 注入。
public_key = ""
# 指纹命中阈值(N-of-M)。4 个可信来源下取 3 表示容忍单块网卡或单颗 eMMC 更换。
min_match = 3
2026-07-21 15:39:47 +08:00
[development]
debug = true
env = "development"
[development.server]
access_log = false
host = "0.0.0.0"
port = 8000
reload = true
[development.logging]
file = "logs"
format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
level = "DEBUG"
2026-08-23 04:34:05 +08:00
# access 日志采样率:0.1 = 只记录 10% 的成功请求(错误 >=400 始终全量)
# 1.0 = 全量记录;配合异步日志队列降低高吞吐下主线程开销
access_sample_rate = 0.1
2026-07-21 15:39:47 +08:00
[development.cors]
allow_credentials = true
allow_headers = ["*"]
allow_methods = ["*"]
2026-08-27 09:49:47 +08:00
# 注意:allow_credentials=true 时 allow_origins 不能为 ["*"](starlette 会丢弃该 header),
2026-09-02 11:34:30 +08:00
# 需显式列出来源;本地前端 dev 端口会变化(5173/5174/...)。
allow_origins = [
"http://localhost:5173",
"http://127.0.0.1:5173",
"http://localhost:5174",
"http://127.0.0.1:5174",
]
2026-07-21 15:39:47 +08:00
2026-07-24 16:33:23 +08:00
[development.mqtt]
enabled = true
2026-09-04 14:50:34 +08:00
# host = "0.0.0.0"
host = "127.0.0.1"
2026-07-24 16:33:23 +08:00
port = 1883
2026-08-21 09:45:47 +08:00
# 是否由网关启动内嵌 amqtt Broker 子进程:
# true (默认)= 网关自带 amqtt Broker,host/port 为 Broker 监听地址
# false = 使用外部 MQTT Broker,网关仅启动 Bridge 客户端连接
# host/port 需指向外部 Broker 地址(如 "192.168.1.10")
2026-09-18 09:31:53 +08:00
use_embedded_broker = true
# use_embedded_broker = false
2026-08-21 09:45:47 +08:00
# MQTT Broker 认证(可选,默认匿名):
# - 内嵌 Broker(use_embedded_broker=true):配置后要求所有客户端(含网关 Bridge)
# 用该账号密码连接,未配置则保持匿名
# - 外部 Broker:网关 Bridge 用该账号密码连接(broker 侧自行配置对应账号)
# 注意:密码为明文存储,生产环境建议使用外部 Broker + 环境变量注入
# username = "chongming"
# password = "change-me"
2026-07-24 16:33:23 +08:00
2026-08-07 09:39:29 +08:00
# MQTT Bridge 额外订阅主题推荐声明在各插件自己的配置里:
# config/workers/<type>/config.toml → [[workers.mqtt_topics]]
# (如 aibox_sophon_adapter 插件的 /board_ping 心跳主题)
# 全局 [<env>.mqtt].custom_topics 仍可作为通用兜底(可选,不推荐)。
2026-07-24 16:33:23 +08:00
[development.mqtt.broker]
# amqtt Broker 可选配置,默认允许匿名连接
# 详细参数参考: https://github.com/Yakifo/amqtt
2026-07-21 15:39:47 +08:00
[plugins_worker]
config_path = "./config/workers/config.toml"
[pyinstaller_build_import]
base = [
2026-09-21 14:03:47 +08:00
"utils", # public 骨架
2026-07-21 15:39:47 +08:00
"utils.launch",
"utils.config",
"zenoh",
"chongming_worker",
2026-08-25 09:29:27 +08:00
"chongming_worker.contracts",
"chongming_worker.route_config",
"chongming_worker.routes_publisher",
2026-07-21 15:39:47 +08:00
"chongming_request",
2026-09-14 10:34:22 +08:00
"chongming_auth",
2026-09-21 14:03:47 +08:00
"chongming_license", # 机器码授权(指纹采集/验签/判定)
"cryptography", # Ed25519 验签
"cryptography.hazmat.primitives.asymmetric.ed25519",
2026-07-21 15:39:47 +08:00
"server",
2026-09-21 14:03:47 +08:00
"module_bank", # 模块化打包工具
2026-07-21 15:39:47 +08:00
"sqlite_vfs",
"sqlite_vfs.core",
2026-09-14 10:34:22 +08:00
"sqlite_vfs.contrib",
"sqlite_vfs.contrib.fastapi_static",
2026-09-21 14:03:47 +08:00
"fastapi", # web 应用依赖
2026-07-21 15:39:47 +08:00
"fastapi.staticfiles",
"fastapi.middleware.cors",
2026-08-25 09:29:27 +08:00
"fastapi.middleware.gzip",
2026-07-21 15:39:47 +08:00
"uvicorn",
2026-08-17 15:16:36 +08:00
"chongming_cache",
"chongming_cache.backends",
2026-09-04 14:50:34 +08:00
"chongming_cache.backends.sqlite_",
2026-07-21 15:39:47 +08:00
"orjson",
"python_multipart",
2026-07-23 17:29:26 +08:00
"volcenginesdkarkruntime",
"chongming_jwt",
2026-07-24 18:53:36 +08:00
"chongming_database",
"chongming_config",
"chongming_password",
2026-07-31 16:52:50 +08:00
"chongming_stream_manager",
2026-08-07 14:28:03 +08:00
"chongming_mqtt",
"chongming_mqtt.mqtt_forward",
"chongming_mqtt.mqtt_subscribe",
"chongming_mqtt.internal_mqtt",
2026-07-23 17:29:26 +08:00
"aiosqlite",
"asyncpg",
2026-08-05 14:20:04 +08:00
"aiofiles.os",
2026-07-23 17:29:26 +08:00
"sqlmodel",
2026-07-31 16:52:50 +08:00
"amqtt",
"bytedance",
"bytedance.volcengine_aicc_sdk",
"bytedance.volcengine_aicc_sdk.secure_http_client",
"aiofiles",
"openai",
2026-07-21 15:39:47 +08:00
]
2026-09-21 14:03:47 +08:00
linux = ["gunicorn.glogging", "gunicorn.app", "gunicorn.app.wsgiapp"]
2026-07-21 15:39:47 +08:00
windows = []
[production.module_system]
path = [
2026-09-21 14:03:47 +08:00
[
"resources/app.mbank",
"src/chongming/app",
"app",
],
[
"resources/plugins.mbank",
"src/plugins",
"plugins",
],
2026-07-21 15:39:47 +08:00
]
2026-08-27 10:13:03 +08:00
type = "module-bank"