n8n 是一个用可视化编辑器连接应用、API 和 AI 模型的工作流工具。自托管意味着你的工作流、凭据和数据都留在你掌控的服务器上,且运行不计量。本指南用 Docker Compose、Postgres 数据库和 HTTPS 部署 n8n,随时可以全天候运行 AI 智能体。
为什么用 VPS 运行智能体?
智能体经常按计划运行或响应 webhook,因此需要一台始终在线且可访问的服务器。VPS 为 webhook 提供固定地址,并提供足够的内存让工作流保持响应。2 vCPU、4 GB 的套餐适合小型部署。规格请参阅 AI 智能体托管,如果想使用本地模型,可再加一台 GPU 服务器。
开始之前
步骤 1:Compose 文件
mkdir -p ~/n8n && cd ~/n8n
cat > compose.yaml <<'YAML'
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: n8n
volumes:
- db:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
depends_on: [db]
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: db
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
N8N_HOST: n8n.example.com
N8N_PROTOCOL: https
WEBHOOK_URL: https://n8n.example.com/
N8N_ENCRYPTION_KEY: ${ENCRYPTION_KEY}
GENERIC_TIMEZONE: UTC
ports:
- "127.0.0.1:5678:5678"
volumes:
- n8n:/home/node/.n8n
volumes:
db:
n8n:
YAML
步骤 2:机密信息
cat > .env <<ENV
DB_PASSWORD=$(openssl rand -hex 24)
ENCRYPTION_KEY=$(openssl rand -hex 32)
ENV
chmod 600 .env
备份 ENCRYPTION_KEY。没有它,n8n 无法解密已存储的凭据。
步骤 3:启动 n8n
docker compose up -d
docker compose logs -f n8n
步骤 4:HTTPS
n8n.example.com {
reverse_proxy 127.0.0.1:5678
}
重新加载 Caddy,打开网站并创建所有者账户。
步骤 5:构建智能体工作流
- 添加 Webhook 或 Schedule 触发器。
- 添加 AI Agent 节点并连接一个聊天模型,例如托管 API,或你自己 GPU 服务器上的 Ollama。
- 为智能体提供工具,如 HTTP 请求、数据库或消息节点。
- 先手动运行测试,然后激活工作流。
确保安全
- 将 n8n 绑定到 127.0.0.1,只暴露 HTTPS 代理。
- 尽可能用密钥标头或路径保护 webhook。
- 备份 Postgres 卷和 n8n 卷。请参阅使用 restic 或 borg 备份。
- 阅读发行说明后,使用
docker compose pull && docker compose up -d更新。