Contents

n8n Docker 全新安装与中文配置指南

本文介绍如何使用 Docker Compose 在 Linux 服务器上部署 n8n,并通过社区汉化包实现部分中文界面。适合希望独立部署、不依赖 1Panel 等管理面板的用户。

前言

n8n 是一个强大的工作流自动化工具,类似于 Zapier 和 Make,但可以自托管。虽然官方提供了 Docker 镜像,但中文支持有限。本文将指导你完成从零开始的部署,并尽可能实现中文界面。

重要提示

  • n8n 2.x 官方 UI 仍以英文为主
  • 社区汉化包通常只能实现部分中文,这是正常现象
  • 最常见的部署问题是目录权限配置错误

环境准备

在开始之前,确保你的服务器满足以下要求:

  • 操作系统:Linux(Ubuntu / Debian / CentOS / Rocky 等)
  • Docker:已安装 Docker Engine
  • Docker Compose:v2 版本
  • 权限:root 或具备 sudo 权限的用户

快速开始

如果你已经熟悉 Docker,可以直接跳到部署步骤。以下是核心要点:

  • 部署路径/root/data/n8n/
  • 数据挂载:使用 bind mount 方式
  • 中文方案:通过社区 editor-ui 汉化包覆盖前端资源
  • 常见问题:数据目录权限错误会导致容器无法启动

部署步骤

步骤 1:安装 Docker 和 Docker Compose

如果服务器上还没有安装 Docker,执行以下命令:

1
2
3
4
# 安装 Docker
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker

安装 Docker Compose v2:

1
2
3
4
5
6
7
mkdir -p /usr/local/lib/docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-linux-x86_64 \
  -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

# 验证安装
docker compose version

步骤 2:创建工作目录

创建 n8n 的工作目录结构:

1
mkdir -p /root/data/n8n/{data,dist}

目录结构说明:

1
2
3
4
/root/data/n8n/
├── docker-compose.yml    # Docker Compose 配置文件
├── data/                 # n8n 运行数据(挂载到容器内 /home/node/.n8n)
└── dist/                 # editor-ui 前端资源(中文汉化包)
  • data/:存储 n8n 的工作流、凭据等数据,必须可写
  • dist/:存放汉化后的前端资源,通常只读

步骤 3:准备中文 editor-ui(可选)

如果你希望界面尽可能显示中文,可以下载社区汉化包:

1
2
3
4
cd /root/data/n8n
curl -fL -O https://github.com/other-blowsnow/n8n-i18n-chinese/releases/latest/download/editor-ui.tar.gz
tar -xzf editor-ui.tar.gz
ls -la dist | head

确认 dist/ 目录包含 index.htmlassets/ 目录。如果解压后出现 dist/dist 的嵌套结构,需要将内层内容移动到外层 dist/ 目录。

注意:即使使用汉化包,n8n 2.x 的界面仍会以英文为主,部分中文是正常现象。

步骤 4:编写 docker-compose.yml

创建 Docker Compose 配置文件 /root/data/n8n/docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: always

    ports:
      - "5678:5678"

    environment:
      - TZ=Asia/Shanghai
      - N8N_DEFAULT_LOCALE=zh-CN
      - N8N_DEFAULT_LANGUAGE=zh-CN

    volumes:
      # n8n 数据目录(必须可写)
      - ./data:/home/node/.n8n
      # editor-ui 汉化资源(只读)
      - ./dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist:ro

配置说明

  • ports:将容器的 5678 端口映射到宿主机的 5678 端口
  • environment:设置时区和中文语言环境
  • volumes:挂载数据目录和汉化资源

重要提示:YAML 文件必须使用空格缩进,不能使用 Tab 或中文空格,否则会导致解析错误。

步骤 5:修复数据目录权限

这是最关键的一步,也是最容易出错的地方。n8n 容器默认以 node 用户(UID=1000)运行,而宿主机创建的目录通常是 root:root,会导致权限错误。

执行以下命令修复权限:

1
2
chown -R 1000:1000 /root/data/n8n/data
chmod -R u+rwX,g+rwX /root/data/n8n/data

步骤 6:启动与验证

进入工作目录并启动服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd /root/data/n8n

