在Hetzner云上托管n8n#
本托管指南向您展示如何在Hetzner云服务器上自托管n8n。它使用:
- Caddy(反向代理服务器)用于允许从互联网访问服务器。
- Docker Compose 用于创建和定义应用程序组件及其协同工作方式。
自托管知识先决条件
自托管n8n需要具备以下技术知识:
- 设置和配置服务器及容器
- 管理应用程序资源和扩展
- 保护服务器和应用程序安全
- 配置n8n
n8n 建议专家用户自行托管。操作失误可能导致数据丢失、安全问题和服务中断。如果您没有服务器管理经验,n8n 推荐使用 n8n Cloud。
最新版本和下一版本
n8n 每周都会发布一个新的次要版本。latest 版本适用于生产环境。next 是最新发布的版本。您应该将 next 视为测试版:它可能不稳定。如需报告问题,请使用 论坛。
当前 latest: 1.92.2
当前 next: 1.93.0
创建服务器#
- Log in 登录到Hetzner云控制台。
- 选择托管服务器的项目,或通过选择+ 新建项目来创建新项目。
- 在您想要添加到的项目磁贴上选择+ 创建服务器。
您可以根据需求调整大部分设置,但由于本指南使用Docker运行应用程序,请在镜像部分的应用选项卡中选择"Docker CE"。
类型
在创建服务器时,Hetzner会要求您选择套餐方案。对于大多数使用场景来说,CPX11类型已经足够。
SSH密钥
Hetzner允许您在SSH和基于密码的认证之间进行选择。SSH更安全。本指南的其余部分假设您正在使用SSH。
登录到您的服务器#
本指南的其余部分要求您使用带有SSH的终端登录服务器。更多信息请参考Access with SSH/rsync/BorgBackup。您可以在项目中的服务器列表中找到公共IP地址。
安装Docker Compose#
Hetzner的Docker应用镜像没有安装Docker compose。请使用以下命令安装:
1 2 | |
克隆配置仓库#
Docker Compose、n8n和Caddy需要一系列文件夹和配置文件。您可以从此代码库克隆这些文件到服务器的root用户文件夹中。以下步骤将告诉您需要修改哪个文件以及如何进行更改。
使用以下命令克隆仓库:
1 | |
并将目录切换到您克隆的代码库根目录:
1 | |
默认文件夹和文件#
主机操作系统(服务器)会将您创建的两个文件夹复制到Docker容器中,以便Docker可以使用它们。这两个文件夹分别是:
caddy_config: 保存Caddy配置文件。local_files: 用于存放您通过n8n上传或添加文件的文件夹。
创建Docker卷#
为了在重启之间保持Caddy缓存并加快启动时间,创建一个Docker卷让Docker在重启时重复使用:
1 | |
为n8n数据创建一个Docker卷:
1 | |
设置DNS#
n8n通常在一个子域名上运行。请在你的DNS服务提供商处为该子域名创建一条DNS记录,并将其指向服务器的IP地址。具体步骤取决于你的DNS提供商,但通常需要为n8n子域名创建一个新的"A"记录。DigitalOcean提供了DNS术语、组件和概念介绍。
开放端口#
n8n作为一款网络应用程序运行,因此服务器需要允许非安全流量的80端口和安全流量的443端口的入站访问。
在服务器防火墙上运行以下两条命令以开放以下端口:
1 2 | |
配置n8n#
n8n需要设置一些环境变量传递给运行在Docker容器中的应用程序。示例.env文件包含您需要用实际值替换的占位符。
使用以下命令打开文件:
1 | |
该文件包含内联注释,以帮助您了解需要更改的内容。
有关n8n环境变量的详细信息,请参阅环境变量。
Docker Compose 文件#
Docker Compose文件 (docker-compose.yml) 定义了应用程序所需的服务,在本例中是Caddy和n8n。
- Caddy服务定义中指定了它使用的端口以及要复制到容器的本地卷。
- n8n服务定义中指定了它使用的端口、运行所需的环境变量(部分定义在
.env文件中)以及需要复制到容器的卷。
Docker Compose文件使用了.env文件中设置的环境变量,因此您无需更改其内容,但若要查看,请运行以下命令:
1 | |
配置Caddy#
Caddy需要知道它应该服务哪些域名,以及向外部世界暴露哪个端口。编辑caddy_config文件夹中的Caddyfile文件。
1 | |
将占位子域名替换为您自己的。如果您按照步骤将子域名命名为n8n,您的完整域名类似于n8n.example.com。reverse_proxy设置中的n8n告诉Caddy使用docker-compose.yml文件中定义的服务配置:
1 2 3 4 5 | |
启动Docker Compose#
使用以下命令启动n8n和Caddy:
1 | |
这可能需要几分钟时间。
测试你的设置#
在浏览器中,打开由之前定义的子域名和主域名组成的URL。输入之前设置的用户名和密码,您应该就能访问n8n了。
停止 n8n 和 Caddy#
你可以使用以下命令停止n8n和Caddy:
1 | |
更新#
如果您使用Docker Compose文件运行n8n,请按照以下步骤更新n8n:
1 2 3 4 5 6 7 8 | |