“最近折腾我的NAS,挖到一个宝藏——开源工作流神器n8n!它号称‘开源版Zapier’,支持400+应用集成,用拖拽节点就能玩转跨平台自动化,从联动Google日历、Notion、飞书搞定智能办公流,到用LangChain节点构建AI工作流(比如自动抓竞品价、生成会议纪要),潜力巨大。

但是默认全英文界面实在劝退!不服输的我,决心在NAS上用Docker部署中文版n8n,过程踩坑无数,终于搞定了持久化部署+深度汉化。

今天手把手分享这套『NAS部署n8n+实时汉化』方案,从拉取镜像、挂载中文语言包到配置PostgreSQL数据库,让你在私有环境安全省钱地跑通可视化工作流——毕竟,谁不想在浏览器里用母语轻松编排专属的AI自动化助手呢?”

什么是 n8n?一款开源可视化自动化神器

在提升效率和打通不同工具之间的壁垒时,“自动化” 是绕不开的关键词。你是否曾希望不同系统间能自动联动?是否想摆脱重复操作,把时间花在更有价值的事情上?

如果你在寻找一个强大、灵活、可自托管的自动化解决方案,那么 n8n(发音为 n-eight-n)绝对值得深入了解。


🔧 n8n 是什么?

n8n 是一款开源的、基于节点的 低代码 / 无代码工作流自动化工具。它允许你以可视化方式构建自动化流程(称为“工作流”),通过连接各种应用、服务、API,实现复杂逻辑,而无需深入编码。

用通俗的话说,n8n 就像一套“自动化搭积木工具”,让每个非开发者也能轻松构建属于自己的自动化系统。


为什么选择 n8n?

✅ 开源、自托管,自由掌控

  • 核心完全开源,采用可持续许可,安全透明;

  • 支持在自己的服务器或 NAS 上部署,数据不离开本地;

  • 也提供官方云服务(n8n.cloud)作为选择;

  • 自托管意味着更高的安全性和合规性,非常适合企业内网部署。


✅ 拖拽式可视化工作流编辑器

  • 类似流程图的界面,拖拽连接节点即可构建逻辑;

  • 每个节点代表一个操作,比如发送邮件、Webhook 触发、调用 API、数据库查询等;

  • 支持条件判断、循环、错误处理、调度执行等强大逻辑;

  • 流程可视、逻辑清晰、上手容易,维护成本低。


✅ 支持海量服务与协议

  • 内置连接上百种服务(如 Google、Notion、Slack、Trello、GitHub、Telegram 等);

  • 支持 HTTP API / Webhook / 数据库(MySQL, PostgreSQL) 等协议;

  • 社区贡献大量第三方节点,可扩展性极强;

  • 几乎可以连接所有带 API 的工具,真正做到“万物互联”。


✅ 高度灵活,适用于复杂业务逻辑

  • 可嵌入代码节点(JavaScript、Python)做自定义处理;

  • 支持数据转换、条件分支、定时任务、异常处理等;

  • 对于开发者来说,n8n 也能作为后端自动化逻辑引擎使用。


✅ 免费强大的社区版

  • 社区版永久免费,功能强大,适用于 90% 的中小团队;

  • 结合 Docker 部署、自托管部署,可节省大量自动化成本;

  • 适合个人开发者、创业团队、中小企业快速落地使用。


一句话总结

n8n 是开源自动化领域的明星工具,融合了强大功能、易用体验与数据主权,是本地部署自动化的不二之选。

无论你是想简化日常任务、打通工具间壁垒,还是构建复杂业务流程,n8n 都能帮助你释放自动化的真正潜力。


接下来我们就以 飞牛 NAS 为例,演示如何通过 Docker 本地部署 n8n,并安装中文汉化界面,打造属于你的全自动化控制中心!

n8n部署教程

本教程将手把手教你如何在 NAS 系统上本地部署开源自动化工具 n8n,并集成汉化界面,适合初学者参考。

本文演示以 飞牛 NAS 系统 为例,其他系统请确保已安装好最新版 Docker 和 Docker Compose。

推荐部署在非大陆区域的服务器上,2H2G即可,不然有些大陆无法连接的服务需要挂梯子。


1. 开启 SSH 并连接 NAS

打开 NAS 的 SSH 功能,使用终端工具(如 Windows 的 Xshell / macOS 的 Terminal)进行连接。

连接后,切换至 root 权限:

sudo -i 

2. 创建项目文件夹并获取路径

在 NAS 的文件管理器中,新建一个文件夹(例如 n8n 项目文件夹),右键 > 详细信息 > 常规 > 复制原始路径。


3. 进入项目目录

