在Heroku上托管n8n#
本托管指南向您展示如何在Heroku上自托管n8n。它使用:
- Docker Compose 用于创建和定义应用程序组件及其协同工作方式。
- Heroku的PostgreSQL服务用于托管n8n的数据存储。
- 一个一键部署到Heroku按钮,只需简单配置即可完成部署。
自托管知识先决条件
自托管n8n需要具备以下技术知识:
- 设置和配置服务器及容器
- 管理应用程序资源和扩展
- 保护服务器和应用程序安全
- 配置n8n
n8n 建议专家用户自行托管。操作失误可能导致数据丢失、安全问题和服务中断。如果您没有服务器管理经验,n8n 推荐使用 n8n Cloud。
最新版本和下一版本
n8n 每周都会发布一个新的次要版本。latest 版本适用于生产环境。next 是最新发布的版本。您应该将 next 视为测试版:它可能不稳定。如需报告问题,请使用 论坛。
当前 latest: 1.92.2
当前 next: 1.93.0
使用部署模板创建Heroku项目#
在Heroku上部署n8n的最快捷方式是使用Deploy to Heroku按钮:
这将打开Heroku上的创建新应用页面。为项目设置名称,并选择要部署项目的区域。
配置环境变量#
Heroku会预先填充app.json文件中env部分定义的配置选项,这些选项同时也为n8n使用的环境变量设置了默认值。
您可以根据需要修改这些值。必须更改以下值:
- N8N_ENCRYPTION_KEY,n8n使用该密钥在加密用户账户详情后存入数据库。
- WEBHOOK_URL 应与您创建的应用程序名称匹配,以确保webhook具有正确的URL。
部署n8n#
选择部署应用。
Heroku构建并部署应用后,会提供管理应用或查看应用程序的链接。
Heroku与DNS
请参考Heroku文档了解如何将您的域名连接到Heroku应用程序。
修改部署模板#
您可以通过分叉代码库并从您的分叉部署来修改部署模板。
Dockerfile文件#
默认情况下,Dockerfile会拉取最新的n8n镜像,如果你想使用不同或固定版本,请更新Dockerfile文件顶行的镜像标签。
Heroku与端口暴露#
Heroku不允许基于Docker的应用程序使用EXPOSE命令定义暴露端口。相反,Heroku提供了一个PORT环境变量,该变量在应用程序运行时动态填充。entrypoint.sh文件覆盖了默认的Docker镜像命令,改为设置Heroku提供的端口变量。然后您就可以在Web浏览器中通过80端口访问n8n。
Heroku上的Docker限制
阅读本指南了解更多关于在Heroku上使用Docker的限制详情。
配置Heroku#
heroku.yml 文件定义了您想在 Heroku 上创建的应用程序。它包含两个部分:
setup>addons定义了要使用的Heroku附加组件。在本例中,是PostgreSQL数据库附加组件。build部分定义了 Heroku 如何构建应用程序。在本例中,它使用 Docker buildpack 基于提供的Dockerfile来构建web服务。