跳到主要内容

在 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 服务

后续步骤#