在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 \
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 \
重要提示:用你的时区替换。从此页面找到你的作品。另外,在所有环境变量中用你的真实域名替换。"America/New_York"n8n.yourdomain.com
你应该会看到显示编辑器现在已可访问的输出:
Editor is now accessible via:
这个交互模式()对测试很有用,但对于生产的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 \
你应该会收到类似这样的集装箱编号:
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
}
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
}
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:
-
GENERIC_TIMEZONE=America/New_York
-
TZ=America/New_York
-
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-
N8N_RUNNERS_ENABLED=true
-
VUE_APP_URL_BASE_API=https://n8n.yourdomain.com/
-
N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com/
-
WEBHOOK_URL=https://n8n.yourdomain.com/
-
WEBHOOK_BASE_URL=https://n8n.yourdomain.com/
-
WEBHOOK_TUNNEL_URL=https://n8n.yourdomain.com/
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和持久存储,您为构建强大自动化工作流程奠定了坚实基础。