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

在 DigitalOcean 上托管 n8n#

本托管指南将介绍如何在 DigitalOcean 的 Droplet 上自行托管 n8n。该方案使用:

  • Caddy(反向代理)来允许从互联网访问 Droplet。Caddy 还会为你的 n8n 实例自动创建和管理 SSL/TLS 证书。
  • Docker Compose 来定义和创建应用程序组件及其协作方式。

自托管知识前提

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

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

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

最新版本与 Next 版本

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

当前 latest:1.115.2 当前 next:1.116.1

创建 Droplet#

  1. 登录 DigitalOcean。
  2. 选择用于托管 Droplet 的项目,或创建一个新项目。
  3. 在你的项目中,从 Manage 菜单选择 Droplets
  4. 使用 Marketplace 选项卡中的 Docker 镜像,创建一个新的 Droplet。

Droplet 资源 创建 Droplet 时,DigitalOcean 会要求你选择一个套餐。对于大多数使用场景,基本的共享 CPU 套餐已足够。

SSH 密钥或密码 DigitalOcean 允许你在 SSH 密钥认证和密码认证之间进行选择。SSH 密钥被认为更安全。

登录到你的 Droplet 并创建新用户#

本指南的其余部分需要你通过终端使用 SSH 登录到 Droplet。更多信息请参考 如何通过 SSH 连接到 Droplets。

你应该创建一个新用户,以避免以 root 用户身份操作:

  1. 以 root 身份登录。
  2. 创建一个新用户:
1

| ``` adduser


---|---
3. 按照 CLI 中的提示完成用户的创建。
4. 授予新用户管理员权限:

1

| ```
usermod -aG sudo username

---|--- 现在你可以通过在命令前加上 sudo 来以超级用户权限运行命令。5. 按照以下步骤为新用户设置 SSH:添加公钥认证(推荐)。6. 退出 Droplet。7. 使用 SSH 以新用户身份登录。

克隆配置仓库#

Docker Compose、n8n 和 Caddy 需要一系列文件夹和配置文件。你可以将这些文件从 此仓库 克隆到 Droplet 上当前登录用户的主目录中。接下来的步骤将告诉你需要修改哪个文件以及如何修改。

使用以下命令克隆仓库:

1

| ``` git clone https://github.com/n8n-io/n8n-docker-caddy.git


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

1

| ```
cd n8n-docker-caddy

---|---

默认文件夹和文件#

主机操作系统(即 DigitalOcean Droplet)会将你创建的两个文件夹复制到 Docker 容器中,以便 Docker 可以访问它们。这两个文件夹是:

  • caddy_config:存放 Caddy 的配置文件。
  • local_files:用于存放你通过 n8n 上传或添加的文件。

创建 Docker 卷#

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

1

| ``` sudo


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

1

| ```
sudo

---|---

设置 DNS#

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

开放端口#

n8n 作为 Web 应用运行,因此需要允许外部访问 Droplet 上的 80 端口(用于非安全流量)和 443 端口(用于安全流量)。

通过运行以下两条命令,在 Droplet 的防火墙中开放对应端口:

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.comreverse_proxy 设置中的 n8n 告诉 Caddy 使用 docker-compose.yml 文件中定义的服务:

1
2
3
4
5

| ``` n8n.. { reverse_proxy n8n:5678 { flush_interval -1 } }


---|---
如果你打算使用 `automate.example.com`,那么你的 `Caddyfile` 可能如下所示:

1 2 3 4 5

| ```
automate.example.com {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

---|---

启动 Docker Compose#

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

1

| ``` sudo


---|---
此过程可能需要几分钟时间。
## 测试你的配置#
在浏览器中打开之前定义的子域名和域名组成的 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)。