安装 Fisherboy
Fisherboy 以单个自包含的 Docker 镜像(ghcr.io/diegoparras/fisherboy:latest)发布。同一镜像同时运行 API、worker 和可选的 Web UI;由一个 Redis 服务支撑作业队列。
- Docker(Windows/Mac 上的 Docker Desktop,或 Linux 上的 Docker Engine)。
- 用于队列的 Redis 服务——已包含在配套的 compose 文件中。
- 镜像约需 1 GB 磁盘空间(它捆绑了用于浏览器级别的 Chromium)。
- 启动无需任何外部服务:未设置
ANONIMAL_URL时,将使用内置的正则匿名器。
快速开始(Docker Compose)
Section titled “快速开始(Docker Compose)”最快的路径——独立运行,带 Web UI:
git clone https://github.com/diegoparras/fisherboy.gitcd fisherboycp .env.example .env # 设置 SECRET_KEY + GOD/ANGEL/HUMAN_PASSWORDdocker compose -f docker-compose.standalone.yml up -d --build# → 打开 http://localhost:8000docker-compose.standalone.yml 文件会拉起三个服务——API(fisherboy-api,端口 8000)、worker(fisherboy-worker)和 Redis(fisherboy-redis)——全部位于一个私有网络中。
实用的后续操作:
docker compose -f docker-compose.standalone.yml logs -f # 跟踪日志docker compose -f docker-compose.standalone.yml down # 停止运行已发布的镜像
Section titled “运行已发布的镜像”不想自行构建?拉取预构建镜像(由 GitHub Actions 发布):
docker pull ghcr.io/diegoparras/fisherboy:latest手动运行它,并在旁边附带一个 Redis 容器:
docker run -d --name fisherboy-redis redis:7-alpine
docker run -d --name fisherboy-api --env-file .env \ -e APP_MODE=standalone \ -e REDIS_URL=redis://fisherboy-redis:6379/0 \ -p 8000:8000 --link fisherboy-redis \ ghcr.io/diegoparras/fisherboy:latest
docker run -d --name fisherboy-worker --env-file .env \ -e APP_MODE=standalone \ -e REDIS_URL=redis://fisherboy-redis:6379/0 \ --link fisherboy-redis \ ghcr.io/diegoparras/fisherboy:latest python -m app.workerAPI 是镜像的默认命令(uvicorn app.main:app --host 0.0.0.0 --port 8000);worker 通过 python -m app.worker 启动。
最小 .env
Section titled “最小 .env”将 .env.example 复制为 .env,并至少设置:
APP_MODE=standaloneSECRET_KEY=<一个很长的随机字符串>GOD_PASSWORD=<你的管理员密码>ANGEL_PASSWORD=<可选>HUMAN_PASSWORD=<可选>COOKIE_SECURE=0 # 本地 http://localhost(无 HTTPS)设为 0- 启动整个栈(
docker compose -f docker-compose.standalone.yml up -d --build)。首次构建需要几分钟;之后的启动是瞬时的。 - 打开
http://localhost:8000。 - 在登录界面输入你的
GOD_PASSWORD。
Fisherboy 以两种模式之一运行,由 APP_MODE 选择。核心完全相同;模式只决定是否挂载 Web UI,以及文档转换委托到何处。
standalone | sidekick | |
|---|---|---|
| Web UI | 有,自带 | 无,无头 |
| 接口 | UI + REST + MCP | REST + MCP |
| 用途 | 自托管、个人 | 位于 Escriba 之后、内部网络 |
对于位于 Escriba 之后的 sidekick 模式,使用 docker-compose.yml,它会加入外部的 escriba_internal 网络以连接 Anonimal 和 Escriba。
主要环境变量
Section titled “主要环境变量”| 变量 | 默认值 | 作用 |
|---|---|---|
APP_MODE | sidekick | standalone(挂载 Web UI)或 sidekick(无头)。 |
SECRET_KEY | — | 启用鉴权时必需。 为会话 Cookie 签名;在每个副本上使用相同的值。 |
GOD_PASSWORD / ANGEL_PASSWORD / HUMAN_PASSWORD | — | 角色密码。至少设置一个以启用登录。 |
COOKIE_SECURE | 1 | 仅通过 HTTPS 发送会话 Cookie。本地 http 设为 0。 |
FISHERBOY_OPEN_GOD | 0 | 仅限开发:以 dios 身份开放访问且无需登录。切勿用于生产环境。 |
REDIS_URL | redis://fisherboy-redis:6379/0 | 队列 + envelope 存储。 |
ANONIMAL_URL | — | 用于完整 NER 的 Anonimal(位于 Escriba 内部)。留空则回退到内置的正则匿名器。 |
MAX_FETCH_TIER | 3 | 升级上限(0 静态、1 TLS、2 隐身、3 浏览器)。 |
PROXIES | — | 以逗号/换行分隔的代理池。 |
MAX_JOBS_PER_MIN | 60 | 每个 IP 的作业提交速率限制。 |
CRAWL_MAX_PAGES | 100 | 每个作业的页面数硬上限。 |
LLM_API_BASE_URL / LLM_API_KEY / LLM_MODEL | — | 用于 output_format=json(LLM 提取)。 |
ALLOW_PRIVATE_TARGETS | 0 | 仅限开发/测试——禁用 SSRF 防护。切勿用于生产环境。 |
完整的带注释列表位于仓库中的 .env.example。关于 Docker Desktop、EasyPanel 和生产部署,请参阅 docs/DEPLOY.md。