【教程】用宝塔 Docker 安装 n8n:域名访问与 Gmail 授权

2991 字
15 分钟
【教程】用宝塔 Docker 安装 n8n:域名访问与 Gmail 授权

简单聊聊#

想在自己的服务器上运行 n8n,又不想反复输入命令?这篇教程从全新 Ubuntu VPS 开始,用宝塔完成安装、域名访问,再连接自己的 Gmail 邮箱。

做完以后,你会得到什么?#

本文的目标很简单:

  • 用 https://n8n.你的域名 打开 n8n。
  • 用自己的域名打开宝塔面板,保留原来的端口和安全入口。
  • 在 n8n 中连接 Gmail,并成功读取一封测试邮件。

**先按正文完成这三件事。**宝塔不带端口访问的方法放在选读部分,可以以后再做。

开始前准备好这些东西#

准备项需要什么
VPS一台全新的服务器
系统商家后台提供的 Ubuntu LTS 稳定版
登录信息公网 IP、登录用户名,以及密码或密钥
域名一个自己能够修改解析记录的域名
Google 账号能正常登录 Gmail 和 Google Cloud
浏览器能打开服务器、域名后台和 Google 页面

本文用 example.com 举例:

  • n8n:n8n.example.com
  • 宝塔:bt.example.com

看到这两个地址时,都要换成自己的域名。

本文按全新服务器来写。如果服务器已经有重要网站或文件,不要为了跟教程而重装系统。

一、在商家后台安装 Ubuntu#

购买 VPS 后,在商家后台找到 操作系统、安装系统 或 重装系统。

选择商家提供、宝塔支持的 Ubuntu LTS 稳定版,完成安装。

这里不用自己下载系统,也不用研究分区。保留商家默认选项即可。

安装后,记下:

  1. 服务器的公网 IP。
  2. 登录用户名。
  3. 登录密码,或者商家要求使用的密钥。
  4. 远程登录端口,以商家后台显示的值为准。
    在 VPS 商家后台选择 Ubuntu 系统
    在 VPS 商家后台选择 Ubuntu 系统

**检查一下:**商家后台显示服务器正在运行,并且能打开它的网页控制台。

二、安装并登录宝塔#

打开服务器终端#

新手可以先使用商家后台的 控制台、VNC 或 网页终端,按商家提供的信息登录。

如果你习惯用 Mac 终端,也可以通过 SSH 登录。用户名和端口要使用商家提供的值,不要默认所有服务器都是 root 和 22。

复制官方安装命令#

打开宝塔官方安装说明,复制适用于 Ubuntu 的安装命令,粘贴到服务器终端运行。

这里使用官网当前提供的命令,避免旧教程中的安装地址失效。

安装过程中如果出现确认提示,读完提示再继续。等待安装结束,不要提前关闭终端。

完成后,终端会显示:

  • 宝塔访问地址。
  • 用户名。
  • 密码。

**完整保存访问地址,包括端口和最后面的安全入口。**宝塔安装后可能使用随机端口,以实际输出为准。宝塔官方说明

宝塔安装完成后显示访问地址
宝塔安装完成后显示访问地址

把完整地址粘贴到浏览器中,登录宝塔。

如果首次登录要求绑定宝塔账号,按页面提示完成。

准备 Docker 和 Nginx#

进入宝塔的 Docker 页面。

如果已经显示 Docker 正常运行,就直接继续;如果提示安装 Docker,点击安装并等待完成。

然后在 软件商店 中安装 Nginx。

本文只需要用它接收域名访问,不用为了这篇教程把 PHP、MySQL 等软件全部装上。

确认宝塔中的 Docker 和 Nginx 已准备好
确认宝塔中的 Docker 和 Nginx 已准备好

**检查一下:**能够登录宝塔,Docker 和 Nginx 都正常运行。

如果宝塔地址打不开,先检查有没有漏掉端口或安全入口。仍然打不开,再到商家后台查看是否限制了宝塔实际使用的端口,不用提前添加一长串规则。

三、把两个域名指向服务器#

进入域名的 DNS 管理页面,添加两条 A 记录。

类型名称指向
An8nVPS 公网 IPv4 地址
Abt同一个 VPS 公网 IPv4 地址

如果域名在 Cloudflare 管理,本文先把这两条记录设为 仅 DNS,也就是灰色云朵。

不要在 IP 地址一栏填写网址、端口或安全入口。

为 n8n 和宝塔添加域名解析
为 n8n 和宝塔添加域名解析

保存后等待解析生效。

注意:**添加解析只是让域名找到服务器,还没有完成网站配置。**现在打不开 n8n 域名,是正常的。

四、在宝塔 Docker 中安装 n8n#

