N8N中文教程
部署托管/Installation/Server_setups

在 Hetzner Cloud 上托管 n8n#

本托管指南将介绍如何在 Hetzner Cloud 服务器上自行托管 n8n。该方案使用:

  • Caddy(反向代理)以允许从互联网访问服务器。
  • Docker Compose 来创建和定义应用程序组件及其协作方式。

自行托管的知识前提

自行托管 n8n 需要一定的技术知识,包括:

  • 设置和配置服务器与容器
  • 管理应用程序资源及扩展
  • 保障服务器和应用程序的安全
  • 配置 n8n

n8n 建议仅由高级用户进行自行托管。操作失误可能导致数据丢失、安全问题或服务中断。如果您缺乏管理服务器的经验,n8n 推荐使用 n8n Cloud。

最新版本与 Next 版本

n8n 每周通常会发布一个新的次要版本。latest 版本适用于生产环境。next 是最新的开发版本,应视为 beta 版本:可能存在不稳定情况。如需报告问题,请使用 论坛。

当前 latest 版本:1.115.2 当前 next 版本:1.116.1

创建服务器#

  1. 登录到 Hetzner Cloud 控制台。
  2. 选择用于托管服务器的项目,或通过点击 + NEW PROJECT 创建一个新项目。
  3. 在您希望添加服务器的项目卡片上,点击 + CREATE SERVER

你可以根据需要更改大多数设置,但由于本指南使用 Docker 来运行应用程序,在 镜像(Image) 部分的 APPS 选项卡中,请选择 "Docker CE"。 类型 创建服务器时,Hetzner 会要求你选择一个套餐。对于大多数使用场景,CPX11 类型已经足够。 SSH 密钥 Hetzner 允许你在 SSH 和基于密码的身份验证之间进行选择。SSH 更安全。本指南其余部分均假设你正在使用 SSH。

登录到你的服务器#

本指南后续步骤需要你通过终端使用 SSH 登录服务器。更多信息请参考 使用 SSH/rsync/BorgBackup 访问。你可以在项目中的服务器列表里找到公网 IP 地址。

安装 Docker Compose#

Hetzner 的 Docker 应用镜像默认未安装 Docker Compose。请使用以下命令安装:

1
2

| ``` apt&&


---|---
## 克隆配置仓库#
Docker Compose、n8n 和 Caddy 需要一系列文件夹和配置文件。你可以将这些内容从 此仓库 克隆到服务器的 root 用户目录下。接下来的步骤会告诉你需要修改哪个文件以及如何修改。
使用以下命令克隆仓库:

1

| ```
git

---|--- 然后切换目录到你克隆的仓库根目录:

1

| ``` cd


---|---
## 默认文件夹和文件#
宿主机操作系统(即服务器)会将你创建的两个文件夹挂载到 Docker 容器中,以便 Docker 使用。这两个文件夹是:
  * `caddy_config`:存放 Caddy 的配置文件。
  * `local_files`:用于存放通过 n8n 上传或添加的文件。

### 创建 Docker 卷#
为了在重启之间持久化 Caddy 的缓存并加快启动速度,请创建一个 Docker 卷,以便 Docker 在重启时重复使用:

1

| ```
docker

---|--- 为 n8n 数据创建一个 Docker 卷:

1

| ``` sudo


---|---
## 配置 DNS#
n8n 通常运行在一个子域名下。你需要在你的 DNS 提供商处为该子域名创建一条 DNS 记录,并将其指向服务器的 IP 地址。具体操作步骤因 DNS 提供商而异,但通常你需要为 n8n 子域名创建一个新的“A”记录。DigitalOcean 提供了DNS 术语、组件和概念简介作为参考。

## 开放端口#
n8n 作为一个 Web 应用运行,因此服务器需要允许外部访问非加密流量的 80 端口和加密流量的 443 端口。

通过运行以下两条命令,在服务器防火墙中开放以下端口:

1 2

| ```
sudo ufw allow 80
sudo ufw allow 443

---|---

配置 n8n#

n8n 需要设置一些环境变量,以传递给运行在 Docker 容器中的应用程序。示例 .env 文件包含你需要替换为你自己值的占位符。

使用以下命令打开该文件:

1

| ``` nano .env


---|---
该文件内含行内注释,帮助你了解需要修改的内容。
有关 n8n 环境变量的详细信息,请参考 环境变量。

## Docker Compose 文件#
Docker Compose 文件(`docker-compose.yml`)定义了应用程序所需的各项服务,在本例中即 Caddy 和 n8n。

* **Caddy 服务定义**:指定了其使用的端口以及需要挂载到容器中的本地卷。
* **n8n 服务定义**:指定了其使用的端口、n8n 运行所需的各种环境变量(部分定义在 `.env` 文件中),以及需要挂载到容器中的卷。

Docker Compose 文件使用 `.env` 文件中设置的环境变量,因此你不需要修改其内容。但如果你想查看,可以运行以下命令:

1

| ```
nano

---|---

配置 Caddy#

Caddy 需要知道它应该为哪些域名提供服务,以及对外暴露哪个端口。请编辑 caddy_config 文件夹中的 Caddyfile 文件。

1

| ``` nano


---|---
将占位符子域名更改为你的实际子域名。如果你按照前面的步骤将子域名命名为 n8n,则你的完整域名类似于 `n8n.example.com`。在 `reverse_proxy` 设置中的 `n8n` 告诉 Caddy 使用 `docker-compose.yml` 文件中定义的服务:

1 2 3 4 5

| ```
n8n.<domain>.<suffix> {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

---|---

启动 Docker Compose#

使用以下命令启动 n8n 和 Caddy:

1

| ``` docker


---|---
此过程可能需要几分钟时间。
## 测试你的配置#
在浏览器中打开之前定义的子域名和域名组成的 URL。输入之前设定的用户名和密码,你应该就能成功访问 n8n。
## 停止 n8n 和 Caddy#
你可以使用以下命令停止 n8n 和 Caddy:

1

| ```
sudo

---|---

更新#

如果你使用 Docker Compose 文件运行 n8n,请按照以下步骤更新 n8n:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

| ```

进入包含 docker compose 文件的目录

cd

拉取最新版本

docker

停止并移除旧版本

docker

启动容器

docker


---|---
## 下一步#
  * 进一步了解 配置 和 扩展 n8n。
  * 或者开始探索使用 n8n:尝试 快速入门指南(Quickstarts)。