本文老唐手把手教大家在搬瓦工 VPS 上部署 n8n 自动化工作流平台,并对接 DeepSeek AI 大模型,搭建一套属于自己的 AI 自动化系统。整个过程大约 30 分钟,需要的前置知识:会用 SSH 连接 VPS,会在命令行里敲命令。
n8n 是什么?简单说就是一个开源的自动化工作流工具,类似 Zapier 但可以自己部署。它能把各种服务串起来,收到邮件自动让 AI 总结、RSS 更新自动翻译推送、定时抓取数据生成报告。对接 DeepSeek 之后,这些工作流就有了 AI 大脑,能理解、分析、生成内容。
关键是成本极低:n8n 开源免费,DeepSeek API 每百万 token 不到 3 块钱人民币,加上搬瓦工 VPS(KVM 2GB $99.99/年,折合约 720 元),全套年费不到 800 元。用最便宜的 KVM 1GB($49.99/年 ≈ 360 元)+ 免费 API,甚至 400 元以内就能搞定。
1. n8n 是什么,能干什么
n8n(读作 “n-eight-n”,意思是 nodemation)是一个开源的工作流自动化平台。你可以把它理解为自己搭的 Zapier,通过可视化界面把不同的服务和操作连成一条流水线,自动执行。
和 Zapier、Make 的区别:
| 对比项 | n8n | Zapier / Make |
|---|---|---|
| 部署方式 | 自建服务器 | 云服务 |
| 费用 | 开源免费 | 按任务数收费($20+/月) |
| 数据隐私 | 数据在自己服务器上 | 数据经过第三方 |
| AI 集成 | 内置 LangChain 节点,支持 DeepSeek/OpenAI/Claude 等 | 有限的 AI 集成 |
| 自定义 | 完全可控,支持自定义代码 | 受限于平台提供的功能 |
n8n 自带 400+ 集成节点,覆盖邮件(Gmail/Outlook)、聊天(Slack/Discord)、数据库(PostgreSQL/MySQL)、文件(Google Drive/Dropbox)、HTTP 请求等。2024 年后 n8n 加入了基于 LangChain 的 AI 节点,可以直接在工作流里调用大模型——这就是本文的重点。
当前最新稳定版本是 n8n 2.10.x(2026 年 3 月),Docker 部署默认拉取最新稳定版。
2. 配置要求和 VPS 选购
n8n 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核 |
| 内存 | 2 GB | 4 GB |
| 磁盘 | 20 GB SSD | 25 GB SSD |
| 系统 | Ubuntu 20.04+ / Debian 11+ | Ubuntu 22.04 |
n8n 本身不是特别吃资源——空闲时内存占用约 300-500 MB。但加上 PostgreSQL 数据库、Docker 引擎开销、以及工作流执行时的峰值占用,2 GB 是实际最低门槛,4 GB 更从容。
如果你只是跑几个简单的 AI 工作流(每天几十次调用),2 GB 够用。如果要跑大量并发工作流或者处理大文件,建议 4 GB。
搬瓦工套餐推荐
| 套餐 | 配置 | 价格 | 适合场景 | 链接 |
|---|---|---|---|---|
| KVM 2GB | 3 核 / 2GB / 40GB | $99.99/年(约 60 元/月) | 个人使用,轻量工作流 | 购买 |
| CN2 GIA-E 1GB | 2 核 / 1GB / 20GB | $49.99/季度(约 120 元/月) | 加 Swap 后可用,国内访问快 | 购买 |
| CN2 GIA-E 2GB | 3 核 / 2GB / 40GB | $89.99/季度(约 216 元/月) | 推荐,稳定运行 | 购买 |
老唐建议:如果只是跑 n8n 一个服务,KVM 2GB($99.99/年)性价比最高。如果 VPS 上还要跑其他东西(比如之前教程里的 Open WebUI 或 Dify),建议上 CN2 GIA-E 2GB。
购买教程参考:《搬瓦工购买教程》
搬瓦工新手入门和所有可用优惠码,参考 《搬瓦工新手入门完全指南》。
3. 安装 Docker 和 Docker Compose
SSH 连接到搬瓦工 VPS 后,先安装 Docker。如果你之前跟着老唐的 Ollama 或 Dify 教程装过 Docker,可以跳过这一步。
安装 Docker
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Docker(官方一键脚本)
curl -fsSL https://get.docker.com | sh
# 把当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
# 退出并重新登录 SSH,使权限生效
exit
重新 SSH 登录后,验证安装:
docker --version
# 输出类似:Docker version 27.x.x
docker compose version
# 输出类似:Docker Compose version v2.x.x
2 GB 及以下内存:必须加 Swap
如果你的 VPS 内存只有 1-2 GB,务必先加 Swap,否则安装或运行过程中可能被系统 OOM 杀掉:
# 创建 4 GB Swap
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 验证
free -h
4. 部署 n8n(Docker Compose + PostgreSQL)
n8n 默认用 SQLite 存数据,生产环境强烈建议用 PostgreSQL——性能更好,数据更安全,备份也方便。
4.1 创建项目目录
mkdir -p ~/n8n-deployment && cd ~/n8n-deployment
4.2 创建环境变量文件
cat > .env << 'EOF'
# ===== PostgreSQL =====
POSTGRES_USER=n8n
POSTGRES_PASSWORD=替换成你自己的强密码
POSTGRES_DB=n8n
# ===== n8n 数据库连接 =====
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=替换成你自己的强密码
DB_POSTGRESDB_SCHEMA=public
# ===== n8n 实例配置 =====
N8N_HOST=0.0.0.0
N8N_PORT=5678
N8N_PROTOCOL=http
# Webhook 地址(后面绑域名后要改成 https://你的域名/)
WEBHOOK_URL=http://你的VPS公网IP:5678/
# 时区设为中国
GENERIC_TIMEZONE=Asia/Shanghai
TZ=Asia/Shanghai
# 关闭遥测
N8N_DIAGNOSTICS_ENABLED=false
# 加密密钥(必须设置,丢了就无法解密已保存的凭据)
N8N_ENCRYPTION_KEY=替换成随机字符串
EOF
重要:生成加密密钥的方法:
openssl rand -hex 32
把生成的随机字符串填到 N8N_ENCRYPTION_KEY 后面。这个密钥用来加密你在 n8n 里保存的所有 API Key 和密码,一定要备份好,换机器迁移时需要用。
4.3 创建 Docker Compose 文件
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
postgres:
image: postgres:16-alpine
container_name: n8n-postgres
restart: unless-stopped
env_file: .env
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n-app
restart: unless-stopped
env_file: .env
ports:
- "5678:5678"
depends_on:
postgres:
condition: service_healthy
volumes:
- n8n_data:/home/node/.n8n
volumes:
postgres_data:
n8n_data:
EOF
4.4 启动
docker compose up -d
首次启动会拉取镜像,大约 1-3 分钟。查看日志确认启动成功:
docker compose logs -f n8n
看到 Editor is now accessible via: http://0.0.0.0:5678 就说明启动成功了。按 Ctrl + C 退出日志。
5. 首次访问和账号设置
在浏览器打开:
http://你的VPS公网IP:5678
首次访问会要求创建管理员账号。设置好邮箱和密码,这就是你登录 n8n 编辑器的凭据。
进入主界面后,你会看到 n8n 的可视化工作流编辑器——左边是节点面板,中间是画布,右边是节点配置区。
安全提醒:此时 n8n 是通过 HTTP + IP 直接暴露在公网上的。后面第 8 节会教你绑域名和 HTTPS。在那之前,建议先设置好防火墙只允许你的 IP 访问 5678 端口。
6. 对接 DeepSeek API
这是本文的核心——让 n8n 的工作流用上 AI 能力。
6.1 获取 DeepSeek API Key
- 打开 DeepSeek 开放平台
- 注册并登录
- 进入「API Keys」页面,创建一个新的 API Key
- 复制保存好(只显示一次)
- 充值余额(支持支付宝/微信),日常使用很省(后面会算账)
6.2 在 n8n 中配置 DeepSeek 凭据
n8n 从 2025 年底开始内置了 DeepSeek Chat Model 节点,不需要装插件,直接用。
配置步骤:
- 在 n8n 编辑器里,点击左侧菜单的「Credentials」(凭据)
- 点击「Add Credential」
- 搜索 “DeepSeek”,选择 DeepSeek API
- 填入你的 API Key
- Base URL 保持默认:
https://api.deepseek.com - 保存
6.3 也可以用 OpenAI 兼容模式
DeepSeek API 和 OpenAI 格式完全兼容。如果你更习惯用 OpenAI 节点,也可以:
- 添加一个「OpenAI API」凭据
- API Key 填 DeepSeek 的 Key
- Base URL 改成
https://api.deepseek.com/v1(注意末尾有/v1,OpenAI SDK 需要这个路径) - 模型手动填
deepseek-chat或deepseek-reasoner
两种方式效果一样,老唐推荐直接用原生 DeepSeek 节点,配置更简单。
6.4 DeepSeek 可用模型
| API 模型名 | 说明 | 适合场景 |
|---|---|---|
deepseek-chat |
DeepSeek V3(非思考模式) | 日常对话、文本处理、快速响应 |
deepseek-reasoner |
DeepSeek V3(思考模式) | 数学推理、逻辑分析、复杂编程 |
6.5 API 费用参考
DeepSeek 的定价在主流大模型里属于最便宜的一档:
| 模型 | 输入价格(每百万 token) | 输出价格(每百万 token) | 人民币折算 |
|---|---|---|---|
| deepseek-chat | $0.28 | $0.42 | 输入约 2 元,输出约 3 元 |
| deepseek-reasoner | $0.28 | $0.42 | 同上 |
实际花费:一次典型的 AI 对话大约消耗 500-1000 个 token(输入+输出)。按每天跑 100 次自动化任务算,一个月 API 费用不到 5 元人民币。
对比 OpenAI GPT-4o(输入 $2.50,输出 $10.00/百万 token),DeepSeek 便宜了 10-25 倍。中文能力 DeepSeek 还更强。
7. 实战:5 个 AI 自动化工作流
下面是 5 个老唐实际用过的工作流案例,从简单到复杂。
工作流 1:RSS 自动摘要 + 推送
需求:每小时检查指定 RSS 源的更新,用 AI 生成中文摘要,推送。
节点连接:
Schedule Trigger(每小时) → RSS Feed Read(读取 RSS) → Summarization Chain(AI 摘要) └── DeepSeek Chat Model → Telegram(发送消息)
搭建步骤:
- 添加 Schedule Trigger 节点,设置为每 60 分钟执行一次
- 添加 RSS Feed Read 节点,填入 RSS 地址(比如
https://hnrss.org/newest) - 添加 Summarization Chain 节点(在 AI > Chains 里找),连接一个 DeepSeek Chat Model 子节点
- 在 Summarization Chain 的 Prompt 里写:
用中文总结以下内容,不超过 3 句话: - 添加消息推送节点,配置 Bot Token 和 Chat ID,消息内容引用 AI 输出
效果:每小时自动检查更新,有新文章就生成摘要推送消息,再也不用手动刷 RSS。
工作流 2:邮件自动分类 + AI 回复草稿
需求:收到邮件后自动分类(咨询/投诉/垃圾邮件),对咨询类邮件生成 AI 回复草稿。
节点连接:
Email Trigger(IMAP 收邮件) → Text Classifier(AI 分类) └── DeepSeek Chat Model → Switch(按分类路由) → [咨询] AI Agent(生成回复)→ Gmail(存草稿) → [投诉] Slack(通知客服) → [垃圾] 丢弃
关键配置:
- Text Classifier 节点里定义分类标签:
inquiry、complaint、spam - AI Agent 节点的 System Prompt 写清楚你的业务背景和回复风格
- Gmail 节点用”Create Draft”模式,不直接发送,人工审核后再发
工作流 3:定时数据报告
需求:每天早上 9 点,自动抓取多个数据源,让 AI 生成一份分析报告,发到邮箱。
节点连接:
Schedule Trigger(每天 9:00) → HTTP Request × 3(抓取数据) → Code(数据整合) → Basic LLM Chain(AI 分析) └── DeepSeek Chat Model → Gmail(发送报告)
适用场景:监控竞品价格变动、每日股票/加密货币行情分析、网站流量日报。
工作流 4:Webhook 接收 → AI 处理 → 返回结果
需求:提供一个 API 接口,其他系统发送文本过来,AI 处理后返回结构化结果。
节点连接:
Webhook(接收 POST 请求) → AI Agent └── DeepSeek Chat Model └── Tools: Calculator, Code → Respond to Webhook(返回 JSON)
配置细节:
- Webhook 节点选择 POST 方法,路径设为你自定义的地址(如
/webhook/ai-process) - 在 AI Agent 的 System Prompt 里指定输出 JSON 格式
- Respond to Webhook 节点把 AI 的输出包装成 JSON 返回
调用方式:
curl -X POST https://你的域名/webhook/ai-process \
-H "Content-Type: application/json" \
-d '{"text": "帮我从这段文字中提取所有人名和公司名..."}'
这等于用 n8n + DeepSeek 搭了一个自己的 AI API 服务。
工作流 5:信息提取 + 数据入库
需求:从网页或文档中提取结构化数据(比如产品名、价格、评分),存入数据库。
节点连接:
Schedule Trigger / Webhook → HTTP Request(抓取网页) → Information Extractor(AI 提取) └── DeepSeek Chat Model └── Output Parser(JSON Schema) → PostgreSQL / Google Sheets(存储) → IF(条件判断:价格低于阈值?) → Telegram(价格提醒)
Information Extractor 是 n8n 的 AI 节点之一,你定义好要提取的字段(JSON Schema),AI 就会从输入文本中提取对应数据并按格式输出。
8. 绑定域名和 HTTPS(Caddy)
生产环境不建议直接用 IP + 端口访问。绑定域名 + HTTPS 更安全,Webhook 功能也需要 HTTPS 才能正常工作。
8.1 准备工作
- 一个域名(比如
n8n.yourdomain.com) - 将域名的 A 记录指向搬瓦工 VPS 的 IP
- 等待 DNS 生效(通常几分钟到几小时)
8.2 修改 Docker Compose 加入 Caddy
把前面的 docker-compose.yml 替换成以下内容:
version"3.8"
services
caddy
imagecaddylatest
container_namen8n-caddy
restartunless-stopped
ports
"80:80"
"443:443"
volumes
caddy_data:/data
./Caddyfile:/etc/caddy/Caddyfile
postgres
imagepostgres16-alpine
container_namen8n-postgres
restartunless-stopped
env_file.env
environment
POSTGRES_USER=$POSTGRES_USER
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
POSTGRES_DB=$POSTGRES_DB
volumes
postgres_data:/var/lib/postgresql/data
healthcheck
test"CMD-SHELL" "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"
interval10s
timeout5s
retries10
n8n
imagedocker.n8n.io/n8nio/n8n
container_namen8n-app
restartunless-stopped
env_file.env
expose
"5678"
depends_on
postgres
conditionservice_healthy
volumes
n8n_data:/home/node/.n8n
volumes
postgres_data
n8n_data
caddy_data
注意:n8n 的 ports 改成了 expose,不再直接暴露 5678 端口到公网,由 Caddy 代理。
8.3 创建 Caddyfile
cat > Caddyfile << 'EOF'
n8n.yourdomain.com {
reverse_proxy n8n:5678 {
flush_interval -1
}
}
EOF
把 n8n.yourdomain.com 替换成你自己的域名。Caddy 会自动申请 Let’s Encrypt 证书,全程无需手动配置 SSL。
8.4 更新 .env
把 .env 文件中的以下两行改掉:
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.yourdomain.com/
8.5 重启
docker compose down
docker compose up -d
现在访问 https://n8n.yourdomain.com 就能用了,证书自动配好。
9. 日常维护和备份
更新 n8n
cd ~/n8n-deployment
# 拉取最新镜像
docker compose pull n8n
# 重启(数据不会丢失)
docker compose up -d n8n
建议每 1-2 个月更新一次。n8n 的更新频率大约每周一个小版本。
备份数据库
# 导出 PostgreSQL 数据
docker exec n8n-postgres pg_dump -U n8n n8n > backup_$(date +%Y%m%d).sql
# 恢复(需要时)
cat backup_20260308.sql | docker exec -i n8n-postgres psql -U n8n n8n
建议写个定时任务(crontab)每天自动备份:
# 编辑 crontab
crontab -e
# 添加一行(每天凌晨 3 点备份)
0 3 * * * docker exec n8n-postgres pg_dump -U n8n n8n > /root/n8n-backups/backup_$(date +\%Y\%m\%d).sql
查看日志
# n8n 日志
docker compose logs -f n8n
# PostgreSQL 日志
docker compose logs -f postgres
10. 安全加固
防火墙设置
# 只开放必要端口
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP(Caddy 用)
sudo ufw allow 443/tcp # HTTPS(Caddy 用)
sudo ufw enable
# 不要开放 5678 端口——Caddy 在 Docker 内部网络代理,不需要对外暴露
n8n 安全相关环境变量
在 .env 中添加:
# n8n 2.0+ 默认已禁止 Code 节点访问系统环境变量(N8N_BLOCK_ENV_ACCESS_IN_NODE=true)
# 如果你需要在 Code 节点里读取环境变量,需要手动改成 false(不推荐)
# 禁止 Code 节点引入外部 npm 模块
NODE_FUNCTION_ALLOW_EXTERNAL=false
加密密钥备份
前面设置的 N8N_ENCRYPTION_KEY 一定要单独备份。这个密钥丢了,n8n 里保存的所有 API Key、数据库密码等凭据全部无法解密,只能重新配置。
11. 常见问题
n8n 启动失败,日志显示数据库连接错误
检查 .env 文件中的数据库密码是否一致——POSTGRES_PASSWORD 和 DB_POSTGRESDB_PASSWORD 必须完全相同。另外确认 DB_POSTGRESDB_HOST 填的是 postgres(Docker 服务名),不是 localhost。
API Key 填错了,或者 DeepSeek 账户余额为零。登录 DeepSeek 开放平台 检查余额和 Key 状态。
工作流执行很慢
几个可能原因:
- VPS 内存不足,频繁 Swap——用
free -h检查,考虑升级配置 - DeepSeek API 响应慢——高峰期偶尔会排队,可以在节点设置里加大 Timeout
- 工作流里有大量数据循环——用 Split In Batches 节点分批处理
Webhook 收不到请求
- 确认
WEBHOOK_URL设置正确(必须是外部可访问的 URL) - 确认防火墙开放了 80/443 端口
- 确认域名 DNS 解析正确
- 在 n8n 编辑器里,工作流必须处于「Active」状态,Webhook 才会监听
内存不够,n8n 被 OOM 杀掉
- 加 Swap(见第 3 节)
- 减少同时运行的工作流数量
- 在 n8n 设置里降低
EXECUTIONS_DATA_MAX_AGE,定期清理历史执行记录 - 考虑升级 VPS 套餐——搬瓦工支持在 KiwiVM 后台直接升级,只需补差价
n8n 和之前装的 Dify / Open WebUI 能同时跑吗?
能,但对内存有要求。n8n + PostgreSQL 大约占 800 MB – 1.2 GB。加上 Dify(1.5-2 GB)或 Open WebUI + Ollama(1-5 GB),至少需要 4 GB 内存的 VPS。如果内存紧张,建议分开部署在不同 VPS 上。
12. 总结和系列文章
以上就是在搬瓦工 VPS 上部署 n8n + DeepSeek 的完整流程。总结一下关键信息:
- n8n:开源免费的工作流自动化平台,Docker 一键部署
- DeepSeek:国产 AI 大模型,API 价格极低(每百万 token 约 2-3 元人民币)
- VPS 配置:2 GB 内存起步,推荐搬瓦工 KVM 2GB($99.99/年)或 CN2 GIA-E 2GB($89.99/季度)
- 年费总计:VPS $99.99 + DeepSeek API 约 60 元/年 = 总共不到 800 元/年
n8n 的玩法远不止上面 5 个例子。你可以用它对接几乎任何有 API 的服务——企业微信、飞书、Notion、Airtable、GitHub 等等。加上 DeepSeek 的 AI 能力,想象空间很大。
本文是 oldtang.com「AI on VPS」系列的第五篇。系列文章:
- 《2026 VPS 部署 AI 大模型完全指南:从选配置到跑起来》
- 《2C2G / 4C4G / 8C8G VPS 分别能跑什么 AI 应用?配置选择与性能预估》
- 《2026 搬瓦工 VPS 部署 Ollama + Open WebUI 教程:搭建私人 ChatGPT》
- 《2026 搬瓦工 VPS 部署 Dify AI 应用平台教程:从安装到搭建 RAG 知识库》
- 本文:《2026 搬瓦工 VPS 部署 n8n + DeepSeek 自动化工作流教程》
- 《月预算 30-500 元,能跑什么 AI?VPS + AI 费用全拆解》
购买教程:《搬瓦工购买教程》
新手指南:《搬瓦工新手入门完全指南》
购买建议:预算有限选 KVM 套餐($49.99/年起),追求速度和稳定选 CN2 GIA-E 套餐($169.99/年起,支持季付),极致延迟选香港 CN2 GIA 套餐($89.99/月起)。
搬瓦工官网:bwh81.net
套餐推荐:
| 方案 | 内存 | CPU | 硬盘 | 流量/月 | 带宽 | 机房 | 价格 | 购买 |
|---|---|---|---|---|---|---|---|---|
| KVM (最便宜) | 1GB | 2核 | 20GB | 1TB | 1Gbps | DC2 AO DC8 ZNET | $49.99/年 | 购买 |
| KVM | 2GB | 3核 | 40GB | 2TB | 1Gbps | $52.99/半年 $99.99/年 | 购买 | |
| CN2 GIA-E (最推荐) | 1GB | 2核 | 20GB | 1TB | 2.5Gbps | DC6 CN2 GIA-E DC9 CN2 GIA 日本软银 JPOS_1 联通荷兰 EUNL_9 | $49.99/季度 $169.99/年 | 购买 |
| CN2 GIA-E | 2GB | 3核 | 40GB | 2TB | 2.5Gbps | $89.99/季度 $299.99/年 | 购买 | |
| HK | 2GB | 2核 | 40GB | 0.5TB | 1Gbps | 中国香港 CN2 GIA | $89.99/月 $899.99/年 | 购买 |
| HK | 4GB | 4核 | 80GB | 1TB | 1Gbps | $155.99/月 $1559.99/年 | 购买 | |
| OSAKA | 2GB | 2核 | 40GB | 0.5TB | 1.5Gbps | 日本大阪 CN2 GIA | $49.99/月 $499.99/年 | 购买 |
| OSAKA | 4GB | 4核 | 80GB | 1TB | 1.5Gbps | $86.99/月 $869.99/年 | 购买 |

老唐笔记











