登录
首页 >  文章 >  linux

Linux部署N8n工作流引擎教程

时间:2026-05-16 23:36:35 144浏览 收藏

本文详细介绍了在Linux服务器上以生产级标准部署n8n工作流引擎的最佳实践,强调Docker是唯一推荐的部署方式——彻底规避npm全局安装带来的版本冲突、权限混乱与配置丢失风险;核心要点包括:强制挂载持久化数据卷防止工作流和凭证丢失、必须启用HTTPS反向代理(推荐Nginx+Certbot自动续签)以满足安全合规与OAuth等节点要求、坚决弃用SQLite而选用PostgreSQL作为数据库以保障并发稳定性与可扩展性,并通过docker-compose统一管理环境变量、网络、健康检查及多服务协同。内容直击运维痛点,提供开箱即用的最小可行配置示例与关键避坑指南,助你快速构建安全、稳定、可维护的自动化中枢。

Linux怎么安装和配置N8n工作流 Linux开源自动化引擎部署详解

直接用 Docker 跑最稳,别碰 npm 全局安装

Linux 上装 n8n,优先选 Docker。npm 全局安装(npm install -g n8n)在生产环境容易出问题:Node.js 版本冲突、权限混乱、升级后配置丢失、无法优雅重启。Docker 镜像自带运行时和依赖,版本锁定,数据卷隔离,重启不丢工作流。

关键点:

  • docker.n8n.io/n8nio/n8n 是官方镜像,别用第三方或老旧的 n8n/n8n
  • 必须挂载数据卷(如 -v n8n_data:/home/node/.n8n),否则容器一删,所有工作流、凭证全没了
  • 默认端口 5678 仅限本地访问,外网要用 nginx 反向代理 + HTTPS,不能直接暴露
  • 启动前先创建数据卷:docker volume create n8n_data

用 docker-compose.yml 管理才像生产环境

单条 docker run 命令适合试水,但真要长期跑,必须写 docker-compose.yml。它能固化环境变量、网络配置、健康检查、重启策略,还能和数据库、Nginx 联动部署。

一个最小可用的 docker-compose.yml 示例(含基础安全):

version: '3.8'
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n
    environment:
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_strong_password
      - N8N_DEFAULT_LOCALE=zh-CN
      - DB_TYPE=postgres
      - DB_POSTGRES_HOST=postgres
      - DB_POSTGRES_PORT=5432
      - DB_POSTGRES_DATABASE=n8n
      - DB_POSTGRES_USER=n8n
      - DB_POSTGRES_PASSWORD=postgres_password
volumes:
  n8n_data:

注意:

  • ports 绑定到 127.0.0.1,防止端口被扫到
  • N8N_BASIC_AUTH_* 必须设,否则 Web UI 没登录页,裸奔风险极高
  • 生产环境务必换掉 DB_TYPE=sqlite,SQLite 并发写入会锁死,postgresmysql 才撑得住多用户+定时任务

配 HTTPS 和反向代理是上线前最后一关

直接用 http://your-server:5678 访问,浏览器会标“不安全”,部分节点(如 Google OAuth、Webhook 回调)会拒绝连接。必须走 https://n8n.yourdomain.com

推荐组合:nginx(反代) + certbot(自动续签):

  • nginx 配置里,proxy_pass http://127.0.0.1:5678,且必须加 proxy_set_header X-Forwarded-Proto $scheme,否则 n8n 生成的 Webhook URL 仍是 http
  • certbot --nginx -d n8n.yourdomain.com 会自动改 nginx 配置并加 HTTPS 重定向
  • 证书每月自动续期命令:sudo certbot renew --quiet --post-hook "systemctl reload nginx"
  • 别漏开防火墙:sudo ufw allow 80,443,5678 端口不用对外开

数据库选型别踩 SQLite 这个坑

默认 SQLite 看似省事,但只要满足以下任一条件,就必须换数据库:

  • 有 2 个以上用户同时编辑工作流
  • 启用了定时触发器(Cron 节点)或 Webhook,QPS > 1
  • 工作流执行日志要保留超过 7 天

PostgreSQL 是首选:

  • DB_TYPE=postgres 启动时,n8n 会自动建表,无需手动初始化
  • JSONB 字段天然适配 n8n 的执行数据结构,查询快、压缩好
  • 备份简单:pg_dump -U n8n n8n_db > backup.sql
  • 避免用 root 或 postgres 用户连,单独建用户并只赋 CONNECTUSAGE 权限

MySQL 也行,但要注意:sql_mode 不能含 STRICT_TRANS_TABLES,否则插入失败;字符集必须是 utf8mb4

终于介绍完啦!小伙伴们,这篇关于《Linux部署N8n工作流引擎教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>