n8n 2.0 中文汉化版一键部署教程 | 解除Execute Command限制

🚀 n8n 2.0 中文汉化版一键部署教程 | 解除Execute Command限制,让自动化更自由!

📖 前言

你是否在使用 n8n 时遇到过这些问题:

  • ❌ 界面全是英文,看不懂?
  • ❌ Execute Command 节点被禁用,无法执行系统命令?
  • ❌ 文件操作受限,无法访问本地文件?
  • ❌ 部署配置复杂,不知道从何下手?

今天给大家带来一个开箱即用的 n8n 2.0 中文汉化版部署方案,完美解决以上所有问题!

🎯 任何系统脚本适配兼容

✨ 核心特性

  1. 🇨🇳 完整中文汉化

    • 使用 deluxebear/n8n:2.0.0-chs 镜像
    • 界面、菜单、提示全部中文显示
    • 设置 N8N_DEFAULT_LOCALE=zh-CN
  2. 🔓 解除组件限制

    • Execute Command 节点完全可用
    • LocalFileTrigger 文件监控可用
    • 配置 NODES_EXCLUDE=[] 启用所有节点
  3. 📁 文件系统访问

    • 开放 /mnt 目录访问权限
    • 可以读写本地文件
    • 支持自定义文件操作
  4. 🗄️ PostgreSQL 数据库

    • 数据持久化存储
    • 性能更稳定
    • 支持大规模工作流
  5. 🛡️ 安全配置

    • 基础认证保护
    • 加密密钥配置
    • 健康检查机制

🏗️ 项目结构

复制代码
n8n/
├── docker-compose.yml    # Docker 编排配置
└── start.sh             # 一键启动脚本

📄 完整配置文件

docker-compose.yml

这是完整的 Docker Compose 配置文件,包含了所有必要的配置:

yaml 复制代码
version: '3.8'

services:
  # PostgreSQL 数据库服务
  postgres:
    image: postgres:15-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - TZ=Asia/Shanghai
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - /data/postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - n8n-network

  # n8n 工作流自动化服务
  n8n:
    image: deluxebear/n8n:2.0.0-chs
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      # 时区设置
      - TZ=Asia/Shanghai
      - GENERIC_TIMEZONE=Asia/Shanghai

      # 数据库配置(使用服务名连接)
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=postgres
      - DB_POSTGRESDB_PASSWORD=postgres
      - DB_POSTGRESDB_SCHEMA=public
      - DB_POSTGRESDB_SSL_ENABLED=false

      # 启用所有节点(包括 ExecuteCommand 和 LocalFileTrigger)
      - NODES_EXCLUDE=[]
      - N8N_SECURE_COOKIE=false
      # 文件系统访问权限
      - N8N_RESTRICT_FILE_ACCESS_TO=/mnt
      - N8N_FILESYSTEM_ALLOW_LIST=/mnt

      # 语言设置
      - N8N_DEFAULT_LOCALE=zh-CN

      # 日志级别
      - N8N_LOG_LEVEL=info

      # 安全配置:加密密钥(32位随机字符串)
      # 生成命令: openssl rand -hex 16
      - N8N_ENCRYPTION_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

      # 基础认证(推荐启用)
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_secure_password_here

      # Webhook URL 配置(如果需要外部访问,请修改为实际域名)
      # - WEBHOOK_URL=https://your-domain.com/

      # 执行数据保留设置(可选)
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168

    volumes:
      # 核心数据目录映射(保存工作流、凭证等)
      - /data/n8n/n8n-data:/home/node/.n8n

      # 自定义文件目录映射
      - /data/n8n/n8n-mnt:/mnt

      # 可选:自定义节点目录
      # - /data/n8n/n8n-custom:/home/node/.n8n/custom

    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5678/healthz || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

    networks:
      - n8n-network

networks:
  n8n-network:
    driver: bridge

start.sh

这是一键启动脚本,自动完成环境检测、目录创建和服务启动:

bash 复制代码
#!/bin/bash

# n8n + PostgreSQL 一键启动脚本
# 使用方法: chmod +x start.sh && ./start.sh

set -e

echo "=========================================="
echo "  n8n + PostgreSQL Docker 部署脚本"
echo "=========================================="
echo ""

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 检查 Docker 是否安装
if ! command -v docker &> /dev/null; then
    echo -e "${RED}错误: Docker 未安装,请先安装 Docker${NC}"
    exit 1
