← 返回博客

在 Docker 上安装 n8n:完整教程(含一键方式)

· MyPanel

n8n 是一款开源的工作流自动化平台——可自托管的 Zapier/Make 替代品。运行 n8n 最常见、最稳定的方式是使用 Docker。本文将从零开始教你在 Docker 上安装 n8n(包括 docker rundocker compose),然后展示如何用 MyPanel 一键完成同样的事。

为什么用 Docker 运行 n8n?

准备

方式一 —— 用 docker run 快速运行

创建数据卷并启动 n8n 容器:

Terminal window
docker volume create n8n_data
docker run -d --name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

打开 http://服务器IP:5678 创建第一个所有者账户。数据(工作流、凭据)由 n8n 保存在 /home/node/.n8n——也就是 n8n_data 卷,因此更新时不会丢失

方式二 —— 使用 docker compose(推荐)

创建 docker-compose.yml

services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- N8N_PORT=5678
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:

启动:docker compose up -d。日后更新:docker compose pull && docker compose up -d

重要提示: WEBHOOK_URL 必须是你真实的 HTTPS 地址,否则 webhook 触发器(Telegram、GitHub…)将无法正常工作。

难点:反向代理 + SSL

上面的容器只在 5678 端口以非加密方式运行。要通过带 HTTPS 的域名访问,你需要搭建反向代理(nginx/Caddy/Traefik)指向 127.0.0.1:5678,并申请 Let’s Encrypt SSL 证书(certbot)。用 nginx 时还必须启用 WebSocket(n8n 的实时界面依赖 WS):

location / {
proxy_pass http://127.0.0.1:5678;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}

这正是最耗时、最易出错的环节:代理配置、SSL 续期、开放正确端口、保持 WebSocket。

自己在 Docker 上装 n8n 的常见坑

更简单的方式:用 MyPanel 一键装 n8n

如果你不想自己搞代理、SSL 和数据卷,MyPanelMarketplace 中内置了 n8n——一键安装:

  1. 进入 Marketplace,选择 n8n,点击安装
  2. 填入域名(已把 DNS 指向服务器)。
  3. 点击安装——MyPanel 自动拉取镜像、在隔离的 Docker 容器中运行、配置反向代理 + WebSocket,并自动签发 Let’s Encrypt SSL

之后你可以像管理任何网站一样管理 n8n:查看日志、启停、SSL、备份。数据保存在持久卷中,redeploy 后仍在。详见Marketplace 文档

手动 DockerMyPanel Marketplace
启动容器敲命令一键
反向代理自行配置自动
SSL自跑 certbot自动签发 + 续期
WebSocket手动添加内置
备份与日志自己做面板内

结语

在 Docker 上运行 n8n 能带来强大的自托管自动化能力。全程手动完全可行,但代理 + SSL + WebSocket 这一层常让新手却步。若想几分钟内让 n8n 跑在 HTTPS 上

👉 用一条命令免费 安装 MyPanel,打开 Marketplace,一键安装 n8n——免费版足以起步。

MyPanel — 自托管控制面板:在你自己的 Linux 服务器上部署网站、WordPress、数据库与 SSL。