在终端中执行如下命令,进入你刚刚新建的项目路径:

# 将/vol1/1002/n8n换成你自己实际的文件夹路径

cd /vol1/1002/n8n

4. 创建所需子文件夹

使用一条命令一次性创建需要的子文件夹:

mkdir -p db_storage n8n_storage n8n_zh_ui

5. 编辑 docker-compose.yml 文件

  1. 使用以下命令创建并编辑 Docker Compose 模板:

    vi docker-compose.yml
  2. 按 i 进入编辑模式,粘贴以下内容,只需修改 n8n 的端口号即可。编辑完后按 Esc,输入 :wq 保存退出。
    (排版太挤的就先粘贴到文本文件内,修改后再使用,灵活应变。)

     # 这个模板中只需要你修改n8n的容器端口,其余的不动。
    
    version: '3.8'  # 使用 Docker Compose 3.8 版本语法(支持条件健康检查等特性)
    
    volumes:
      db_storage:      # PostgreSQL 数据持久化卷
      n8n_storage:     # n8n 工作流和用户配置持久化卷
    
    services:
    
      postgres:
        image: postgres:16  # 使用官方 PostgreSQL 16 镜像
        restart: always      # 容器崩溃或重启时自动恢复
        environment:
          - POSTGRES_USER                # 主数据库用户(环境变量中定义)
          - POSTGRES_PASSWORD            # 主用户密码
          - POSTGRES_DB                  # 默认创建的数据库名称
          - POSTGRES_NON_ROOT_USER       # 额外创建的非 root 用户(供 n8n 使用)
          - POSTGRES_NON_ROOT_PASSWORD   # 非 root 用户的密码
        volumes:
          - ./db_storage:/var/lib/postgresql/data  # 持久化数据库数据到宿主机(可将./db_storage换成完整的文件夹路径)
          - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh  
            # 初始化脚本:postgres数据库容器启动时自动执行,用于创建非 root 用户等自定义配置
        healthcheck:  # 健康检查:用于确认数据库是否准备好
          test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
          interval: 5s    # 每 5 秒检查一次
          timeout: 5s     # 每次检查的超时时间
          retries: 10     # 最多重试 10 次失败才判定服务不健康
    
      n8n:
        image: docker.n8n.io/n8nio/n8n  # 使用官方 n8n 镜像
        restart: always                 # 自动重启容器
        environment:
          - DB_TYPE=postgresdb                    # 指定数据库类型为 PostgreSQL
          - DB_POSTGRESDB_HOST=postgres           # 数据库主机名,对应上方 postgres 服务
          - DB_POSTGRESDB_PORT=5432               # PostgreSQL 默认端口
          - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}           # 数据库名称
          - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}    # 数据库用户
          - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}  # 数据库用户密码
          - GENERIC_TIMEZONE=Asia/Shanghai        # 设置时区(例如 Asia/Shanghai)
          - N8N_RUNNERS_ENABLED=true              # 启用 Runners 模式:每个工作流在独立子进程中执行,提高稳定性与并发能力,推荐用于生产环境。
          - N8N_SECURE_COOKIE=false               # 👈 禁用 Secure Cookie,允许在 HTTP 下运行,如果改成true则需要配置HTTPS证书。
          - N8N_DEFAULT_LOCALE=zh-CN              # 指定N8N语言为中文
          - WEBHOOK_URL=https://www.aabcc.top:5678     # 设置n8n OAuth 重定向 URL ,避免例如Google服务认证无法回源。将域名改成你自己实际的,需要是https协议。
        ports:
          - 5678:5678       # 映射 n8n 默认端口到宿主机,用于 Web UI 访问,左侧的5678端口可以自己更改。
        links:
          - postgres        # 建立与 postgres 容器的网络连接(不推荐但仍兼容)
        volumes:
          - ./n8n_storage:/home/node/.n8n                                                # 映射 n8n 配置与数据目录,持久化用户数据(可将./n8n_storage换成完整的文件夹路径)
          - ./n8n_zh_ui:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist  # 映射n8n的汉化文件到容器内部,替换掉默认的英文 UI 文件。(记得去GitHub下载最新的汉化文件,如果没有最新匹配版本的可将此行注释掉,使用默认的英文:https://github.com/other-blowsnow/n8n-i18n-chinese)(可将./n8n_zh_ui换成完整的文件夹路径)
        depends_on:
          postgres:         # 等待 postgres 启动并变为健康状态再启动 n8n
            condition: service_healthy

