如何用 config.toml 配置 SpacetimeDB Standalone 的日志级别、提交日志与 JWT 签名密钥
如何用 config.toml 配置 SpacetimeDB Standalone 的日志级别、提交日志与 JWT 签名密钥【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB用spacetime start启动的本地 Standalone 数据库实例其运行行为可以通过数据库数据目录下的config.toml来调整。这篇文章解决一个具体任务在已安装 SpacetimeDB CLI 的环境中通过修改config.toml设置三组配置——日志级别[logs]、本地持久化的提交日志行为[commitlog]、以及数据库签发身份令牌所用的 JWT 签名密钥[certificate-authority]——然后重启实例并验证配置生效。适用对象是运行 Standalone 版本做本地开发或自托管的开发者前提是已安装spacetimeCLI 并能执行spacetime start。配置参考文档是 Standalone Configuration密钥生成与轮换流程可参考 Azure Self-Hosted VMs Key Rotation。先找到 config.toml 的位置配置文件位于{data-dir}/config.toml{data-dir}是数据库的数据目录。运行spacetime start时启动输出会直接打印这个目录文档示例示例结果spacetimedb-standalone version: 1.0.0 spacetimedb-standalone path: /home/user/.local/share/spacetime/bin/1.0.0/spacetimedb-standalone database running in data directory /home/user/.local/share/spacetime/data各平台的数据目录默认位置Linux / macOS~/.local/share/spacetime/dataWindows%LOCALAPPDATA%\SpacetimeDB\data修改配置后需要重启spacetime start进程才能生效Standalone 模式默认在前台运行。如果数据目录中还没有config.toml首次启动会写入一份内置的默认模板即仓库中的 crates/standalone/config.toml可以打开它对照各节注释进行修改。配置日志级别[logs][logs]表控制服务器日志的输出量文档给出的完整示例[logs] level error directives [ spacetimedbwarn, spacetimedb_standaloneinfo, ]level可取error、warn、info、debug、trace、off不区分大小写。语义是“只输出该级别及以上的消息”例如设为warn时只会记录error和warn级别的日志。directives是一组过滤指令可以覆盖全局level按 tracing-subscriber 的 EnvFilter directives 语法书写用目标级别的格式按模块单独控制日志量例如上面的配置中spacetimedb模块按warn过滤、spacetimedb_standalone模块按info过滤。需要留意文档中的原话限制directives主要设计为调试工具日志消息的字段和 target不视为稳定接口升级后可能需要重新核对指令内容。配置提交日志[commitlog][commitlog]表配置本地持久化local durability。文档明确说明这些设置属于进阶项可能影响恢复行为、磁盘占用、内存占用和写吞吐省略的字段会使用服务器内置默认值所以只调整你关心的字段即可。示例数值取自文档[commitlog] log-format-version 1 max-segment-size 1073741824 # 1GiB offset-index-interval-bytes 4096 offset-index-require-segment-fsync true preallocate-segments false write-buffer-size 131072 # 128KiB各字段含义以文档为准字段含义与限制log-format-version支持的最大 commitlog 格式版本写入时也使用它。文档特别提示正常情况下不应改动该值改动的理由是让服务器接受一份更旧的、不兼容的 commitlog。max-segment-sizecommitlog 分段允许增长到的最大字节数。offset-index-interval-bytes每写入多少字节后向 offset index 追加一条索引条目。offset-index-require-segment-fsynctrue时要求分段先同步到磁盘后才追加索引条目false时即使 commitlog 未同步也会按offset-index-interval-bytes更新索引意味着崩溃后索引中可能包含并不存在的条目。两种取值下 commitlog 都能正确工作但选择会影响性能。preallocate-segmentstrue时为分段预分配磁盘空间直至max-segment-size仅在 commitlog 的 fallocate 支持启用时有效。write-buffer-size提交数据刷入存储前的内存缓冲区字节数。配置 JWT 签名密钥[certificate-authority][certificate-authority]表配置数据库用于签发身份令牌的一对公钥/私钥[certificate-authority] jwt-priv-key-path /path/to/id_ecdsa jwt-pub-key-path /path/to/id_ecdsa.pub上面的路径是占位写法需替换为你实际存放密钥的文件绝对路径。crates/standalone/config.toml 中同样给出了注释形式的示例使用~/.config/spacetime/id_ecdsa私钥与~/.config/spacetime/id_ecdsa.pub公钥取消注释并改成你的路径即可。生成兼容密钥对的规范命令在 Key Rotation 指南 中SpacetimeDB 用 EC 密钥对ES256P-256给本地身份令牌签名用 OpenSSL 生成mkdir -p ./.generated/spacetimedb-keys openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out ./.generated/spacetimedb-keys/id_ecdsa openssl pkey -in ./.generated/spacetimedb-keys/id_ecdsa -pubout -out ./.generated/spacetimedb-keys/id_ecdsa.pub chmod 600 ./.generated/spacetimedb-keys/id_ecdsa chmod 644 ./.generated/spacetimedb-keys/id_ecdsa.pub生成后把config.toml中的两个路径指向这两个文件。关于密钥加载文档给出的硬性约束密钥在服务器启动时加载没有热重载更换密钥后必须重启spacetime start进程。本地签发的令牌只用一个当前生效的公钥来验证轮换密钥会使旧私钥签发的令牌失效。密钥路径也可以不走config.toml而是用--jwt-priv-key-path/--jwt-pub-key-path启动参数传入config.toml与启动参数是同一份配置的两种来源。若两者都没提供启动会失败并提示缺少--jwt-{pub,priv}-key-path。验证配置是否生效按下面的顺序核对每一步都对应文档中明确描述的行为确认配置的是对的文件重新运行spacetime start观察启动输出中database running in data directory ...一行打印的目录确认你编辑的正是该目录下的config.toml。日志级别观察前台输出Standalone 模式在前台运行。按level的语义设为error后应只剩error及以上日志如果你用directives单独放开了某个模块如spacetimedbdebug该模块的debug日志应恢复出现。JWT 密钥重启后对数据库执行一次spacetime publish再检查日志中指南给出的标记关键字docker compose -f ./.generated/docker-compose.yaml logs --no-color --tail200 spacetimedb | rg PUBLISH_SUCCESS|PUBLISH_FAILED|InvalidSignature|not authorized该命令来自 Docker 自托管场景非容器部署下用spacetime start的前台输出或你的日志查看方式对照相同的关键字判断出现PUBLISH_SUCCESS表示发布链路正常InvalidSignature或not authorized对应令牌签名无效或身份不属于数据库所有者这两种失败模式。注意这条日志过滤命令里的 compose 文件路径属于该指南示例的目录约定非容器部署不要照抄。限制与常见坑log-format-version不要随手改文档将其标注为 cautions 级别的设置正常场景保持默认只有要接受旧的、不兼容的 commitlog 时才需要动它。offset-index-require-segment-fsync的取舍设为false换写性能代价是崩溃后 offset index 可能包含不存在的条目设为true时索引条目可能比严格的间隔更少。两者下 commitlog 行为都正确属性能与恢复行为的权衡。preallocate-segments依赖 fallocate 支持在未启用 fallocate 的环境里该设置没有效果文档没有说明启用条件若不确定就先保持默认。改配置必须重启日志、commitlog、密钥都不支持热更新同一份指南里的module-http.enabled等设置同样要求重启服务器。directives不稳定日志字段与 target 不承诺兼容版本升级后建议重新核对指令是否仍然命中目标模块。下一步如果需要系统化的自托管部署Docker 部署、密钥轮换、发布验证的完整脚本继续看 Key Rotation 指南 中的 Mode A / Mode B 两种部署模式只想跑通本地开发流程的话从 Getting Started 的spacetime start出发再按需回来调整本文的三组配置。【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

