> ## Content Index
> Fetch the complete content index at: https://qilinora.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 如何把n8n部署到线上：Hugging Face + Supabase篇
- URL: https://qilinora.com/n8n-huggingface-docker-space-supabase-prototype/
- Published: 2026-08-19T01:05:37.000Z
- Updated: 2026-08-19T01:05:37.000Z
- Description: 用初学者能跟上的方式，理解容器平台、外部数据库和 n8n 密钥如何配合；完成在线原型，并避开休眠、持久化和连接配置的常见误区。
- Author: Liyaoming
- Tags: n8n, Hugging Face, Supabase, Docker, 部署

这一篇的目标不是让你“抄一套免费方案就永久不用管”，而是让你真正看懂线上 n8n 的三个部件：**容器负责运行，数据库负责保存，密钥负责保护凭据。** 理解这三件事后，无论以后你换 VPS、NAS 还是托管服务，都会更容易。

先把边界说清楚：Hugging Face 的 Docker Space 可以运行自定义容器，但官方文档说明，运行计算的 Space 需要满足相应账户/套餐条件；免费硬件会在闲置后休眠；Docker Space 本地磁盘在重启后不持久。[Hugging Face Spaces Overview](https://huggingface.co/docs/hub/en/spaces-overview?ref=qilinora.com) [Docker Spaces](https://huggingface.co/docs/hub/en/spaces-sdks-docker?ref=qilinora.com) 同时，Supabase Free Plan 的低活跃项目可能自动暂停。[Supabase Project Pausing](https://supabase.com/docs/guides/platform/free-project-pausing?ref=qilinora.com)

> 因此，本文是**在线原型教程**。适合学习、演示和测试；不适合承诺 24 小时不停的关键 Webhook、订单通知或客户业务。

## 先认识每个部件在做什么

| 部件                        | 白话解释               | 如果它停了会怎样            |
| ------------------------- | ------------------ | ------------------- |
| Hugging Face Docker Space | 放 n8n 程序的“线上电脑”    | 编辑器、Webhook 与任务都停下来 |
| Supabase PostgreSQL       | 保存工作流和执行信息的“数据库仓库” | n8n 无法读取自己的数据       |
| N8N\_ENCRYPTION\_KEY      | 给已保存凭据上锁的“总钥匙”     | 丢失后旧凭据可能无法解密        |
| N8N\_WEBHOOK\_URL         | 告诉外部服务“应该敲哪扇门”的地址  | Webhook 可能登记成错误地址   |

![容器、数据库、密钥和公网地址如何组成在线原型](https://qilinora.com/content/images/2026/08/article4-prototype-architecture.png)

## 第 0 步：确认你适合做这个实验

如果你的目标是“先了解线上部署”，可以继续；如果你要接收支付、客户表单或绝不能漏掉的定时任务，请直接选择 VPS 或托管服务。不要通过频繁请求平台来“保活”，那既不可靠，也可能违反平台规则。

## 第 1 步：创建 Supabase 项目

打开 Supabase，创建一个 PostgreSQL 项目。这里的每个项目都是一套独立数据库。设置强数据库密码后，等待项目初始化完成，再点击 **Connect** 获取连接信息。

**这一步成功的标志：** 你能在控制台看到项目状态为正常运行，并且 Connect 页面显示主机、端口、数据库名和用户信息。

对长期运行的后端，Supabase 文档建议使用适合运行环境的连接方式；当运行平台仅支持 IPv4 时，可使用 Shared Pooler 的 session mode。[Supabase 数据库连接指南](https://supabase.com/docs/guides/database/connecting-to-postgres?ref=qilinora.com) 不要自己猜主机和端口，直接复制控制台给出的对应模式。

**如果你看不到 Connect：** 先确认项目已创建完成；不同界面可能把连接信息放在顶部 Connect 按钮、Database Settings 或项目设置中。页面名称会变，但核心信息始终是主机、端口、数据库名、用户和密码。

## 第 2 步：创建 Docker Space

在 Hugging Face 新建 Space，选择 Docker。Docker Space 用仓库里的 `README.md` 顶部 YAML 告诉平台“这是 Docker 项目，公开端口是多少”。创建 `README.md` 时可使用：

```yaml
---
title: n8n Prototype
sdk: docker
app_port: 7860
---

```

接着创建 `Dockerfile`。下面代码的意思是：从 n8n 官方镜像开始，让 n8n 听平台公开的 7860 端口；它没有写入任何密码。

```dockerfile
FROM docker.n8n.io/n8nio/n8n:stable

ENV N8N_LISTEN_ADDRESS=0.0.0.0
ENV N8N_PORT=7860
EXPOSE 7860

```

提交文件后等待构建。**成功的标志：** Space 状态从 Building 变为 Running，打开公开链接时不再看到构建错误。

**如果停在 Building：** 打开 Logs，先检查 Dockerfile 的拼写、镜像是否写对、端口是否和 `app_port` 一致。不要为了让构建通过而把数据库密码放进 Dockerfile。

## 第 3 步：把密码放进 Settings 的 Secrets

Hugging Face Docker Space 支持运行时 Secrets，平台会把它们提供给容器，而不会要求你把密码提交进仓库。[Docker Spaces：Secrets 与 Variables](https://huggingface.co/docs/hub/en/spaces-sdks-docker?ref=qilinora.com)

在 Space 的 Settings 中添加以下值。尖括号只是提示，必须换成你自己的内容。

| 名称                           | 填什么                     | 它在做什么                             |
| ---------------------------- | ----------------------- | --------------------------------- |
| DB\_TYPE                     | postgresdb              | 告诉 n8n 不要用默认 SQLite，改用 PostgreSQL |
| DB\_POSTGRESDB\_HOST         | Supabase Connect 页面里的主机 | 告诉 n8n 数据库在哪里                     |
| DB\_POSTGRESDB\_PORT         | Connect 页面里的端口          | 告诉 n8n 走哪条连接通道                    |
| DB\_POSTGRESDB\_DATABASE     | 控制台给出的数据库名              | 指定要使用的数据库                         |
| DB\_POSTGRESDB\_USER         | Connect 页面里的用户          | 登录数据库的账号                          |
| DB\_POSTGRESDB\_PASSWORD     | 你创建项目时设置的密码             | 登录数据库的密码                          |
| DB\_POSTGRESDB\_SSL\_ENABLED | true                    | 要求走加密连接                           |
| N8N\_ENCRYPTION\_KEY         | 一串长期保存的随机值              | 加密 n8n 中保存的凭据                     |
| N8N\_WEBHOOK\_URL            | 你的 Space 公开 HTTPS 地址    | 生成正确的 Webhook 地址                  |
| N8N\_PROXY\_HOPS             | 1                       | 让 n8n 正确理解平台前面的代理                 |

n8n 官方支持用 `DB_TYPE=postgresdb` 和 `DB_POSTGRESDB_*` 变量配置 PostgreSQL。[n8n 数据库变量参考](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/database?ref=qilinora.com) 当 n8n 放在反向代理后时，应设置 `N8N_WEBHOOK_URL` 和 `N8N_PROXY_HOPS=1`。[n8n Webhook 反向代理说明](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-webhook-urls-with-reverse-proxy?ref=qilinora.com)

**如果教程里的变量和你看到的不一样：** 优先使用 n8n 当前官方文档中的变量名；例如现在应优先使用 `N8N_WEBHOOK_URL`，而不是旧教程常写的 `WEBHOOK_URL`。

## 第 4 步：第一次启动后怎么检查

打开 Space 的公开地址，创建 n8n owner 账户，然后只做三个小测试：

1. 建一个 Manual Trigger → Set 工作流并运行。看到绿色成功状态，说明编辑器和执行器正常。
2. 新建一个测试 Webhook，用浏览器或 HTTP 工具访问它。看到 n8n 收到请求，说明地址配置正常。
3. 新建一个很简单的 Schedule Trigger，观察它在平台未休眠时是否执行。这里的目的是理解行为，不是证明它适合生产。

## 跟教程不一样时，按顺序排查

| 现象                      | 最可能原因                   | 先检查什么                             |
| ----------------------- | ----------------------- | --------------------------------- |
| Space 显示 Running 但页面打不开 | 端口不一致或 n8n 未监听公网地址      | app\_port、N8N\_PORT、构建日志          |
| n8n 提示数据库连接失败           | 主机/端口/用户复制错误，或连接模式不匹配   | Supabase Connect 页面、SSL、IPv4/IPv6 |
| Webhook 地址不对            | 外部 URL 未正确设置            | N8N\_WEBHOOK\_URL 是否为完整 HTTPS 地址  |
| 重启后本地文件不见               | Docker Space 本地盘不持久     | 不把重要数据放本地盘；使用外部数据库/存储             |
| 一段时间后任务不跑               | Space 休眠或 Supabase 项目暂停 | 查看平台状态；关键任务迁移 VPS                 |
| 旧凭据打不开                  | 加密密钥换了或丢失               | 恢复原 N8N\_ENCRYPTION\_KEY          |

## 常见问题与排障汇总

**为什么数据库连接后仍然要保存加密密钥？** 数据库保存的是工作流与凭据数据，密钥负责解密其中受保护的内容；两者缺一不可。

**为什么 n8n 能打开但 Webhook 不工作？** 编辑器能打开只说明网页服务正常，不代表外部服务知道正确回调地址。先看 n8n 显示的生产 Webhook URL 是否就是 Space 的 HTTPS 域名。

**为什么不建议把密码写进 README 或 Dockerfile？** 仓库历史会保存提交记录。即使后来删除，密钥也可能已经泄露。密码应放平台 Secrets，并尽量使用独立、可轮换的值。

**什么时候必须迁移？** 当流程涉及真实订单、客户数据、必须按时执行的任务，或者你发现自己在和休眠、暂停、临时 URL 反复斗争时，就应该迁移到稳定 VPS 或托管服务。

## 小结

这个原型的价值在于让你亲手搭起“容器运行 n8n、外部数据库保存状态、Secrets 保存敏感配置、HTTPS 地址接收 Webhook”的完整链路。它不是终点，而是理解线上部署的训练场。下一篇会用 VPS、Docker Compose 和 PostgreSQL 把这些知识变成可长期维护的运行环境。

## 参考资料

1. [Hugging Face：Spaces 运行、休眠与存储说明](https://huggingface.co/docs/hub/en/spaces-overview?ref=qilinora.com)
2. [Hugging Face：Docker Spaces、端口和 Secrets](https://huggingface.co/docs/hub/en/spaces-sdks-docker?ref=qilinora.com)
3. [Supabase：Free Plan 项目暂停机制](https://supabase.com/docs/guides/platform/free-project-pausing?ref=qilinora.com)
4. [Supabase：连接 PostgreSQL 数据库](https://supabase.com/docs/guides/database/connecting-to-postgres?ref=qilinora.com)
5. [n8n：数据库环境变量参考](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/database?ref=qilinora.com)
6. [n8n：反向代理下配置 Webhook URL](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-webhook-urls-with-reverse-proxy?ref=qilinora.com)