跳至内容

在DigitalOcean上托管n8n#

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

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

自托管知识先决条件

自托管n8n需要具备以下技术知识:

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

n8n 建议专家用户自行托管。操作失误可能导致数据丢失、安全问题和服务中断。如果您没有服务器管理经验,n8n 推荐使用 n8n Cloud

最新版本和下一版本

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

当前 latest: 1.92.2
当前 next: 1.93.0

创建Droplet#

  1. Log in 登录 DigitalOcean。
  2. 选择用于托管Droplet的项目,或创建新项目
  3. 在您的项目中,从管理菜单中选择Droplets
  4. Create a new Droplet 使用 Docker imageMarketplace 标签页中提供的镜像。

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 
    
    现在您可以在命令前使用sudo来以超级用户权限运行命令。
  5. 按照以下步骤为新用户设置SSH:Add Public Key Authentication
  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提供商处为该子域名创建一条DNS记录,并将其指向Droplet的IP地址。具体步骤取决于你的DNS提供商,但通常需要为n8n子域名创建一个新的"A"记录。DigitalOcean提供了DNS术语、组件和概念介绍

开放端口#

n8n作为一个网络应用程序运行,因此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服务定义中指定了它使用的端口、运行所需的环境变量(部分定义在.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
# Pull latest version
docker compose pull

# Stop and remove older version
docker compose down

# Start the container
docker compose up -d

下一步#

优云智算