# 验证 YAML 配置文件语法
docker compose config

# 启动容器(后台运行)
docker compose up -d

# 检查容器状态
docker ps | grep n8n

# 验证服务是否正常响应
curl -I http://127.0.0.1:5678/

如果一切正常,你应该看到 HTTP 200 或 302 响应。然后在浏览器中访问:

1
http://你的服务器IP:5678

首次访问会进入 n8n 的设置向导,按照提示完成初始配置即可。

关于中文显示

需要明确的是,n8n 2.x 的官方 UI 目前仍以英文为主。社区提供的汉化包通常只能覆盖部分菜单和页面,出现"少量中文 + 大量英文"的情况是正常的,并非安装错误。

如果你需要更完整的中文支持,可能需要考虑降级到 n8n 1.x 版本,但这通常不建议用于生产环境,因为会错过新版本的特性更新和安全修复。

常见问题排查

问题 1:权限错误 EACCES: permission denied

症状

  • 容器启动后立即退出或不断重启
  • 查看日志:docker logs n8n 显示 EACCES 错误

原因: bind mount 的宿主机目录权限为 root:root,而 n8n 容器以 node 用户(UID=1000)运行,无法写入数据目录。

解决方案

1
2
chown -R 1000:1000 /root/data/n8n/data
chmod -R u+rwX,g+rwX /root/data/n8n/data

然后重新启动容器:

1
docker compose restart

问题 2:端口连接被重置 Connection reset by peer

症状: 使用 curl 访问 5678 端口时,连接直接被重置。

原因: 通常是因为权限问题导致 n8n 启动失败,容器不断重启,端口连接被重置。

解决方案

  1. 先按照问题 1 修复数据目录权限
  2. 检查容器状态:docker ps -a
  3. 查看详细日志:docker logs n8n

问题 3:YAML 语法错误

症状: 执行 docker compose config 时报错:did not find expected '-' indicator

原因

  • YAML 列表项缩进不一致
  • 使用了 Tab 而不是空格
  • 混入了中文空格

解决方案: 使用 docker compose config 命令可以精确定位语法错误的位置。检查报错行,确保:

  • 使用空格而非 Tab
  • 缩进保持一致
  • 没有中文空格

问题 4:界面只显示部分中文

症状: 左侧菜单大多为英文,只有少数模块显示中文。

原因: n8n 2.x UI 尚未完整支持中文,社区汉化包未覆盖全部翻译 key。

结论: 这是当前生态的现状,不是安装配置错误。如果确实需要完整中文,可以考虑:

  • 等待官方或社区提供更完整的汉化包
  • 自行参与汉化工作
  • 使用 n8n 1.x(不推荐)

问题 5:关于 Docker 权限的常见误区

误区: Docker 会自动创建宿主机目录并处理权限问题。

实际情况

  • Docker 会自动创建不存在的目录
  • 但不会自动修改目录的所有者和权限
  • bind mount 下,权限完全由宿主机负责
  • 非 root 容器(如 n8n)必须手动修复权限

部署架构说明

整个部署架构如下:

1
2
3
4
5
宿主机(Linux)                          Docker 容器
─────────────────────────────────────────────────────────
/root/data/n8n/data/  ──bind mount──>  /home/node/.n8n/ (可写)
/root/data/n8n/dist/  ──bind mount──>  /.../n8n-editor-ui/dist/ (只读)
docker-compose.yml    ──启动──>        n8n 容器 (5678/tcp)
  • 数据持久化:通过 bind mount 将数据目录挂载到宿主机,即使容器删除,数据也不会丢失
  • 汉化覆盖:通过只读挂载覆盖容器内的前端资源,实现部分中文显示
  • 服务访问:通过端口映射,可以从宿主机或外部网络访问 n8n 服务

总结

通过本文的步骤,你应该已经成功部署了 n8n,并配置了部分中文界面。关键要点:

  1. ✅ 使用 Docker Compose 简化部署流程
  2. ✅ 通过 bind mount 实现数据持久化
  3. ✅ 使用社区汉化包实现部分中文
  4. ✅ 正确配置目录权限避免常见错误

如果遇到问题,优先检查容器日志和目录权限。大多数问题都可以通过查看 docker logs n8n 找到原因。