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).
Requisitos
Seção intitulada “Requisitos”- 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.
Início rápido (Docker Compose)
Seção intitulada “Início rápido (Docker Compose)”git clone https://github.com/diegoparras/searchgirlcd searchgirldocker compose up -d --buildAbra http://localhost:8089 — busca privada, rodando.
Login local (standalone)
Seção intitulada “Login local (standalone)”Para uma instalação própria com tela de login, defina em um .env ao lado do compose:
SEARCHGIRL_USER=diegoSEARCHGIRL_PASS=a-long-passwordSECRET_KEY=a-cookie-secret # opcional; sem ela as sessões se reiniciam com o containerO 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.
Deploy no EasyPanel
Seção intitulada “Deploy no EasyPanel”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.
- Crie um projeto chamado
searchgirl. Dentro de um projeto, os serviços se enxergam por DNS interno como<project>_<service>(ex.searchgirl_searxng). - Serviço
searxng— App → Docker Imageghcr.io/searxng/searxng:latest. DefinaSEARXNG_SECRET(openssl rand -hex 32) e adicione um File Mount em/etc/searxng/settings.ymlcomformats: [html, json]elimiter: false(o conteúdo exato está emDEPLOY.md). Sem domínio — ele permanece interno. - Serviço
app— App → Docker Imageghcr.io/diegoparras/searchgirl:latest. Environment:SEARXNG_URL=http://searchgirl_searxng:8080, seusSEARCHGIRL_USER/SEARCHGIRL_PASS/SECRET_KEY,COOKIE_SECURE=1eSEARCHGIRL_TRUSTED_PROXIES=172.16.0.0/12. Adicione seu domínio com HTTPS ligado, porta interna 8080. - Verifique:
curl https://your-domain/healthz→ok, depois faça login pelo navegador. - Atualize: clique em Deploy no serviço
app— ele baixa alatest. 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).
Opcional: Resposta de IA
Seção intitulada “Opcional: Resposta de IA”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:
# 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/v1LLM_MODEL=qwen2.5:7bSem nenhum dos dois, todo o resto funciona igual — o botão simplesmente não aparece.
Principais variáveis de ambiente
Seção intitulada “Principais variáveis de ambiente”| Variável | Padrão | O que controla |
|---|---|---|
SEARXNG_URL | http://searxng:8080 | URL do SearXNG interno. |
SEARCHGIRL_DEFAULT_LANGUAGE | es | Idioma de busca padrão. |
SEARCHGIRL_USER / SEARCHGIRL_PASS | — | Login local standalone: um usuário, tela padrão do Escriba. |
SECRET_KEY | aleatória | Chave HMAC do cookie de sessão; defina-a para que as sessões sobrevivam a reinícios. |
COOKIE_SECURE | 0 | 1 atrás de HTTPS. |
SEARCHGIRL_MCP_TOKEN | — | Tokens Bearer para API+MCP. Vários, nomeados: claude:abc...,n8n:def... — revogar um não rotaciona os demais. |
SEARCHGIRL_TRUSTED_PROXIES | — | IPs/CIDRs do reverse proxy para que o rate limit veja o IP real do cliente via X-Forwarded-For. |
SEARCHGIRL_RATE_RPS / SEARCHGIRL_RATE_BURST | 20 / 60 | Rate limit por IP em API, MCP e login (RPS=0 o desabilita). |
AUTH_MODE | vazio | federado habilita OIDC com o Lockatus (com LOCKATUS_ISSUER / LOCKATUS_CLIENT_ID / LOCKATUS_REDIRECT_URI). |
ANTHROPIC_API_KEY / LLM_BASE_URL + LLM_MODEL | — | O provedor opcional da Resposta de IA. |
A tabela completa está no README do repositório.
Ler a documentação