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