进入 Docker → 应用商店,搜索 n8n,打开安装窗口。

按照安装窗口填写应用名称、保存目录等信息,然后开始安装。宝塔应用商店的基本流程是选择应用、填写参数、安装后查看运行状态。宝塔官方教程

在宝塔 Docker 应用商店安装 n8n
在宝塔 Docker 应用商店安装 n8n

用代码配置域名和 Webhook#

打开宝塔左侧的 终端,连接自己的服务器。下面的命令都在这里执行。

先复制这一行,找到 n8n 对应的容器名,记下第一列 NAMES:

Terminal window
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'

输出第一列就是容器名。找到镜像名称包含 n8n 的那一行。

再复制下面整段,只改开头的容器名和域名。它会在原有宝塔 Docker 编排上增加域名设置,并重新创建 n8n 容器,让 Webhook 配置生效;原有端口、数据挂载和其他设置继续使用。执行时 n8n 会短暂中断。

这段代码适用于通过宝塔应用商店、使用 Docker Compose 安装的 n8n。没有找到原配置时会停止,不要改成删除容器重装。

Terminal window
bash <<'BASH'
set -e
CONTAINER='改成你的n8n容器名'
DOMAIN='n8n.example.com'
PROJECT=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project"}}' "$CONTAINER")
SERVICE=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.service"}}' "$CONTAINER")
WORKDIR=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project.working_dir"}}' "$CONTAINER")
FILES=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project.config_files"}}' "$CONTAINER")
if [ -z "$PROJECT" ] || [ -z "$SERVICE" ] || [ ! -d "$WORKDIR" ] || [ -z "$FILES" ]; then
echo '未找到宝塔应用的原编排配置,请先核对容器名。'
exit 1
fi
cd "$WORKDIR"
IFS=',' read -r -a CONFIG_FILES <<< "$FILES"
ARGS=()
for FILE in "${CONFIG_FILES[@]}"; do
[ -f "$FILE" ] || { echo "找不到原配置:$FILE"; exit 1; }
ARGS+=(-f "$FILE")
done
VERSION=$(docker exec "$CONTAINER" n8n --version | tail -n 1)
IFS='.' read -r MAJOR MINOR REST <<< "$VERSION"
[[ "$MAJOR" =~ ^[0-9]+$ && "$MINOR" =~ ^[0-9]+$ ]] || { echo '无法确认 n8n 版本,请先检查容器是否正常运行。'; exit 1; }
WEBHOOK_KEY='WEBHOOK_URL'
if (( MAJOR > 2 || (MAJOR == 2 && MINOR >= 35) )); then
WEBHOOK_KEY='N8N_WEBHOOK_URL'
fi
OVERRIDE="$WORKDIR/n8n-webhook.override.yml"
[ ! -f "$OVERRIDE" ] || cp -a "$OVERRIDE" "$OVERRIDE.bak.$(date +%Y%m%d%H%M%S)"
cat > "$OVERRIDE" <<YAML
services:
$SERVICE:
environment:
N8N_HOST: "$DOMAIN"
N8N_PORT: "5678"
N8N_PROTOCOL: "https"
N8N_EDITOR_BASE_URL: "https://$DOMAIN/"
$WEBHOOK_KEY: "https://$DOMAIN/"
N8N_PROXY_HOPS: "1"
GENERIC_TIMEZONE: "Asia/Shanghai"
TZ: "Asia/Shanghai"
YAML
docker compose -p "$PROJECT" "${ARGS[@]}" -f "$OVERRIDE" config --quiet
docker compose -p "$PROJECT" "${ARGS[@]}" -f "$OVERRIDE" up -d --no-deps "$SERVICE"
echo "配置完成。接下来配置网站,再打开 https://$DOMAIN"
BASH

代码会按 n8n 版本选择 Webhook 参数,不用自己判断。它使用额外配置文件保存设置;以后如果通过宝塔重新部署或升级应用,需要再次执行这段代码。n8n 官方说明、Docker 配置合并说明

这段命令尚未在你的服务器上实操。若报错,保留完整错误信息,先排查,不要删除数据目录。

五、配置 n8n 域名访问#

在宝塔进入 网站 → 添加站点,域名填 n8n.example.com,数据库选“不创建”,PHP 选“纯静态”,目录保留默认值。

打开这个网站的设置,按顺序完成:

  1. **申请证书:**进入 SSL → Let's Encrypt,勾选域名,使用文件验证申请;成功后开启 强制 HTTPS。
  2. **添加代理:**进入 反向代理,名称填 n8n,代理目录填 /,目标填 http://127.0.0.1:服务器映射端口,关闭缓存。端口以宝塔 Docker 中该容器的端口映射为准。
  3. **检查代理配置:**确认下面三行在代理的 location 配置中存在。已有的不要重复添加;如果页面提供 WebSocket 开关,一并开启。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;

