1. 项目概述
n8n是一款开源的自动化工作流工具,它允许用户通过可视化界面创建复杂的自动化流程。与Zapier等商业产品不同,n8n提供了完全自托管的解决方案,特别适合注重数据隐私和需要高度定制化的用户。
Docker容器化部署已经成为现代应用部署的标准方式之一。通过Docker部署n8n,我们可以获得以下优势:
- 环境隔离:避免与主机系统的依赖冲突
- 快速部署:一键启动完整的n8n环境
- 版本控制:方便切换不同版本的n8n
- 资源管理:精确控制CPU、内存等资源分配
汉化工作对于中文用户尤为重要,它能够:
- 降低使用门槛,让非技术用户也能轻松上手
- 提高工作效率,减少因语言障碍导致的误操作
- 便于团队协作,统一中文术语和操作流程
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署准备
2.1 系统要求
在开始部署前,请确保您的系统满足以下最低要求:
- 操作系统:Linux(推荐Ubuntu 20.04+)、Windows 10/11或macOS 10.15+
- Docker版本:20.10.0+
- Docker Compose:1.29.0+
- 硬件配置:
- CPU:2核以上
- 内存:4GB以上(建议8GB)
- 磁盘空间:至少10GB可用空间
提示:Windows用户需要确保已启用WSL2(Windows Subsystem for Linux 2)和Hyper-V功能
2.2 Docker环境配置
对于首次使用Docker的用户,建议按照以下步骤配置:
- 安装Docker Engine:
bash复制# Ubuntu示例
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 安装Docker Compose:
bash复制sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 验证安装:
bash复制docker --version
docker-compose --version
2.3 获取n8n Docker镜像
官方提供了多个版本的n8n镜像,我们可以使用以下命令获取最新稳定版:
bash复制docker pull n8nio/n8n:latest
如果需要特定版本,可以指定标签:
bash复制docker pull n8nio/n8n:0.218.0
3. 基础部署方案
3.1 单容器部署
最简单的部署方式是使用单个Docker容器运行n8n:
bash复制docker run -d \
--name n8n \
-p 5678:5678 \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=<用户名> \
-e N8N_BASIC_AUTH_PASSWORD=<密码> \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n:latest
参数说明:
-p 5678:5678:将容器内的5678端口映射到主机-v ~/.n8n:/home/node/.n8n:持久化存储配置数据N8N_BASIC_AUTH_*:设置基本认证,强烈建议生产环境启用
3.2 Docker Compose部署
对于更复杂的部署场景,推荐使用docker-compose.yml文件:
yaml复制version: '3'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=securepassword
- NODE_ENV=production
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
启动命令:
bash复制docker-compose up -d
4. 汉化实现方案
4.1 汉化原理分析
n8n的界面国际化基于i18n标准实现,主要涉及以下文件:
- 前端界面:/dist/webpack:/src/locales/下的JSON文件
- 节点描述:/dist/nodes-base/下的节点描述文件
- 错误消息:/dist/cli/locales/下的错误消息文件
汉化的核心思路是:
- 定位语言资源文件
- 创建或修改中文翻译
- 确保翻译文件被正确加载
4.2 手动汉化步骤
- 进入运行中的n8n容器:
bash复制docker exec -it n8n bash
- 安装必要工具:
bash复制apt-get update && apt-get install -y vim
- 创建中文语言目录:
bash复制mkdir -p /usr/local/lib/node_modules/n8n/dist/webpack:/src/locales/zh-CN
- 创建翻译文件:
bash复制vim /usr/local/lib/node_modules/n8n/dist/webpack:/src/locales/zh-CN/translations.json
示例翻译内容:
json复制{
"auth": {
"login": "登录",
"logout": "退出"
},
"workflow": {
"save": "保存",
"execute": "执行"
}
}
- 修改n8n配置以使用中文:
bash复制vim /home/node/.n8n/config
添加:
ini复制N8N_DEFAULT_LOCALE=zh-CN
- 重启容器使更改生效:
bash复制docker restart n8n
4.3 使用预汉化镜像
对于不想手动汉化的用户,可以使用社区维护的预汉化镜像:
bash复制docker pull n8nio/n8n:latest-zh
或者使用以下docker-compose配置:
yaml复制services:
n8n:
image: n8nio/n8n:latest-zh
environment:
- N8N_DEFAULT_LOCALE=zh-CN
# 其他配置...
5. 高级配置与优化
5.1 数据库配置
默认情况下n8n使用SQLite,生产环境建议配置外部数据库:
yaml复制environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=user
- DB_POSTGRESDB_PASSWORD=password
5.2 性能调优
- 调整Node.js内存限制:
yaml复制environment:
- NODE_OPTIONS=--max-old-space-size=2048
- 启用集群模式(多核CPU):
yaml复制environment:
- N8N_PROCESS=main
- N8N_WEBHOOK_TUNNEL_URL=https://your-domain.com
- 配置Redis缓存:
yaml复制environment:
- N8N_CACHE_ENABLED=true
- N8N_CACHE_BACKEND=redis
- N8N_CACHE_REDIS_HOST=redis
- N8N_CACHE_REDIS_PORT=6379
5.3 安全加固
- 启用HTTPS:
yaml复制environment:
- N8N_PROTOCOL=https
- N8N_SSL_KEY=/path/to/key.pem
- N8N_SSL_CERT=/path/to/cert.pem
- IP访问限制:
yaml复制environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=complexpassword
- N8N_BLOCK_ENV_ACCESS_IN_NODE=production
6. 常见问题解决
6.1 汉化不生效
可能原因及解决方案:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 界面仍是英文 | 语言文件路径错误 | 检查文件是否在正确位置 |
| 部分内容未翻译 | 翻译不完整 | 补充缺失的翻译条目 |
| 界面显示乱码 | 文件编码问题 | 确保使用UTF-8编码 |
6.2 Docker部署问题
- 端口冲突:
bash复制Error: Port 5678 is already in use
解决方案:
bash复制# 查看占用进程
sudo lsof -i :5678
# 或者改用其他端口
docker run -p 5679:5678 ...
- 权限问题:
bash复制EACCES: permission denied
解决方案:
bash复制# 添加当前用户到docker组
sudo usermod -aG docker $USER
# 然后重新登录
6.3 性能问题
- 工作流执行缓慢:
- 检查服务器资源使用情况(CPU/内存)
- 考虑拆分复杂工作流
- 启用Redis缓存
- 界面加载慢:
- 检查网络延迟
- 考虑启用CDN
- 优化前端资源
7. 维护与升级
7.1 数据备份
关键数据包括:
- 工作流定义
- 用户凭证
- 执行历史
备份命令示例:
bash复制# 备份数据卷
docker run --rm --volumes-from n8n -v $(pwd):/backup ubuntu tar cvf /backup/n8n-backup.tar /home/node/.n8n
7.2 版本升级
- 停止当前容器:
bash复制docker stop n8n
- 拉取新镜像:
bash复制docker pull n8nio/n8n:latest
- 启动新容器(使用相同配置):
bash复制docker run ... n8nio/n8n:latest
7.3 监控与日志
查看实时日志:
bash复制docker logs -f n8n
配置日志轮转:
yaml复制services:
n8n:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
8. 生产环境建议
- 使用反向代理(Nginx/Apache):
nginx复制server {
listen 443 ssl;
server_name n8n.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 实现高可用:
- 使用数据库集群
- 配置多个n8n实例
- 设置负载均衡
- 定期维护:
- 每月检查安全更新
- 每季度审查工作流
- 每年评估架构扩展需求
