besoeasy/Originless
GitHub: besoeasy/Originless
基于 IPFS 的无账户、无摩擦去中心化存储后端,为 DApp、AI agent、截图工具等提供耐用的匿名文件托管。
Stars: 81 | Forks: 8
# 🌐 Originless
**私密、去中心化、独立于源站的文件与应用托管,由 IPFS 驱动**
[](https://ghcr.io/besoeasy/originless)
[](https://ipfs.tech)
[](https://opensource.org/licenses/ISC)
**现代 Web 的无摩擦存储后端** — 直接接入 DApps、Nostr 客户端、AI agent、截图工具和 pastebin。提供耐用、加密的文件托管,且无需任何 API 密钥或用户账户。
## ⚡ 快速开始(5 秒内运行)
使用单个命令运行集成了 IPFS 的完整 Originless 节点:
```
docker run -d \
--name originless \
--restart unless-stopped \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-p 5001:5001 \
-e STORAGE_MAX=100GB \
ghcr.io/besoeasy/originless:latest
```
- 在 **[http://localhost:3232](http://localhost:3232)** 访问 **Originless Web UI 与 API**
- 在 **[http://localhost:5001/webui](http://localhost:5001/webui)** 访问 **IPFS WebUI 与 RPC API**
## 🔥 核心功能
- **🌐 独立于源站的存储**:文件被固定到 IPFS。一旦传播给 Peer,即使您的源节点离线,内容也会保持在线。
- **🔒 零摩擦与无账户**:上传无需 API 密钥、密码或身份验证开销。非常适合本地开发、公共 API 或 AI agent 集成。
- **🛡️ 防篡改的加密验证**:通过唯一的 IPFS CID(`ipfs://QmX...`)进行内容寻址。可以根据哈希值对下载内容进行加密验证。
- **📁 完整的文件夹与 DApp 上传**:上传完整的静态网站、React/Vite 构建目录(`dist/`)或保持相对路径完整的资源文件夹。
- **🧹 自动化智能清理程序**:智能的磁盘空间管理。将上传内容至少固定 7 天,并在容量达到 75% 时自动驱逐最旧的文件,以防止磁盘溢出。
- **🤖 专为自治 AI agent 打造**:原生 endpoint 设计允许 LLM(Claude、Copilot、Cursor、自定义 Agent)即时托管生成的媒体、代码片段或网站。
## 🌟 主要用例
| 用例 | 描述 |
| :--- | :--- |
| **🚀 去中心化 DApp 托管** | 拖放或上传您的前端 `dist/` 文件夹,在 IPFS 上托管永久、抗审查的 Web 应用程序。 |
| **💬 Nostr 媒体附件** | 用于去中心化社交应用(例如 [0xchat](https://0xchat.com/))的即时、免身份验证媒体上传器。 |
| **🤖 自治 AI agent 输出** | 赋予 AI 助手无需任何设置或 API 密钥即可发布报告、交互式图表和生成图像的能力。 |
| **🖼️ 匿名图像与截图分享** | 用于截图捕获工具、屏幕录制和临时图像上传的即时后端。 |
| **📝 Pastebin 与代码片段分享** | 分享文本、日志文件或代码片段,无需担心链接失效或被中心化删除。 |
| **📦 弹性资源分发** | 通过自我修复的 P2P 网络分发软件版本、二进制文件、音频/播客或重型媒体。 |
## 🔄 工作原理
```
┌──────────────┐ Upload File / Folder ┌──────────────────┐
│ User / Client│ ─────────────────────────────> │ Originless Node │
└──────────────┘ └─────────┬────────┘
│
Pins Content & Generates CID
│
▼
┌──────────────┐ Cryptographic CID ┌──────────────────┐
│ Public Peers │ <───────────────────────────── │ IPFS P2P Swarm │
└──────────────┘ Helia / Gateway Access └──────────────────┘
```
1. **上传**:通过 Web UI 或简单的 HTTP POST endpoint 发送单个文件或目录树。
2. **固定与分发**:Originless 在本地将内容固定到 IPFS,并将其广播给全球的 P2P Peer。
3. **自动化生命周期**:文件保证被固定 7 天。自动化的清理例程会协调存储,以将使用量保持在限制之下。
## 📡 获取文件与内容验证
### 🛡️ 自动化获取的推荐方案:[`@helia/verified-fetch`](https://github.com/ipfs/helia-verified-fetch)
我们强烈建议使用 [**`@helia/verified-fetch`**](https://github.com/ipfs/helia-verified-fetch) 以编程和自动化的方式获取通过 Originless 固定的文件。
与向中心化网关发出的传统 HTTP 请求不同,`helia-verified-fetch` 提供**无需信任的、基于内容寻址的验证**。它直接通过 IPFS / libp2p 下载原始数据块,实时验证与 CID 对应的加密哈希,并保护您的应用程序免受篡改或过时数据的影响。
#### 安装
```
npm install @helia/verified-fetch
```
#### 示例用法
```
import { verifiedFetch } from "@helia/verified-fetch";
// Fetch and verify content directly by CID
const cid = "QmX...";
const response = await verifiedFetch(`ipfs://${cid}`);
const fileBlob = await response.blob();
// Or parse JSON automatically
// const data = await verifiedFetch(`ipfs://${cid}`).then(res => res.json());
```
### 🌐 标准公共网关
对于简单的浏览器链接或非验证的 Web 视图,也可以使用标准的 IPFS 网关 URL:
```
https://dweb.link/ipfs/QmX...?filename=document.pdf
```
## 🛠️ API 快速参考
Base URL: `http://localhost:3232`
### 上传单个文件
```
curl -X POST -F "file=@photo.png" http://localhost:3232/upload
```
*响应:*
```
{
"status": "success",
"cid": "QmX...",
"size": 1048576,
"type": "image/png",
"filename": "photo.png"
}
```
### 上传文件夹 / DApp
```
curl -X POST \
-F "file=@dist/index.html;filename=index.html" \
-F "file=@dist/style.css;filename=style.css" \
http://localhost:3232/uploadfolder
```
### 检查存储与固定
```
curl http://localhost:3232/pins
```
## ⚙️ 环境配置
| 变量 | 默认值 | 描述 |
| :--- | :--- | :--- |
| `STORAGE_MAX` | `100GB` | 分配给 IPFS 数据的最大存储限制。 |
| `PORT` | `3232` | API 服务器与 UI 的 HTTP 监听端口。 |
| `DATA_DIR` | `/data` | 存储 SQLite 数据库与 IPFS 节点配置的路径。 |
## 📄 许可证
基于 **ISC License** 分发。可供个人和商业免费使用。标签:DApp, Docker, EVTX分析, IPFS, MITM代理, 分布式存储, 去中心化, 后端服务, 安全防御评估, 文件托管, 脚本检测, 请求拦截