在 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
创建服务器#
- 登录到 Hetzner Cloud 控制台。
- 选择用于托管服务器的项目,或通过点击 + NEW PROJECT 创建一个新项目。
- 在您希望添加服务器的项目卡片上,点击 + 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)。