用途:把一台全新的 Linux 虚拟机(Ubuntu/Debian,具备 root 或 sudo SSH 权限)部署成运行中的、带 HTTPS 的生产级自托管 n8n,采用 Docker Compose 加 Caddy 反向代理(自动 Let's Encrypt TLS)。仅面向 Docker 自托管 n8n,不适用于 n8n Cloud,也不负责构建工作流。
两种部署模式:单实例(一个 n8n 进程、SQLite、无额外服务)与队列(main + N 个 worker,Redis 作队列、Postgres 作数据库,工作流在 worker 上并行执行)。需先询问用户选定模式,不确定时建议从单实例开始;若预期高负载则直接选队列。
主要能力与流程:全程通过 SSH 驱动,依次为预检(确认系统、DNS 已指向本机、80/443 可从公网访问)→ 安装 Docker 与 Compose 插件 → 放置项目文件(compose、Caddyfile、init-data.sh、.env)→ 在目标机上用 openssl 生成密钥并写入 .env → 配置 ufw 防火墙 → 执行 cd <DATA_FOLDER> && docker compose up -d 启动 → 验证服务健康、证书签发与公网可达 → 交付。队列模式扩容可用 docker compose up -d --scale n8n-worker=N。
安全要求:所有密钥必须在目标机上全新生成,不得复用其他实例的加密密钥或 .env;密钥只存于 .env(权限 600),不得内联进 compose 或 Caddyfile;N8N_ENCRYPTION_KEY 用于加密所有凭据,丢失或变更将导致凭据无法解密,需提示用户异地备份;仅 Caddy 的 80/443 对外,n8n 5678、Postgres 5432、Redis 6379 保持私有网络。
限制与注意:队列模式必须使用 Postgres,不能跑在 SQLite 上;不要盲目使用 :latest,应固定 N8N_IMAGE_TAG;默认镜像不含 Python 3,Python Code 节点需外部 task runners(n8nio/runners sidecar),且队列模式下每个 worker 配一个 sidecar,不能直接 --scale worker;行为类环境变量在队列模式下需放入共享锚点以便 worker 同样获得。首次访问需立即创建 owner 账户并启用 2FA。更新、备份与恢复见 DAY2.md。上游权威文档为 https://docs.n8n.io/deploy/host-n8n,冲突时以官方文档为准。