HuggingRun / README.md
tao-shen's picture
fix: restore foreground sync + stdout logging for HF runtime log API
9c623ef
---
title: HuggingRun
emoji: 🚀
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
license: mit
app_port: 7860
startup_duration_timeout: 1h
tags:
- docker
- huggingface-spaces
- persistence
- deployment
- run-anything
---
# HuggingRun
**Run anything on Hugging Face.**
HuggingRun 是面向 Hugging Face Spaces 的**通用部署接口**:用同一套工具解决 HF 上的持久化、单端口、网络等限制,让**任意 Docker 应用**都能按同一套流程部署、重启后状态保留。
- **通用用法(用户最少步骤)**:[docs/GENERAL_USAGE.md](docs/GENERAL_USAGE.md) — 不按其他云容器收费或复杂配置,所有能力围绕通用工具展开。
- **通用工具优先**:主要维护的是通用层(持久化同步、单入口、可配置端口)。示例仅演示“最少配置”用法,不在核心脚本中为任何案例写死逻辑。
- **HF 限制与应对**:见 [docs/HF_LIMITATIONS.md](docs/HF_LIMITATIONS.md)(持久化、单端口、出站网络、DNS 等)。
## 通用接口:你只需做两件事
1. **Duplicate 本 Space**,在 Settings 里配好 **Secrets / Variables**(见下表)。
2. 设置 **`RUN_CMD`** 为你要跑的进程(例如 `uvicorn app:app --host 0.0.0.0 --port 7860`);不设则运行内置 demo。
| 配置项 | 必填 | 说明 |
|--------|------|------|
| `HF_TOKEN` | 需持久化时 | HF 写权限 Token,用于把 `PERSIST_PATH` 同步到 Dataset |
| `HF_DATASET_REPO` | 可选 | 备份用 Dataset 仓库,默认 `{SPACE_ID}-data` |
| `AUTO_CREATE_DATASET` | 可选 | `true` 时自动创建私有 Dataset |
| `RUN_CMD` | 可选 | 要执行的命令;空则跑默认 demo(7860 端口) |
| `PERSIST_PATH` | 可选 | 持久化目录,默认 `/data` |
| `APP_PORT` / `PORT` | 可选 | 应用监听端口,默认 `7860`(HF 只暴露此端口) |
## 通用工具提供了什么
- **持久化**:启动时从 HF Dataset 恢复 `PERSIST_PATH`,运行中定时上传,退出时再上传一次。解决 HF 无本地持久盘的问题。
- **单端口约定**:应用只需监听 `APP_PORT`(默认 7860);多端口服务需自己在容器内做反向代理。
- **统一入口**:同一 entrypoint 先做恢复与同步,再 `exec` 你的 `RUN_CMD`,便于任意镜像复用。
详见 [docs/HF_LIMITATIONS.md](docs/HF_LIMITATIONS.md)。
远端构建/运行日志:[docs/REMOTE_LOGS.md](docs/REMOTE_LOGS.md)。**Push → 部署 → 监控 → 测试** 循环:[docs/PUSH_DEBUG.md](docs/PUSH_DEBUG.md)。**本地 SSH 进 HF Ubuntu**(反向 SSH):[docs/SSH_ACCESS.md](docs/SSH_ACCESS.md)。
## 示例(最小用法)
示例仅展示“用通用工具、最少配置”的用法,维护量保持在最低。
### 默认 demo
不设 `RUN_CMD`:容器会跑一个 7860 端口的简单 HTTP 页,并把计数存到 `/data`,用于验证持久化。
### FastAPI + SQLite
在 Secrets 里设:
- `RUN_CMD=uvicorn app.fastapi_sqlite:app --host 0.0.0.0 --port 7860`
(可选)设 `HF_TOKEN``AUTO_CREATE_DATASET=true`,重启后 SQLite 数据仍在。
### Ubuntu Server(Web Terminal + SSH)
使用同一套 `scripts/`,通过 ttyd 提供浏览器 Web Terminal,nginx 反代 + WebSocket-SSH 桥接支持远程 SSH 登录。全盘持久化:整个文件系统镜像同步到 HF Dataset。
## 环境变量速查
| 变量 | 默认 | 说明 |
|------|------|------|
| `RUN_CMD` | 默认 demo | 要执行的命令 |
| `PERSIST_PATH` | `/data` | 同步到 HF Dataset 的目录 |
| `HF_TOKEN` | — | 持久化用 Token |
| `HF_DATASET_REPO` | `{SPACE_ID}-data` | Dataset 仓库 |
| `AUTO_CREATE_DATASET` | `false` | 是否自动创建 Dataset |
| `SYNC_INTERVAL` | `60` | 同步间隔(秒) |
| `PORT` / `APP_PORT` | `7860` | 应用监听端口 |
## License
MIT