在 Hetzner 云上托管 n8n#
本托管指南将展示如何在 Hetzner 云服务器上自托管 n8n。方案使用:
- Caddy(反向代理)允许从互联网访问服务器。
- Docker Compose 创建和定义应用组件及其协作方式。
/// 注意 | 自托管知识前提条件 自托管 n8n 需要具备以下技术知识:
- 服务器和容器的设置与配置
- 管理应用程序资源和扩展
- 服务器和应用程序的安全防护
- 配置 n8n
n8n 建议仅由专业用户进行自托管。配置不当可能导致数据丢失、安全问题和服务中断。如果您缺乏服务器管理经验,n8n 推荐使用 n8n Cloud。 ///
/// 注意 | 最新版和下一版本
n8n 每周都会发布新的次要版本。latest
版本用于生产环境,next
是最新发布的版本。您应该将 next
视为测试版:它可能不稳定。如需报告问题,请使用论坛。
当前 latest
版本: 1.95.3
当前 next
版本: 1.97.1
///
创建服务器#
- 登录 Hetzner 云控制台。
- 选择要托管服务器的项目,或通过选择 + 新建项目 创建新项目。
- 在目标项目卡片上选择 + 创建服务器。
您可以调整大多数设置以满足需求,但由于本指南使用 Docker 运行应用,请在 镜像 部分的 应用 选项卡中选择 "Docker CE"。
类型
创建服务器时,Hetzner 会要求选择方案。对于大多数使用场景,CPX11 类型已足够。
SSH 密钥
Hetzner 允许在 SSH 和基于密码的认证之间选择。SSH 更安全。本指南后续内容假设您使用 SSH。
登录服务器#
本指南后续操作需要通过 SSH 终端登录服务器。更多信息请参考 通过 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 作为 Web 应用程序运行,因此服务器需要允许通过 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 9 10 |
|