6. 编写 .env 环境变量文件

  1. 创建并编辑 .env 文件,设置数据库相关密码:

    vi .env
  2. 按 i 进入编辑模式,粘贴并修改以下内容。编辑完后按 Esc,输入 :wq 保存退出。

    # ⚠ POSTGRES_USER 和 POSTGRES_NON_ROOT_USER 建议设置不同的用户名,权限分离更安全。
    # ⚠ 密码 POSTGRES_PASSWORD 和 POSTGRES_NON_ROOT_PASSWORD 都建议使用复杂且不重复的字符串。
    # ⚠ 这些环境变量会被 docker-compose.yml 中的 PostgreSQL 和 n8n 服务引用。
    
    
    
    
    # PostgreSQL 数据库的超级管理员用户名,默认是 postgres
    POSTGRES_USER=changeUser
    
    # 超级管理员用户的密码,请设置复杂安全的密码
    POSTGRES_PASSWORD=changePassword
    
    # 默认创建的数据库名称,n8n 会使用此数据库存储数据
    POSTGRES_DB=n8n
    
    # 为 n8n 创建的非 root 数据库用户,用于连接数据库执行操作
    POSTGRES_NON_ROOT_USER=changeUser
    
    # 非 root 用户的密码,请与上面密码不同,保证安全
    POSTGRES_NON_ROOT_PASSWORD=changePassword

7. 编写 init-data.sh 脚本文件

  1. 创建初始化脚本 init-data.sh,用于创建非 root 数据库用户:

    vi init-data.sh
  2. 按 i 粘贴以下内容,保存退出:Esc → :wq。

    #!/bin/bash
    # 使用 bash 解释器执行脚本
    
    set -e;
    # 一旦脚本中有任何命令执行失败(非 0),立即退出整个脚本
    
    # 如果环境变量 POSTGRES_NON_ROOT_USER 和 POSTGRES_NON_ROOT_PASSWORD 都被设置了(非空)
    if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
    	psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    		-- 使用超级管理员账号连接 PostgreSQL,并执行以下 SQL 语句:
    
    		CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
    		-- 创建一个非 root 用户,并设置其密码
    
    		GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
    		-- 授予该用户对指定数据库的所有权限(包括读写、建表等)
    
    		GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
    		-- 授予该用户在 public 模式下创建表的权限
    	EOSQL
    else
    	# 如果上述两个变量未设置,输出提示信息
    	echo "SETUP INFO: No Environment variables given!"
    fi

8. 下载并安装 n8n 汉化界面

  1. 前往 GitHub 下载最新汉化文件:
    汉化项目地址:https://github.com/other-blowsnow/n8n-i18n-chinese

  2. 点击右上角 Release,选择最新版。

  3. 下载 editor.tar.gz 文件。

  4. 将其上传至 n8n_zh_ui 文件夹,并在该目录下解压文件:

    # Linux系统解压命令(可选)
    
    tar -xzvf editor.tar.gz 


9. 设置目录权限(群晖NAS系统建议执行)

  1. 查看当前项目路径

    pwd
  2. 赋予当前项目文件夹读写权限:

    # 将/vol1/1002/n8n/换成你自己实际的文件夹路径
    
    chmod -R 777 /vol1/1002/n8n/

10. 启动服务

运行以下命令启动容器:
(网络不好的大概率会拉取镜像失败,可以挂梯子,没有的可以点此处跳转看教程。)

docker compose up -d

或

docker-compose up -d

11. 查看容器状态与日志

  1. 查看容器状态:

    docker compose ps
    
    或
    
    docker-compose ps
  2. 查看正在运行的项目容器实时日志,按Ctrl+C中断查看。

    docker compose logs -f
    
    或
    
    docker-compose logs -f

12. 首次访问 n8n 并注册账户

  1. 打开浏览器,以NAS的IP+设置的端口号进行访问。
    以本机为例:http://192.168.2.5:5678
    按提示设置一个账户

  2. 随便选择一下跳过调查问卷

  3. 输入邮箱,获取免费的许可证密钥。


13. 解锁更多功能(可选)

n8n 支持安装社区节点扩展:

  • 点击左下角「设置」>「激活密钥」

    输入密钥后点击激活

  • 如果你快速扩展 n8n 的功能,集成更多服务和平台可以点击「社区节点」>「浏览社区节点」集成第三方服务

  • 剩下的就是你自由的使用了,如果你自己组建自动化毕竟困难,也可以直接使用n8n官网中现有的工作流模板。

    https://n8n.io/workflows/

14. 推荐资源合集(持续更新)


如你不想重复造轮子,也可以直接在官方模板中心查找适用的自动化流程,实现更高效的工作流。

如果需要,我也会在 Halo 博客持续更新自动化搭建案例,欢迎关注!

文末

👇👇👇