宝塔面板部署 n8n 详细图文教程:反向代理与 SSL 证书配置指南

2026-01-16 18 0

前言:告别裸奔,给你的 n8n 穿上“防弹衣”

兄弟们,我是 N8N大学 的主编。最近在社群里发现,很多新手在宝塔面板部署完 n8n 后,直接用 IP 地址加端口访问,既不安全,看着也不专业。更惨的是,很多人因为没配好反向代理,导致 Webhook 回调死活接不到数据。

今天,笔者就手把手带大家在宝塔面板上,把 n8n 部署得稳稳当当,并且搞定 HTTPS 加密和反向代理。这不仅仅是“能用”,而是“好用且安全”。走起!

准备工作:手里有粮,心里不慌

在开始之前,请确保你手头有以下资源:

  • 一台配置不拉胯的 VPS:建议 2核4G 起步,n8n 这家伙胃口不小。
  • 宝塔面板(Linux Panel):最新版即可。
  • 一个域名:必须解析到你的服务器 IP,比如 n8n.yourdomain.com
  • SSH 终端工具:FinalShell 或者 Xshell 都行。

核心实操:三步走,部署与代理

咱们把整个流程拆解为三个核心步骤:运行容器、创建网站、配置代理。别慌,每一步都很简单。

步骤一:Docker 运行 n8n 容器

虽然宝塔有自带的 Docker 管理器,但笔者习惯直接用 SSH 命令行操作,这样更稳,权限更好控制。

首先,必须创建一个持久化目录,防止容器重启数据丢失:

mkdir -p /www/wwwroot/n8n_data && cd /www/wwwroot/n8n_data

接下来,运行以下命令启动 n8n。注意看,这里我特意加了时区配置,这是新手最容易忽略的坑!

docker run -d 
--name n8n 
--restart=always 
-p 5678:5678 
-v $(pwd):/home/node/.n8n 
-e TZ=Asia/Shanghai 
docker.n8n.io/n8nio/n8n

参数解释:

  • -p 5678:5678:将容器的 5678 端口映射到宿主机的 5678 端口。这里我们暂时只暴露给本地,不对外开放。
  • -v $(pwd):/home/node/.n8n:把当前目录挂载到容器内部,你的工作流数据都会存在这里。
  • -e TZ=Asia/Shanghai:强制设置时区为上海,否则你的时间调度任务全是乱的。

执行完后,输入 docker ps 看一眼,如果看到 n8n 容器正在运行,第一步就成功了。

步骤二:宝塔创建站点并申请 SSL

现在回到宝塔面板的图形界面:

  1. 点击左侧菜单的 网站 -> 添加站点
  2. 输入你的域名(例如 n8n.yourdomain.com),数据库选 MySQL(虽然 n8n 用不上,但宝塔习惯让你选),PHP 版本选择 纯静态(非常重要,n8n 是 Node.js 应用,不需要 PHP)。
  3. 站点创建好后,点击该站点的 设置
  4. 在左侧菜单找到 SSL,选择 Let's Encrypt,勾选你的域名,点击申请。秒级下发,免费又好用。

步骤三:配置反向代理(关键!)

这是连接域名和 n8n 容器的桥梁。很多教程这里讲得云里雾里,看笔者操作:

  1. 仍在站点的 设置 页面,点击左侧的 反向代理 标签。
  2. 点击 添加反向代理
  3. 代理名称:随便填,比如 n8n_proxy
  4. 目标 URL:这里填入 http://127.0.0.1:5678。注意,因为我们前面 Docker 映射的是 5678 端口,且在本机运行,所以直接填本地回环地址。
  5. 发送域名:保持默认的 $host 即可。

保存后,宝塔会自动生成 Nginx 配置文件。但到这里还没完,n8n 对反向代理有特殊要求,我们需要手动修整一下 Nginx 配置,防止前端资源加载失败。

点击反向代理列表里的 配置文件,在 location / 块中,确保有下面这两行(宝塔生成的通常有,但我们要确认):

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;

为了支持 Webhook 的 POST 请求,防止 413 错误(请求体太大),建议在配置文件里加上:

client_max_body_size 100m;

保存配置,重载 Nginx。现在,直接访问 https://n8n.yourdomain.com,你应该能看到 n8n 漂亮的登录界面了!

避坑指南:这些坑笔者替你踩过了

即使按照上面做,偶尔也会遇到问题。这里分享两个实战中最容易出现的“灵异事件”:

1. Webhook 回调超时或 502 错误

如果你的工作流卡在 Webhook 节点迟迟不动,大概率是 Nginx 默认的 60 秒超时时间不够用。n8n 的 Webhook 有时需要处理长任务。

解决办法:在宝塔的 Nginx 配置文件(不是反向代理配置,是站点配置)的 server 块中,加入以下两行:

proxy_read_timeout 300s;
proxy_connect_timeout 75s;

然后重启 Nginx。

2. 找不到 Webhook 路径

很多用户配置完后,复制 Webhook URL 时直接用了 n8n 内部显示的地址。但在反向代理模式下,Webhook 的 URL 域名必须和你访问的域名保持一致!

正确做法:在 n8n 的 设置 -> 实例设置 中,找到 Webhook URL,手动将其修改为 https://n8n.yourdomain.com(不带 /webhook 路径,n8n 会自动拼接)。这样外部回调才能正确打到你的服务上。

FAQ 问答

Q1: 为什么要用反向代理,直接用 IP:5678 访问不行吗?
A: 可以,但不推荐。反向代理配合 SSL 证书能让你的数据传输加密,防止 Token 被抓包窃取。另外,公司网络通常会封禁非标准端口(如 5678),用 443 端口的 HTTPS 则能畅通无阻。

Q2: 我的 n8n 运行一段时间就自动重启了,怎么回事?
A: 大概率是内存不足。n8n 在执行复杂工作流时非常吃内存。建议查看 Docker 日志(docker logs n8n),如果看到 JavaScript heap out of memory,就需要增加 VPS 内存,或者在 Docker 启动命令中限制内存使用(虽然不推荐限制,因为会影响任务执行)。

Q3: 宝塔面板自带的商店里也有 n8n,我能直接安装吗?
A: 笔者不推荐。宝塔商店的一键包通常是基于 PHP 环境或者老旧的 Node 版本,兼容性较差。使用 Docker 镜像(docker.n8n.io/n8nio/n8n)是目前最稳定、最干净的部署方式,卸载也方便,直接删容器就行。

总结与资源

恭喜你!到这里,你已经拥有了一个生产级别的 n8n 自动化平台。反向代理和 SSL 是企业级应用的标配,也是保障你数据安全的第一道防线。N8N大学 建议你在部署后,先跑一个简单的定时任务测试连通性,再接入复杂的业务。

如果在部署过程中遇到报错,欢迎在评论区贴出日志,笔者看到会第一时间回复。下期教程,我们聊聊如何用 n8n 接入 DeepSeek 搞定本地知识库,敬请期待!

相关文章

寻找免费的 Zapier 替代品?深度解析 n8n 社区版为何是最佳选择
不只是 n8n!2025年值得关注的 5 款开源自动化工具推荐与评测
省钱攻略:如何将 Zapier 自动化工作流无缝迁移到 n8n?
防止数据丢失:n8n 工作流与凭证(Credentials)的自动备份方案
Node.js 开发者首选:使用 npm 全局安装 n8n 及 PM2 进程守护教程
本地部署痛点解决:配合 Cloudflare Tunnel 实现 n8n 外网远程访问

发布评论