在 Hugging Face 上免费部署自更新的 n8n
您是否正在寻找一种免费、可自托管且功能强大的工作流自动化工具?n8n 是一个绝佳的选择,它允许您连接各种应用程序和服务,创建复杂的自动化流程。而现在,借助 Hugging Face 和 Supabase 的免费资源,您可以轻松拥有一个能够自动更新的 n8n 实例,无需花费一分钱。
本文将详细介绍如何使用一个 GitHub 模板项目,在 Hugging Face Spaces 上免费部署一个 n8n 实例,并使用 Supabase 作为其 PostgreSQL 数据库。更棒的是,该方案通过 GitHub Actions 实现了完全自动化,包括:
- 保持服务活跃:自动化的脚本会定期访问您的 Hugging Face Space 和 Supabase 项目,防止它们因为长期不活跃而被暂停。
- 每日自动更新:脚本每天会自动检查 n8n 是否有新版本发布,一旦发现新版本,便会自动更新您的部署,确保您始终使用最新、最安全的功能。
让我们开始吧!
部署指南
请完全按照以下步骤操作,以确保部署过程顺利无误。
1. Fork GitHub 仓库
首先,您需要将 tenfyzhong/n8n-free 这个 GitHub 仓库 fork 到您自己的账户下。这是整个自动化流程的基础。
2. 创建 Supabase 项目
n8n 需要一个数据库来存储工作流、凭证等数据。我们将使用 Supabase 提供的免费 PostgreSQL 数据库。
- 访问 Supabase 官网 并创建一个新项目。 
- 项目创建成功后,在左侧导航栏中找到 SQL Editor。 
- 在 SQL 编辑器中,运行以下 SQL 命令来创建一个名为 - keep-alive的表。这个表的作用是配合保活工作流,确保您的 Supabase 实例不会因为不活跃而被系统暂停。- CREATE TABLE "keep-alive" ( id BIGINT generated BY DEFAULT AS IDENTITY, name text NULL, created_at timestamptz DEFAULT now(), CONSTRAINT "keep-alive_pkey" PRIMARY KEY (id) ); INSERT INTO "keep-alive"(name) VALUES ('ping');
- 接下来,进入 Project Settings > API,在这里找到并复制您的 Project URL 和 annon public API 密钥。请妥善保管,我们在后续步骤中会用到它们。 
- 为了数据库连接的安全性,您需要启用 SSL。在 Project Settings > Database 页面下,找到 SSL Configuration 部分并启用它。 
3. 创建 Hugging Face Space
Hugging Face Spaces 是我们用来托管 n8n 应用的地方。
- 访问 Hugging Face Spaces 并创建一个新的 Space。 
- 在创建页面,选择 Docker 作为 Space SDK,并选择一个免费的硬件配置。 
- 在 Repository from GitHub 选项中,选择您刚刚 fork 的 - n8n-free仓库。
- Space 创建完成后,进入 Settings 页面,在这里我们需要添加一些 Secrets 和 Variables,它们是 n8n 运行所必需的配置。 - Secrets (机密信息)- Secret - 描述 - DB_POSTGRESDB_PASSWORD- 您在 Supabase 项目中设置的数据库密码。 - DB_POSTGRESDB_USER- Supabase 数据库用户名 (通常是 - postgres)。- N8N_ENCRYPTION_KEY- 用于加密 n8n 敏感数据的密钥,请设置一个复杂的随机字符串。 - DB_POSTGRESDB_SSL_CA- Supabase 数据库的 SSL 证书内容。 - DB_POSTGRESDB_HOST- Supabase 数据库的主机地址。 - DB_POSTGRESDB_PORT- Supabase 数据库的端口。 - DB_POSTGRESDB_DATABASE- 数据库名称,设置为 - postgres。- Variables (公开变量)- Variable - 描述 - GENERIC_TIMEZONE- n8n 的通用时区,例如 - Asia/Shanghai。- TZ- 系统的时区,例如 - Asia/Shanghai。- DB_TYPE- 设置为 - postgres。- DB_POSTGRESDB_SCHEMA- 设置为 - public。- N8N_PORT- 设置为 - 7860。- N8N_PROTOCOL- 设置为 - https。- N8N_EDITOR_BASE_URL- 设置为 - https://<your-space-name>.hf.space。- WEBHOOK_URL- 设置为 - https://<your-space-name>.hf.space。- N8N_HOST- 设置为 - <your-space-name>.hf.space。- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS- 设置为 - true。- N8N_PUSH_BACKEND- 设置为 - websocket。- EXECUTIONS_DATA_SAVE_ON_PROGRESS- 设置为 - false。- N8N_DATABASE_SSL_REJECT_UNAUTHORIZED- 设置为 - true。- N8N_PROXY_HOPS- 设置为 - 1。- EXECUTIONS_DATA_SAVE_ON_ERROR- 设置为 - all。- EXECUTIONS_DATA_SAVE_ON_SUCCESS- 设置为 - none。- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS- 设置为 - false。- EXECUTIONS_DATA_PRUNE- 设置为 - true。- EXECUTIONS_DATA_MAX_AGE- 设置为 - 168(单位:小时)。
4. 配置 GitHub 仓库 Secrets
最后一步是配置 GitHub Actions,让它有权限去更新您的 Hugging Face Space 并保持服务活跃。
- 首先,在 huggingface.co/settings/tokens 页面创建一个新的 API 令牌,并赋予其 write 权限。
- 回到您 fork 的 GitHub 仓库,进入 Settings > Secrets and variables > Actions。
- 创建一个名为 HF_TOKEN的新 secret,并将您刚刚创建的 Hugging Face 令牌粘贴进去。
- 创建一个名为 HF_SPACE_URL的新 variable,值为您的 Hugging Face Space 的 URL (例如https://your-space-name.hf.space)。
- 创建名为 SUPABASE_URL的新 secret,值为您之前复制的 Supabase 项目 URL。
- 创建名为 SUPABASE_KEY的新 secret,值为您之前复制的 Supabaseannon publicAPI 密钥。
工作原理揭秘
这个项目的美妙之处在于其自动化脚本,它们在后台默默工作,为您节省了大量手动维护的时间。
自动更新 n8n
.github/workflows/update-n8n.yml 文件定义了一个 GitHub Action 工作流,在n8n部署完成之后,可以在n8n上创建一个workflow定期触发github workflow。其工作流程如下:
- 检查新版本: 脚本会访问 n8n 的官方 GitHub 仓库,获取最新的版本号。
- 比较版本: 将获取到的最新版本号与您当前 Dockerfile中记录的版本号进行比较。
- 更新并推送: 如果发现新版本,工作流会自动:- 更新 Dockerfile中的 n8n 版本。
- 将此更改提交到您的 GitHub 仓库。
- 将更新后的代码推送到 Hugging Face,这将触发 Space 的重新构建,从而将您的 n8n 实例更新到最新版本。
 
- 更新 
您也可以随时在 GitHub 仓库的 Actions 标签页中手动触发此工作流。
自动化保活服务
为了防止 Hugging Face 和 Supabase 的免费服务因为不活跃而被暂停,项目内置了两个保活工作流:
- Hugging Face 保活 (huggingface-keep-alive.yml): 这个脚本会向您的 Hugging Face Space URL 发送一个简单的curl请求,模拟用户访问,以保持其活跃状态。
- Supabase 保活 (supabase-keep-alive.yml): 同样地,这个脚本会向您 Supabase 数据库中的keep-alive表发送一个请求,确保数据库实例不会被暂停。
完成以上所有步骤后,您就拥有了一个完全免费、功能齐全且能自动更新的 n8n 自动化平台。现在,您可以尽情地在上面构建您的自动化工作流了!