n8n 安装与配置
使用方式 | 优点 | 限制 |
---|---|---|
官方 SaaS 服务 | 官方提供的服务,开箱即用 | 需要订阅费,基础版本$20 每月 |
本地 PC | 快速上手 | 1. 网络环境可能导致部分集成不可用 2. 回调等功能会有限制 3. 对于定期执行的工作流需要保持机器一直开机 |
云主机部署 | 有较大的灵活性,完全掌控数据 | 1. 需要云主机(最好是海外) 2. 需要有个人域名 3. 需要一定的技术能力 |
huggingface space | 简单,且不需要云主机、域名等 | 1. 需要科学的网络环境 2. 需要数据库存储数据 |
官方 SaaS
官方 SaaS 服务提供 14 天免费试用,可以作为快速体验 n8n 的方式。如下是官方的刊例价,详细的价格及功能列表可以参考官网 。

打开官网注册页面https://app.n8n.cloud/register ,填入必要信息,点击 Start free 14-day trial

接下来会弹出一些问卷,按照自己的需求填写即可。同时官网会发送邮箱验证,点击邮件中的链接完成邮箱地址验证。

本地 PC 部署
本地部署推荐使用 docker 的部署方式。使用 docker 可以避免由于不同操作系统造成的问题, 因为 Docker 提供了一个一致的系统,可以避免由于操作系统和工具之间的差异造成的兼容性问题。
官方提供了基于 docker 环境的安装指南,可以参考https://docs.n8n.io/hosting/installation/docker/ 。
安装 docker 环境
以下使用 Windows 系统作为示例,如果本地已经有 docker 环境可以跳过该步骤。
从官网https://www.docker.com/products/docker-desktop/ 下载 docker desktop 安装包。

双击 docker 安装包完成安装,随后启动 docker,当看到如下界面时表示安装成功

运行 n8n
打开命令提示符软件(系统菜单搜索 cmd),运行以下命令创建存储卷
docker volume create n8n_data
运行如下命令启动 n8n 服务(cmd 命令行中直接右键粘贴)
docker run -d ^
--name n8n ^
-p 5678:5678 ^
-e GENERIC_TIMEZONE="Asia/Shanghai" ^
-e TZ="Asia/Shanghai" ^
-v n8n_data:/home/node/.n8n ^
docker.n8n.io/n8nio/n8n
可以看到命令行中开始下载 docker 镜像

运行docker ps
检查镜像是否启动,

或者通过 docker desktop 软件查看容器是否运行

相关的数据存放在数据卷中,可以通过 docker desktop 软件查看。默认情况 n8n 使用 sqlite 作为数据存储。

