n8n 工作流自动化平台搭建教程

n8n 是一款强大的开源工作流自动化平台,支持超过 400 个应用节点的集成,能够帮助你将各种在线服务串联起来实现自动化操作。相比 Zapier 等商业产品,n8n 可以完全自托管,数据掌握在自己手中,并且社区版完全免费。本文将介绍如何在搬瓦工 VPS 上使用 Docker 部署 n8n。部署前请确保已安装好 Docker 和 Docker Compose

一、系统要求

  • 操作系统:Ubuntu 20.04+ 或 Debian 11+(推荐 Ubuntu 22.04)。
  • 内存:至少 1GB,建议 2GB 以上(工作流越复杂消耗越大)。
  • 磁盘:至少 10GB 可用空间。
  • 域名:建议绑定域名并配置 SSL,n8n 的 Webhook 功能需要 HTTPS。
  • Docker:需预先安装 Docker 和 Docker Compose。

二、创建项目目录

首先为 n8n 创建专用的项目目录和数据目录:

mkdir -p /opt/n8n/data
cd /opt/n8n

三、编写 Docker Compose 配置

创建 docker-compose.yml 文件。这里使用 PostgreSQL 作为数据库后端,相比默认的 SQLite 在处理大量工作流时性能更好:

cat > /opt/n8n/docker-compose.yml <<'EOF'
version: '3.8'

services:
  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_DB: n8n
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: your_secure_password
    volumes:
      - postgres_data:/var/lib/postgresql/data

  n8n:
    image: n8nio/n8n:latest
    restart: always
    depends_on:
      - postgres
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=your_secure_password
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_admin_password
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    volumes:
      - n8n_data:/home/node/.n8n
      - /opt/n8n/data:/files

volumes:
  postgres_data:
  n8n_data:
EOF

请将 your_secure_passwordyour_admin_passwordn8n.yourdomain.com 替换为你自己的实际值。

四、启动 n8n 服务

cd /opt/n8n
docker compose up -d

等待镜像拉取完毕后,查看服务状态:

docker compose ps

确认 n8n 和 postgres 两个容器都处于 running 状态。

五、配置 Nginx 反向代理

n8n 默认运行在 5678 端口,建议通过 Nginx 反向代理并配置 SSL。先安装 Nginx 和 Certbot:

apt install nginx certbot python3-certbot-nginx -y

创建 Nginx 配置文件:

cat > /etc/nginx/sites-available/n8n <<'EOF'
server {
    listen 80;
    server_name n8n.yourdomain.com;

    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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_cache off;
    }
}
EOF

ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

申请 SSL 证书:

certbot --nginx -d n8n.yourdomain.com

六、访问和初始化

在浏览器中访问 https://n8n.yourdomain.com,输入在 Compose 文件中配置的用户名和密码即可登录。首次登录后建议:

  • 修改默认管理员密码。
  • 在设置中检查时区是否为 Asia/Shanghai。
  • 配置 SMTP 邮件发送(用于工作流通知)。

七、常用工作流示例

n8n 的核心是通过可视化界面拖拽节点来构建工作流。以下是几个实用场景:

7.1 定时监控网站可用性

创建一个每 5 分钟检测网站状态的工作流:使用 Schedule Trigger 节点设置定时触发,连接 HTTP Request 节点请求目标网站,再用 IF 节点判断返回状态码,异常时通过 Telegram 或邮件节点发送告警。

7.2 RSS 订阅自动推送

使用 RSS Feed Trigger 节点监听博客更新,当有新文章发布时自动将摘要推送到 Slack、Discord 或 Telegram 频道。

7.3 表单数据自动入库

通过 Webhook 节点接收表单提交的数据,经过 Set 节点格式化后,写入 Google Sheets 或 PostgreSQL 数据库中。

八、数据备份

定期备份 n8n 的工作流数据非常重要。可以通过以下方式进行:

8.1 导出工作流

n8n 支持在界面中直接导出单个工作流为 JSON 文件。也可以使用 CLI 批量导出:

docker exec -it n8n n8n export:workflow --all --output=/files/workflows_backup.json

8.2 备份数据库

docker exec postgres pg_dump -U n8n n8n > /opt/n8n/backup_$(date +%Y%m%d).sql

8.3 自动备份脚本

cat > /opt/n8n/backup.sh <<'EOF'
#!/bin/bash
BACKUP_DIR="/opt/n8n/backups"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
docker exec postgres pg_dump -U n8n n8n > $BACKUP_DIR/db_$DATE.sql
# 保留最近 7 天的备份
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
EOF
chmod +x /opt/n8n/backup.sh

添加 crontab 定时任务,每天凌晨 3 点自动备份:

echo "0 3 * * * /opt/n8n/backup.sh" | crontab -

九、升级 n8n

升级到最新版本非常简单:

cd /opt/n8n
docker compose pull
docker compose up -d

升级前建议先备份数据库,以便出问题时可以回滚。

十、常见问题

Webhook 无法触发

确保 WEBHOOK_URL 环境变量设置正确,且域名已正确指向服务器 IP。同时检查 Nginx 反向代理配置中是否包含 WebSocket 升级头。

内存占用过高

工作流执行历史数据会占用大量内存和存储。可以在环境变量中设置自动清理:

- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168

上述配置会自动清理 7 天前的执行记录。

时区不正确

确保 GENERIC_TIMEZONETZ 环境变量都设置为 Asia/Shanghai,重启容器后生效。

总结

n8n 是一款功能强大的自托管工作流自动化平台,特别适合需要将多个服务串联起来的场景。在搬瓦工 VPS 上部署 n8n 后,你可以实现网站监控、数据同步、消息推送等各种自动化任务。更多自托管应用部署教程请参考:Nextcloud 私有云盘Gitea 代码托管Umami 网站统计。选购搬瓦工 VPS 请参考全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。