“最近折腾我的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 系统 为例,其他系统请确保已安装好最新版 DockerDocker Compose


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语言为中文
        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 博客持续更新自动化搭建案例,欢迎关注!

文末

👇👇👇