n8n 怎么安装?新手本地部署与首次运行完整教程

装 n8n 本身不难,难的是装完之后「数据会不会丢」这件事。我见过太多人一条命令跑起来,用了一周,删掉容器重建,工作流全没了——因为数据卷没挂对。

这篇把三种常见装法讲清楚,按「最少踩坑」的顺序排:Docker、Docker Compose、npm。装完你会有:一个能在浏览器里打开的 n8n,数据存在本地不会丢,时区是对的。

适合谁看,动手前需要什么

适合完全没部署过服务的人,但需要你能打开终端敲命令。Windows、macOS、Linux 都能装,本文以 Docker 为主,因为后面升级和迁移最省事。

如果只是想在别人机器上试一下、不做长期使用,直接跳到第三节的 npm 方式,两行命令就能跑,但别拿它放重要数据。

先决定装在哪

方式 适合谁 优点 代价
Docker(单容器) 个人电脑、轻量使用 隔离干净,删了就删了,升级只换镜像 要学一点 Docker
Docker Compose 长期运行、要接数据库 配置写进文件,可以版本管理,重启自动拉起 多一个 yaml 要维护
npm 全局安装 已经有 Node 环境、想省资源 不用容器,直连宿主机,性能损耗最小 依赖系统 Node 版本,升级容易乱

我的建议:个人用选 Docker Compose,别用单条 docker run。原因很实际——单条命令跑起来之后,你过两个月绝对想不起当时设了哪些参数。Compose 把参数写在文件里,出问题能看、能改、能备份。

检查环境

先确认 Docker 在不在。终端执行:

docker -v

能看到版本号(形如 Docker version 29.5.3, build d1c06ef)就说明装好了。Windows 和 macOS 装 Docker Desktop 会自带;Linux 用 Docker Engine。

再确认 5678 端口没被占用。Linux:

ss -lntp | grep 5678

macOS 或 Linux 也可以用 lsof -i :5678。有输出说明被占了,换个端口,比如 -p 5679:5678。Windows 用 netstat -ano | findstr 5678。

方式一:一条 docker run 跑起来

先建数据卷,再启动容器。这两步别合并成一步,卷单独建好,后面删容器重建也不会丢数据:

docker volume create n8n_data

docker run -d --name n8n 
  -p 5678:5678 
  -e GENERIC_TIMEZONE="Asia/Shanghai" 
  -e TZ="Asia/Shanghai" 
  -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true 
  -e N8N_DEFAULT_LOCALE=zh-CN 
  -v n8n_data:/home/node/.n8n 
  --restart unless-stopped 
  n8nio/n8n

逐个说清每个参数在干什么,这些是真正会踩坑的地方:

  • -d:后台运行。官方文档给的是 -it --rm(前台运行、退出即删),那是给试玩用的。长期用一定要改成 -d --restart unless-stopped,服务器重启后容器会自己起来。
  • -p 5678:5678:把容器内的 5678 映射到宿主机。左边是宿主机端口,改左边就行。
  • GENERIC_TIMEZONE 和 TZ:两个都要设。TZ 管容器里系统命令的时间,GENERIC_TIMEZONE 管定时类节点(比如 Schedule Trigger)按哪个时区算。只设一个,会出现「我设的早上 9 点,实际下午 5 点跑了」。
  • -v n8n_data:/home/node/.n8n:最关键的一行。n8n 的 SQLite 数据库、加密密钥、日志都在这个目录里。不挂卷,容器一删全没。
  • N8N_DEFAULT_LOCALE=zh-CN:界面默认中文。注意 n8n 的中文只翻了外壳,节点参数仍是英文。

启动后浏览器打开 http://localhost:5678。第一次会让你创建管理员账号,密码至少 8 位。这个账号是本地存储的,忘了只能重置,记好。

方式二:Docker Compose(推荐)

建一个目录,里面放 docker-compose.yml:

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
      - N8N_DEFAULT_LOCALE=zh-CN
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_SECURE_COOKIE=false
    volumes:
      - ./n8n_data:/home/node/.n8n

然后在这个目录里执行:

docker compose up -d

几点说明:

N8N_SECURE_COOKIE=false 这一行只在「本地用 http 访问」时需要。如果你已经配了域名和 HTTPS,把它删掉——开着 HTTPS 却写 false,反而降低安全性。很多人本地装完登录页一直转圈,就是被这个 cookie 设置卡的。

数据目录用的是 ./n8n_data,也就是跟 yml 同级的文件夹。好处是备份直接打包这个目录,不用去猜 Docker 卷藏在哪。

查看日志、判断有没有起来:

docker compose logs -f --tail=50

看到编辑器地址和版本号那一行,就说明起来了。按 Ctrl+C 只退出日志,容器还在跑。

方式三:npm 全局安装

我自用的那台实例就是这种方式,不用容器,直接跑在宿主机上。前提是有 Node.js 环境,n8n 2.x 要求 Node 20 以上(我这台是 Node 24.21.0)。

npm install -g n8n
n8n start

但直接这么跑有个问题:数据默认落在当前用户目录下的 .n8n,而且关掉终端就停了。生产环境通常会用环境变量指定数据目录,再用 systemd 或 pm2 托管。这台实例实际用的关键变量是这样的(值改成你自己的):

