ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Novu 自托管 VPS 部署指南:Docker Compose 上机 + HOST_NAME 一次配通

Novu 自托管 VPS 部署指南:Docker Compose 上机 + HOST_NAME 一次配通 Novu 自托管 VPS 部署指南Docker Compose 上机 HOST_NAME 一次配通【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novuNovu 社区版用 Docker Compose 部署很简单但直接上 VPS 后浏览器打不开 Dashboard.env里所有对外地址都从HOST_NAME变量推导而它的默认值是http://localhost指向跑容器的机器本身不是你的服务器。本篇的核心就是 VPS 部署 把HOST_NAME一次配通让团队能通过公网地址打开 Dashboard。部署前清单工具、规格与端口动手前核对三件事。官方步骤见 deploy-with-docker.mdx硬件规格取 overview.mdx 的单 VM 建议通用值按负载调整项目要求工具依赖Docker docker composev2、curl、openssl多数系统预装硬件规格Novu 全部服务API/Worker/WS/Dashboard4 vCPU、8 GB RAMMongoDB 2 GB RAM 20 GB 磁盘Redis 2 GB RAM 并开启 AOF对象存储 ≥10 GB对外端口Dashboard4000、API3000、WebSocket3002Worker 的3004只用于健康检查不必对公网放行。一条命令拉环境 官方最短路径是直接跑安装脚本setup.sh 位于docker/community目录curl -fsSL https://raw.githubusercontent.com/novuhq/novu/next/docker/community/setup.sh | bash想把部署文件放到指定目录用NOVU_DIR指定例如~/novucurl -fsSL https://raw.githubusercontent.com/novuhq/novu/next/docker/community/setup.sh | NOVU_DIR~/novu bash脚本依次做四件事把docker-compose.yml和.env.example下载到目标目录默认./novu用openssl为JWT_SECRET、STORE_ENCRYPTION_KEY、NOVU_SECRET_KEY生成加密随机值基于.env.example创建.env并写入密钥执行docker compose up -d启动全部容器。如果目标目录已有.env脚本只补齐空的密钥值不会动你已有的配置。HOST_NAME全文唯一必须手改的变量先说结论脚本生成的.env里只有HOST_NAME一项是错的。模板.env.example默认http://localhost那是本机部署的值关键在于整套部署的对外地址都由它派生VITE_API_HOSTNAME${HOST_NAME}:3000 VITE_WEBSOCKET_HOSTNAME${HOST_NAME}:3002 API_ROOT_URL${HOST_NAME}:3000 S3_LOCAL_STACK${HOST_NAME}:4566也就是说Dashboard 前端调 API 的地址、连 WebSocket 的地址、内部对象存储的指向全部是HOST_NAME 端口的组合。HOST_NAME停在localhost这些地址就都指回服务器自己你在别的机器上自然连不上改成 VPS 地址后四条地址一次性全部指向公网不用逐条修。改法在.env里替换一行——# 将 vps-ip-address 替换为你的 VPS 公网 IP HOST_NAMEhttp://vps-ip-address取值约定一句话本机部署用http://localhostVPS 部署用服务器公网 IP 或域名。改.env时顺手确认三个必填密钥非空密钥作用JWT_SECRETAPI 签发/校验 JWT 用STORE_ENCRYPTION_KEY加解提供商凭据必须恰好 32 字符NOVU_SECRET_KEY随机生成的必填密钥走脚本安装时它们已随机生成手动从仓库取文件部署的上线前必须自行填入。启动与验证进入部署目录启动docker compose up -d改过.envHOST_NAME或后文的注册开关之后重启同样是这条命令官方文档明确如此。脚本成功时的输出示例VPS 上把localhost换成你的 VPS IPNovu is running: Dashboard : http://localhost:4000 API : http://localhost:3000 WebSocket : http://localhost:3002验收标准浏览器打开http://vps-ip:4000出现 Novu 登录/注册页Dashboard 即对外可用。两个排障命令docker compose logs -f docker compose ps.env.example 同级目录的 docker-compose.yml 中 API/WS/Worker 以/v1/health-check做健康检查Dashboard 以根路径返回 HTTP 200 判定ps里全部转为healthy才算启动完成。浏览器打不开时先查 VPS 防火墙/安全组是否放行了 4000、3000、3002。公网加固关注册、配 HTTPS ️默认任何能访问 Dashboard 的人都能注册新账号。公网部署通常要关掉在.env加一行作用在 API 服务上默认falseDISABLE_USER_REGISTRATIONtrue生效后注册请求被 API 以400 Bad Request拒绝、返回Account creation is disabled已有用户登录不受影响。改完执行docker compose up -d重启。官方列出的其余 VPS 事项用防火墙只放行必要端口配置 SSL/TLS 证书启用 HTTPS定期更新 Docker 镜像与主机系统保持.env密钥强且唯一可在前面加 Nginx 等反向代理增加安全层若要以子路径如company.com/novu提供服务设置GLOBAL_CONTEXT_PATH及各服务的API_CONTEXT_PATH、WS_CONTEXT_PATH等变量且这些变量须设在 Novu 所有服务上。社区版边界知道放弃了什么为保持 compose 部署简单官方文档明确做了两个取舍MongoDB 与服务同机运行文档强烈建议生产部署前把数据库解耦对象存储用 LocalStack 而非真实 S3。功能边界自托管版不支持 GitHub、Google 等社交登录账号只能邮箱 密码SSO、RBAC、MFA 属于 Novu Cloud 能力逐项对比见 self-hosted-and-novu-cloud.mdx。部署完成后的下一步是接入应用Inbox 组件的backendUrl与 Server SDK 的serverURL指向http://your-docker-host:3000socket 地址指向http://your-docker-host:3002。【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进