背景:为何需要公网访问 n8n
n8n 是一款强大的开源工作流自动化工具,允许用户连接不同的应用程序和服务,创建自动化的流程。然而,在使用过程中,许多 n8n 的 App 节点(尤其是涉及第三方服务授权的节点)需要配置“授权重定向 URL ” (OAuth Redirect URL)。
这个要求意味着 n8n 实例必须能通过公共互联网访问。更进一步,某些节点,例如连接 Google 服务或 Twitter/X 平台的节点,可能还强制要求使用公共顶级域名以及 HTTPS 加密连接。
如果 n8n 仅在本地网络部署,无法满足公网 HTTPS 域名访问的需求,那么这些依赖外部验证或回调的节点功能将无法使用。这无疑限制了 n8n 的全部潜力,使其功能打了折扣。
传统的解决方案通常涉及租用云服务器 (VPS)、购买域名、配置 DNS 解析以及申请和部署 SSL 证书。整个过程不仅步骤繁多,还可能产生持续的费用。
解决方案:利用 Hugging Face 和 Supabase 免费部署
幸运的是,存在一种免费且相对快捷的方法,可以在短时间内(例如 10 分钟左右)部署一个支持 HTTPS 和公共域名的 n8n 云服务实例。本文将介绍如何结合使用 Hugging Face Spaces 和 Supabase 实现这一目标。
这种组合方案利用 Hugging Face Spaces 提供免费的容器托管环境(带有公共 URL 和自动 HTTPS),并使用 Supabase 提供免费的 PostgreSQL 数据库来持久化存储 n8n 的工作流数据。
注意:执行以下步骤可能需要访问国际互联网。
步骤一:配置 Supabase 数据库
Supabase 是一个开源的 Firebase 替代品,提供数据库、认证、存储等后端服务。虽然它有付费计划,但其免费套餐提供的资源足以满足 n8n 的基本数据存储需求。
免费套餐包含足够的数据库空间和资源(如下图所示)。
- 访问 Supabase 官网:https://supabase.com/
- 点击 “Sign in” 进行注册或登录。
- 注册成功后,系统会引导创建组织 (Organization)。保持 Plan 为 Free(免费),点击 “Create organization”。
- 接下来创建项目 (Project)。设置一个项目名称,设置一个安全的数据库密码(建议使用强密码,避免特殊字符可能导致的问题),选择一个区域 (Region),例如美国西部 (US West)。点击 “Create new project”。
- 项目创建完成后,进入项目仪表盘。点击顶部的 “Connect” 按钮或在左侧导航栏找到 “Project Settings” -> “Database”。
- 在数据库连接信息页面,找到连接字符串部分。如果看到选择 Type 的地方,可以选择 “SQLAlchemy” (虽然我们实际需要的是下面的连接参数)。
- 向下滚动页面,找到数据库的详细连接参数(主机、数据库名、端口、用户名、密码等)。这些信息稍后将在 Hugging Face 中用到。请妥善保管,尤其是密码。
步骤二:在 Hugging Face Spaces 部署 n8n
Hugging Face (常被称为“抱抱脸”) 是一个知名的 AI 和机器学习社区平台,其 Spaces 功能允许用户托管 Web 应用和 Docker 容器。
- 访问预配置好的 n8n Hugging Face Space 模板:https://huggingface.co/spaces/fuliai/ain8n
- 点击页面右上角的三个点,选择 “Duplicate this space”。
- 进入复制空间的配置页面。在这里,需要将刚才从 Supabase 获取的数据库连接信息填入对应的环境变量中:
DB_TYPE
: 设置为postgresdb
DB_POSTGRESDB_HOST
: 填入 Supabase 提供的 Host。DB_POSTGRESDB_PORT
: 填入 Supabase 提供的 Port (通常是 5432)。DB_POSTGRESDB_DATABASE
: 填入 Supabase 提供的 Database name (通常是postgres
)。DB_POSTGRESDB_USER
: 填入 Supabase 提供的 User (通常是postgres
)。DB_POSTGRESDB_PASSWORD
: 填入之前设置的 Supabase 数据库密码。DB_POSTGRESDB_SCHEMA
: 可以保持默认的public
。N8N_HOST
: 这里会自动生成,格式通常是你的用户名-你的空间名.hf.space
。确保这个域名与下面的WEBHOOK_URL
前缀一致。WEBHOOK_URL
: 确保其值为https://
加上N8N_HOST
的值 (例如https://yourname-ain8n.hf.space/
)。GENERIC_TIMEZONE
: 根据需要设置时区,例如Asia/Shanghai
。EXECUTIONS_DATA_PRUNE
: 设置为true
可以自动清理执行日志,节省数据库空间。EXECUTIONS_DATA_MAX_AGE
: 如果开启了清理,设置保留日志的天数,例如14
。
将 Space visibility 选择为
Public
(公开访问)。后续 n8n 实例本身会设置管理员密码,所以不用担心未经授权的访问。重要提示:请仔细核对
N8N_HOST
和WEBHOOK_URL
中的域名部分,必须与 Hugging Face 分配给你的 Space URL 一致。 - 配置完成后,点击左下角的 “Duplicate space” 按钮。
- Hugging Face Spaces 会开始在后台自动构建和部署 Docker 容器。
- 等待部署完成。可以在
Logs
标签页查看部署日志。当看到类似下图红框中的日志信息,特别是关于 n8n 启动成功的消息时,表示部署已成功(通常在 5 分钟内完成)。日志中通常会显示 n8n 的版本号。 - 复制日志中提供的 n8n 访问地址(通常是
https://yourname-ain8n.hf.space/
),在浏览器中打开。
步骤三:初始化 n8n 设置
- 首次访问部署好的 n8n 地址,系统会要求设置管理员账户。请创建一个安全的用户名和密码。
- 按照引导步骤完成设置。可能会有一个步骤询问是否获取免费许可证密钥,点击 “Send me a free license key” 或类似选项。这通常是为了接收更新通知或启用社区版特性。
- 完成所有设置后,即可进入 n8n 的主界面,开始创建和管理工作流。
可以通过点击 Hugging Face 页面右上角的用户头像 -> 选择你的用户名下的 Spaces,找到并管理这个 n8n 实例。
为何选择 Hugging Face + Supabase 组合
选择这个方案的主要原因是利用了两个平台的免费资源优势:
- Hugging Face Spaces:提供免费的容器运行环境、自动分配的公共 HTTPS 域名,解决了公网访问和安全连接的问题。但其免费服务的一个限制是,如果 Space 长时间不活动,可能会被系统休眠。休眠或重启后,容器内的本地数据会丢失(因为 Docker 容器本身是无状态的)。
- Supabase:提供免费的 PostgreSQL 数据库。通过将 n8n 配置为使用外部 Supabase 数据库,所有的工作流、凭证和执行数据都存储在数据库中,而不是容器内。这样,即使 Hugging Face Space 被休眠或重启,n8n 启动后会重新连接到 Supabase 数据库,恢复所有数据,解决了数据持久性的问题。
尽管如此,仍然建议定期将重要的工作流导出为 JSON 文件并备份到本地,以防意外情况发生。
n8n 本身功能强大,虽然可能需要一些时间来熟悉,但掌握后可以构建出复杂且实用的自动化流程。它还支持将处理结果导出为 Word、Excel 等常见格式文件,非常便捷。