新闻详情

新闻详情

首页 / 资讯中心 / 详情

Novu自托管如何配置JWT_SECRET、STORE_ENCRYPTION_KEY等关键密钥

发布时间:2026/9/11 5:04:07来源:尧图网络
Novu自托管如何配置JWT_SECRET、STORE_ENCRYPTION_KEY等关键密钥
Novu自托管如何配置JWT_SECRET、STORE_ENCRYPTION_KEY等关键密钥【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu用 Docker Compose 自托管 Novu 时.env.example模板顶部的注释写得很直接YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION上生产前必须更换密钥。这篇文档讲的就是三件事Novu 需要哪些密钥、每个密钥用在哪、以及如何在启动前把它们正确配置好。适用环境是 Docker docker-compose v2且系统里装有curl和openssl。需要配置哪些密钥Novu 自托管部署中有三个必填的安全密钥全部写入部署目录下的.env文件变量用途要求JWT_SECRETAPI 用它生成 JWT 认证令牌WebSocket 服务也用它校验必须先生成密码学随机值STORE_ENCRYPTION_KEY用于加密/解密各通知渠道provider的凭据必须恰好 32 个字符NOVU_SECRET_KEY服务端 API 的密钥SDK 调用接口时作为Authorization: ApiKey使用必须先生成密码学随机值.env.example中还列出了这些变量的生成示例JWT_SECRET和NOVU_SECRET_KEY用openssl rand -hex 32生成STORE_ENCRYPTION_KEY用openssl rand -hex 16生成16 字节十六进制输出正好是 32 个字符满足长度要求。除了密钥本身官方部署文档 的 Required Variables 列表还包含HOST_NAME本机运行时设为http://localhost部署到 VPS 时设为服务器 IP 或域名。REDIS_CACHE_SERVICE_HOST和REDIS_HOST在小规模部署中可以用同一个值较大部署建议用独立的 Redis 实例分别承载缓存和队列。主路径用 setup 脚本自动生成密钥最省事的方式是运行仓库里的 setup.sh文档给出的入口命令脚本内容与本仓库docker/community/setup.sh一致curl -fsSL https://raw.githubusercontent.com/novuhq/novu/next/docker/community/setup.sh | bash要安装到指定目录例如~/novu设置NOVU_DIRcurl -fsSL https://raw.githubusercontent.com/novuhq/novu/next/docker/community/setup.sh | NOVU_DIR~/novu bash执行前需要了解脚本会做的事检查curl、docker、openssl、docker compose是否存在缺任何一个都会直接报错退出下载docker-compose.yml和.env.example到目标目录默认为./novu用openssl rand -hex生成三个密钥的随机值从模板创建.env并填入执行chmod 600 .env把文件权限收紧为仅属主可读写运行docker compose up -d启动全部服务。如果目标目录已经存在.env文件脚本只会检查JWT_SECRET、STORE_ENCRYPTION_KEY、NOVU_SECRET_KEY三项仅当值为空时才补上随机值不会覆盖你已有的其他配置。也就是说已经改过.env的实例可以安全地重跑脚本。手动路径自己生成并填写密钥如果你的docker-compose.yml和.env.example是手动克隆仓库获取的需要在上生产前自己生成密钥。文档给出的方法是# JWT_SECRET64 位十六进制字符串 openssl rand -hex 32 # STORE_ENCRYPTION_KEY32 个字符 openssl rand -hex 16 # NOVU_SECRET_KEY64 位十六进制字符串 openssl rand -hex 32把输出分别填进.env对应行JWT_SECRET上面 openssl rand -hex 32 的输出 STORE_ENCRYPTION_KEY上面 openssl rand -hex 16 的输出 NOVU_SECRET_KEY上面 openssl rand -hex 32 的输出这里...需要替换为你本机openssl命令的实际输出占位符不是可直接执行的内容。填写完成后按文档启动docker compose up -d密钥是如何分发到各服务的查看 docker-compose.yml 可以看到三个密钥的注入位置这也是为什么它们必须在同一个.env里配好api服务接收JWT_SECRET、STORE_ENCRYPTION_KEY、NOVU_SECRET_KEYworker服务接收STORE_ENCRYPTION_KEYworker 要解密数据库里已保存的 provider 凭据才能发送通知所以必须和 API 用同一个值ws服务接收JWT_SECRET必须和 API 的值一致否则 WebSocket 端无法通过 API 签发的 JWT 校验。在仓库的源码运行模式下run-in-local-machine.mdx 对环境变量也有同样的约束Worker 的STORE_ENCRYPTION_KEYMust match the API valueWebSocket 的JWT_SECRETMust match the API value。Compose 文件里这些变量都来自同一个.env天然保持一致手动多实例部署时这一点需要自己保证。另外部署到 VPS 时记得同步更新HOST_NAME# 将 vps-ip-address 替换为你的服务器 IP HOST_NAMEhttp://vps-ip-address验证密钥配置是否生效文档给出的验证方式是启动后直接访问本机部署访问http://localhost:4000VPS 部署访问http://vps-ip-address:4000能打开 Dashboard 登录页说明各服务已经拉起用docker compose logs -f跟踪服务日志确认没有因环境变量缺失导致的启动报错docker-compose.yml中每个服务都配置了 healthcheckAPI、worker、ws 均探测各自的/v1/health-checkhealthcheck 通过是容器进入 healthy 状态的判定依据。NOVU_SECRET_KEY配置是否正确的实际检验发生在下一步用它初始化 Server SDKNode.js 为novu/api并触发一个事件API 会以Authorization: ApiKey NOVU_SECRET_KEY鉴权文档的 cURL 示例即展示了该请求形式。限制与注意STORE_ENCRYPTION_KEY长度必须恰好是 32 个字符这是.env.example注释和部署文档同时强调的硬性要求自行构造时不要用随意短字符串。setup.sh会执行docker compose up -d并修改目标目录下载两个文件、创建.env、设置 600 权限。在已有部署的目录重跑前确认脚本只补空值这一行为符合你的预期。部署文档提醒默认 compose 配置把数据库放在同一台机器、存储用 localstack 而非 S3并强烈建议在部署前把数据库解耦——这属于密钥之外的生产化建议。如果之后更换了STORE_ENCRYPTION_KEY的值worker/API 解密的仍是同一套数据库中的 provider 凭据文档没有描述换 key 后存量凭据的处理方式因此换 key 这类操作前请自行确认部署中是否已有加密数据。【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

