尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Novu自托管如何用Docker Compose在VPS部署并配置HOST_NAME

Novu自托管如何用Docker Compose在VPS部署并配置HOST_NAME Novu自托管如何用Docker Compose在VPS部署并配置HOST_NAME【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu本文对应一个具体任务把社区版 Novu 用 Docker Compose 部署到一台 VPS 上并正确配置HOST_NAME让团队能够通过公网地址访问 Dashboard。关键点在于官方.env.example中HOST_NAME默认值是http://localhost直接启动只能在本机访问部署到 VPS 后必须把它改成服务器 IP或域名API、WebSocket 和 Dashboard 的对外地址都是从这个变量推导出来的。本文按 docs/community/self-hosting-novu/deploy-with-docker.mdx 的官方步骤整理。准备条件官方文档列出的前置工具deploy-with-docker.mdxDocker 和 docker-compose文档使用docker compose命令curl和openssl大多数系统预装资源方面docs/community/self-hosting-novu/overview.mdx 给出的单 VM 部署建议规格所有 Novu 服务API、Worker、WS、Dashboard共 4 vCPUs、8 GB RAM另加 MongoDB2 GB RAM、20 GB 磁盘、Redis2 GB RAM、开启 AOF、10 GB 以上对象存储空间。文档说明这是通用建议可按负载调整。端口方面部署完成后需要放行的对外端口为Dashboard4000、API3000、WebSocket3002Worker 的3004只用于健康检查见 .env.example。第一步获取部署文件并生成 .env官方提供的最短路径是运行 setup 脚本它会自动下载docker-compose.yml和.env.example、生成三个安全密钥并启动服务deploy-with-docker.mdxcurl -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脚本会依次做四件事setup.sh把docker-compose.yml和.env.example下载到目标目录默认./novu为JWT_SECRET、STORE_ENCRYPTION_KEY、NOVU_SECRET_KEY生成加密随机值基于.env.example创建带密钥的.env文件执行docker compose up -d启动全部服务。注意如果目标目录已存在.env脚本只补齐缺失的密钥值不会覆盖你已有的配置。如果你选择手动从仓库获取仓库内对应的文件是 docker/community/docker-compose.yml 和 docker/community/.env.example当前 compose 文件固定使用ghcr.io/novuhq/novu/*:3.19.0镜像。第二步为 VPS 配置 HOST_NAME脚本生成的.env默认是HOST_NAMEhttp://localhost见 .env.example 第 19 行这是本地部署的值。VPS 部署时必须修改为服务器 IP官方文档给出的写法是vps-ip-address为占位符替换成你的 VPS 实际公网 IP# 将 vps-ip-address 替换为你的 VPS 公网 IP HOST_NAMEhttp://vps-ip-address为什么要改这里.env.example中 Dashboard 与 API/WS 的对外地址都由HOST_NAME推导例如VITE_API_HOSTNAME${HOST_NAME}:3000 VITE_WEBSOCKET_HOSTNAME${HOST_NAME}:3002 API_ROOT_URL${HOST_NAME}:3000 S3_LOCAL_STACK${HOST_NAME}:4566所以只改这一项API3000、WebSocket3002等地址就都指向了 VPS。官方文档同时说明HOST_NAME的取值约定本机部署用http://localhostVPS 部署用服务器 IP如http://vps-ip-address或域名。修改HOST_NAME时顺带检查.env里的三个必填密钥JWT_SECRETAPI 签发 JWT 用、STORE_ENCRYPTION_KEY加解密密用必须 32 字符、NOVU_SECRET_KEY。用脚本安装时这些值已自动随机生成手动克隆仓库部署的必须在上线前自行填入。第三步启动服务在部署目录内执行docker compose up -d如果修改了.env包括HOST_NAME或下面提到的注册开关重启方式同样是docker compose up -d文档明确在修改环境变量后使用该命令重启服务。验证部署结果官方文档给出的验证方式是直接访问 Dashboarddeploy-with-docker.mdxVPS 部署浏览器访问http://你的vps-ip:4000能看到 Novu 登录/注册页面即表示 Dashboard 对外可用。本机部署的对照值是http://localhost:4000。setup 脚本启动完成后的输出文档示例Novu is running: Dashboard : http://localhost:4000 API : http://localhost:3000 WebSocket : http://localhost:3002在 VPS 上访问时应把localhost换成你的 VPS IP。查看各服务日志用docker compose logs -f另外docker-compose.yml 中每个服务都配置了 healthcheckAPI/WS/Worker 通过/v1/health-checkDashboard 通过根路径 HTTP 200 判断docker compose ps中服务状态转为 healthy 可以辅助确认启动完成。如果浏览器无法打开http://vps-ip:4000先确认 VPS 防火墙/安全组放行了 4000以及后续要用的 3000、3002端口——官方“VPS Security Considerations”一节也把“用防火墙限制只开放必要端口”列为 VPS 部署事项。可选加固关闭新用户注册默认情况下任何能访问 Dashboard 的人都可以注册新账号。公网部署时通常不希望这样官方给出的开关是deploy-with-docker.mdxDISABLE_USER_REGISTRATIONtrue把它加到.env中该变量作用在 API 服务上默认值是false。设为true后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 所有服务上。已知限制官方文档明确说明为了简单社区版 Docker 部署做了两个取舍deploy-with-docker.mdx数据库MongoDB与服务器在同一台机器上文档强烈建议生产部署前将数据库解耦对象存储使用 LocalStack 而不是 S3。此外overview.mdx 指出自托管版本不支持社交登录GitHub、Google 等账号只能用邮箱密码访问社区版与 Novu Cloud 的功能差异如 SSO、RBAC、MFA 不可用见 self-hosted-and-novu-cloud.mdx。完成上述验证后Dashboard 即可通过http://vps-ip:4000使用后续如需在应用里接入 Inbox 组件或 Server SDK文档给出了把backendUrl/serverURL指向http://your-docker-host:3000、socket 指向:3002的示例可按需继续配置。【免费下载链接】novuThe open-source communication infrastructure for agents and products项目地址: https://gitcode.com/GitHub_Trending/no/novu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表