在Hetzner云上部署n8n#
本部署指南将展示如何在Hetzner云服务器上自托管n8n。方案采用:
- Caddy(反向代理服务器)实现互联网访问
- Docker Compose 定义应用组件及其协同工作方式
自托管前置知识要求
自托管n8n需要具备以下技术知识:
- 服务器与容器的设置配置
- 应用资源管理与扩展
- 服务器与应用安全防护
- n8n配置操作
n8n建议仅专业用户进行自托管。操作失误可能导致数据丢失、安全漏洞及服务中断。若缺乏服务器管理经验,推荐使用n8n云服务。
最新版与预览版说明
n8n每周会发布新的次要版本。latest为稳定生产版本,next是最新发布版本。请将next视作测试版本,可能存在不稳定情况。问题反馈请使用社区论坛。
当前latest版本:1.119.2
当前next版本:1.119.3
创建服务器#
- 登录Hetzner云控制台
- 选择目标项目或通过**+新建项目**创建
- 在目标项目卡片中点击**+创建服务器**
大部分设置可按需调整。因本指南使用Docker运行应用,请在镜像区域的应用标签页选择"Docker CE"
机型选择
创建服务器时需选择套餐方案。CPX11机型可满足大多数使用场景
SSH密钥配置
Hetzner支持SSH与密码认证方式。SSH安全性更佳,本指南后续步骤均基于SSH认证
登录服务器#
后续操作需通过SSH终端登录服务器。详细指引请参阅SSH/rsync/BorgBackup访问指南。服务器公网IP可在项目服务器列表中找到
安装Docker Compose#
Hetzner的Docker应用镜像未预装Docker compose。请执行以下命令安装:
apt update && apt -y upgrade apt install docker-compose-plugin
克隆配置仓库#
Docker Compose、n8n 和 Caddy 需要一系列文件夹与配置文件。您可以从该代码仓库将其克隆至服务器的根用户目录。后续步骤将告知需要修改的文件及具体变更内容。
使用以下命令克隆仓库:
git clone https://github.com/n8n-io/n8n-docker-caddy.git
并切换到您克隆的代码库根目录:
cd n8n-docker-caddy
默认文件夹与文件#
宿主操作系统(服务器)会将您创建的两个文件夹复制到 Docker 容器中,使其可供 Docker 使用。这两个文件夹分别是:
caddy_config:用于存放 Caddy 配置文件local_files:用于存放通过 n8n 上传或添加的文件
创建 Docker 卷#
为实现重启时保留 Caddy 缓存并加速启动过程,请创建 Docker 卷,该卷将在 Docker 重启时被重复使用:
docker volume create caddy_data
为n8n数据创建一个Docker卷:
sudo docker volume create n8n_data
配置域名解析服务#
n8n通常在子域名环境下运行。请通过您的DNS服务商为子域名创建一条DNS记录,并将其指向服务器IP地址。具体操作步骤因DNS服务商而异,但通常需要为n8n子域名新建一条"A"记录。DigitalOcean提供了《DNS术语、组件与概念导论》供参考。
开放端口#
n8n以Web应用程序形式运行,因此服务器需允许通过80端口接收非加密流量,并通过443端口接收加密流量。
请运行以下两条命令,在服务器防火墙中开放下列端口:
sudo ufw allow 80 sudo ufw allow 443
配置 n8n#
n8n 需要设置一些环境变量并传递给运行在 Docker 容器中的应用程序。示例 .env 文件包含占位符,您需要将其替换为自己的值。
使用以下命令打开文件:
nano .env
该文件包含内联注释,可帮助您了解需要修改的内容。
有关 n8n 环境变量的详细信息,请参阅环境变量。
Docker Compose 文件#
Docker Compose 文件 (docker-compose.yml) 定义了应用程序所需的服务,本例中为 Caddy 和 n8n。
- Caddy 服务定义规定了其使用的端口以及要复制到容器的本地卷
- n8n 服务定义规定了其使用的端口、n8n 运行所需的环境变量(部分在
.env文件中定义)以及需要复制到容器的卷
Docker Compose 文件使用了在 .env 文件中设置的环境变量,因此您通常无需修改其内容。如需查看文件内容,可运行以下命令:
nano docker-compose.yml
配置 Caddy#
Caddy 需要明确其应服务的域名以及对外暴露的端口。请编辑 caddy_config 文件夹中的 Caddyfile 文件。
nano caddy_config/Caddyfile
将占位符子域名替换为您自己的域名。若按照步骤将子域名命名为n8n,则您的完整域名应类似于 n8n.example.com。reverse_proxy 设置中的 n8n 指示 Caddy 使用 docker-compose.yml 文件中定义的服务配置:
n8n.<domain>.<suffix>
{
reverse_proxy n8n:5678 {
flush_interval -1
}
}
启动 Docker Compose#
使用以下命令启动 n8n 和 Caddy:
docker compose up -d
这可能需要几分钟时间。
测试配置#
在浏览器中打开由先前定义的子域名和主域名组成的URL。输入之前设置的用户名和密码,您应当能够成功访问n8n。
停止n8n与Caddy服务#
可通过以下命令停止n8n和Caddy:
sudo docker compose stop
更新#
若您使用 Docker Compose 文件运行 n8n,请按以下步骤更新 n8n:
# Navigate to the directory containing your docker compose file
cd </path/to/your/compose/file/directory>
# Pull latest version
docker compose pull
# Stop and remove older version
docker compose down
# Start the container
docker compose up -d