n8n 是一款开源的 AI 工作流自动化平台,支持连接数百种服务,可以替代 Zapier、Make 等付费工具,完全自托管、数据不出服务器。本文带你用 Docker Compose 快速搭建,并配置中文界面。
什么是 n8n?
n8n(发音:n-eight-n)是一个基于节点的工作流自动化工具,核心优势有三点:
- 完全开源:代码托管在 GitHub,可自由部署在自己的服务器上
- AI 原生:内置对 OpenAI、Claude、Ollama 等大模型的支持,可以直接构建 AI Agent
- 节点丰富:支持 400+ 种服务集成,HTTP 请求、数据库、邮件、Webhook 应有尽有
对比付费的 Zapier(9/月起),n8n 自建版完全免费,适合开发者和小团队使用。
环境准备
确保服务器已安装以下工具:
# 检查 docker 版本
docker --version
# 检查 docker compose 版本
docker compose version
没有安装的话参考 Docker 官方文档 安装。
编写 docker-compose.yaml
新建一个目录,创建 docker-compose.yaml 文件:
mkdir n8n && cd n8n
vim docker-compose.yaml
写入以下内容:
services:
n8n:
image: docker.n8n.io/n8nio/n8n:2.0.0
container_name: n8n
privileged: true
user: root
restart: always
ports:
# web 界面访问端口
- "5678:5678"
environment:
- TZ=Asia/Shanghai
# 设置界面语言为中文
- N8N_DEFAULT_LOCALE=zh-CN
# 本地开发关闭安全 cookie(生产环境建议开启)
- N8N_SECURE_COOKIE=false
# 数据加密密钥,请替换成自己的随机字符串
- N8N_ENCRYPTION_KEY=your_random_key_here
# 使用 SQLite 作为数据库(轻量,够用)
- DB_TYPE=sqlite
- DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite
volumes:
# 持久化数据目录
- ./data:/home/node/.n8n
# 中文汉化包(见下方说明)
- ./dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist
extra_hosts:
- "node1-svc:192.168.0.175"
几个配置项说明
| 配置项 | 说明 |
|---|---|
N8N_ENCRYPTION_KEY | 用于加密凭证,务必替换成自己的随机字符串,否则重建容器后凭证会失效 |
N8N_SECURE_COOKIE | 生产环境部署在 HTTPS 后面时改为 true |
N8N_DEFAULT_LOCALE | 设置为 zh-CN 启用中文界面(需配合汉化包) |
DB_TYPE | 个人使用 sqlite 足够,团队使用建议换成 postgresql |
配置中文汉化包(可选)
n8n 官方虽然支持 zh-CN,但翻译覆盖率不高。推荐使用社区维护的汉化包:
# 下载汉化包(注意版本要和 n8n 镜像版本对应)
wget https://github.com/other-blowsnow/n8n-i18n-chinese/releases/download/n8n%401.123.4/editor-ui.tar.gz
# 解压到 dist 目录
mkdir dist
tar -xzf editor-ui.tar.gz -C dist
解压后 dist 目录结构应该类似:
dist/
├── index.html
├── assets/
└── ...
启动服务
docker compose up -d
查看启动日志:
docker compose logs -f n8n
看到类似下面的输出说明启动成功:
n8n | Editor is now accessible via:
n8n | http://localhost:5678
访问 n8n
浏览器打开:
http://你的服务器IP:5678
首次访问会要求创建管理员账号,填写邮箱和密码即可。
登录后你会看到 n8n 的工作流编辑界面:
- 左侧是节点面板,可以搜索需要的集成服务
- 中间是画布,拖拽节点构建工作流
- 右上角可以手动触发或设置定时执行
一个简单的工作流示例
以"定时发送天气通知到邮件"为例:
- 添加 Schedule Trigger 节点,设置每天早上 8 点触发
- 添加 HTTP Request 节点,调用天气 API 获取数据
- 添加 Send Email 节点,配置收件人和邮件模板
- 连接三个节点,点击保存并激活
整个流程不需要写一行代码。
常见问题
Q:容器启动后访问 5678 端口没有响应?
检查服务器防火墙是否放开了 5678 端口:
# CentOS/RHEL
firewall-cmd --add-port=5678/tcp --permanent
firewall-cmd --reload
# Ubuntu
ufw allow 5678
Q:重启容器后工作流数据丢失?
确认 ./data 目录挂载正确,数据库文件路径为 ./data/database.sqlite,只要这个文件存在数据就不会丢。
Q:如何升级 n8n 版本?
# 修改 docker-compose.yaml 中的镜像版本号后执行
docker compose pull
docker compose up -d
总结
| 项目 | 说明 |
|---|---|
| 部署方式 | Docker Compose |
| 数据库 | SQLite(轻量)/ PostgreSQL(生产) |
| 端口 | 5678 |
| 数据持久化 | ./data 目录 |
| 中文支持 | 需手动替换汉化包 |
n8n 的核心价值在于把重复性工作自动化,结合 AI 节点可以构建出非常强大的智能工作流。后续我会出几篇实战教程,包括:
- n8n 对接 OpenAI 构建 AI 客服机器人
- n8n + 飞书机器人实现智能通知
- n8n 定时爬取数据并生成报告
本文同步发布于个人博客,持续更新 Java / 后端 / Docker 实战内容: