⚠️ 务必保护 keyfile。 任何获得私钥的人都能代表该钱包签名。不要通过聊天发送,不要放进日志、截图或公共镜像,也不要提交到 Git。KBStore 已忽略常见 keyfile 文件名,但推送前仍应检查
git status。
Turbo 的价格与免费上传政策可能变化。KBStore 将文件限制为 100 KB,但这不代表上传永远免费。公开部署前请核对 Turbo 最新政策。
复制环境变量示例:
cp .env.example .env
PowerShell:
Copy-Item .env.example .env
编辑 .env:
SERVER_PORT=5888
DATABASE_PATH=./data/data.db
ARWEAVE_KEYFILE=./data/keyfile.json
SESSION_SECRET=replace-with-at-least-32-random-characters
SESSION_DAYS=7
| 变量 | 默认值 | 说明 |
|---|---|---|
SERVER_PORT | 5888 | Hono 服务端口 |
DATABASE_PATH | ./data/data.db | SQLite 数据库路径 |
ARWEAVE_KEYFILE | ./data/keyfile.json | Arweave JWK 私钥路径 |
SESSION_SECRET | 无 | Cookie 签名密钥;生产环境至少 32 个字符 |
SESSION_DAYS | 7 | 登录会话有效天数 |
开发环境未设置 SESSION_SECRET 时,KBStore 会为当前进程生成临时密钥,服务重启后已有会话失效。生产环境未显式配置时,服务会拒绝启动。
使用一条命令构建前端并启动 Hono:
bun run serve
bun run build
bun run start
Hono 会在 http://localhost:5888 同时提供 API 和 web/dist。通过 HTTPS 部署时应设置 NODE_ENV=production,以启用 Cookie 的 Secure 属性。
登录后打开 API Token 页面:
Authorization: Bearer 请求头使用 Token上传文件:
curl -X POST http://localhost:5888/api/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@./example.txt"
响应示例:
{
"file": {
"id": 1,
"txId": "...",
"filename": "example.txt",
"contentType": "text/plain",
"size": 1234,
"tokenNote": "CLI",
"createdAt": 1785283200000,
"url": "https://arweave.net/..."
}
}
💡 Arweave 网关可能需要几分钟才能索引新的 data item。上传后立即访问出现临时 404,通常表示数据仍在传播。可以稍后重试或切换其他网关。
GET /api/files 只返回当前登录用户拥有的文件。
| 参数 | 说明 |
|---|---|
page | 页码,默认 1 |
pageSize | 每页数量,默认 20,最大 100 |
q | 文件名搜索 |
from | 开始时间,Unix 毫秒时间戳 |
to | 结束时间,Unix 毫秒时间戳 |
sort | time 或 name |
order | asc 或 desc |
| 命令 | 说明 |
|---|---|
bun run build | 构建生产前端 |
bun run serve | 构建前端并启动 Hono |
bun run start | 启动生产服务 |
bun run typecheck | 检查 TypeScript 和 Vue SFC 类型 |
bun test | 运行后端冒烟测试 |
data/data.db、data/data.db-shm 和 data/data.db-wal。.env、常见 Arweave keyfile 文件名、SQLite 文件、依赖和构建产物都已被 .gitignore 排除。Content type
Image
Digest
sha256:09a1e7491…
Size
42.4 MB
Last updated
about 2 months ago
docker pull uxiaohan/vh-kbstore