如何在自己的服务器上部署 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 无法访问、数据库连接失败等),欢迎随时告诉我,我可以帮你逐步排查。

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

相关推荐
big-seal21 分钟前
XML解释
xml·java·数据库
m***667329 分钟前
Python 爬虫实战案例 - 获取社交平台事件热度并进行影响分析
开发语言·爬虫·python
DeepFlow 零侵扰全栈可观测32 分钟前
DeepFlow 全栈可观测性 护航某银行核心系统全生命周期
数据库·人工智能·分布式·云原生·金融
e***582335 分钟前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
IMPYLH35 分钟前
Lua 的 select 函数
java·开发语言·笔记·后端·junit·游戏引擎·lua
L***p31337 分钟前
MYSQL的第一次
数据库·mysql
Y***985137 分钟前
MySQL下载安装及配置
数据库·mysql
Y***h18739 分钟前
Redis 下载与安装 教程 windows版
数据库·windows·redis
JienDa40 分钟前
JienDa聊PHP:知乎仿站实战中PHP框架的协同架构方略
开发语言·架构·php
TDengine (老段)41 分钟前
TDengine 时区函数 TIMEZONE 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据