总览
分五个阶段完成所有工作:
-
第一阶段:准备云服务器 - 在亚马逊AWS上启动一台EC2服务器,并为其分配一个固定的公网IP地址。
-
第二阶段:配置专属域名 - 将您自己的域名指向这台服务器,这是实现HTTPS安全访问的基础。
-
第三阶段:安装并运行n8n - 使用最推荐的Docker方式安装n8n,并挂载数据文件夹以防数据丢失。
-
第四阶段:启用HTTPS安全访问 - 安装并配置Nginx作为反向代理,并使用Let's Encrypt申请免费的SSL证书,解决浏览器安全访问问题。
-
第五阶段:集成Google Sheets - 在n8n中连接您的Google账户,实现对Google Sheets的自动化操作。
第一阶段:准备云服务器 (EC2)
目标: 拥有一台有固定公网IP的、可以从外网访问的云服务器。
-
登录AWS管理控制台
- 打开浏览器,访问您的AWS管理控制台。
-
启动EC2实例(服务器)
-
在顶部的搜索栏中输入
EC2,然后进入EC2服务页面。 -
点击“启动实例”按钮。
-
名称:给您的服务器起一个好记的名字,例如
n8n-server。 -
应用程序和操作系统映像(AMI):选择 “Amazon Linux”,并确保版本是
Amazon Linux 2023或更高。这是一个免费且稳定的选项。 -
实例类型:选择
t2.micro或t3.micro,这两种都符合AWS的免费套餐资格,对于n8n初期使用完全足够。 -
密钥对(用于登录):这一步对于本教程不那么重要,因为我们将使用浏览器直接连接。但为了完整性,您可以点击“创建新密钥对”,输入一个名字并创建,然后将下载的
.pem文件保存好。 -
网络设置:
-
点击“编辑”。
-
找到“安全组”,这是一个虚拟防火墙。点击“创建安全组”。
-
在“入站安全组规则”部分,AWS默认会有一条允许SSH(端口22)访问的规则。我们需要额外添加三条:
-
规则1 (用于n8n初始访问):点击“添加规则”,类型选择“自定义TCP”,端口范围填
5678,源选择任何位置 (0.0.0.0/0)。 11 -
规则2 (用于HTTP):点击“添加规则”,类型选择“HTTP”,源选择
任何位置 (0.0.0.0/0)。这会自动开放80端口。 -
规则3 (用于HTTPS):点击“添加规则”,类型选择“HTTPS”,源选择
任何位置 (0.0.0.0/0)。这会自动开放443端口。
-
-
-
确认所有配置后,点击右下角的“启动实例”。
-
-
分配并绑定固定公网IP(弹性IP)
-
EC2实例重启后公网IP会变动,这对于域名访问是致命的。我们需要一个固定的IP。
-
在EC2服务页面的左侧菜单中,找到并点击“弹性 IP”。
-
点击“分配弹性IP地址”,直接在下一个页面点击“分配”。
-
现在您有了一个固定的IP地址。选中这个地址,点击右上角的“操作”,然后选择“关联弹性IP地址”。
-
在“实例”下拉菜单中,选择您刚刚创建的
n8n-server实例。 -
点击“关联”。 2
-
至此,您已经拥有了一台配置好防火墙和固定公网IP的服务器。记下这个弹性IP地址,下一步会用到。
第二阶段:配置专属域名
目标: 让您的域名(例如 n8n.yourdomain.com)指向您的服务器IP。
-
购买域名(如果您还没有)
-
您可以在任何域名注册商(如Namecheap, GoDaddy, 阿里云, 腾讯云)购买一个域名。本教程以
yourdomain.com为例。 3
-
-
在AWS Route 53中管理域名(推荐)
-
在AWS控制台顶部搜索
Route 53并进入。 -
在左侧菜单点击“托管区域”,然后点击“创建托管区域”。
-
域名:输入您的主域名,例如
yourdomain.com。 -
类型:选择“公有托管区域”。
-
点击“创建托管区域”。
-
创建后,您会看到两条记录:
NS和SOA。记下NS记录中的四个值(名称服务器地址),类似ns-xxx.awsdns-xx.com。 4
-
-
在域名注册商处修改DNS服务器
-
回到您购买域名的网站(例如Namecheap)。
-
找到该域名的管理页面,寻找“DNS”或“Nameservers”设置。
-
将其从“默认DNS”或“基础DNS”修改为“自定义DNS (Custom DNS)”。 5
-
将上一步在Route 53中获得的四个NS服务器地址,逐一填入。 6
-
保存设置。(注意:DNS全球生效需要几分钟到48小时不等)
-
-
在Route 53中创建A记录,将域名指向服务器
-
回到AWS的Route 53托管区域页面。
-
点击“创建记录”。
-
记录名称:输入
n8n。(这样您的访问地址就是n8n.yourdomain.com) -
记录类型:选择
A。 -
值:填入您在第一阶段获得的弹性IP地址。
-
点击“创建记录”。 7
-
至此,您的域名已经配置完成。等待DNS生效后,访问 n8n.yourdomain.com 就会连接到您的服务器。
第三阶段:安装并运行n8n (Docker)
目标: 在服务器上运行n8n,并确保数据安全。
-
连接到您的EC2服务器
-
回到EC2实例列表页面,选中您的
n8n-server实例。 -
点击页面顶部的“连接”按钮。
-
保持默认选项“EC2实例连接”,然后点击“连接”。
-
一个黑色的命令行窗口会在您的浏览器中打开,您现在已经登录到服务器上了。
-
-
安装Docker
-
在打开的命令行窗口中,复制并粘贴以下命令,然后按回车。这会更新系统并安装Docker。 88
Bash
sudo yum update -y sudo yum install -y docker -
启动Docker并设置为开机自启:
Bash
sudo systemctl enable docker sudo systemctl start docker -
允许当前用户使用Docker(无需每次都输入
sudo):Bash
sudo usermod -aG docker ec2-user -
重要:执行完上一条命令后,关闭这个浏览器连接窗口,然后重新点击“连接”按钮进入,以使权限变更生效。
-
-
创建用于存放n8n数据的文件夹
-
为了防止n8n容器被删除后工作流和凭证丢失,我们需要把数据保存在服务器上。 9
-
在命令行中执行:
Bash
mkdir -p /home/ec2-user/n8n-data
-
-
运行n8n容器
-
这是最关键的一步。复制以下所有代码,粘贴到命令行窗口并回车。
-
请务必将
n8n.yourdomain.com替换为您自己的真实域名! 10Bash
docker run -d \ --name n8n \ -p 5678:5678 \ -v /home/ec2-user/n8n-data:/home/node/.n8n \ -e N8N_HOST="n8n.yourdomain.com" \ -e N8N_PROTOCOL="https" \ -e WEBHOOK_URL="https://n8n.yourdomain.com/" \ --restart unless-stopped \ n8nio/n8n -
命令解释:
-
-d: 后台运行 -
--name n8n: 给容器取名叫n8n -
-p 5678:5678: 将服务器的5678端口映射到容器的5678端口 1111 -
-v ...: 将服务器上的/home/ec2-user/n8n-data文件夹挂载到容器内的/home/node/.n8n目录,用于持久化数据 121212 -
-e ...: 设置环境变量,告诉n8n它将通过HTTPS和指定的域名被访问 13 -
--restart unless-stopped: 保证容器在异常退出或服务器重启后能自动重启 14141414
-
-
-
验证n8n是否在运行
-
执行命令:
docker ps。 15 -
如果您看到一行关于
n8n的信息,且状态(STATUS)为Up,说明n8n已成功运行。 16
-
第四阶段:启用HTTPS安全访问 (Nginx)
目标: 解决浏览器 "不安全" 的提示和 "Secure Cookie" 的错误。 17
-
安装Nginx
-
在命令行中执行(Amazon Linux 2023使用
dnf): 18Bash
sudo dnf install nginx -y
-
-
配置Nginx作为反向代理
-
我们需要让Nginx接收所有来自域名的访问,然后转发给在5678端口运行的n8n。
-
创建一个Nginx配置文件:
Bash
sudo nano /etc/nginx/conf.d/n8n.conf -
这会打开一个文本编辑器。将下面的配置内容复制粘贴进去。
-
同样,将
n8n.yourdomain.com替换为您自己的域名! 19191919Nginx
server { listen 80; server_name n8n.yourdomain.com; location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } -
按下
Ctrl + X,然后按Y,最后按回车,保存并退出编辑器。
-
-
安装Certbot并申请SSL证书
-
Certbot是一个可以自动申请和配置Let's Encrypt免费SSL证书的工具。
-
安装Certbot及其Nginx插件: 20
Bash
sudo dnf install certbot python3-certbot-nginx -y -
运行Certbot,它会自动识别您的Nginx配置并申请证书:
Bash
sudo certbot --nginx -d n8n.yourdomain.com -
过程:
-
它会要求您输入邮箱地址(用于接收证书过期提醒)。
-
同意服务条款。
-
它会问您是否愿意分享您的邮箱,可以选
N(No)。 -
Certbot会自动完成验证,并询问是否将所有HTTP访问重定向到HTTPS,强烈推荐选择
Redirect(通常是选项2)。
-
-
-
启动Nginx并设置自动续期
-
启动Nginx服务:
Bash
sudo systemctl start nginx sudo systemctl enable nginx -
Let's Encrypt证书有效期为90天,Certbot已经为您设置好了自动续期,无需手动操作。
-
至此,您已完成所有服务器配置! 在浏览器中输入 https://n8n.yourdomain.com,您应该能看到n8n的初始化设置界面,并且浏览器地址栏会显示一把安全锁。
第五阶段:集成Google Sheets
目标: 在n8n中授权并使用Google Sheets节点。
-
进入Google Cloud Platform (GCP) 控制台
-
用您的Google账户登录 Google Cloud Console。
-
如果这是您第一次使用,请同意服务条款。
-
在页面顶部,点击项目选择器(可能显示“My First Project”),然后点击“新建项目”。
-
输入项目名称(例如
n8n-integration)并创建。
-
-
启用所需的API
-
确保您处于刚才创建的项目中。
-
在左上角的导航菜单中,选择“API和服务” -> “库”。
-
搜索并启用以下两个API:
-
Google Sheets API -
Google Drive API(n8n需要此API来发现文件)
-
-
-
创建OAuth凭证
-
在左侧菜单中,选择“API和服务” -> “OAuth同意屏幕”。
-
选择“外部”,然后点击“创建”。
-
应用名称:
n8n -
用户支持电子邮件:选择您的邮箱。
-
开发者联系信息:再次输入您的邮箱。
-
点击“保存并继续”,接下来的“范围”和“测试用户”步骤可以直接跳过,点击“保存并继续”和“返回信息中心”。
-
-
现在,在左侧菜单中选择“凭据”。
-
点击页面顶部的“+ 创建凭据”,选择“OAuth客户端ID”。
-
应用类型:选择“Web应用”。
-
名称:可以保留默认值或填
n8n-credential。 -
已获授权的重定向URI:这是最关键的一步。点击“+ 添加URI”,然后输入以下地址(务必将
n8n.yourdomain.com换成您自己的域名):https://n8n.yourdomain.com/rest/oauth2-credential/callback -
点击“创建”。
-
-
-
获取客户端ID和密钥
- 创建后,一个弹窗会显示您的“客户端ID”和“客户端密钥”。复制并妥善保管这两个值。
-
在n8n中添加Google Sheets凭证
-
回到您的n8n界面 (
https://n8n.yourdomain.com)。 -
在左侧菜单中点击“Credentials”,然后点击“Add credential”。
-
搜索
Google Sheets并选择它。 -
将刚刚从Google Cloud复制的“客户端ID”和“客户端密钥”粘贴到对应的输入框中。
-
点击“Sign in with Google”。
-
一个Google登录窗口会弹出,登录您的账户,并授权n8n访问您的Google Sheets数据。
-
授权成功后,窗口会自动关闭,您的凭证就保存好了。
-