N8N_USER_FOLDER=/data/n8n
N8N_HOST=127.0.0.1
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=https://你的域名/
N8N_DEFAULT_LOCALE=zh-CN

N8N_HOST=127.0.0.1 配合 N8N_EDITOR_BASE_URL,是把 n8n 藏在 Nginx 后面、不直接暴露端口的常见做法,下一篇部署到服务器时会细讲。如果你只在本机用,把 HOST 设成 localhost 就行。

装完长什么样

登录之后进入的是「概览」页。左边是功能导航,中间是工作流、执行、凭据这些标签页,右上角是「创建工作流」按钮。

n8n 登录后进入的概览页,左侧为功能导航,中间为工作流列表
这是安装完成后第一次登录看到的样子。如果你看到的是英文界面,去设置里把语言改成简体中文。

点「创建工作流」,会得到一个空画布,中间只有一行「添加第一步」:

n8n 新建工作流后的空白画布,中间显示添加第一步
空画布不代表坏了,这是正常的起点。所有工作流都是从这一个加号开始的。

第一个工作流:三个节点

点画布中间那个加号,右侧会弹出节点库。搜索框里输入 manual,选「Manual Trigger(手动触发)」,它就是这条流程的起点。

n8n 节点库搜索 http 的结果,列出 HTTP Request、Webhook 等节点
节点库可以搜英文名,也可以按分类翻。中文界面下节点名和描述仍是英文,搜英文更准。

接着在手动触发节点右边的小加号上,加一个「Edit Fields(编辑字段)」,随便写两个字段,比如 city 填「福州」、temp 填 27。再往右加一个「Code(代码)」节点,代码框里贴:

return items.map(item => ({
  json: {
    message: `${item.json.city} 现在 ${item.json.temp} 度`
  }
}));

最后点画布下方的「执行」按钮。三个节点依次亮起,都变成绿色对勾,就说明整条链路是通的。这时候点开任意一个节点,右边的输出区能看到实际数据。

这一步的目的不是学会写代码,而是让你确认:装出来的这套东西,能跑。

怎么算真的装成功了

能打开界面不算成功。按下面四条走一遍,都过了才算:

  1. 能打开编辑器:浏览器访问不报错,能看到工作流列表。
  2. 能保存:新建一个工作流,随便加个节点,等它自动保存,然后刷新页面,内容还在。
  3. 重启不丢:docker compose restart,再刷新,刚才那个工作流还在。这一条是检验数据卷有没有挂对的唯一办法。
  4. 能执行:跑一次手动工作流,节点变绿,点开能看到输出数据。

第三条最容易被跳过,也最要命。如果你重启后工作流没了,别怀疑 n8n,去检查 -v 后面的路径是不是写错了、或者用了匿名卷。

常见错误

端口被占用。报错里带 port is already allocated。换宿主机端口,比如 -p 5679:5678,然后用 5679 访问。

能打开但登录转圈。本地用 http 访问时,如果 N8N_SECURE_COOKIE 是默认的 true,浏览器会拒绝写入 cookie。本地测试时设成 false,配了 HTTPS 之后删掉这一行。

定时任务时间不对。只设了 TZ 没设 GENERIC_TIMEZONE,定时节点按 UTC 算。两个都设成 Asia/Shanghai。

重启后容器没起来。忘了加 --restart unless-stopped 或 yml 里的 restart。服务器重启后要手动 docker start n8n。

拉镜像很慢或失败。国内网络拉 Docker Hub 经常超时,配一个镜像加速器再拉,或者用 docker pull n8nio/n8n 时耐心等,镜像有几百 MB。

中文没生效。N8N_DEFAULT_LOCALE 只影响新会话的默认语言,已有的账号要自己去设置里改。而且如前所说,只有界面外壳是中文。

先别急着暴露到公网

装完就想用手机访问,于是把 5678 端口开到公网——这是最常见的错误。n8n 里放的是你各种系统的 API Key,裸奔在公网上等于把钥匙挂在门口。

正确的做法是:先在本机或内网用,确认要长期使用后,再按下一篇的流程绑域名、上 HTTPS、用 Nginx 反代,并且只让 127.0.0.1 监听。

另外,第一次登录后就去把管理员密码改成一个强口令,别用 admin123 这种。

关于版本

n8n 每周发一个小版本。写这篇时官方文档上标的稳定版是 2.44.5,beta 是 2.45.2;我这台实例跑的是 2.43.7,界面截图都取自它。

建议:生产环境不要用 latest。把镜像钉在具体版本号上,比如 n8nio/n8n:2.44.5,要升级时改数字再拉一次。用 latest 的后果是某天重启,版本悄悄变了,工作流行为也跟着变,排查起来很费劲。

怎么看自己的版本:登录后左侧最下面进设置,或者执行 docker exec n8n n8n --version。

下一步

装好了,接下来该学工作流本身。下一篇《第一个工作流与四个核心概念》排在 10 月 28 日,发布后会出现在课程总目录里。在那之前,建议你先用今天装的这套,把上面那条三节点的例子自己敲一遍,手比眼睛记得牢。

如果你更想先搞懂「为什么值得学」,回头看看上一篇:n8n 是什么,零基础入门与应用场景。

参考资料

最后更新:2026 年 10 月 22 日。Docker 那几条命令是照官方文档核的(当时标注的稳定版是 2.44.5),截图拍自我自己那台 2.43.7。

THE END