一个偏向 小红书内容私藏 的自部署收藏箱。
它不只是保存链接,而是尽量把 正文、图片、视频、作者信息、平台信息 一起抓回来,长期留在你自己的服务和硬盘里。
一句话定位:
更适合私藏小红书内容的自部署收藏工具。
.
├── README.md
├── apps
│ ├── backend # 后端 API + Web 页面
│ ├── parser_worker # 解析 worker
│ └── mobile_flutter # 移动端工程(当前正式发布以服务端为主)
├── docs # 补充说明文档
├── infra # 基础 compose / 模板
├── releases # 历史发布目录与 fnOS/NAS 部署产物
├── scripts # 构建、发布、回归脚本
└── packages # 共享类型与解析规则
v0.1.67sexyfeifan/seedbox-backend:v0.1.67sexyfeifan/seedbox-parser-worker:v0.1.67releases/v0.1.67/docker-compose.ymlreleases/v0.1.67/docker-compose.annotated.ymlreleases/v0.1.67/.env.template推荐直接使用发布目录里的这 2 个文件:
releases/v0.1.67/docker-compose.annotated.ymlreleases/v0.1.67/.env.template建议做法:
docker-compose.annotated.yml 复制为 docker-compose.yml.env.template 复制为 .envdocker-compose.yml最重要的是这行卷挂载:
- ./data/backend:/data
如果你在飞牛 NAS / 其他 NAS 上部署,建议改成你自己的持久化目录,例如:
- /your/persistent/path/seedbox:/data
.env至少建议改这几个变量:
INTERNAL_API_TOKENCLIENT_ACCESS_TOKENDOUBAN_COOKIE(如果你需要豆瓣抓取更稳定)docker compose up -d
http://<你的IP或域名>:12333/apphttp://<你的IP或域名>:12333/v1/health如果你有反向代理,也可以走:
https://你的域名/app仓库里已经整理好以下模板:
infra/docker-compose.fnos.ymlinfra/docker-compose.fnos.annotated.ymlinfra/.env.template发布目录里也会同步生成同版本副本,方便直接部署。
INTERNAL_API_TOKEN
CLIENT_ACCESS_TOKEN
volumes: ...:/data
SEEDBOX_HOST_PORT
1233322333DOUBAN_COOKIE
$,在 .env 中必须写成 $$COMMERCIAL_MODE_ENABLED
falseASSET_CACHE_DIR=/data/asset_cacheSITE_ICON_CACHE_DIR=/data/site_icon_cacheCAPTURE_RESOLVE_TIMEOUT_MS=12000ASSET_FETCH_TIMEOUT_MS=30000WORKER_POLL_INTERVAL_MS=3000如果你的挂载是:
- /your/persistent/path/seedbox:/data
那么常见数据会落到:
/your/persistent/path/seedbox/memory-store.json/your/persistent/path/seedbox/asset_cache/your/persistent/path/seedbox/site_icon_cache从 v0.1.67 开始,新抓到的媒体缓存会尽量直接保存成:
.jpg.png.webp.mp4.mov.m3u8更方便你在 NAS 里直接查看和整理。
旧版本已经缓存下来的 .bin 文件仍然兼容,不需要手动清空。
POST /v1/captures 返回 401原因:
CLIENT_ACCESS_TOKEN修复:
浏览器打开网页后,在 Console 执行:
localStorage.setItem("seedbox_client_token", "你的 CLIENT_ACCESS_TOKEN");
location.reload();
如果你不想启用写入保护,也可以把 .env 中的:
CLIENT_ACCESS_TOKEN=
设为空后重启容器。
POST /v1/internal/parser/claim 200这是 正常现象,不是报错。
说明 parser worker 正在按轮询间隔向 backend 领取解析任务。
/favicon.ico 404这是 无关紧要的小问题。
浏览器会自动请求 favicon,但当前服务没有单独提供 /favicon.ico 路由,不影响抓取和使用。
The "o3" variable is not set. Defaulting to a blank string.
通常是因为你的 DOUBAN_COOKIE 里包含 $,例如:
some_cookie=value$part1$part2
Compose 会把 $xxx 当环境变量替换。
修复方式:
把 .env 里的 $ 改成 $$,例如:
DOUBAN_COOKIE=some_cookie=value$$part1$$part2
这不会影响容器内真实 cookie 值。
可以直接抓一次豆瓣链接,然后看 parser 日志。
如果看到这类异常,通常说明 cookie 失效或被风控:
403429pow challenge如果没有这些问题,并且正文能正常抓回,说明 cookie 还在工作。
v0.1.66 开始已经对易过期媒体做了预缓存,问题相比之前小很多。
如果历史条目是在更老版本抓的,可能仍然会遇到旧直链过期。
解决方法:
cd /path/to/Seedbox/apps/backend
npm install
npm run build
PORT=12333 STORE_DRIVER=memory node dist/main.js
cd /path/to/Seedbox/apps/parser_worker
npm install
npm run build
WORKER_MODE=api API_BASE_URL=http://127.0.0.1:12333 node dist/main.js
http://127.0.0.1:12333/apphttp://127.0.0.1:12333/v1/healthv0.1.67.bin 缓存的兼容读取.env.templatev0.1.66历史版本会保留在 releases/ 目录中,方便回滚。
docs/docker-deploy.mddocs/self-hosting.mdscripts/release-unified.shscripts/release-fnos.sh如果你只是想 最快部署最新版本,直接看这三个文件就够了:
releases/v0.1.67/docker-compose.annotated.ymlreleases/v0.1.67/.env.templatereleases/v0.1.67/docker-compose.ymlContent type
Image
Digest
sha256:f27657278…
Size
1.1 GB
Last updated
2 months ago
docker pull sexyfeifan/seedbox-parser-worker