scrcpy投屏导致Android设备黑屏?DMA-BUF泄漏根因与修复方案 2026/9/11 5:49:13

scrcpy投屏导致Android设备黑屏?DMA-BUF泄漏根因与修复方案

1. 故障现场:稳定复现的黑屏卡死,为什么方向一开始就走偏了先描述一下现场环境。产线上有一台 Android 工位机,主控是 Rockchip RK3399 平台,系统基于 Android 9 定制,跑一个射频测试的工装 App。工位机平时不接屏幕&a…

阅读更多 →
域控制器测试接插件选型实战:从信号分类到台架搭建 2026/9/11 5:49:13

域控制器测试接插件选型实战:从信号分类到台架搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Eigent 本地模型部署实战:3 步接入 5 种本地推理平台的完整指南 2026/9/11 5:49:13

Eigent 本地模型部署实战:3 步接入 5 种本地推理平台的完整指南

Eigent 本地模型部署实战:3 步接入 5 种本地推理平台的完整指南 【免费下载链接】eigent Eigent: The Open Source Cowork Desktop - Local and Free Alternative to Claude Cowork and Codex 项目地址: https://gitcode.com/GitHub_Trending/ei/eigent Eige…

阅读更多 →
Spring Cloud Data Flow:构建高效数据管道的实践指南 2026/9/11 5:49:13

Spring Cloud Data Flow:构建高效数据管道的实践指南

1. Spring Cloud Data Flow 概述Spring Cloud Data Flow(简称SCDF)是一款用于构建数据集成和实时数据处理管道的开源工具。它基于Spring Boot和Spring Cloud生态系统,为开发人员提供了编排数据流和批处理作业的能力。我在实际项目中使用SCDF已…

阅读更多 →
asyncpg深度解析:Python异步PostgreSQL高性能驱动与连接池实战 2026/9/11 5:49:13

asyncpg深度解析:Python异步PostgreSQL高性能驱动与连接池实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
超透镜技术:原理、设计与应用全解析 2026/9/11 5:46:13

超透镜技术:原理、设计与应用全解析

1. 超透镜技术概述超透镜(Metalens)是近年来光学领域最具颠覆性的技术突破之一。与传统透镜依赖曲面折射的原理不同,超透镜通过在平面基底上排布亚波长尺度的纳米结构(通常称为"超表面"),实现对光…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