Ir al contenido

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.

  • 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_URL configurado, se usa el anonimizador de regex integrado.

El camino más rápido — autónomo, con la interfaz web:

Ventana de terminal
git clone https://github.com/diegoparras/fisherboy.git
cd fisherboy
cp .env.example .env # configura SECRET_KEY + GOD/ANGEL/HUMAN_PASSWORD
docker compose -f docker-compose.standalone.yml up -d --build
# → abre http://localhost:8000

El 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:

Ventana de terminal
docker compose -f docker-compose.standalone.yml logs -f # seguir logs
docker compose -f docker-compose.standalone.yml down # detener

¿No quieres compilar? Descarga la imagen precompilada (publicada por GitHub Actions):

Ventana de terminal
docker pull ghcr.io/diegoparras/fisherboy:latest

Ejecútala a mano con un contenedor Redis al lado:

Ventana de terminal
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.worker

La 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.

Copia .env.example a .env y configura al menos:

APP_MODE=standalone
SECRET_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)
  1. 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.
  2. Abre http://localhost:8000.
  3. En la pantalla de login, ingresa tu GOD_PASSWORD.

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.

standalonesidekick
Interfaz websí, propiano, headless
InterfazUI + REST + MCPREST + MCP
Usoself-host, personaldetrá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.

VariablePor defectoQué hace
APP_MODEsidekickstandalone (monta la interfaz web) o sidekick (headless).
SECRET_KEYRequerida con auth. Firma la cookie de sesión; usa el mismo valor en cada réplica.
GOD_PASSWORD / ANGEL_PASSWORD / HUMAN_PASSWORDContraseñas de rol. Configura al menos una para habilitar el login.
COOKIE_SECURE1Envía la cookie de sesión solo por HTTPS. Configura 0 para http local.
FISHERBOY_OPEN_GOD0Solo desarrollo: acceso abierto como dios sin login. Nunca en producción.
REDIS_URLredis://fisherboy-redis:6379/0Cola + almacén de envelopes.
ANONIMAL_URLAnonimal (dentro de Escriba) para NER completo. Vacío recurre al anonimizador de regex integrado.
MAX_FETCH_TIER3Techo de escalado (0 estático, 1 TLS, 2 stealth, 3 navegador).
PROXIESPool de proxies separado por comas/líneas.
MAX_JOBS_PER_MIN60Límite de tasa de envíos de trabajos por IP.
CRAWL_MAX_PAGES100Tope estricto de páginas por trabajo.
LLM_API_BASE_URL / LLM_API_KEY / LLM_MODELPara output_format=json (extracción con LLM).
ALLOW_PRIVATE_TARGETS0Solo 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.

Leer la documentación