如何在自己的服务器上部署 n8n

前言

n8n 是一款强大的低/无代码工作流自动化平台,支持超过 400 + 种集成服务。相比使用其云服务,自建部署(Self-host)可掌控数据、安全、资源,以及定制化程度。官方将 Self-host 方式作为「适合有一定运维经验的用户」选择。(docs.n8n.io)

本篇文章将从准备、安装、配置、运行、运维等角度,带你一步一步在自己服务器上部署 n8n。


一、准备工作

在开始之前,请确认并准备以下事项:

1. 服务器环境

  • 建议使用 Linux 系统(如 Ubuntu 20.04、Debian 12 等),社区中很多教程以 Ubuntu 为例。(n8n Community)

  • 推荐至少 1 GB -- 2 GB 内存,小负载可以更低,但生产环境建议更多。(n8n Community)

  • 有公网 IP 或 域名,并可指向你的服务器。最好使用子域名指向,例如 n8n.example.com。(n8n Community)

  • 安装 Docker 与 docker-compose(后续步骤会用到)。

  • 如果生产环境建议配置 HTTPS/SSL 、反向代理(如 Nginx)、防火墙、备份方案。

2. 域名/DNS 指向

  • 在你的域名服务商后台,将子域名(如 n8n)的 A 记录指向服务器公网 IP。(n8n Community)

  • 等待记录生效(可能几十分钟至数小时)。

  • 如果你要使用 HTTPS ,建议预先设置好与证书申请相关端口(如 80/443 端口可访问)。

3. 安全与访问控制考虑

  • n8n 部署后一般含编辑界面、Webhook 触发等入口,建议至少做基本认证。

  • n8n 官方文档提醒,自建部署需懂得「配置、服务器管理、资源监控、安全措施」三者。(docs.n8n.io)

  • 若是生产环境,更应考虑备份机制、数据库安全、HTTPS、限制外部访问等。


二、安装流程

下面以使用 Docker + docker-compose 的方式安装社区版 n8n 为主,步骤简明且通用。你也可参考官方文档其它安装方式。(docs.n8n.io)

1. 登录服务器并更新系统

复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker && sudo systemctl start docker

2. 创建工作目录

例如在根目录下创建 /root/n8n(或任意你希望存放数据的目录):

复制代码
mkdir -p /root/n8n
cd /root/n8n

3. 创建 .env 配置文件

在这个目录下创建 .env 文件,示例如下(根据你实际环境修改):

复制代码
# 这个目录用于存放 n8n 的数据文件
DATA_FOLDER=/root/n8n/

# 顶域名与子域名
DOMAIN_NAME=example.com
SUBDOMAIN=n8n

# 访问地址将会是:https://n8n.example.com
N8N_BASIC_AUTH_USER=你的用户名
N8N_BASIC_AUTH_PASSWORD=你的密码

# 时区设置(可选,默认纽约时区)
GENERIC_TIMEZONE=Asia/Shanghai

# 用于申请 SSL 证书的邮箱(若使用 Let's Encrypt 或类似方式)
EMAIL_ADDRESS=your-email@example.com

以上示例根据社区帖子整理。(n8n Community)
重要提示:请务必将用户名和密码替换为安全的值,避免默认配置造成安全隐患。

4. 创建 docker-compose.yml 文件

仍然在 /root/n8n 目录下,使用你熟悉的编辑器(如 vim 或 nano)创建 docker-compose.yml,示例如下:

复制代码
version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - WEBHOOK_TUNNEL_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}
      - VUE_APP_URL_BASE_API=https://${SUBDOMAIN}.${DOMAIN_NAME}/
    volumes:
      - ${DATA_FOLDER}:/home/node/.n8n

这个配置是最简单的社区版 n8n 部署结构。你可以根据需求扩展例如数据库、队列模式(queue mode)、反向代理、HTTPS 等。参考官方文档。(docs.n8n.io)

5. 启动服务

复制代码
sudo docker-compose up -d

执行后,Docker 会拉取镜像并启动容器。如果一切正常,你可以访问 https://n8n.example.com (替换为你的域名)查看是否可以登录。

6. (可选)设置反向代理 + SSL