fi

# 自动检测 Docker Compose 版本并设置命令
DOCKER_COMPOSE_CMD=""

# 优先检测 V2 版本 (docker compose)
if docker compose version &> /dev/null; then
    DOCKER_COMPOSE_CMD="docker compose"
    COMPOSE_VERSION=$(docker compose version --short 2>/dev/null || echo "V2")
    echo -e "${GREEN}✓ 检测到 Docker Compose V2: $COMPOSE_VERSION${NC}"
# 检测 V1 版本 (docker-compose)
elif command -v docker-compose &> /dev/null; then
    DOCKER_COMPOSE_CMD="docker-compose"
    COMPOSE_VERSION=$(docker-compose version --short 2>/dev/null || echo "V1")
    echo -e "${GREEN}✓ 检测到 Docker Compose V1: $COMPOSE_VERSION${NC}"
else
    echo -e "${RED}错误: Docker Compose 未安装${NC}"
    echo -e "${YELLOW}请安装 Docker Compose:${NC}"
    echo "  V2 (推荐): https://docs.docker.com/compose/install/"
    echo "  V1: sudo curl -L \"https://github.com/docker/compose/releases/latest/download/docker-compose-\$(uname -s)-\$(uname -m)\" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose"
    exit 1
fi

echo ""

# 检查 docker-compose.yml 是否存在
if [ ! -f "docker-compose.yml" ]; then
    echo -e "${RED}错误: docker-compose.yml 文件不存在${NC}"
    exit 1
fi

echo -e "${YELLOW}步骤 1/5: 检查配置文件...${NC}"


# 检查是否修改了加密密钥
if grep -q "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" docker-compose.yml; then
    echo -e "${YELLOW}警告: 检测到默认加密密钥,建议修改!${NC}"
    read -p "是否自动生成新密钥?(y/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        # 生成新密钥
        NEW_KEY=$(openssl rand -hex 16 2>/dev/null || python3 -c "import secrets; print(secrets.token_hex(16))" 2>/dev/null || echo "")
        if [ -n "$NEW_KEY" ]; then
            echo -e "${GREEN}生成的新密钥: $NEW_KEY${NC}"
            echo -e "${YELLOW}请手动将此密钥更新到 docker-compose.yml 中的 N8N_ENCRYPTION_KEY${NC}"
            read -p "按回车键继续..."
        else
            echo -e "${RED}无法自动生成密钥,请手动生成${NC}"
        fi
    fi
fi

echo -e "${YELLOW}步骤 2/5: 创建数据目录...${NC}"

# 创建数据目录
DATA_DIR="/data"
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
    # Windows 环境
    DATA_DIR="./data"
fi

mkdir -p "$DATA_DIR/n8n/n8n-data"
mkdir -p "$DATA_DIR/n8n/n8n-mnt"
mkdir -p "$DATA_DIR/postgres"

echo -e "${GREEN}✓ 数据目录创建完成${NC}"

echo -e "${YELLOW}步骤 3/5: 设置目录权限...${NC}"

# 设置权限(仅 Linux/Mac)
if [[ "$OSTYPE" != "msys" && "$OSTYPE" != "win32" ]]; then
    if [ "$EUID" -eq 0 ]; then
        chown -R 1000:1000 "$DATA_DIR/n8n"
        chown -R 999:999 "$DATA_DIR/postgres"
        echo -e "${GREEN}✓ 权限设置完成${NC}"
    else
        echo -e "${YELLOW}提示: 如果遇到权限问题,请使用 sudo 运行此脚本${NC}"
    fi
else
    echo -e "${YELLOW}Windows 环境,跳过权限设置${NC}"
fi

echo -e "${YELLOW}步骤 4/5: 启动服务...${NC}"

# 停止旧容器(如果存在)
$DOCKER_COMPOSE_CMD down 2>/dev/null || true

# 拉取最新镜像
echo "正在拉取镜像..."
$DOCKER_COMPOSE_CMD pull

# 启动服务
echo "正在启动服务..."
$DOCKER_COMPOSE_CMD up -d

echo -e "${GREEN}✓ 服务启动完成${NC}"

echo -e "${YELLOW}步骤 5/5: 等待服务就绪...${NC}"