最后我们可以通过浏览器访问http://127.0.0.1:5678/ 来使用 n8n 服务。
云主机部署
云主机部署需要一台服务器,一般为 Linux 系统,同时最好配置域名。域名购买后需配置 DNS 解析至云主机的 IP 地址。后续的教程以域名 n8n.example.com
为例。
本教程我们使用 docker compose 进行云主机配置。以下操作使用 ssh 工具连接到云主机,使用命令行操作。
安装 docker & docker compose
在云主机上安装 docker,具体安装方式可以参考官网 。以下以 ubuntu 系统为例,介绍相关步骤(如果云主机已经有 docker 环境,可以跳过这一步)。
- 卸载原始有冲突的包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
- 配置 docker 的 apt 源
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- 安装 docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 验证安装
sudo docker run hello-world
- 安装 docker compose
sudo apt-get install docker-compose-plugin
- 非 root 用户使用 docker
sudo usermod -aG docker $USER
newgrp docker
docker compose 部署 n8n
这里我们使用官方提供的 docker compose 配置来部署 n8n。使用 git 下载官方 self-hosting 仓库
git clone https://github.com/n8n-io/n8n-hosting.git
cd n8n-hosting/docker-compose/withPostgresAndWorker
这里我们使用withPostgresAndWorker
目录中的配置,该配置包含 n8n、postgres、redis、worker 等服务。
编辑.env
文件,修改其中的数据库密码等信息。密码可以使用在线工具生成,如https://my.norton.com/extspa/passwordmanager?path=pwd-gen
。ENCRYPTION_KEY
是 n8n 的加密密钥,用于加密数据库中的数据,可以使用命令openssl rand -base64 32
生成。
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=n8n
POSTGRES_NON_ROOT_PASSWORD=changePassword
ENCRYPTION_KEY=changeEncryptionKey
N8N_EDITOR_BASE_URL=https://n8n.example.com
WEBHOOK_URL=https://n8n.example.com
GENERIC_TIMEZONE=Asia/Shanghai
TZ=Asia/Shanghai
编辑docker-compose.yml
文件,添加新增的环境变量配置。
--- a/docker-compose/withPostgresAndWorker/docker-compose.yml
+++ b/docker-compose/withPostgresAndWorker/docker-compose.yml
@@ -19,6 +19,11 @@ x-shared: &shared
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY}
+ - N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL}
+ - WEBHOOK_URL=${WEBHOOK_URL}
+ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
+ - TZ=${TZ}
+
links:
- postgres
- redis
编辑完成后,执行以下命令启动 n8n
docker compose up -d
现在 docker 开始拉取镜像,完成后,运行docker compose ps
,可以看到 n8n、postgres、redis、
worker 等服务都启动了,如下
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
withpostgresandworker-n8n-1 docker.n8n.io/n8nio/n8n "tini -- /docker-ent…" n8n 5 minutes ago Up 5 minutes 0.0.0.0:5678->5678/tcp, [::]:5678->5678/tcp
withpostgresandworker-n8n-worker-1 docker.n8n.io/n8nio/n8n "tini -- /docker-ent…" n8n-worker 5 minutes ago Up 5 minutes 5678/tcp
withpostgresandworker-postgres-1 postgres:16 "docker-entrypoint.s…" postgres 5 minutes ago Up 5 minutes (healthy) 5432/tcp
withpostgresandworker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 5 minutes ago Up 5 minutes (healthy) 6379/tcp
上述的 docker compose 配置文件中启动了两个 n8n 实例,其中一个是主实例,一个是 worker 实例。该模式为队列运行模式,使用 redis 作为消息队列。理论上这种模式可以扩展到更多的 worker,进行分布式部署,提高 n8n 的并发处理能力。详细的描述可以参考官方文档https://docs.n8n.io/hosting/scaling/queue-mode/
配置反向代理
编辑域名解析,将域名指向云主机的 IP 地址。这里我们使用 Caddyserver 作为我们的反向代理服务器。 Caddyserver 是一个开源的、高性能的、易用的反向代理服务器,可以类比 Nginx, 其官网为https://caddyserver.com/ 。Caddyserver 最大的优势是可以自动管理 SSL 证书,无需手动配置。
以下介绍如何使用 Caddyserver 配置反向代理。
- 安装 Caddyserver,参考官方文档https://caddyserver.com/docs/install
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
- 配置 Caddyserver,编辑
/etc/caddy/Caddyfile
文件,添加以下内容(替换其中的域名)
n8n.example.com {
reverse_proxy localhost:5678
}
- 重启 Caddyserver
sudo systemctl restart caddy
- 访问域名,即可看到 n8n 的界面
huggingface space 部署
云服务部署需要主机,且需要域名,有一定的门槛,最后我们介绍使用 huggingface space 部署 n8n。 huggingface space 是 huggingface 提供的一个在线服务环境,其支持 docker 部署应用。
通过 supabase 创建数据库
由于 huggingface space 在长时间未使用后,会“进入休眠”状态并停止执行。我们需要使用外部数据库来保存 n8n 服务的数据,这里我们使用 supabase 提供的服务。
注册 supabase 账号,https://supabase.com/dashboard/sign-up
创建项目,按表单填写项目相关配置。保存填写的数据库密码,后面会使用到
查看数据库链接信息,点击 Project 左上角的
Connect
按钮Connection String 中,选择
SQLAlchemy
,找到Transaction pooler
记录下提供的数据库连接信息,如 host、port、user、password、dbname 等。
使用 huggingface space 部署 n8n
huggingface space 免费版本提供的服务资源,足够 n8n 服务的运行。
Hardware | GPU Memory | CPU | Memory | Disk | Hourly Price |
---|---|---|---|---|---|
CPU Basic | - | 2 vCPU | 16 GB | 50 GB | Free! |
课程作者创建了 n8n 空间模板项目,可共学习者直接使用。
首先需要注册 huggingface 账号,记住自己的 profile 名字。如https://huggingface.co/tomowang 中的
tomowang
即为 profile 名字访问https://huggingface.co/spaces/tomowang/n8n , 在右上角点击垂直省略按钮,选择Duplicate this space
在弹出的对话框中,配置相关的环境变量
Variable Value DB_POSTGRESDB_PASSWORD
为 supabase 项目创建时配置的数据库密码 DB_POSTGRESDB_USER
为之前链接信息中的 user
DB_POSTGRESDB_HOST
为之前链接信息中的 host
DB_POSTGRESDB_PORT
6543 N8N_ENCRYPTION_KEY
随机串,可以使用 openssl rand -base64 32
生成WEBHOOK_URL
格式为 https://<profile>-n8n.hf.space/
N8N_EDITOR_BASE_URL
格式为 https://<profile>-n8n.hf.space/
GENERIC_TIMEZONE
按需填写,如 Asia/Shanghai TZ
按需填写,如 Asia/Shanghai 点击Duplicate Space按钮,等待部署完成,相关日志输出如下
最终部署完成后会输出如下日志,展示我们配置的
N8N_EDITOR_BASE_URL
地址,访问该地址即可开始使用 n8n
需要注意的是,n8n 使用helmet
来处理 HTTP 相关的安全配置,在生产环境中会默认配置X-Frame-Options
为 sameorigin
,以禁止 iframe 嵌入。所以后续可以直接打开上图中展示的地址直接使用。
最后附上原始的 Dockerfile 供参考https://huggingface.co/spaces/tomowang/n8n/blob/main/Dockerfile
ARG N8N_VERSION=stable
FROM docker.n8n.io/n8nio/n8n:$N8N_VERSION
LABEL maintainer="Xiaoliang <[email protected]>"
ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
N8N_RUNNERS_ENABLED=true \
N8N_PROXY_HOPS=1
# https://huggingface.co/docs/hub/spaces-sdks-docker#permissions
# The container runs with user ID 1000.
# node docker image already has a user named node with ID 1000.
USER node
VOLUME ["$HOME/.n8n"]
# n8n default port
EXPOSE 5678
ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]