大家好,我是MAI麦造
上次白嫖了 Hugging Face 的 2核16g服务器,只跑了个demo!
这次用它来整点实际的活。把 n8n 部署上去!
准备工作
私有部署n8n要用到的服务:
-
Hugging Face : huggingface.co/
-
Supabase : supabase.com/
-
n8n
Hugging Face 上文已经介绍过了,不了解朋友的可以看: mp.weixin.qq.com/s/jry1tiYhf...
Supabase 不了解的可以继续看下去⬇️
什么是n8n

n8n 是一个强大的工作流自动化工具。
它通过一个可视化的、基于节点(Node-based)的界面,让您可以将不同的应用程序、数据库和在线服务(如钉钉、飞书、Gmail、数据库、各类API)连接起来,创建自动化的工作流程。
尽管 官方提供了云服务,但存在一定的费用和使用限制。
社区版本的可以自己部署,使用起来也没有什么限制。
唯一需要的就是服务器。
什么是 supabase

Supabase 提供一个完整的 PostgreSQL 数据库。你可以像使用传统数据库一样创建表、设置关系,拥有完全的控制权。
免费版本的 拥有 500MB 存储空间和完整的 PostgreSQL 功能,没有阉割。
用来做 n8n 的数据库完全够用
登录 Supabase 并创建新项目
1. 登陆/注册supabase 账号
这里具体过程不缀叙, 可以选择github 登陆。

2. 创建一个新的 project
- 填入你的Project name 和 db 的密码。
建议使用 generate a password 创建。 密码强度比较高,也不会跟你的其它应用重复。 会比较安全,只需自行保存好这个密码即可。
-
region 选择 West US
-
下面的设置都默认即可。
然后点击Greate new project

3. 获取数据库连接信息
-
项目创建成功后,进入项目主页。
-
点击导航栏的 connect 获取连接信息

你需要记下 Transaction pooler
里面的信息。
注意: 记住,一定是 Transaction pooler 里面的。 这是公网可以访问的地址。否则n8n会链接不上。

创建 Hugging Face Space
现在我们来创建 n8n 的运行环境。
1. 登录 Hugging Face 并创建新 Space
-
访问 Hugging Face 首页,点击右上角你的头像,选择 "New Space"。
-
Space name : 给你的 Space 起一个名字,例如
my-n8n
。 -
License: 不用填。
-
Select the Space SDK : 这是最关键的一步! 请选择 "Docker"。
-
Docker template : 选择 "Docker Basic"。
-
Space hardware: 免费的 "CPU basic" 就足够了。
-
Public/Private : 建议选择 "Public",你可以通过公网的地址访问。且国内不用魔法
-
点击 "Create Space" 。
2. 配置 Space 的 Secrets (环境变量)
创建完成后,你会进入 Space 的管理页面。
为了安全地存储数据库密码等敏感信息,我们需要使用 Hugging Face 的 "Secrets" 功能。
- 点击页面顶部的 "Settings" 选项卡。
-
找到 "Variables and secrets " 项分别创建
-
点击 "New secret" 按钮,逐一添加以下环境变量。请将 YOUR_..._VALUE 替换为你在第二步中从 Supabase 获取到的真实信息。
Public Variables (公开变量)
这些变量的值是公开可见的,适合存放非敏感的配置信息。
环境变量 (Variable Name) | 建议值 (Value) | 说明 |
DB_TYPE |
postgresdb |
告诉 n8n 我们使用的是 PostgreSQL 数据库。 |
DB_POSTGRESDB_HOST |
[你的 Supabase Host] |
从 Supabase 获取的数据库主机地址。 |
DB_POSTGRESDB_PORT |
5432 |
PostgreSQL 的标准端口号。 |
DB_POSTGRESDB_DATABASE |
postgres |
在 Supabase 中使用的数据库名。 |
N8N_PORT |
5678 |
n8n 容器内部监听的端口。Hugging Face 会自动将外部的 443 端口映射到这里。 |
N8N_PROTOCOL |
https |
告诉 n8n 它的公开访问协议是 HTTPS。 |
N8N_EDITOR_BASE_URL |
[你的 Space URL] |
非常重要 。n8n 的完整公开访问地址,例如 https://YourName-YourSpaceName.hf.space/ 。这能确保所有重定向、Webhook 和 OAuth 回调都使用正确的 URL。 |
DB_POSTGRESDB_SSL |
true |
关键设置。强制 n8n 使用 SSL/TLS 加密连接 Supabase 数据库,Supabase 要求此项。 |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS |
true |
解决日志中关于文件权限的警告,让 n8n 自动管理其配置文件的权限。 |
Secrets (私密变量)
这些变量的值是加密存储的,用于存放密码、密钥等敏感信息。
环境变量 (Secret Name) | 建议值 (Value) | 说明 |
DB_POSTGRESDB_USER |
postgres |
Supabase 数据库的用户名。 |
DB_POSTGRESDB_PASSWORD |
[你的 Supabase 密码] |
你在创建 Supabase 项目时设置的数据库密码。 |
N8N_ENCRYPTION_KEY |
[随机生成的长字符串] |
极其重要 。用于加密和解密 n8n 中存储的凭证(Credentials)。请务必备份好这个值! |
WEBHOOK_URL |
[你的 Space URL] |
与 N8N_EDITOR_BASE_URL 作用类似,用于确保 Webhook 能被正确触发。虽然有些冗余,但加上可以保证对旧版工作流的兼容性。 |
添加完成后,你的 Secrets 页面应该看起来像这样:

创建 n8n 的Dockerfile
现在,我们需要告诉 Hugging Face Space 如何运行 n8n。
这通过 Dockerfile
文件来完成
1. 进入 Space 的文件管理页面
- 点击页面顶部的 "Files" 选项卡。
- 点击 "Add file" -> "Create a new file" 。
2. 将文件命名为 Dockerfile
Dockerfile
文件内容中,粘贴以下代码:
bash
FROM n8nio/n8n
没错,只需要这一行即可。
直接使用 n8n 官方提供的最新版 Docker 镜像作为我们的应用。
这个镜像已经包含了运行 n8n 所需的一切。
点击 commit new file
提交修改
3. 部署和验证
当你提交 Dockerfile
后,Hugging Face Spaces 会自动开始构建和部署你的应用。
查看部署日志
点击页面顶部的 "Logs" 选项卡。
你会看到系统正在拉取 Docker 镜像并启动容器。这个过程可能需要几分钟。
当你在日志中看到类似下面的信息时,说明 n8n 已经成功启动并连接到数据库了:
那么接下来你就可以通过 Space 的公开 URL 访问 n8n 了。
URL 通常在页面顶部,格式为 https://YourUsername-YourSpaceName.hf.space
。
首次访问时,n8n 会要求你创建一个所有者(Owner)账号。请设置你的用户名和密码。
然后你就可以尽情的享用了:
最后补充一下
Hugging Face Spaces 的免费 CPU 套餐有休眠策略。
如果你的 Space 一段时间没有被访问,它会自动休眠。
解决方案是你可以弄一个 uptime
服务,定时的访问一下。
一来可以防止它休眠,二来可以监控服务状态是否正常。
一举两得~