如果你想让 n8n 运行在标准 80/443 端口且支持 HTTPS,建议使用 Nginx 或 Caddy 等作为反向代理,再申请免费 SSL 证书(如 Let's Encrypt)。在此处不赘述所有细节,但这一步在生产环境中很重要。


三、基本配置与使用

安装完成后,你还应做一些基本配置,优化使用体验。

1. 登录界面

使用你在 .env 中设置的 用户名/密码 登录。建议第一次登录后立即修改相关设置(如密码、用户管理)。

2. 数据库配置(可选)

虽然默认 n8n 会使用 SQLite,但如果你要运行更大规模或生产环境,建议使用 PostgreSQL 或 MySQL 作为后端数据库。社区讨论中也提到:

"Docker without Database: 简单且适合测试;Database-Connected Docker: 提供更好的性能、可扩展性" (Reddit)

你可以在 docker-compose 中新增数据库服务,或使用外部数据库,并通过环境变量进行连接。

3. 访问与Webhook URL

  • 确认 WEBHOOK_TUNNEL_URLVUE_APP_URL_BASE_API 已设置为你真实访问域名,否则部分 Webhook 或编辑界面可能无法正常工作。

  • 如果你的服务器背后还有反向代理或负载均衡器,确保 n8n 能正确接收外部访问请求。

4. 安全设置

  • 启用基本认证(如上已配置)或更强认证方式。

  • 限制编辑界面访问来源(如仅特定 IP)。

  • 定期更新 n8n 镜像与依赖,避免安全漏洞。

  • 定期备份数据文件夹及数据库。

  • 若你在离线环境运行,还可以通过配置禁用 Telemetry 等外部请求。(n8n Community)

5. 扩展与维护

  • 若你希望运行大量任务、并发多、Webhook 频繁触发,可考虑 queue 模式、多 worker 节点部署。社区有关于 「部署扩展/最佳实践」的讨论。(n8n Community)

  • 可监控 Docker 容器资源、数据库状态、Webhook 请求延迟、执行结果等指标。


四、升级与运维建议

升级流程

  • 停止 n8n 服务(如 docker-compose down

  • 拉取最新镜像(例如 docker-compose pull

  • 启动服务(docker-compose up -d

  • 检查日志和服务状态,确认无异常。

    建议在升级前做备份,以防出现兼容性问题。

备份方案

  • 定期备份 DATA_FOLDER(n8n 配置、执行数据)

  • 若使用外部数据库,备份 PostgreSQL/MySQL 数据。

  • 保留 docker-compose.yml 和 .env 文件快照。

  • 定期演练恢复流程。

监控与提示

  • 检查服务器磁盘、内存、CPU 使用率。

  • 检查 Docker 容器 Logs。

  • 监控 n8n 执行失败率、Webhook 延迟、数据库连接情况。

  • 若 workflow 逻辑复杂、触发器多、建议增加 Alert、监控系统。


五、总结

通过以上步骤,你就可以在自己的服务器上成功部署 n8n 社区版,并开始搭建自己的自动化工作流。虽然过程并不复杂,但生产环境中仍建议关注安全、监控、备份、升级等运维细节。正如官方所言:"如果你没经验管理服务器、容器、资源、网络等组件,自建部署可能会带来数据丢失、安全或 downtime 的风险"。(docs.n8n.io)

✨ 若你在部署过程中遇到具体问题(如 docker 日志报错、Webhook 无法访问、数据库连接失败等),欢迎随时告诉我,我可以帮你逐步排查。

祝你部署顺利、自动化飞起来!

相关推荐
小白起 v2 小时前
自动更新工期触发器(MYSQL)
数据库·sql·oracle
蒋星熠2 小时前
爬虫中Cookies模拟浏览器登录技术详解
开发语言·爬虫·python·正则表达式·自动化·php·web
JIngJaneIL2 小时前
数码商城系统|电子|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码商城系统
青衫码上行4 小时前
【Java Web学习 | 第七篇】JavaScript(1) 基础知识1
java·开发语言·前端·javascript·学习
星释4 小时前
Rust 练习册 10:多线程基础与并发安全
开发语言·后端·rust
披着羊皮不是狼5 小时前
多用户博客系统搭建(1):表设计+登录注册接口
java·开发语言·springboot
~我爱敲代码~5 小时前
使用XSHELL远程操作数据库
数据库·adb
zzzyyy5387 小时前
C++之vector容器
开发语言·c++
xunyan62349 小时前
面向对象(上)-封装性的引入
java·开发语言