【教程】用宝塔 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 稳定版,完成安装。
这里不用自己下载系统,也不用研究分区。保留商家默认选项即可。
安装后,记下:
- 服务器的公网 IP。
- 登录用户名。
- 登录密码,或者商家要求使用的密钥。
- 远程登录端口,以商家后台显示的值为准。

在 VPS 商家后台选择 Ubuntu 系统
**检查一下:**商家后台显示服务器正在运行,并且能打开它的网页控制台。
二、安装并登录宝塔
打开服务器终端
新手可以先使用商家后台的 控制台、VNC 或 网页终端,按商家提供的信息登录。
如果你习惯用 Mac 终端,也可以通过 SSH 登录。用户名和端口要使用商家提供的值,不要默认所有服务器都是 root 和 22。
复制官方安装命令
打开宝塔官方安装说明,复制适用于 Ubuntu 的安装命令,粘贴到服务器终端运行。
这里使用官网当前提供的命令,避免旧教程中的安装地址失效。
安装过程中如果出现确认提示,读完提示再继续。等待安装结束,不要提前关闭终端。
完成后,终端会显示:
- 宝塔访问地址。
- 用户名。
- 密码。
**完整保存访问地址,包括端口和最后面的安全入口。**宝塔安装后可能使用随机端口,以实际输出为准。宝塔官方说明

把完整地址粘贴到浏览器中,登录宝塔。
如果首次登录要求绑定宝塔账号,按页面提示完成。
准备 Docker 和 Nginx
进入宝塔的 Docker 页面。
如果已经显示 Docker 正常运行,就直接继续;如果提示安装 Docker,点击安装并等待完成。
然后在 软件商店 中安装 Nginx。
本文只需要用它接收域名访问,不用为了这篇教程把 PHP、MySQL 等软件全部装上。

**检查一下:**能够登录宝塔,Docker 和 Nginx 都正常运行。
如果宝塔地址打不开,先检查有没有漏掉端口或安全入口。仍然打不开,再到商家后台查看是否限制了宝塔实际使用的端口,不用提前添加一长串规则。
三、把两个域名指向服务器
进入域名的 DNS 管理页面,添加两条 A 记录。
| 类型 | 名称 | 指向 |
|---|---|---|
| A | n8n | VPS 公网 IPv4 地址 |
| A | bt | 同一个 VPS 公网 IPv4 地址 |
如果域名在 Cloudflare 管理,本文先把这两条记录设为 仅 DNS,也就是灰色云朵。
不要在 IP 地址一栏填写网址、端口或安全入口。

保存后等待解析生效。
注意:**添加解析只是让域名找到服务器,还没有完成网站配置。**现在打不开 n8n 域名,是正常的。
四、在宝塔 Docker 中安装 n8n
进入 Docker → 应用商店,搜索 n8n,打开安装窗口。
按照安装窗口填写应用名称、保存目录等信息,然后开始安装。宝塔应用商店的基本流程是选择应用、填写参数、安装后查看运行状态。宝塔官方教程

