🚀 n8n 2.0 中文汉化版一键部署教程 | 解除Execute Command限制,让自动化更自由!
📖 前言
你是否在使用 n8n 时遇到过这些问题:
- ❌ 界面全是英文,看不懂?
- ❌ Execute Command 节点被禁用,无法执行系统命令?
- ❌ 文件操作受限,无法访问本地文件?
- ❌ 部署配置复杂,不知道从何下手?
今天给大家带来一个开箱即用的 n8n 2.0 中文汉化版部署方案,完美解决以上所有问题!

🎯 任何系统脚本适配兼容
✨ 核心特性
-
🇨🇳 完整中文汉化
- 使用
deluxebear/n8n:2.0.0-chs镜像 - 界面、菜单、提示全部中文显示
- 设置
N8N_DEFAULT_LOCALE=zh-CN
- 使用
-
🔓 解除组件限制
- Execute Command 节点完全可用
- LocalFileTrigger 文件监控可用
- 配置
NODES_EXCLUDE=[]启用所有节点
-
📁 文件系统访问
- 开放
/mnt目录访问权限 - 可以读写本地文件
- 支持自定义文件操作
- 开放
-
🗄️ PostgreSQL 数据库
- 数据持久化存储
- 性能更稳定
- 支持大规模工作流
-
🛡️ 安全配置
- 基础认证保护
- 加密密钥配置
- 健康检查机制

🏗️ 项目结构
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.yml 和 start.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 节点
-
创建新工作流
-
添加 Execute Command 节点
-
输入命令,例如:
bashecho "Hello from n8n!" ls -la /mnt -
执行工作流,查看输出
示例 2:文件操作
- 将文件放到
/data/n8n/n8n-mnt目录 - 在工作流中使用 Read Binary File 节点
- 路径填写:
/mnt/your-file.txt - 成功读取文件内容
⚠️ 安全建议
-
修改默认密码
- 数据库密码
- n8n 登录密码
- 加密密钥
-
限制访问
- 不要将 5678 端口暴露到公网
- 使用反向代理(Nginx)+ HTTPS
- 配置防火墙规则
-
定期备份
- 备份
/data/n8n目录 - 备份 PostgreSQL 数据库
- 测试恢复流程
- 备份
-
谨慎使用 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,打造属于自己的自动化工作流!
🔗 相关资源
- n8n 官方文档:https://docs.n8n.io/
- Docker 官方文档:https://docs.docker.com/
- PostgreSQL 文档:https://www.postgresql.org/docs/
如果这篇文章对你有帮助,请点赞👍、收藏⭐、关注➕三连支持!
有任何问题欢迎在评论区留言讨论~ 🎉