第一次在csdn输入内容,可能写得不太好,请大家见谅——
正文开始——
服务器太贵了,怎样才能让本地 n8n 接收公网 Webhook?
我们可以借助内网穿透技术:借助“域名 + Cloudflare穿透”来实现效果。
大家可能好奇什么是Webhook,它直译为“网络钩子”,本质是主动通知方式:只要我们关注的事件(比如表单提交、订单更新)一发生,系统就会自动把通知发到指定Web服务地址,不用反复调用API查状态。
打个比方,就跟订单系统一样,不用你自己去查,消息会直接送过来,特别方便,能让你第一时间知道重要的事,及时处理。
本地部署n8n要接收这种公网通知,需要借助内网穿透技术,把本地服务和公网连接打通。下面一步步来具体给到操作方法。
前期准备工作
(1)环境
有科学上网环境,用Docker在本地装好n8n—— 没装的话,先把 Docker 和 n8n 基础版装上。
Docker官方链接:https://www.docker.com/
n8n官方链接:https://github.com/n8n-io/n8n/
提醒:Docker使用需自己安装成功windows系统wsl虚拟机,powershell设置命令:
wsl --install
wsl --set-default-version 2
(2)账号
要个火山引擎账号(买域名用)、Google 账号(登 Cloudflare),还有 PayPal 账号(绑国内银联储蓄卡,验证 Cloudflare 免费服务用)。
(3)原理
靠 Cloudflare Tunnel 把本地 n8n 和公网连起来,再用自己的域名做访问入口,不用暴露本地IP
1、购买域名服务
登录火山引擎并购买域名服务
先登火山引擎的域名服务页面(https://www.volcengine.com/activity/domain),输想注册的域名,比如 n8n.xxx.cn,能看到能不能注册、多少钱,按流程实名注册就行。
等注册好,选个适合自己的域名和后缀 —— 我考虑到之后续费方便,这次选了 top 后缀。买完去域名服务列表(https://console.volcengine.com/domain-service/domain),能看到刚注册的域名,比如我这里显示 jhain8n.top,确认状态正常就好。

输入自己想要弄域名,如:n8n.xxx.cn,然后看到报价,并且可以看到能否注册,并根据流程完成实名注册




2、选择合适域名
等待注册成功后,可以选择合适自己域名和域名后缀,考虑到后期续费,此次域名后缀选择top



按提示购买好域名,再到域名服务,看到注册好域名地址

显示正常,jhain8n.top

3、注册并登录Cloudflare
域名注册好进入Cloudflare管理平台,登录google账号


4、注册Palpal并绑定卡
注册成功后,先绑定Palpal,自己先把右上角语言改为中文,再点【设置】-【账单】-【Paypal】

添加图片注释,不超过 140 字(可选)
在弹窗,点【创建账户】,选择【中国】,将个人信息填写进去,绑定一张国内【银联】储蓄卡,后续用来支付cloudflare的0元服务账单。


5、域名解析
Cloudflare中输入购买域名并进行解析,点击【继续】


6、继续激活
解析服务器之后,出现Cloudflare服务器名称,点【继续激活】

7、复制Cloudflare服务器名称

felipe.ns.cloudflare.com ursula.ns.cloudflare.com
8、域名服务绑定
回到火山引擎域名服务,复制刚才Cloudflare服务器名称到火山引擎
(1)点击【管理】,到【域名列表】

(2)点击【修改】

(3)复制Cloudflare服务器名称,并提交

felipe.ns.cloudflare.com
ursula.ns.cloudflare.com
(4)收到验证短信后,显示提交成功

9、继续Cloudflare解析操作
回到刚才Cloudflare界面,点【继续】
https://dash.cloudflare.com/

点击下方检查按钮后,就会显示

【Cloudflare 现在正在检查 jhain8n.top 的名称服务器。请等待几个小时进行更新】

等待几分钟后,显示成功

打勾安全服务

10、启动Cloudflare隧道验证服务
(1)点击【Access】-【启动Zero Trust 】

(2)选择账号

(3)输入团队名称,如dreamforever

(4)点击Free选择计划

(5)点击【继续付款】

(6)添加付款方式

(7)点击PalPal,一开始注册过,现在登录就可以

(8)同意并付款

添加图片注释,不超过 140 字(可选)

(9)填写个人信息,并点击下一步,姓名要用英文,最后选择【个人】

(10)点击【购买】

成功之后,回到主界面

(11)点击【网络】-【Tunnels】-【添加隧道】

(12)选择隧道类型

(13)隧道命名为【n8n】,并点击【保存】

(14)由于本地部署n8n使用docker方式,点击cloudflare上【docker】并复制令牌

此命令需要加多一行代码:
--name cloudflare_tunnel -d
则显示为——
docker run --name cloudflare_tunnel -d cloudflare/cloudflared:latest tunnel --no-autoupdate run –token xxx
docker run --name cloudflare_tunnel -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiZjcxOGVlODI0OTc0NTM4YWZmYWM5NGY4OTBhNmM0Y2EiLCJ0IjoiMDRkNGIyZTAtODIwMS00MTJlLWFiMGEtZjc2OGY2YmY2NmEyIiwicyI6Ik1qQm1aRFEyT0RRdE1UWmpaQzAwTjJNMUxUa3dOakV0WkdWak5qUmpZamsyWWpBdyJ9
(此token只是演示)


11、docker需要打开,在n8n文件夹所在路径输入【cmd】,进入命令提示符窗口

添加图片注释,不超过 140 字(可选)
docker run --name cloudflare_tunnel -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token xxx(xxx是自己复制出来那串token码)
docker run --name cloudflare_tunnel -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiZjcxOGVlODI0OTc0NTM4YWZmYWM5NGY4OTBhNmM0Y2EiLCJ0IjoiMDRkNGIyZTAtODIwMS00MTJlLWFiMGEtZjc2OGY2YmY2NmEyIiwicyI6Ik1qQm1aRFEyT0RRdE1UWmpaQzAwTjJNMUxUa3dOakV0WkdWak5qUmpZamsyWWpBdyJ9
(此token只是演示)
成功后,在docker容器能正常显示【cloudflare_tunnel】


如果觉得设置不满意删除cloudflare,则可以输入命令:
# 先停止容器
docker stop cloudflare_tunnel
# 再删除容器
docker rm cloudflare_tunnel


添加图片注释,不超过 140 字(可选)
这样docker就不会显示,重新想要设置,则需要重新输入刚才命令

docker run --name cloudflare_tunnel -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token xxxx(xxx是自己复制出来那串token码)

12、Cloudflare,左边【网络】-【Tunnels】,点击【下一步】,设置公共机名

13、Cloudflare写上子域和域名,并按点击【完成设置】
(1)子域名-自定义,如new,
(2)域:【购买域名】
(3)类型:HTTP
(4)URL:host.docker.internal:xx(Docker部署的端口地址)
由于本机此前设置过ragflow,为避免冲突使用5680端口,则此次端口地址为:
host.docker.internal:5680(默认端口是:host.docker.internal:5678),子域容易出错,后面教程有写如果报错解决方式

创建new.jhain8n.top的 DNS 记录,此域名地址要记住,后面会调用
PS:如果刚才随道设置有问题,则是需要删除隧道指令:
# 先停止容器
docker stop cloudflare_tunnel
# 再删除容器
docker rm cloudflare_tunnel
14、设置n8n
后续调用n8n中webhook服务,需要更新 n8n 的启动参数(主要是添加WEBHOOK_URL环境变量),而旧的需要删除,理由——
Docker 容器一旦创建,其基础配置(如环境变量、端口映射等)是无法直接修改的。
旧的n8n容器是在没WEBHOOK_URL配置的情况下启动的,无法识别通过Cloudflare 域名发起的 webhook 请求。只有删除旧容器,用包含WEBHOOK_URL的新命令重新创建,才能让 n8n 正确识别公网域名的 webhook 调用。
更新 n8n 容器,将 WEBHOOK_URL 改为 new.jhain8n.top,具体执行如下——
(1)docker停止并删除旧n8n容器
在n8n所在路径,输入【cmd】让docker停止并删除旧n8n容器(数据不会丢失,因挂载n8n_data数据卷),指令——

# 停止旧容器
docker stop n8n-server(# 默认配置命令:docker stop n8n)
# 删除旧容器
docker rm n8n-server(# 默认配置命令:docker rm n8n)

执行命令后,则显示n8n已经删除——

(2)用新域名重新创建n8n容器(默认端口是5678,此处改为5680)-重点2


docker run -d --name n8n -p 5680:5680 -e GENERIC_TIMEZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" -e N8N_PORT=5680 -v D:\n8n\n8n:/home/node/.n8n -v D:\n8n\n8ndata:/home/node/n8ndata docker.n8n.io/n8nio/n8n:1.109.2
或者用分开版本(由于设置路径,即使用C盘默认打开cmd设置也不影响)

(3)回到cloudflare,再进一步设置,并【完成设置】

要是这里报错,比如子域名冲突,把子域名改下就行 ——
我之前填 new 不行,改成 jhnew 就好了,新域名就是 jhnew.jhain8n.top。
也可以这么补设路由:点 “网络”-“tunnels”,再点 “添加已发布应用程序路由”,填主机名(比如 newaa.jhain8n.top)、描述(host.docker.internal:5680),点 “保存”。成功后,像 https://newaa.jhain8n.top/ 和 https://jhnew.jhain8n.top/ 这两个域名都能打开 n8n
—— 但要注意,得让本地 Docker 保持运行,不然外网、手机都打不开。

自动跳转到此界面,则显示设置成功

然后输入刚才要记住域名,登录后台即可,由于
https://jhnew.jhain8n.top/(之前设置new不成功,后面补充jhnew)

本地后端显示(如果忘记密码,则在后端本地版去处理)

如果上一步忘了,容易犯错易错点——
https://one.dash.cloudflare.com/
cloudflare的隧道,点击右边【配置】

点击【主机名路由】,点击【创建】

主机名(设置网站名称):
new.jhain8n.top/
描述:
host.docker.internal:5680

弹出窗口时候则点确认,显示


但是显示报错——

正确做法——
【网络】-【tunnels】,然后点击【添加已发布应用程序路由】


主机名(设置网站名称)
newaa.jhain8n.top/
描述:
host.docker.internal:5680
点击【保存】,自动跳转过来——

两个不同链接都能打开n8n,这个域名链接,需要本地docker在运行,然后在互联网、手机上才能用,如果本地docker不运行,就会打不开:


15、后续日常更新版本命令
遵循「停止旧容器→删除旧容器→拉取新版镜像→启动新容器」的流程
(1)停止当前运行的n8n旧容器
docker stop n8n
(2)删除n8n旧容器
(仅删除容器实例,挂载的本地数据D:\n8n\n8n和D:\n8n\n8ndata不会删除)
docker rm n8n
(3)拉取n8n新版本镜像
(将1.XX.X替换为目标版本,如1.115.0;用latest表示拉取最新版)
docker pull docker.n8n.io/n8nio/n8n:1.XX.X
(4)启动新版n8n容器
(参数与原配置一致,确保挂载目录、端口、时区不变)
docker run -d --name n8n -p 5680:5680 -e GENERIC_TIMEZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" -e N8N_PORT=5680 -v D:\n8n\n8n:/home/node/.n8n -v D:\n8n\n8ndata:/home/node/n8ndata docker.n8n.io/n8nio/n8n:1.XX.X
想要看具体版本号,则是可以到镜像文件库看,或者github上看
https://hub.docker.com/r/n8nio/n8n/tags


想要知道自己n8n版本号,在n8n操作界面,点【help】点【About n8n】

查到现在版本是1.109.2,截至到2025年9月24日,目前新版本是1.112.4


执行命令如下
docker stop n8n
docker rm n8n
docker pull docker.n8n.io/n8nio/n8n:1.112.3
docker run -d --name n8n -p 5680:5680 -e GENERIC_TIMEZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" -e N8N_PORT=5680 -v D:\n8n\n8n:/home/node/.n8n -v D:\n8n\n8ndata:/home/node/n8ndata docker.n8n.io/n8nio/n8n:1.112.4
本人已获得人工智能训练师高级证书,目前还在其他平台撰写内容——
https://www.zhihu.com/people/lei-35-60-53


1万+

被折叠的 条评论
为什么被折叠?



