Instalar Fisherboy
Fisherboy se distribuye como una única imagen de Docker autónoma (ghcr.io/diegoparras/fisherboy:latest).
La misma imagen ejecuta la API, el worker y la interfaz web opcional; un servicio Redis respalda la
cola de trabajos.
Requisitos
Sección titulada «Requisitos»- Docker (Docker Desktop en Windows/Mac, o Docker Engine en Linux).
- Un servicio Redis para la cola — incluido en los archivos compose provistos.
- Aproximadamente 1 GB de disco para la imagen (incluye Chromium para los niveles de navegador).
- No se requieren servicios externos para empezar: sin
ANONIMAL_URLconfigurado, se usa el anonimizador de regex integrado.
Inicio rápido (Docker Compose)
Sección titulada «Inicio rápido (Docker Compose)»El camino más rápido — autónomo, con la interfaz web:
git clone https://github.com/diegoparras/fisherboy.gitcd fisherboycp .env.example .env # configura SECRET_KEY + GOD/ANGEL/HUMAN_PASSWORDdocker compose -f docker-compose.standalone.yml up -d --build# → abre http://localhost:8000El archivo docker-compose.standalone.yml levanta tres servicios — la API (fisherboy-api,
en el puerto 8000), el worker (fisherboy-worker) y Redis (fisherboy-redis) — todos en una
red privada.
Comandos útiles de seguimiento:
docker compose -f docker-compose.standalone.yml logs -f # seguir logsdocker compose -f docker-compose.standalone.yml down # detenerEjecutar la imagen publicada
Sección titulada «Ejecutar la imagen publicada»¿No quieres compilar? Descarga la imagen precompilada (publicada por GitHub Actions):
docker pull ghcr.io/diegoparras/fisherboy:latestEjecútala a mano con un contenedor Redis al lado:
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.workerLa API es el comando por defecto de la imagen (uvicorn app.main:app --host 0.0.0.0 --port 8000);
el worker se inicia con python -m app.worker.
.env mínimo
Sección titulada «.env mínimo»Copia .env.example a .env y configura al menos:
APP_MODE=standaloneSECRET_KEY=<una cadena aleatoria larga>GOD_PASSWORD=<tu contraseña de admin>ANGEL_PASSWORD=<opcional>HUMAN_PASSWORD=<opcional>COOKIE_SECURE=0 # 0 para http://localhost local (sin HTTPS)Primera ejecución
Sección titulada «Primera ejecución»- Inicia el stack (
docker compose -f docker-compose.standalone.yml up -d --build). La primera compilación toma unos minutos; los arranques posteriores son instantáneos. - Abre
http://localhost:8000. - En la pantalla de login, ingresa tu
GOD_PASSWORD.
Dos modos
Sección titulada «Dos modos»Fisherboy se ejecuta en uno de dos modos, elegido por APP_MODE. El núcleo es idéntico; el modo
solo decide si la interfaz web se monta y dónde se delega la conversión de documentos.
standalone | sidekick | |
|---|---|---|
| Interfaz web | sí, propia | no, headless |
| Interfaz | UI + REST + MCP | REST + MCP |
| Uso | self-host, personal | detrás de Escriba, red interna |
Para el modo sidekick detrás de Escriba, usa docker-compose.yml, que se une a la red externa
escriba_internal para alcanzar a Anonimal y Escriba.
Principales variables de entorno
Sección titulada «Principales variables de entorno»| Variable | Por defecto | Qué hace |
|---|---|---|
APP_MODE | sidekick | standalone (monta la interfaz web) o sidekick (headless). |
SECRET_KEY | — | Requerida con auth. Firma la cookie de sesión; usa el mismo valor en cada réplica. |
GOD_PASSWORD / ANGEL_PASSWORD / HUMAN_PASSWORD | — | Contraseñas de rol. Configura al menos una para habilitar el login. |
COOKIE_SECURE | 1 | Envía la cookie de sesión solo por HTTPS. Configura 0 para http local. |
FISHERBOY_OPEN_GOD | 0 | Solo desarrollo: acceso abierto como dios sin login. Nunca en producción. |
REDIS_URL | redis://fisherboy-redis:6379/0 | Cola + almacén de envelopes. |
ANONIMAL_URL | — | Anonimal (dentro de Escriba) para NER completo. Vacío recurre al anonimizador de regex integrado. |
MAX_FETCH_TIER | 3 | Techo de escalado (0 estático, 1 TLS, 2 stealth, 3 navegador). |
PROXIES | — | Pool de proxies separado por comas/líneas. |
MAX_JOBS_PER_MIN | 60 | Límite de tasa de envíos de trabajos por IP. |
CRAWL_MAX_PAGES | 100 | Tope estricto de páginas por trabajo. |
LLM_API_BASE_URL / LLM_API_KEY / LLM_MODEL | — | Para output_format=json (extracción con LLM). |
ALLOW_PRIVATE_TARGETS | 0 | Solo desarrollo/test — desactiva la protección SSRF. Nunca en producción. |
La lista completa y comentada vive en .env.example en el repo. Para Docker Desktop,
EasyPanel y despliegue en producción, consulta docs/DEPLOY.md.