在带有HTTPS的VPS上安装和部署n8n的最简单方法

在VPS上设置n8n一开始可能看起来很复杂,但其实出乎意料地简单!多亏了 Docker 和 Caddy,你可以在几分钟内快速部署一个带有自动 HTTPS 加密的生产准备 n8n 实例。

在这份全面的安装指南中,你将学习如何使用 Docker 在 VPS 上安装 n8n,使用 Caddy 配置自动 SSL 证书,并让你的工作流程自动化平台安全运行。

在带有HTTPS的VPS上安装和部署n8n的最简单方法

如果你想快速让 n8n VPS 托管在 Ubuntu 24.04 上运行,以下是基本命令:

Install Docker (follow official Docker docs)

sudo apt update

Create n8n data volume

docker volume create n8n_data

Run n8n container

docker run -d --rm \

--name n8n \

-p 5678:5678 \

-e GENERIC_TIMEZONE="America/New_York" \

-e TZ="America/New_York" \

-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \

-e N8N_RUNNERS_ENABLED=true \

-e VUE_APP_URL_BASE_API=https://n8n.yourdomain.com/ \

-e N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_TUNNEL_URL=https://n8n.yourdomain.com/ \

-v n8n_data:/home/node/.n8n \

docker.n8n.io/n8nio/n8n

Install and configure Caddy

sudo apt install caddy

sudo nano /etc/caddy/Caddyfile # Add your configuration

sudo systemctl restart caddy

使用 Caddy 和 Docker 是安装和部署 n8n 最简单的方法。关于详细说明,包括配置选项和如何在VPS上安装n8n的故障排除技巧,请继续阅读。

什么是n8n VPS?

在深入安装之前,让我们快速澄清一下n8n的含义。N8N 是一款强大的开源工作流程自动化工具,可以让你连接不同的应用和服务。当你在VPS(虚拟专用服务器)上部署n8n时,你可以完全掌控自动化平台,享有完整的数据隐私、定制选项,并能根据需求增长进行扩展。

与云托管解决方案不同,VPS让你完全拥有数据和工作流程,非常适合有特定安全需求的企业或希望避免持续订阅费用的企业。

n8n VPS 要求

要按照本教程成功在VPS上安装n8n,你需要:

Ubuntu 24.04,支持 root 或 sudo 访问(如果你没注意到,SSD Nodes 提供了世界上最实惠且最可靠的 Ubuntu 服务器。我们的NVMe VPS选项为您的n8n工作流程提供闪电般的性能。你可以按照这份SSH指南连接你的VPS。

指向你服务器IP地址的域名(例如,n8n.yourdomain.com)

开启防火墙端口:80(HTTP)、443(HTTPS)和5678(n8n默认端口)

对命令行作的基本熟悉度

注:安装前,确保服务器防火墙上的 TCP 端口 80、443 和 5678 已开放。端口80用于SSL证书的初始域验证,端口443用于传输加密HTTPS流量,端口5678是n8n的默认应用端口。

理解n8n webhook_tunnel_url含义

在我们开始介绍在VPS上部署n8n的最简单方法之前,你首先需要理解n8n中的含义。该配置设置对测试和开发工作流程至关重要。webhook_tunnel_url

这是一个n8n环境变量,使webhook在本地开发或测试阶段能够实现功能。当你构建依赖外部服务通过webhook向n8n实例发送数据的自动化工作流时,他们会创建一个公开可访问的URL,隧道连接到你的本地或开发环境。webhook_tunnel_urlwebhook_tunnel_url

在正式的VPS部署中,如果有合适的域名和HTTPS(我们会在本指南中介绍),通常不需要配置,因为你的n8n实例已经可以通过你的域名访问。不过,理解这一概念有助于你排查与webhook相关的问题,并理解为什么拥有一个带有专用域的专业VPS部署是生产工作流程中更优的选择。webhook_tunnel_url

当你在本地开发时,需要先测试像 Stripe、GitHub 或 Slack 这样的服务的 webhook,然后再部署到 VPS 上,这点尤为重要。一旦你的n8n实例运行在带有HTTPS的VPS上(我们将向你展示),你的实际域名就会变成你的webhook URL,从而消除了隧道配置的需求。webhook_tunnel_url

现在让我们开始部署n8n吧!

步骤1:在你的VPS上安装Docker

为了在服务器上高效运行n8n,你需要使用Docker,它为你的n8n实例提供了一个干净、隔离的环境。首先,更新你的软件包仓库,确保你使用的是最新的可用软件:

sudo apt update

安装N8N前更新软件包

接下来,按照 Docker 的官方说明安装 Docker Engine。Docker 官方文档提供了 Ubuntu 24.04 最新且可靠的安装方法。

安装 Docker 后,将你的用户添加到 Docker 组(可选,但建议在不使用 sudo 的情况下运行 docker):

sudo usermod -aG docker $USER

newgrp docker

这一步让你可以运行 Docker 命令而无需每次都用 sudo,从而提高工作流程效率。

现在,启动并启用 Docker 在系统启动时自动运行:

sudo systemctl start docker

sudo systemctl enable docker

您可以通过查看 Docker 状态来验证其运行是否正确:

sudo systemctl status docker

Docker 状态

步骤2:用Docker运行n8n

现在Docker 安装完成,是时候在你的 VPS 上部署 n8n 了。首先,为n8n数据创建一个持久卷。这确保即使容器被停止或重启,您的工作流程、凭证和设置依然得以保留:

docker volume create n8n_data

接下来,运行带有所有必要配置的n8n容器。我们先用互动模式来验证一切正常:

docker run -it --rm \

--name n8n \

-p 5678:5678 \

-e GENERIC_TIMEZONE="America/New_York" \

-e TZ="America/New_York" \

-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \

-e N8N_RUNNERS_ENABLED=true \

-e VUE_APP_URL_BASE_API=https://n8n.yourdomain.com/ \

-e N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_TUNNEL_URL=https://n8n.yourdomain.com/ \

-v n8n_data:/home/node/.n8n \

docker.n8n.io/n8nio/n8n

重要提示:用你的时区替换。从此页面找到你的作品。另外,在所有环境变量中用你的真实域名替换。"America/New_York"n8n.yourdomain.com

你应该会看到显示编辑器现在已可访问的输出:

Editor is now accessible via:

http://localhost:5678

这个交互模式()对测试很有用,但对于生产的n8n VPS托管,你需要让容器以分离模式运行。停止当前容器(Ctrl+C),并用标志再次运行:-it-d

docker run -d --rm \

--name n8n \

-p 5678:5678 \

-e GENERIC_TIMEZONE="America/New_York" \

-e TZ="America/New_York" \

-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \

-e N8N_RUNNERS_ENABLED=true \

-e VUE_APP_URL_BASE_API=https://n8n.yourdomain.com/ \

-e N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_BASE_URL=https://n8n.yourdomain.com/ \

-e WEBHOOK_TUNNEL_URL=https://n8n.yourdomain.com/ \

-v n8n_data:/home/node/.n8n \

docker.n8n.io/n8nio/n8n

你应该会收到类似这样的集装箱编号:

af1eb22262acc60fc205b80e57ad76b3c50909f83d0036e4921db517ba95ec6f

这条长的字母数字字符串是你容器的唯一标识符,确认n8n现在正在后台运行。

为了验证n8n是否正常运行,可以用curl测试:

curl localhost:5678

你会看到输出,提到需要JavaScript,这很正常,说明n8n正在响应:

n8n 正在 VPS 上成功运行

这确认n8n已成功运行在5678端口,并已准备好通过网页浏览器访问。

步骤3:安装并配置Caddy以实现自动HTTPS

现在n8n运行了,你需要设置HTTPS来保护你的连接。Caddy通过自动获取和续签Let's Encrypt SSL证书,实现了极其简单的作。这是这种简单 n8n 部署方法的主要优势之一。

首先,安装凯迪拉克:

sudo apt update

sudo apt install caddy

caddy version

该命令确认Caddy安装正确,并显示你使用的版本:caddy version

球童版本

接下来,配置Caddy将代理请求反向发送到你的n8n实例,并自动处理SSL证书。打开Caddyfile:

sudo nano /etc/caddy/Caddyfile

在文件顶部添加以下配置:

{

email your-email@example.com

}

n8n.yourdomain.com {

reverse_proxy localhost:5678

}

重要提示:用你的真实邮箱地址替换(Let's Encrypt用来发送证书过期通知)和你的真实域名。your-email@example.comn8n.yourdomain.com

你完整的Caddyfile配置应该是这样的:

{

email your-email@example.com

}

:80 {

Set this path to your site's directory.

root * /usr/share/caddy

Enable the static file server.

file_server

Another common task is to set up a reverse proxy:

reverse_proxy localhost:8080

Or serve a PHP site through php-fpm:

php_fastcgi localhost:9000

}

n8n.yourdomain.com {

reverse_proxy localhost:5678

}

保存并关闭文件(Ctrl+X,然后Y,再按Enter,nano键)。

步骤4:启动Caddy并启用自动HTTPS

配置好你的球童档案后,是时候启动球童,让它发挥它的魔力了。启用并重启Caddy:

sudo systemctl restart caddy

sudo systemctl enable caddy

这个命令会应用你的新配置,同时确保服务器重启时Caddy会自动启动。restartenable

检查一切是否正常:

sudo systemctl status caddy

你应该会看到输出显示Caddy正在运行:

● caddy.service - Caddy

Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled)

Active: active (running)

如果你看到绿色文字写着"正在进行(跑步)",恭喜你!Caddy现在正在运行,并且已经自动获得了你域名的SSL证书。

步骤5:用HTTPS访问你的n8n实例

现在到了关键时刻!在浏览器中访问(记得用你的真实域名替换)。https://n8n.yourdomain.com

你应该看看:

自动HTTPS显示浏览器地址栏中的绿色锁定图标。

N8N登录/设置页面准备好了,方便你创建第一个账户

n8n 在带 HTTPS 的 VPS 上成功运行

恭喜你!你已经成功在VPS上部署了n8n,并配备了自动HTTPS加密。您的工作流程自动化平台现在安全、准备生产,并且可从世界任何地方访问。

常见问题排查 n8n VPS 安装问题

即使是最简单的在VPS上部署n8n的方法,偶尔也会遇到问题。以下是最常见的问题的解决方案:

502 错误网关错误

如果你在访问域名时看到502 Bad Gateway 错误:

检查n8n是否运行:(你应该能看到n8n容器列表)docker ps

查看Caddy日志:(寻找错误信息)sudo journalctl -u caddy -f

验证DNS:(确保你的域名指向正确的IP地址)dig n8n.yourdomain.com

证书颁发

如果HTTPS无法工作或你看到证书警告:

确保你的域名指向正确的IP(DNS传播可能需要长达48小时)

检查80和443端口已打开: sudo ufw allow 80 && sudo ufw allow 443

验证Caddyfile中的邮箱是否有效(Let's Encrypt用它来发送重要通知)

n8n 未启动

如果n8n拒绝启动或立即崩溃:

查看 Docker 日志:(显示详细错误信息)docker logs n8n

确保时区正确(无效时区可能导致启动失败)

确认端口5678没有被防火墙阻挡,或者已经被其他应用使用了

将n8n作为永久服务运行(推荐)

上面的docker run命令使用了该标志,这意味着容器停止时会被移除。对于生产型n8n VPS配置,你需要n8n永久运行,并在崩溃或服务器重启时自动重启。--rm

实现这一点的最佳方法是使用 Docker Compose。创建一个docker-compose文件:

nano docker-compose.yml

添加以下配置:

version: '3.8'

services:

n8n:

image: docker.n8n.io/n8nio/n8n

container_name: n8n

restart: unless-stopped

ports:

  • "5678:5678"

environment:

volumes:

  • n8n_data:/home/node/.n8n

volumes:

n8n_data:

external: true

记得用你的实际值替换时区和域名。

现在,如果你现在用的是 n8n 和 docker run 命令,先停止它:

docker stop n8n

然后用 Docker Compose 启动 n8n:

docker compose up -d

采用此配置,n8n在崩溃时会自动重启,服务器重启时自动启动,确保工作流程最大运行时间:

在VPS上运行n8n,配合Docker Compose

你所取得的成就

遵循本指南,你已经成功地:

在带有持久数据存储的 Docker 中部署了 n8n

通过 Caddy 配置自动 HTTPS 并使用 Let's Encrypt

设置自动续期的SSL证书(无需手动续签!)

创建了一个专业的子域名设置,确保干净、品牌访问

构建了一个安全、生产准备的部署,能够根据您的需求扩展

您的n8n VPS安装现已完成!您现在可以安全地创建和运行工作流程自动化,集成数百种不同服务,并保持对数据的完全控制。借助自动HTTPS和持久存储,您为构建强大自动化工作流程奠定了坚实基础。

相关推荐
YYYing.3 小时前
【计算机网络 | 第四篇】路由与NAT技术
运维·服务器·网络·网络协议·计算机网络
科技块儿3 小时前
【游戏防外挂】同一IP多账号登录?IP地址查询定位快速识别工作室
网络协议·tcp/ip·游戏
前端达人3 小时前
WebSocket vs SSE深度对比分析
网络·websocket·网络协议
Tandy12356_4 小时前
手写TCP/IP协议栈——TCP数据接收
c语言·网络·网络协议·tcp/ip·计算机网络
fy zs5 小时前
TCP/IP 协议栈深度解析
网络·网络协议·tcp/ip
道剑剑非道5 小时前
使用独立 Asio 和 OpenSSL 实现 HTTPS 通信
网络协议·http·https
三两肉5 小时前
HTTPS 优化完整方案解析
网络协议·https·tcl
weixin_462446235 小时前
mkcert 本地 HTTPS 证书全平台教程
网络协议·http·https