用代码配置域名和 Webhook
打开宝塔左侧的 终端,连接自己的服务器。下面的命令都在这里执行。
先复制这一行,找到 n8n 对应的容器名,记下第一列 NAMES:
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'输出第一列就是容器名。找到镜像名称包含 n8n 的那一行。
再复制下面整段,只改开头的容器名和域名。它会在原有宝塔 Docker 编排上增加域名设置,并重新创建 n8n 容器,让 Webhook 配置生效;原有端口、数据挂载和其他设置继续使用。执行时 n8n 会短暂中断。
这段代码适用于通过宝塔应用商店、使用 Docker Compose 安装的 n8n。没有找到原配置时会停止,不要改成删除容器重装。
bash <<'BASH'set -eCONTAINER='改成你的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 1ficd "$WORKDIR"IFS=',' read -r -a CONFIG_FILES <<< "$FILES"ARGS=()for FILE in "${CONFIG_FILES[@]}"; do [ -f "$FILE" ] || { echo "找不到原配置:$FILE"; exit 1; } ARGS+=(-f "$FILE")doneVERSION=$(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'fiOVERRIDE="$WORKDIR/n8n-webhook.override.yml"[ ! -f "$OVERRIDE" ] || cp -a "$OVERRIDE" "$OVERRIDE.bak.$(date +%Y%m%d%H%M%S)"cat > "$OVERRIDE" <<YAMLservices: $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"YAMLdocker compose -p "$PROJECT" "${ARGS[@]}" -f "$OVERRIDE" config --quietdocker compose -p "$PROJECT" "${ARGS[@]}" -f "$OVERRIDE" up -d --no-deps "$SERVICE"echo "配置完成。接下来配置网站,再打开 https://$DOMAIN"BASH代码会按 n8n 版本选择 Webhook 参数,不用自己判断。它使用额外配置文件保存设置;以后如果通过宝塔重新部署或升级应用,需要再次执行这段代码。n8n 官方说明、Docker 配置合并说明
这段命令尚未在你的服务器上实操。若报错,保留完整错误信息,先排查,不要删除数据目录。
五、配置 n8n 域名访问
在宝塔进入 网站 → 添加站点,域名填 n8n.example.com,数据库选“不创建”,PHP 选“纯静态”,目录保留默认值。
打开这个网站的设置,按顺序完成:
- **申请证书:**进入
SSL → Let's Encrypt,勾选域名,使用文件验证申请;成功后开启强制 HTTPS。 - **添加代理:**进入
反向代理,名称填n8n,代理目录填/,目标填http://127.0.0.1:服务器映射端口,关闭缓存。端口以宝塔 Docker 中该容器的端口映射为准。 - **检查代理配置:**确认下面三行在代理的
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,先检查前面的域名配置。

在 Google Cloud 完成设置
打开 Google Cloud 控制台,按顺序操作:
- **创建项目:**顶部项目选择器 → 新建项目,名称填
My n8n。创建后确认选中了它。 - 启用 Gmail:
API 和服务 → 库,搜索Gmail API,点击启用。 - **设置授权页面:**进入
Google Auth Platform(旧入口叫OAuth 同意屏幕),点击开始使用。应用名填My n8n,支持邮箱和联系邮箱填自己的邮箱,个人 Gmail 的受众选External / 外部。 - 添加测试用户:
Audience / 受众 → Test users / 测试用户,加入准备授权的 Gmail 邮箱。 - **添加域名:**在
Branding / 品牌信息的授权域名中填自己的主域名,例如example.com,不要带协议和路径。 - 创建客户端:
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,选择刚才的凭证,并设置:
| 设置 | 内容 |
|---|---|
| Resource | Message |
| Operation | Get Many |
| Return All | 关闭 |
| Limit | 1 |
| Filters → Search | subject:n8n-test-001 |
| Filters → Read Status | Unread and read emails |
点击执行。输出中能看到这封测试邮件的信息,就说明授权和读取都成功了。保存工作流即可,不需要发布。Gmail 节点说明

最后确认三件事:
- n8n 域名能打开并登录。
- 宝塔域名能打开并登录。
- Gmail 测试邮件读取成功。
保存重要工作流后,记得做包含 Docker 数据的服务器快照或完整备份;仅导出工作流不包含完整凭证备份。
常见问题
- **网站打不开:**检查域名 A 记录和商家后台的
80/443端口限制;宝塔检查实际面板端口。 - **n8n 显示 502:**检查容器是否运行,以及代理目标是否用了正确的服务器映射端口。
- **Google 回调地址不匹配:**重新复制 n8n 的回调地址,确保 Google 中完全一致。
- **Google 拒绝授权:**检查当前邮箱有没有加入测试用户。
- **读取不到邮件:**确认邮件已收到,查询范围包括已读和未读邮件。