Skip to content

在 DigitalOcean 上托管 n8n

本托管指南将向您展示如何在 DigitalOcean Droplet 上自行托管 n8n。它使用:

  • Caddy (反向代理)允许从互联网访问 Droplet。Caddy 还将自动为您的 n8n 实例创建和管理 SSL/TLS 证书。
  • Docker Compose用于创建和定义应用程序组件以及它们如何协同工作。

自托管知识前提条件

自托管 n8n 需要技术知识,包括:

  • 设置和配置服务器和容器
  • 管理应用程序资源和扩展
  • 保护服务器和应用程序
  • 配置 n8n

n8n 建议资深用户选择自托管。错误操作可能导致数据丢失、安全问题和宕机。如果您缺乏服务器管理经验,n8n 推荐使用n8n Cloud

最新版本和下一个版本

n8n 几乎每周都会发布一个新的次要版本。此版本仅供生产使用。这是最新版本。您应该将其视为测试版本:它可能不稳定。如需报告问题,请使用论坛

当前:1.102.4当前:1.103.1

创建 Droplet

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

Droplet 资源

创建 Droplet 时,DigitalOcean 会要求您选择一个方案。对于大多数使用场景,基本的共享 CPU 方案就足够了。

SSH 密钥或密码

DigitalOcean 允许您在 SSH 密钥和基于密码的身份验证之间进行选择。SSH 密钥被认为更安全。

登录你的 Droplet 并创建新用户

本指南的其余部分要求您使用带有 SSH 的终端登录 Droplet。有关更多信息,请参阅如何使用 SSH 连接到 Droplet

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

  1. 以 root 身份登录。
  2. 创建新用户:
  3. 按照 CLI 中的提示完成用户创建。
  4. 授予新用户管理权限:您现在可以通过在命令前使用来以超级用户权限运行命令。
  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 配置文件。
  • :您使用 n8n 上传或添加的文件的文件夹。

创建 Docker 卷

为了在重启之间保留 Caddy 缓存并加快启动时间,请创建一个 Docker 卷,以便 Docker 在重启之间重用:

1
sudo docker volume create caddy_data

为 n8n 数据创建 Docker 卷:

1
sudo docker volume create n8n_data

设置 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 容器中运行的应用程序。示例文件包含一些占位符,您需要将其替换为您自己的值。

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

1
nano .env

该文件包含内联注释,可帮助您了解要更改的内容。

有关 n8n 环境变量的详细信息,请参阅环境变量。

Docker Compose 文件

Docker Compose 文件( )定义了应用程序所需的服务,在本例中是 Caddy 和 n8n。

  • Caddy 服务定义定义了它使用的端口和要复制到容器的本地卷。
  • n8n 服务定义定义了它使用的端口、n8n 需要运行的环境变量(一些在文件中定义)以及它需要复制到容器的卷。

Docker Compose 文件使用文件中设置的环境变量,因此您不需要更改其内容,但要查看,请运行以下命令:

1
nano docker-compose.yml

配置 Caddy

Caddy 需要知道它应该服务哪些域名,以及向外界公开哪个端口。编辑文件夹中的文件。

1
nano caddy_config/Caddyfile

将占位符域名更改为您的域名。如果您按照步骤将子域名命名为 n8n,则您的完整域名类似于。设置中的告诉 Caddy 使用文件中定义的服务定义:

1
2
3
4
5
n8n.<domain>.<suffix> {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

如果您使用,您的可能看起来像:

1
2
3
4
5
automate.example.com {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

启动 Docker Compose

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

1
sudo docker compose up -d

这可能需要几分钟。

测试您的设置

在浏览器中,打开之前定义的子域名和域名组成的URL。输入之前定义的用户名和密码,即可访问n8n。

停止 n8n 和 Caddy

您可以使用以下命令停止 n8n 和 Caddy:

1
sudo docker compose stop

更新

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 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

后续步骤Next steps