# 等待服务启动
echo "等待 PostgreSQL 启动..."
for i in {1..30}; do
    if docker exec n8n-postgres pg_isready -U postgres &> /dev/null; then
        echo -e "${GREEN}✓ PostgreSQL 已就绪${NC}"
        break
    fi
    echo -n "."
    sleep 2
done

echo ""
echo "等待 n8n 启动..."
for i in {1..30}; do
    if curl -s http://localhost:5678/healthz &> /dev/null; then
        echo -e "${GREEN}✓ n8n 已就绪${NC}"
        break
    fi
    echo -n "."
    sleep 2
done

echo ""
echo "=========================================="
echo -e "${GREEN}  部署完成!${NC}"
echo "=========================================="
echo ""
echo "访问地址: http://localhost:5678"
echo ""
echo "默认登录信息:"
echo "  用户名: admin"
echo "  密码: 请查看 docker-compose.yml 中的 N8N_BASIC_AUTH_PASSWORD"
echo ""
echo "常用命令:"
echo "  查看日志: $DOCKER_COMPOSE_CMD logs -f"
echo "  停止服务: $DOCKER_COMPOSE_CMD down"
echo "  重启服务: $DOCKER_COMPOSE_CMD restart"
echo "  查看状态: $DOCKER_COMPOSE_CMD ps"
echo ""
echo -e "${YELLOW}提示: 首次启动可能需要1-2分钟初始化数据库${NC}"
echo ""

# 询问是否查看日志
read -p "是否查看实时日志?(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    $DOCKER_COMPOSE_CMD logs -f
fi

📋 前置要求

  • Docker 已安装
  • Docker Compose 已安装(V1 或 V2 均可)
  • 至少 2GB 可用内存
  • 至少 5GB 可用磁盘空间

🚀 快速开始

第一步:下载项目文件

docker-compose.ymlstart.sh 保存到同一目录。

第二步:修改配置(可选但推荐)

打开 docker-compose.yml,修改以下配置:

yaml 复制代码
# 1. 修改数据库密码
- POSTGRES_PASSWORD=your_strong_password

# 2. 修改加密密钥(重要!)
- N8N_ENCRYPTION_KEY=your_32_character_key

# 3. 修改登录密码
- N8N_BASIC_AUTH_PASSWORD=your_secure_password

💡 生成加密密钥命令openssl rand -hex 16

第三步:一键启动

bash 复制代码
# 给脚本添加执行权限
chmod +x start.sh

# 运行启动脚本
./start.sh

脚本会自动完成:

  • ✅ 检测 Docker 环境
  • ✅ 创建数据目录
  • ✅ 设置权限
  • ✅ 拉取镜像
  • ✅ 启动服务
  • ✅ 健康检查

第四步:访问 n8n

启动完成后,在浏览器访问:

复制代码
http://localhost:5678

使用默认账号登录:

  • 用户名:admin
  • 密码:docker-compose.yml 中设置的密码

🔑 核心配置解析

1. 中文汉化配置

yaml 复制代码
# 使用中文汉化镜像
image: deluxebear/n8n:2.0.0-chs

# 设置中文语言
environment:
  - N8N_DEFAULT_LOCALE=zh-CN
  - TZ=Asia/Shanghai
  - GENERIC_TIMEZONE=Asia/Shanghai

2. 解除节点限制

yaml 复制代码
# 启用所有节点(包括 Execute Command)
- NODES_EXCLUDE=[]

# 文件系统访问权限
- N8N_RESTRICT_FILE_ACCESS_TO=/mnt
- N8N_FILESYSTEM_ALLOW_LIST=/mnt

关键点

  • NODES_EXCLUDE=[] 表示不排除任何节点
  • 默认情况下,n8n 2.0 会禁用 Execute Command 等高危节点
  • 通过此配置可以完全解除限制

3. 数据持久化

yaml 复制代码
volumes:
  # n8n 数据(工作流、凭证等)
  - /data/n8n/n8n-data:/home/node/.n8n
  
  # 自定义文件目录
  - /data/n8n/n8n-mnt:/mnt
  
  # PostgreSQL 数据
  - /data/postgres:/var/lib/postgresql/data

🎮 常用操作

查看服务状态

bash 复制代码
docker compose ps

查看实时日志

bash 复制代码
docker compose logs -f

重启服务

bash 复制代码
docker compose restart

停止服务

bash 复制代码
docker compose down

备份数据

bash 复制代码
# 备份 n8n 数据
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz /data/n8n

