n8n 自动化工作流工具完整安装教程(基于 1Panel + Docker Compose + PostgreSQL)
引言
n8n 是一个开源的自动化工作流工具,类似于 Zapier 或 Node-RED,用于连接各种 API 和服务,实现无代码自动化。它默认使用 SQLite 数据库,但生产环境中推荐使用 PostgreSQL 以提升并发、安全性和稳定性。
本教程指导您在 1Panel(一个开源服务器管理面板)环境中,通过 Docker Compose 部署 n8n + PostgreSQL。整个过程使用命令行一键执行,避免手动输入。假设您的服务器已安装 Docker 和 Docker Compose(1Panel 默认支持)。
关键特性:
- 域名:
https://example.gwozai.com(需自行配置 SSL)。 - 数据库:PostgreSQL 15(用户名:
n8n,数据库:n8n,密码:123456)。 - 端口:n8n 管理面板在 5678 端口暴露。
- 时区:Asia/Shanghai。
- 网络:自定义桥接网络
n8n-network。
预计时间:10-15 分钟。
前提条件
-
服务器环境:
- Linux 系统(推荐 CentOS 8+ / Ubuntu 20.04+)。
- 已安装 1Panel(参考官方文档:1Panel 在线安装)。
- 安装命令(RedHat/CentOS):
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
- 安装命令(RedHat/CentOS):
- Docker 和 Docker Compose 已启用(1Panel 内置 Docker 管理)。
-
域名配置:
- 已解析域名
example.gwozai.com到服务器 IP。 - 服务器防火墙开放 5678 端口(临时,用于测试;生产用反向代理)。
- 已解析域名
-
权限:
- 以 root 或 sudo 用户执行命令。
- 确保
/opt/1panel/apps目录可写(1Panel 默认路径)。
-
备份提醒:
- 部署前备份服务器数据。教程中的命令会删除旧数据目录(n8n、n8ndata、postgres-data),以避免权限冲突。
步骤 1: 准备环境和一键部署
进入 1Panel 的 apps 目录,执行以下一键命令。该命令会:
- 停止现有容器(如果有)。
- 删除旧数据目录(丢失数据,请备份!)。
- 重建目录并设置 777 权限(确保容器可读写)。
- 生成
docker-compose.yml文件。 - 启动服务并显示 n8n 日志。
cd /opt/1panel/apps && \
docker compose down && \
rm -rf n8n n8ndata postgres-data && \
mkdir -p n8n n8ndata postgres-data && \
chmod -R 777 n8n n8ndata postgres-data && \
cat > docker-compose.yml << 'EOF'
services:
postgres:
image: postgres:15
container_name: n8n_postgres
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: "123456"
POSTGRES_DB: n8n
ports:
- "5432:5432"
volumes:
- /opt/1panel/apps/postgres-data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
interval: 10s
timeout: 5s
retries: 5
networks:
- n8n-network
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
ports:
- "5678:5678"
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_SCHEMA: public
DB_POSTGRESDB_PASSWORD: "123456"
N8N_HOST: example.gwozai.com
WEBHOOK_URL: https://example.gwozai.com/
GENERIC_TIMEZONE: Asia/Shanghai
TZ: Asia/Shanghai
N8N_BASIC_AUTH_ACTIVE: false
volumes:
- /opt/1panel/apps/n8n:/home/node/.n8n
- /opt/1panel/apps/n8ndata:/home/node/n8ndata
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
networks:
- n8n-network
networks:
n8n-network:
driver: bridge
EOF
docker compose up -d && docker compose logs -f n8n
- 执行后:
- 按
Ctrl+C退出日志查看。 - 检查容器状态:
docker compose ps(应显示 postgres 和 n8n 为 Up)。 - 查看网络:
docker network ls(应有apps_n8n-network)。
- 按
步骤 2: 验证安装
-
检查 PostgreSQL 挂载:
ls -lah /opt/1panel/apps/postgres-data- 成功标志:看到
base、pg_wal、pg_stat、postgresql.conf等文件夹/文件(容器启动后自动生成)。
- 成功标志:看到
-
访问 n8n 面板:
- 浏览器打开:
http://您的服务器IP:5678。 - 首次访问会提示设置管理员账户(用户名/密码,自定义)。
- 成功标志:看到 n8n 工作流编辑器界面,无错误提示。
- 浏览器打开:
-
检查日志:
cd /opt/1panel/apps && docker compose logs n8n- 无
EACCES: permission denied错误。 - 看到类似
n8n ready on 0.0.0.0, port 5678的启动信息。
- 无
-
测试数据库连接:
- 在 n8n 面板创建简单工作流(e.g., HTTP Request 节点),保存并执行。
- 或命令行测试:
docker exec -it n8n_postgres psql -U n8n -d n8n -c "\dt"(列出表,应无报错)。
步骤 3: 配置反向代理和 SSL(推荐生产环境)
使用 1Panel 配置 Nginx 反向代理,将 http://服务器IP:5678 映射到 https://example.gwozai.com。
-
登录 1Panel 面板(默认
http://服务器IP:8000)。 -
导航到 网站 > 添加网站:
- 类型:静态网站。
- 域名:
example.gwozai.com。 - 根目录:
/opt/1panel/apps(任意,可忽略)。 - SSL:启用(Let’s Encrypt 自动申请)。
-
编辑网站配置(Nginx):
- 添加代理规则:
location / { proxy_pass http://127.0.0.1:5678; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } - 保存并重启 Nginx。
- 添加代理规则:
-
测试:访问
https://example.gwozai.com,应重定向到 n8n 面板。
安全提示:启用基本认证(在 docker-compose.yml 中设置 N8N_BASIC_AUTH_ACTIVE: true,添加 N8N_BASIC_AUTH_USER 和 N8N_BASIC_AUTH_PASSWORD),然后重启容器。注意:密码 123456 简单,生产环境请更换为强密码。
步骤 4: 备份和恢复
备份
-
PostgreSQL 数据库:
cd /opt/1panel/apps/postgres-data && tar -czvf n8n_postgres_backup_$(date +%Y%m%d_%H%M%S).tar.gz .- 下载 tar.gz 文件到本地(用 1Panel 文件管理器)。
-
n8n 配置和数据:
cd /opt/1panel/apps && tar -czvf n8n_data_backup_$(date +%Y%m%d_%H%M%S).tar.gz n8n n8ndata -
完整容器备份(可选):
docker compose down && tar -czvf full_backup.tar.gz /opt/1panel/apps。
恢复
- 停止容器:
cd /opt/1panel/apps && docker compose down。 - 解压备份:
tar -xzvf n8n_postgres_backup.tar.gz -C /opt/1panel/apps/postgres-data(类似其他目录)。 - 启动:
docker compose up -d。
步骤 5: 升级 n8n
-
拉取新镜像:
cd /opt/1panel/apps && docker compose pull -
重启服务:
docker compose up -d -
验证版本:
docker exec n8n n8n --version- 如需指定版本,编辑
docker-compose.yml中的image: docker.n8n.io/n8nio/n8n:1.x.x,然后docker compose up -d。
- 如需指定版本,编辑
注意:升级前备份数据。PostgreSQL 数据兼容性好,但测试工作流。
步骤 6: 维护和管理
-
停止/重启:
cd /opt/1panel/apps && docker compose down # 停止 docker compose up -d # 重启 -
监控:
- 1Panel Docker 页面查看容器资源。
- 日志:
docker compose logs -f。
-
自定义配置:
- 编辑
docker-compose.yml(e.g., 添加环境变量),然后docker compose up -d。 - 数据库一致性:用户名/密码/主机/端口必须匹配。
- 编辑
-
权限优化(生产):
- 777 适合调试;生产用
chown -R 1000:1000 n8n n8ndata(node 用户 UID)。
- 777 适合调试;生产用
故障排除
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| EACCES 权限错误 | 目录权限不足 | 运行 chmod -R 777 /opt/1panel/apps/{n8n,n8ndata} 并重启。 |
| PostgreSQL 连接失败 | 密码/主机不匹配 | 检查 docker-compose.yml 中的环境变量;日志:docker compose logs postgres。 |
| n8n 无法启动 | 依赖未就绪 | 确认 depends_on 和 healthcheck;等待 30s 后重试。 |
| 端口冲突 | 5678 已占用 | 修改 ports 为 - "其他端口:5678"。 |
| SSL 证书错误 | 域名未解析 | 检查 DNS;1Panel 重新申请 Let’s Encrypt。 |
| 数据丢失 | 命令中 rm -rf | 备份前勿执行;恢复用 tar 解压。 |
- 通用调试:
docker compose logs查看全日志;docker inspect n8n检查容器细节。 - 社区支持:n8n 官网 docs.n8n.io 或 GitHub issues。
结语
部署完成后,您即可在 n8n 面板创建工作流,实现自动化(如邮件通知、API 集成)。如果自定义需求(如多实例、队列模式),参考 n8n 文档扩展 docker-compose.yml。
如遇问题,提供日志输出,我可进一步协助!