n8n 一行命令自托管部署完整指南
【免费下载链接】n8nFair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.项目地址: https://gitcode.com/GitHub_Trending/n8/n8n
如果你想在本地或自己的服务器上自托管一个 n8n 实例,用可视化画布搭自动化工流,官方的一行安装脚本是最快的路。把它丢进终端,脚本会用 Docker Compose 拉起 n8n 本体、任务 runners、AI 沙箱和 SearXNG 搜索服务,生成一套只属于这台机器的随机密钥,等健康检查通过才收工。装完在浏览器打开 http://localhost:5678 就能开始建工作流。硬前提只有一个:机器上装了 Docker(含 Compose v2 插件)且守护进程在运行。
开始前检查:Docker 环境自检清单
跑命令前先对四项,任何一项不过,脚本都会立刻停下并指出是哪一项:
| 检查项 | 怎么查 | 不满足时怎么办 |
|---|---|---|
| Docker 与守护进程 | docker info正常返回 | 先装 Docker;Podman、Colima 等兼容引擎需装带 compose 插件的 docker CLI,并用DOCKER_HOST指向它们的 socket |
| Compose v2 插件 | docker compose version可执行 | 旧的独立docker-compose二进制不受支持,需升级 compose 插件 |
| 5678 端口空闲 | curl http://127.0.0.1:5678/无响应 | 只要有进程应答(HTTP 响应或连接被接受)就判定占用;停掉占用进程,或先改端口 |
| 安装目录 | 默认./n8n不能已存在且非空 | 非空目录会被拒绝写入;用N8N_DIR=./some-dir换目录 |
最小可行启动:一行命令安装 n8n 步骤
最短路径就这一行:
curl -fsSL https://get.n8n.io | sh想先审查再执行的话(脚本头部推荐的方式),先落地成文件通读一遍再跑:
curl -fsSL https://get.n8n.io -o get-n8n.sh && less get-n8n.sh && sh get-n8n.sh执行后脚本依次做这些事(完整逻辑见安装脚本源码):
- 解析版本:取最新稳定 release,查询失败时回退到内置的
2.32.0;版本号以N8N_VERSION写入.env并固定,不用浮动 tag,容器重建不会静默升级或触发数据库迁移。 - 在
./n8n下生成三个文件:compose.yml(栈定义,下载一次后归你所有,脚本以后永不重写)、.env(权限 600,内含本次安装随机生成的唯一密钥)、searxng-settings.yml。 - 拉取镜像(首次可能要几分钟),然后
docker compose up -d启动全部服务。 - 每 3 秒轮询
http://127.0.0.1:5678/healthz,最多等 180 秒。 - 成功时打印摘要:运行地址、数据位置、配置位置、启停命令和安全提示。
常用选项拼在管道后,环境变量按行前缀传:
| 选项 / 环境变量 | 作用 | 何时用 |
|---|---|---|
sh -s -- --version 2.32.0 | 安装指定版本,必须像2.32.0这样三段式 | 固定某个发布版本 |
sh -s -- --version | 只打印脚本版本和将安装的 n8n 版本,不做改动 | 安装前确认版本号 |
sh -s -- --no-start | 只写配置文件,不拉镜像、不启动 | 需要先改端口映射再手动启动 |
N8N_DIR=./some-dir | 改变安装目录(默认./n8n) | 当前目录下n8n不可用 |
DO_NOT_TRACK=1 | 安装/升级失败时不再询问是否发送匿名失败报告 | 非交互环境 |
如何确认安装成功:健康检查与容器状态
别只看脚本自己的摘要,用两个独立信号复核。健康检查端点(脚本判定就绪用的就是它):
curl http://127.0.0.1:5678/healthz容器状态(预期值来自仓库的e2e 测试):
docker compose -f n8n/compose.yml psn8n、sandbox-api、sandbox-runner-1、runners、searxng应为 running;sandbox-certs是一次性证书引导容器,以退出码 0 结束(exited 0)。最后浏览器打开 http://localhost:5678,看到编辑器就稳了:
日常操作速查:启停、升级与卸载命令
启停(脚本成功摘要中给出的形式):
docker compose -f n8n/compose.yml down # 停止 docker compose -f n8n/compose.yml up -d # 启动在已有安装上不带--upgrade重跑一行脚本是安全的 no-op:不改任何文件,只报告当前状态、启动地址和升级命令。
升级:
curl -fsSL https://get.n8n.io | sh -s -- --upgrade它只修改.env中的N8N_VERSION一行(可与--version x.y.z组合指定目标版本),然后拉取镜像并重启,其他配置和密钥一概不动。若线上栈定义版本比本地compose.yml新,它会提示你查看变更,但不替你改写文件。
卸载:
docker compose -f n8n/compose.yml down -v && rm -rf n8n警告:down -v会连带删除n8n-data数据卷,rm -rf删除配置目录——全部工作流、凭据和执行记录都会丢失。执行前确认不再需要这个实例。
常见失败排查:端口占用与限流报错
四种典型失败,按「报错原文 → 原因 → 修复」处理:
something is already listening on port 5678原因:机器上已有进程占用 5678。修复:停掉占用进程重跑;或加--no-start只生成配置,手动改n8n/compose.yml的端口映射后再启动。
./n8n exists and is not empty — refusing to write into it原因:安装目录非空。修复:用N8N_DIR=./some-dir换一个干净目录。
Docker Hub pull rate limit reached原因:撞上 Docker Hub 匿名拉取限流。修复:配置文件不受影响;等约一小时用docker compose -f n8n/compose.yml up -d启动,或docker login登录账号提高限额后重跑脚本。
n8n did not become ready原因:180 秒内/healthz没通过,一般是启动卡住。修复:docker compose -f n8n/compose.yml logs n8n查 n8n 容器日志。
部署边界与轻量替代方案
一行部署定位是本地试用:TLS、Postgres、队列模式这类生产级需求不在脚本范围内。
两件事必须记住。数据存在 Docker 卷n8n-data中,挂载到容器内/home/node/.n8n:工作流保存在 SQLite 数据库里,该目录还有 webhook URL 和凭据加密密钥——启动时若找不到这些数据,n8n 会自动生成新密钥,已有凭据将无法再解密(见镜像数据说明)。安全边界方面:只有 5678 端口应暴露到公网;sandbox-runner-1是特权 Docker-in-Docker 容器,永远不要发布它的端口;runners、sandbox-api、searxng只在 compose 网络内以服务名访问,不发布主机端口(见栈定义文件)。
如果不想引入 runners/沙箱这套完整栈,单容器方式更轻,访问地址同样是 http://localhost:5678:
docker volume create n8n_data docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n注意这里数据卷名叫n8n_data,和完整栈的n8n-data不同,挂载路径同为/home/node/.n8n。
【免费下载链接】n8nFair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.项目地址: https://gitcode.com/GitHub_Trending/n8/n8n
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考