在 Heroku 上部署 n8n#
本部署指南将展示如何在 Heroku 上自托管 n8n。方案采用:
- 使用 Docker Compose 创建并定义应用组件及其协作方式
- 通过 Heroku PostgreSQL 服务 托管 n8n 的数据存储
- 提供 一键部署至 Heroku 按钮,只需简单配置即可完成部署
自托管知识前提
自托管 n8n 需要具备以下技术知识:
- 服务器与容器的设置配置
- 应用资源管理与扩展
- 服务器与应用安全防护
- n8n 配置管理
n8n 建议仅专业用户进行自托管。操作失误可能导致数据丢失、安全问题及服务中断。若缺乏服务器管理经验,推荐使用 n8n 云服务。
最新版与预览版
n8n 每周会发布新的次要版本。latest 为稳定生产版本,next 是最新发布版本。请将 next 视为测试版:可能存在不稳定情况。问题反馈请使用 社区论坛。
当前 latest 版本:1.119.2
当前 next 版本:1.119.3
使用部署模板创建 Heroku 项目#
最快部署方式是使用 一键部署至 Heroku 按钮:
这将打开 Heroku 的创建新应用页面。请设置项目名称并选择部署区域。
配置环境变量#
Heroku 会预填充 app.json 文件 env 段定义的配置选项,这些选项同时设置了 n8n 所用环境变量的默认值。
您可根据需要修改这些值。以下为必须修改的配置项:
- N8N_ENCRYPTION_KEY:n8n 用于在存储到数据库前加密用户账户信息
- WEBHOOK_URL:需与创建的应用名称匹配,确保网络钩子获取正确 URL
部署 n8n#
选择部署应用。
Heroku 完成应用构建部署后,将提供管理应用和查看应用的访问链接。
Heroku 与 DNS 配置
请参阅 Heroku 文档了解如何将域名关联至 Heroku 应用。
修改部署模板#
您可通过分叉 代码库 并基于分叉版本进行部署来修改部署模板。
Dockerfile 配置#
默认 Dockerfile 会拉取最新 n8n 镜像。如需使用特定版本,请更新 Dockerfile 首行的镜像标签。
Heroku 端口暴露说明#
Heroku 不允许基于 Docker 的应用使用 EXPOSE 命令定义暴露端口。相反,Heroku 会在应用运行时动态注入 PORT 环境变量。entrypoint.sh 文件通过覆盖默认 Docker 镜像命令来设置 Heroku 提供的端口变量。之后即可在浏览器中通过 80 端口访问 n8n。
Heroku 的 Docker 限制
详细了解 Docker 在 Heroku 的使用限制,请 参阅此指南。
配置 Heroku#
heroku.yml 文件定义了要在 Heroku 创建的应用结构,包含两个部分:
setup>addons定义使用的 Heroku 插件,此处为 PostgreSQL 数据库插件build部分定义应用构建方式,此处使用 Docker buildpack 基于提供的Dockerfile构建web服务