TCAN4550:汽车电子系统级可靠性设计核心SBC

TCAN4550:汽车电子系统级可靠性设计核心SBC

1. 这颗芯片不是“CAN收发器”,而是汽车电子架构里真正能扛事的“系统管家” 如果你在查资料时搜到“TCAN4550RGYRQ1”,第一反应可能是“又一个CAN收发器”——毕竟TI官网首页把它放在“CAN收发器”分类下,很多工程师扫一眼就划过去了。但实打…

2026/9/13 17:02:59 阅读更多 →
TigerBeetle 货币兑换(Currency Exchange)实战:基于 ledger 与 linked 转账的多币种建模方案

TigerBeetle 货币兑换(Currency Exchange)实战:基于 ledger 与 linked 转账的多币种建模方案

TigerBeetle 货币兑换(Currency Exchange)实战:基于 ledger 与 linked 转账的多币种建模方案 【免费下载链接】tigerbeetle The financial transactions database designed for mission critical safety and performance. 项目地址: https:…

2026/9/13 17:02:59 阅读更多 →
OpenAPI Generator Swift 5 客户端如何实现 Bearer Token 认证?

OpenAPI Generator Swift 5 客户端如何实现 Bearer Token 认证?

OpenAPI Generator Swift 5 客户端如何实现 Bearer Token 认证? 【免费下载链接】openapi-generator OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an Open…