# 备份数据库
docker exec n8n-postgres pg_dump -U postgres n8n > n8n-db-backup-$(date +%Y%m%d).sql

💡 使用示例

示例 1:使用 Execute Command 节点

  1. 创建新工作流

  2. 添加 Execute Command 节点

  3. 输入命令,例如:

    bash 复制代码
    echo "Hello from n8n!"
    ls -la /mnt
  4. 执行工作流,查看输出

示例 2:文件操作

  1. 将文件放到 /data/n8n/n8n-mnt 目录
  2. 在工作流中使用 Read Binary File 节点
  3. 路径填写:/mnt/your-file.txt
  4. 成功读取文件内容

⚠️ 安全建议

  1. 修改默认密码

    • 数据库密码
    • n8n 登录密码
    • 加密密钥
  2. 限制访问

    • 不要将 5678 端口暴露到公网
    • 使用反向代理(Nginx)+ HTTPS
    • 配置防火墙规则
  3. 定期备份

    • 备份 /data/n8n 目录
    • 备份 PostgreSQL 数据库
    • 测试恢复流程
  4. 谨慎使用 Execute Command

    • 虽然解除了限制,但要注意安全
    • 不要执行不可信的命令
    • 限制命令执行权限

🐛 常见问题

Q1: 启动后无法访问?

A: 等待 1-2 分钟,首次启动需要初始化数据库。检查日志:

bash 复制代码
docker compose logs -f n8n

Q2: Execute Command 节点找不到?

A : 确认 NODES_EXCLUDE=[] 配置正确,重启容器:

bash 复制代码
docker compose restart n8n

Q3: 文件访问被拒绝?

A : 检查文件是否在 /data/n8n/n8n-mnt 目录,并确认权限:

bash 复制代码
sudo chown -R 1000:1000 /data/n8n

Q4: 中文显示乱码?

A : 确认使用的是 deluxebear/n8n:2.0.0-chs 镜像,并设置了:

yaml 复制代码
- N8N_DEFAULT_LOCALE=zh-CN

🎓 进阶配置

配置 Webhook URL

如果需要外部访问 Webhook:

yaml 复制代码
environment:
  - WEBHOOK_URL=https://your-domain.com/

配置执行数据保留

yaml 复制代码
# 自动清理旧的执行记录
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168  # 保留 7 天

添加自定义节点

yaml 复制代码
volumes:
  - /data/n8n/n8n-custom:/home/node/.n8n/custom

📚 总结

这个 n8n 2.0 中文汉化版部署方案面对小白友好:

开箱即用 :一键脚本,3 分钟部署完成

完整汉化 :界面全中文,小白友好

功能完整 :解除所有节点限制

数据安全 :PostgreSQL 持久化存储

易于维护:Docker 容器化部署

无论你是自动化新手还是老手,这个方案都能让你快速上手 n8n,打造属于自己的自动化工作流!

🔗 相关资源


如果这篇文章对你有帮助,请点赞👍、收藏⭐、关注➕三连支持!

有任何问题欢迎在评论区留言讨论~ 🎉

相关推荐
لا معنى له2 小时前
学习笔记:Transformer
人工智能·笔记·深度学习·学习·机器学习·transformer
人工智能培训2 小时前
什么是基于大模型的智能体构建?
人工智能·深度学习·大模型·具身智能·智能体·智能体构建·大模型智能体
深度学习实战训练营2 小时前
SegFormer:使用Transformer进行语义分割,简单而高效的设计-k学长深度学习专栏
人工智能·深度学习·transformer
大、男人2 小时前
FastMCP高级特性之Composition
人工智能·fastmcp
CES_Asia2 小时前
机器人“奥运会”燃动北京——CES Asia 2026全球机器人性能挑战赛与展览定档
大数据·人工智能·机器人
DKNG2 小时前
【Windows Host】 hosts配置增加访问github流畅度
人工智能·git·github
昨日之日20062 小时前
Fun-ASR - 多语言多方言的高精度语音识别软件 支持50系显卡 一键整合包下载
人工智能·音视频·语音识别
AIGC科技3 小时前
焕新而来,境由AI生|AIRender升级更名“渲境AI”,重新定义设计渲染效率
人工智能·深度学习·图形渲染
出来吧皮卡丘3 小时前
A2UI:让 AI Agent 自主构建用户界面的新范式
前端·人工智能·aigc