打开 https://n8n.example.com,创建管理员账号。能正常登录,且没有证书警告,这一步就完成了。

添加域名代理不会关闭 n8n 原来的公网端口。如果安装设置提供监听 IP,将它设为 127.0.0.1,并再次确认域名能打开;不需要额外开放 n8n 的端口。

六、用域名访问宝塔#

把原宝塔地址里的 IP 换成 bt.example.com,端口和安全入口保留,例如:

https://bt.example.com:实际端口/你的安全入口

协议沿用原地址。如果要使用 HTTPS,在宝塔 设置 → 面板 SSL 为 bt.example.com 申请并部署证书,再使用 HTTPS 地址登录。宝塔面板 SSL 说明

七、授权 Gmail#

在 n8n 复制回调地址#

新建工作流,添加 Gmail 节点,在凭证处选择 Create new credential。复制页面里的 OAuth Redirect URL,暂时保持页面打开。

它应该类似 https://n8n.example.com/rest/oauth2-credential/callback。如果仍显示 IP、localhost 或 http,先检查前面的域名配置。

复制 n8n 的 Gmail 授权回调地址
复制 n8n 的 Gmail 授权回调地址

在 Google Cloud 完成设置#

打开 Google Cloud 控制台,按顺序操作:

  1. **创建项目:**顶部项目选择器 → 新建项目,名称填 My n8n。创建后确认选中了它。
  2. 启用 Gmail:API 和服务 → 库,搜索 Gmail API,点击启用。
  3. **设置授权页面:**进入 Google Auth Platform(旧入口叫 OAuth 同意屏幕),点击开始使用。应用名填 My n8n,支持邮箱和联系邮箱填自己的邮箱,个人 Gmail 的受众选 External / 外部。
  4. 添加测试用户:Audience / 受众 → Test users / 测试用户,加入准备授权的 Gmail 邮箱。
  5. **添加域名:**在 Branding / 品牌信息 的授权域名中填自己的主域名,例如 example.com,不要带协议和路径。
  6. 创建客户端:Clients / 客户端 → Create client,类型选 Web application / Web 应用。在“已获授权的重定向 URI”中粘贴刚才的回调地址,然后创建。

获得 Client ID 和 Client Secret 后,回到 n8n 填入对应位置,点击 Sign in with Google,选择测试邮箱并确认授权,最后保存凭证。Google 授权设置说明、n8n Gmail 授权说明

**Client Secret 不要出现在公开截图里。**若出现“Google 尚未验证此应用”,只有确认是自己创建的应用,并且页面允许继续时,才继续授权。

测试模式的 Gmail 授权通常会在 7 天后过期,届时重新连接即可。长期使用再处理生产状态和 Google 的验证要求。Google 官方说明

八、读取邮件,完成验收#

先给自己的 Gmail 发一封邮件,主题写 n8n-test-001,确认已经收到。

在 n8n 把 Manual Trigger(手动触发)连到 Gmail,选择刚才的凭证,并设置:

设置内容
ResourceMessage
OperationGet Many
Return All关闭
Limit1
Filters → Searchsubject:n8n-test-001
Filters → Read StatusUnread and read emails

点击执行。输出中能看到这封测试邮件的信息,就说明授权和读取都成功了。保存工作流即可,不需要发布。Gmail 节点说明

n8n 成功读取 Gmail 测试邮件
n8n 成功读取 Gmail 测试邮件

最后确认三件事:

  • n8n 域名能打开并登录。
  • 宝塔域名能打开并登录。
  • Gmail 测试邮件读取成功。

保存重要工作流后,记得做包含 Docker 数据的服务器快照或完整备份;仅导出工作流不包含完整凭证备份。

常见问题#

  • **网站打不开:**检查域名 A 记录和商家后台的 80/443 端口限制;宝塔检查实际面板端口。
  • **n8n 显示 502:**检查容器是否运行,以及代理目标是否用了正确的服务器映射端口。
  • **Google 回调地址不匹配:**重新复制 n8n 的回调地址,确保 Google 中完全一致。
  • **Google 拒绝授权:**检查当前邮箱有没有加入测试用户。
  • **读取不到邮件:**确认邮件已收到,查询范围包括已读和未读邮件。
【教程】用宝塔 Docker 安装 n8n:域名访问与 Gmail 授权
https://itszhuohui.com/posts/vps-baota-docker-n8n-gmail-oauth/
作者
zhuohui
发布于
2026-10-07
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Zhuohui
日拱一卒
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
站点统计
文章
21
分类
3
标签
73
总字数
43,485
运行时长
0 天
最后活动
0 天前
分类
标签

文章目录