2026/9/13 17:02:59 阅读更多 →

最新新闻

Nx AI 集成指南:用 MCP 与工作区智能让你的 AI 助手理解整个 Monorepo

Nx AI 集成指南:用 MCP 与工作区智能让你的 AI 助手理解整个 Monorepo

Nx AI 集成指南:用 MCP 与工作区智能让你的 AI 助手理解整个 Monorepo 【免费下载链接】nx The Monorepo Platform that amplifies both developers and AI agents. Nx optimizes your builds, scales your CI, and fixes failed PRs automatically. Ship in half t…

2026/9/13 18:39:43 阅读更多 →
MaaAssistantArknights 基建换班深度解析:常规模式调度算法、跨设施组合与自定义排班协议

MaaAssistantArknights 基建换班深度解析:常规模式调度算法、跨设施组合与自定义排班协议

MaaAssistantArknights 基建换班深度解析:常规模式调度算法、跨设施组合与自定义排班协议 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all…

2026/9/13 18:39:43 阅读更多 →
一个文件跑完整套后端:PocketBase 从零到上线的实战指南

一个文件跑完整套后端:PocketBase 从零到上线的实战指南

一个文件跑完整套后端:PocketBase 从零到上线的实战指南 【免费下载链接】pocketbase Open Source realtime backend in 1 file 项目地址: https://gitcode.com/GitHub_Trending/po/pocketbase 是不是每次搭后台,都要先装数据库、再写鉴权、最后还…

2026/9/13 18:39:43 阅读更多 →
Anthropic-Cybersecurity-Skills 实战指南:AWS S3 数据外泄检测的 CloudTrail、GuardDuty 与 Athena 接口全参考

Anthropic-Cybersecurity-Skills 实战指南:AWS S3 数据外泄检测的 CloudTrail、GuardDuty 与 Athena 接口全参考

Anthropic-Cybersecurity-Skills 实战指南:AWS S3 数据外泄检测的 CloudTrail、GuardDuty 与 Athena 接口全参考 【免费下载链接】Anthropic-Cybersecurity-Skills 817 structured cybersecurity skills for AI agents Mapped to 6 frameworks: MITRE ATT&CK, …

2026/9/13 18:39:42 阅读更多 →
Iosevka 28.1.0 版本解析:Unicode 16 提案字符、西里尔文本地化形式修复与 `zero` 特性增强

Iosevka 28.1.0 版本解析:Unicode 16 提案字符、西里尔文本地化形式修复与 `zero` 特性增强

Iosevka 28.1.0 版本解析:Unicode 16 提案字符、西里尔文本地化形式修复与 zero 特性增强 【免费下载链接】Iosevka Versatile typeface for code, from code. 项目地址: https://gitcode.com/GitHub_Trending/io/Iosevka Iosevka 28.1.0 是该开源字体项目在…

2026/9/13 18:39:42 阅读更多 →
从像素到小波:6种图像融合算法Python实战

从像素到小波:6种图像融合算法Python实战

简介:面向图像处理入门者与研究者,这份Matlab源码包聚焦小波域的图像融合任务,提供6种经典融合算法的完整实现,覆盖最大值、局部能量、平均值、最小二乘估计与自适应策略等核心思路,可帮助读者对比不同系数规则对融合效…

2026/9/13 18:38:42 阅读更多 →

日新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/13 16:51:11 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/12 18:29:34 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/12 19:02:44 阅读更多 →