在 Docker 上安装 n8n:完整教程(含一键方式)
n8n 是一款开源的工作流自动化平台——可自托管的 Zapier/Make 替代品。运行 n8n 最常见、最稳定的方式是使用 Docker。本文将从零开始教你在 Docker 上安装 n8n(包括 docker run 和 docker compose),然后展示如何用 MyPanel 一键完成同样的事。
为什么用 Docker 运行 n8n?
- 干净利落——一切都在一个容器里,不弄乱操作系统。
- 易于更新——拉取新镜像并重启即可。
- 数据持久——使用数据卷保留工作流和凭据,redeploy 也不丢。
准备
- 一台 Linux VPS(Ubuntu 22.04+ 或 Debian 12+)。
- 已安装 Docker。若未安装:
curl -fsSL https://get.docker.com | sh。 - (推荐)一个指向服务器 IP 的域名,以启用 HTTPS。
方式一 —— 用 docker run 快速运行
创建数据卷并启动 n8n 容器:
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 的常见坑
- 忘记数据卷 → 一更新就丢光工作流。
WEBHOOK_URL填错 → webhook 收不到事件。- 代理缺少 WebSocket → 界面加载卡住。
- SSL 过期 → 站点报安全错误;需要 certbot 续期 cron。
更简单的方式:用 MyPanel 一键装 n8n
如果你不想自己搞代理、SSL 和数据卷,MyPanel 在 Marketplace 中内置了 n8n——一键安装:
- 进入 Marketplace,选择 n8n,点击安装。
- 填入域名(已把 DNS 指向服务器)。
- 点击安装——MyPanel 自动拉取镜像、在隔离的 Docker 容器中运行、配置反向代理 + WebSocket,并自动签发 Let’s Encrypt SSL。
之后你可以像管理任何网站一样管理 n8n:查看日志、启停、SSL、备份。数据保存在持久卷中,redeploy 后仍在。详见Marketplace 文档。
| 手动 Docker | MyPanel Marketplace | |
|---|---|---|
| 启动容器 | 敲命令 | 一键 |
| 反向代理 | 自行配置 | 自动 |
| SSL | 自跑 certbot | 自动签发 + 续期 |
| WebSocket | 手动添加 | 内置 |
| 备份与日志 | 自己做 | 面板内 |
结语
在 Docker 上运行 n8n 能带来强大的自托管自动化能力。全程手动完全可行,但代理 + SSL + WebSocket 这一层常让新手却步。若想几分钟内让 n8n 跑在 HTTPS 上:
👉 用一条命令免费 安装 MyPanel,打开 Marketplace,一键安装 n8n——免费版足以起步。