1. 首页 > 技术教程 > 正文

n8n VPS 部署教程:搭建自己的自动化工作流平台

n8n 是目前很受欢迎的开源自动化工作流平台,主机选技术博客经常收到关于如何在 VPS 上部署 n8n 的提问。本文提供一套可直接落地的部署方案,从环境准备到生产环境配置,覆盖 Docker 部署、反向代理、安全加固和常见排障。无论你是想对接 AI Agent、Claude Code 还是 MCP 服务,这套教程都能让你快速跑起来。

zhujixuan TASK 139

为什么在 VPS 上部署 n8n

n8n 官方提供云托管服务,但自建 VPS 部署有几个硬核优势:数据完全私有、可对接本地模型(如 Ollama)、无 API 调用次数限制、能接入企业内网 Webhook。对于需要频繁调试 AI Agent 工作流的开发者来说,一台 2 核 4G 的 VPS 就够日常使用。如果跑大量节点或对接第三方服务,建议 4 核 8G 起步。

环境准备

检查 VPS 基础配置

cat /etc/os-release
free -h
df -h

至少 2GB 内存(不含 swap),20GB 磁盘。如果内存不足,n8n 在并发执行工作流时容易 OOM,别硬撑。

安装 Docker 和 Docker Compose

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker compose version

如果系统是 CentOS 7,建议先升级内核或换 Ubuntu,否则 Docker 兼容性坑很多。

Docker Compose 部署 n8n

这是最推荐的方式,升级、迁移、备份都方便。创建项目目录:

mkdir ~/n8n && cd ~/n8n

创建 `docker-compose.yml`:

yaml
version: '3.8'

services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
– "5678:5678" # 本地监听,后面用 Nginx 反代
environment:
– N8N_HOST=n8n.yourdomain.com # 改成你的域名
– N8N_PORT=5678
– N8N_PROTOCOL=https
– NODE_ENV=production
– WEBHOOK_URL=https://n8n.yourdomain.com # Webhook 回调地址
– GENERIC_TIMEZONE=Asia/Shanghai
– DB_TYPE=sqlite # 小项目用 SQLite,生产建议 PostgreSQL
– DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite
volumes:
– ./data:/home/node/.n8n # 持久化数据
networks:
– n8n_network

networks:
n8n_network:
driver: bridge

启动:

docker compose up -d
docker compose logs -f

访问 `http://你的VPS公网IP:5678` 应该能看到 n8n 初始化页面。注意:不要直接暴露 5678 端口到公网,必须用 Nginx 反代并开启 HTTPS。

配置 Nginx 反向代理与 HTTPS

安装 Nginx

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y

配置站点

创建 `/etc/nginx/sites-available/n8n`:

nginx
server {
listen 80;
server_name n8n.yourdomain.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name n8n.yourdomain.com;

ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;

client_max_body_size 50m; # 上传文件限制

location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_read_timeout 300s;
proxy_send_timeout 300s;
}
}

启用站点并申请证书:

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo certbot –nginx -d n8n.yourdomain.com
sudo nginx -t && sudo systemctl reload nginx

安全与性能优化

必须做的几件事

1.修改默认管理员密码:首次登录后立即在设置中更改。
2.限制 API 访问:n8n 默认所有用户可访问 API,建议在 `docker-compose.yml` 中添加 `N8N_AUTHENTICATION_METHOD=email` 并设置 `N8N_JWT_SECRET`。
3.启用 HTTPS:上面已经通过 Nginx 实现。
4.防火墙放行:只开放 80/443 端口,关闭 5678 公网访问。

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 5678/tcp
sudo ufw enable

对接 AI Agent 的常见配置

如果你要用 n8n 调用 OpenAI、Claude 或本地 Ollama,在 n8n 的 Credentials 里添加 API Key 即可。注意:不要将 API Key 硬编码在工作流节点中,统一存在 Credentials 里,方便管理和轮换。

老鸟叮嘱

内存不够怎么办:n8n 在运行复杂工作流(比如同时调用多个 HTTP 请求)时容易内存溢出。可以在 `docker-compose.yml` 中限制内存:`deploy: resources: limits: memory: 1G`。如果频繁 OOM,升级 VPS 配置比优化代码省心。

SQLite 还是 PostgreSQL:单用户、小项目 SQLite 够用。多人协作或生产环境必须上 PostgreSQL,否则并发写入会锁库。迁移时注意先导出 JSON 工作流。

升级 n8n:直接 `docker compose pull && docker compose up -d`,但升级前一定备份 `./data` 目录。n8n 大版本升级可能改动数据库结构,建议先测试。

Webhook 端口:n8n 的 Webhook 默认走 5678 端口,反代后通过域名访问。如果外部服务需要公网 Webhook,确保域名解析正常且 HTTPS 证书有效。

日志排查:出问题先看 n8n 日志:`docker compose logs n8n`。如果 Nginx 报 502,检查 n8n 容器是否正常启动。

常见问题 FAQ

Q: n8n 对 VPS 配置的最低要求是什么?
A: 纯跑简单工作流(如定时发邮件、调用 API),2 核 2G 勉强能跑,但建议 2 核 4G。如果对接 AI Agent 或使用大量节点,4 核 8G 更稳。

Q: 部署后无法访问 Web 界面,可能是什么原因?
A: 先检查容器是否运行:`docker ps | grep n8n`。然后看防火墙是否放行了 5678 端口(临时调试可先放行,记得改回)。如果使用反代,检查 Nginx 日志:`tail -f /var/log/nginx/error.log`。

Q: n8n 如何与本地 Ollama 模型集成?
A: 在 n8n 的 Credentials 中添加 HTTP Request 类型,填入 Ollama 地址(如 `http://192.168.1.100:11434`),然后在工作流中使用 HTTP Request 节点调用 `/api/generate` 接口。注意 Ollama 所在机器与 n8n VPS 的网络连通性。

Q: 能否在 n8n 中调用 MCP 协议的服务?
A: 可以。n8n 支持 Webhook 和 HTTP Request 节点,MCP 服务如果暴露 HTTP 端点,直接配置即可。如果 MCP 走 WebSocket,需要 n8n 的 WebSocket 节点(社区节点或自定义代码)。

Q: 如何备份 n8n 数据?
A: 备份 `./data` 目录即可,里面包含 SQLite 数据库和工作流 JSON。生产环境建议定时用 `rsync` 或 `scp` 同步到另一台机器。如果使用 PostgreSQL,用 `pg_dump` 备份。

Q: n8n 更新后工作流会丢失吗?
A: 只要数据卷挂载正确,更新容器不会丢失数据。但建议更新前备份 `./data` 目录。如果更新后工作流无法编辑,可能是数据库版本不兼容,回滚镜像即可。

总结

在 VPS 上部署 n8n 并不复杂,Docker Compose 加 Nginx 反代是最稳定的组合。关键在于内存规划、端口安全、数据备份和 HTTPS 配置。如果你打算用它对接 AI Agent 或搭建自动化工作流平台,按本文步骤走,基本半小时内就能上线。跑起来后别忘了定期检查日志和更新,别让工作流因为容器挂掉而停摆。

**相关阅读:**

– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)
– [AI Agent自动化运维实战100讲:VPS巡检、日志分析、告警处理与工作流教程](https://www.zhujixuan.com/jishujiaocheng/10066.html)
– [Hermes Agent VPS 部署教程:Docker Compose 安装和初始化配置](https://www.zhujixuan.com/jishujiaocheng/9872.html)

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9892.html 商家投稿邮箱:zhujixuanblog@qq.com