Pular para o conteúdo

Instalar o Searchgirl

O Searchgirl são dois containers: o app (ghcr.io/diegoparras/searchgirl) e o seu SearXNG interno (a imagem oficial, sem modificações e nunca exposta — só o Searchgirl a alcança pela rede privada).

  • Docker (Docker Desktop no Windows/Mac, ou Docker Engine em um VPS).
  • Nada mais: sem banco de dados, sem serviços externos. O Searchgirl não guarda estado a migrar.
Terminal window
git clone https://github.com/diegoparras/searchgirl
cd searchgirl
docker compose up -d --build

Abra http://localhost:8089 — busca privada, rodando.

Para uma instalação própria com tela de login, defina em um .env ao lado do compose:

Terminal window
SEARCHGIRL_USER=diego
SEARCHGIRL_PASS=a-long-password
SECRET_KEY=a-cookie-secret # opcional; sem ela as sessões se reiniciam com o container

O login padrão da família Escriba aparece (um cartão com o botão de mostrar/ocultar na senha) e tudo — UI, API, MCP, miniaturas — fica bloqueado até você entrar. É um único usuário, sem banco de dados. No modo federado essas variáveis são ignoradas: o contrato da suíte proíbe um login local convivendo ao lado do SSO.

A imagem publicada mais o SearXNG oficial, como dois serviços em um projeto. O guia de ponta a ponta (mounts, domínio, HTTPS, troubleshooting) está em DEPLOY.md.

  1. Crie um projeto chamado searchgirl. Dentro de um projeto, os serviços se enxergam por DNS interno como <project>_<service> (ex. searchgirl_searxng).
  2. Serviço searxng — App → Docker Image ghcr.io/searxng/searxng:latest. Defina SEARXNG_SECRET (openssl rand -hex 32) e adicione um File Mount em /etc/searxng/settings.yml com formats: [html, json] e limiter: false (o conteúdo exato está em DEPLOY.md). Sem domínio — ele permanece interno.
  3. Serviço app — App → Docker Image ghcr.io/diegoparras/searchgirl:latest. Environment: SEARXNG_URL=http://searchgirl_searxng:8080, seus SEARCHGIRL_USER/SEARCHGIRL_PASS/SECRET_KEY, COOKIE_SECURE=1 e SEARCHGIRL_TRUSTED_PROXIES=172.16.0.0/12. Adicione seu domínio com HTTPS ligado, porta interna 8080.
  4. Verifique: curl https://your-domain/healthzok, depois faça login pelo navegador.
  5. Atualize: clique em Deploy no serviço app — ele baixa a latest. Zero estado a migrar.

Dokploy / Coolify / Portainer: os três aceitam Docker Compose — cole o docker-compose.yml do repositório tal como está (ele já monta searxng/ e não expõe o motor), defina as mesmas variáveis de ambiente e coloque o reverse proxy do painel na frente da porta 8089 com HTTPS (COOKIE_SECURE=1).

Com um modelo configurado, o botão Resposta de IA, o endpoint POST /api/answer e a ferramenta MCP answer se acendem. Escolha um provedor:

Terminal window
# Anthropic (nativo):
ANTHROPIC_API_KEY=sk-ant-... # opcional: ANTHROPIC_MODEL
# ...ou qualquer endpoint compatível com OpenAI — Ollama local, OpenRouter, DeepSeek:
LLM_BASE_URL=http://host.docker.internal:11434/v1
LLM_MODEL=qwen2.5:7b

Sem nenhum dos dois, todo o resto funciona igual — o botão simplesmente não aparece.

VariávelPadrãoO que controla
SEARXNG_URLhttp://searxng:8080URL do SearXNG interno.
SEARCHGIRL_DEFAULT_LANGUAGEesIdioma de busca padrão.
SEARCHGIRL_USER / SEARCHGIRL_PASSLogin local standalone: um usuário, tela padrão do Escriba.
SECRET_KEYaleatóriaChave HMAC do cookie de sessão; defina-a para que as sessões sobrevivam a reinícios.
COOKIE_SECURE01 atrás de HTTPS.
SEARCHGIRL_MCP_TOKENTokens Bearer para API+MCP. Vários, nomeados: claude:abc...,n8n:def... — revogar um não rotaciona os demais.
SEARCHGIRL_TRUSTED_PROXIESIPs/CIDRs do reverse proxy para que o rate limit veja o IP real do cliente via X-Forwarded-For.
SEARCHGIRL_RATE_RPS / SEARCHGIRL_RATE_BURST20 / 60Rate limit por IP em API, MCP e login (RPS=0 o desabilita).
AUTH_MODEvaziofederado habilita OIDC com o Lockatus (com LOCKATUS_ISSUER / LOCKATUS_CLIENT_ID / LOCKATUS_REDIRECT_URI).
ANTHROPIC_API_KEY / LLM_BASE_URL + LLM_MODELO provedor opcional da Resposta de IA.

A tabela completa está no README do repositório.

Ler a documentação