OffshoreVps
教程2026年10月4日阅读约 7 分钟作者:OffshoreVps 团队

用 Docker Compose 在 VPS 上部署 n8n 和 AI 智能体

自托管带 Postgres 和 HTTPS 的 n8n,构建 AI 智能体工作流,保护 webhook,并备份数据和加密密钥。

n8n 是一个用可视化编辑器连接应用、API 和 AI 模型的工作流工具。自托管意味着你的工作流、凭据和数据都留在你掌控的服务器上,且运行不计量。本指南用 Docker Compose、Postgres 数据库和 HTTPS 部署 n8n,随时可以全天候运行 AI 智能体。

VPS 上的终端窗口,显示部署 n8n 和 AI 智能体所用的命令,以“mkdir -p ~/n8n && cd ~/n8n”开头
本指南中你将在服务器上运行的那类命令。

为什么用 VPS 运行智能体?

智能体经常按计划运行或响应 webhook,因此需要一台始终在线且可访问的服务器。VPS 为 webhook 提供固定地址,并提供足够的内存让工作流保持响应。2 vCPU、4 GB 的套餐适合小型部署。规格请参阅 AI 智能体托管,如果想使用本地模型,可再加一台 GPU 服务器。

开始之前

  • 一台装有 Docker 的 VPS。请参阅安装 Docker。
  • 一个指向该服务器的域名。请参阅 DNS 记录。

步骤 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 无法解密已存储的凭据。

本指南的步骤依次为:1. 为什么用 VPS 运行智能体?;2. 开始之前;3. 机密信息;4. 启动 n8n;5. 构建智能体工作流;6. 确保安全
本指南的步骤,按顺序排列。

步骤 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:构建智能体工作流

  1. 添加 Webhook 或 Schedule 触发器。
  2. 添加 AI Agent 节点并连接一个聊天模型,例如托管 API,或你自己 GPU 服务器上的 Ollama。
  3. 为智能体提供工具,如 HTTP 请求、数据库或消息节点。
  4. 先手动运行测试,然后激活工作流。

确保安全

  • 将 n8n 绑定到 127.0.0.1,只暴露 HTTPS 代理。
  • 尽可能用密钥标头或路径保护 webhook。
  • 备份 Postgres 卷和 n8n 卷。请参阅使用 restic 或 borg 备份。
  • 阅读发行说明后,使用 docker compose pull && docker compose up -d 更新。