使用 Huggingface Space 托管 n8n
如果您没有云实例或域名,自托管 n8n 可能会有些困难。
我只想分享一个极其简单且完全免费的方式来部署您自己的 n8n 实例,并附带一个免费、用户友好的域名! 如果您一直在寻找一种经济高效且直接的自动化工作流解决方案,那么就是它了。
我一直在尝试将 Huggingface Spaces 用于托管,将 Supabase 用于数据库,结果非常棒。即使您不是专业人员,也能惊讶地发现它启动和运行起来非常简单。
为什么这种组合很棒:
- 免费托管 (Huggingface Spaces):您可以利用 Huggingface 的免费套餐来运行您的 n8n 实例, 非常适合像 n8n 这样的 Web 应用程序,并且为您提供一个 your-username-your-space-name.hf.space 形式的域名。
- 免费数据库 (Supabase):Supabase 提供了一个强大的 PostgreSQL 数据库,拥有非常慷慨的免费套餐,对于大多数个人和小型 n8n 部署来说绰绰有余。
- 简易设置:如果您遵循正确的步骤,无需复杂的服务器配置或 Docker 部署,就能完成部署。
您需要准备什么(全部是免费账户):
- 一个 Huggingface 账户
- 一个 Supabase 账户
使用 Supabase 作为数据库
根据 huggingface space 文档 , 如果 Space 长期不使用,它会“进入休眠状态”并停止执行。为了避免这种情况,我们可以使用 Supabase 作为数据库。
在 https://supabase.com/dashboard/sign-up 注册一个免费账户。
创建一个新项目并填写表格。保存数据库密码以备后用。
点击左上角导航栏的 Connect 按钮,查看数据库连接信息。
选择 SQLAlchemy 作为连接字符串,并找到 Transaction pooler 部分。
保存连接信息以备后用:主机 (host)、端口 (port)、用户 (user)、数据库名 (dbname)。
使用 Huggingface Space 部署 n8n
Huggingface Space 提供一个免费套餐,包含 16GB 内存、2 个 CPU 核心和 50GB(非持久性)磁盘空间。这足以托管 n8n。
硬件 | GPU 显存 | CPU | 内存 | 磁盘 | 每小时价格 |
---|---|---|---|---|---|
CPU 基础版 | - | 2 vCPU | 16 GB | 50 GB | 免费! |
使用空间https://huggingface.co/spaces/tomowang/n8n 以简单的方式复制和部署 n8n。
在 https://huggingface.co/join 注册一个免费账户并配置 profile name。例如,https://huggingface.co/tomowang 中的
tomowang
就是 profile name。记住此名字以备后用。访问 https://huggingface.co/spaces/tomowang/n8n ,点击右上角的菜单下拉列表, 然后选择 Duplicate this space(复制此空间)。
在弹出的表单中填写或更改变量和密钥,然后点击 Duplicate(复制)。
变量 值 DB_POSTGRESDB_PASSWORD
Supabase 数据库密码 DB_POSTGRESDB_USER
Supabase 数据库连接 user
DB_POSTGRESDB_HOST
Supabase 数据库连接 host
DB_POSTGRESDB_PORT
6543 N8N_ENCRYPTION_KEY
随机字符串。使用 openssl rand -base64 32
生成WEBHOOK_URL
示例 https://<profile>-n8n.hf.space/
N8N_EDITOR_BASE_URL
示例 https://<profile>-n8n.hf.space/
GENERIC_TIMEZONE
根据需求配置 TZ
根据需求配置 点击 Duplicate Space(复制空间)并等待部署完成。您可以查看如下日志:
部署完成后,您可以找到在
N8N_EDITOR_BASE_URL
变量中配置的 URL。
现在您可以使用该 URL 访问 n8n 了。
n8n 使用 helmet 来设置 HTTP 相关的安全头。在生产模式下,它会将
X-Frame-Options
设置为sameorigin
,这会导致 n8n 站点无法在 Huggingface Space 的 iframe 中渲染。 (代码见 https://github.com/n8n-io/n8n/blob/master/packages/cli/src/server.ts#L401-L402 )。