跳转至

在 DigitalOcean 上托管 n8n#

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

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

自托管知识先决条件

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

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

n8n 建议专家用户使用自托管。错误可能导致数据丢失、安全问题和停机。如果您在管理服务器方面经验不足,n8n 建议使用 n8n Cloud

Latest 和 Next 版本

n8n 几乎每周都会发布新的次要版本。latest 版本用于生产环境。next 是最新的发布版本。您应该将 next 视为测试版:它可能不稳定。如需报告问题,请使用论坛

当前 latest:1.107.3
当前 next:1.108.0

创建 Droplet#

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

Droplet 资源

创建 Droplet 时,DigitalOcean 要求您选择一个计划。对于大多数使用级别,基础共享 CPU 计划就足够了。

SSH 密钥或密码

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

登录您的 Droplet 并创建新用户#

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

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

  1. 以 root 身份登录。
  2. 创建新用户:
    1
    adduser <username>
    
  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 docker volume create caddy_data

为 n8n 数据创建 Docker 卷:

1
sudo docker volume create n8n_data

设置 DNS#

n8n 通常在子域上运行。使用您的提供商为子域创建 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 docker-compose.yml

配置 Caddy#

Caddy 需要知道它应该提供哪些域名服务,以及向外界暴露哪个端口。编辑 caddy_config 文件夹中的 Caddyfile 文件。

1
nano caddy_config/Caddyfile

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

1
2
3
4
5
n8n.<domain>.<suffix> {
    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 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
# 导航到包含 docker compose 文件的目录
cd </path/to/your/compose/file/directory>

# 拉取最新版本
docker compose pull

# 停止并移除旧版本
docker compose down

# 启动容器
docker compose up -d

后续步骤#

此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持