Installa Searchgirl
Searchgirl è due container: l’app (ghcr.io/diegoparras/searchgirl) e il suo SearXNG
interno (l’immagine ufficiale, non modificata e mai esposta — solo Searchgirl la raggiunge
sulla rete privata).
Requisiti
Sezione intitolata “Requisiti”- Docker (Docker Desktop su Windows/Mac, oppure Docker Engine su un VPS).
- Nient’altro: nessun database, nessun servizio esterno. Searchgirl non conserva alcuno stato da migrare.
Avvio rapido (Docker Compose)
Sezione intitolata “Avvio rapido (Docker Compose)”git clone https://github.com/diegoparras/searchgirlcd searchgirldocker compose up -d --buildApri http://localhost:8089 — ricerca privata, in funzione.
Login locale (standalone)
Sezione intitolata “Login locale (standalone)”Per un’installazione tutta tua con una schermata di accesso, definisci in un .env accanto al compose:
SEARCHGIRL_USER=diegoSEARCHGIRL_PASS=una-password-lungaSECRET_KEY=un-segreto-per-il-cookie # opzionale; senza, le sessioni si azzerano col containerCompare il login standard della famiglia Escriba (una card con il pulsante mostra/nascondi sulla password) e tutto — UI, API, MCP, miniature — resta protetto finché non effettui l’accesso. È un singolo utente, senza database. In modalità federata queste variabili vengono ignorate: il contratto della suite vieta che un login locale conviva con l’SSO.
Distribuire su EasyPanel
Sezione intitolata “Distribuire su EasyPanel”L’immagine pubblicata più il SearXNG ufficiale, come due servizi in un unico progetto. La guida
completa (mount, dominio, HTTPS, risoluzione dei problemi) è in
DEPLOY.md.
- Crea un progetto chiamato
searchgirl. Dentro un progetto, i servizi si vedono tra loro via DNS interno come<progetto>_<servizio>(es.searchgirl_searxng). - Servizio
searxng— App → Docker Imageghcr.io/searxng/searxng:latest. ImpostaSEARXNG_SECRET(openssl rand -hex 32) e aggiungi un File Mount in/etc/searxng/settings.ymlconformats: [html, json]elimiter: false(il contenuto esatto è inDEPLOY.md). Nessun dominio — resta interno. - Servizio
app— App → Docker Imageghcr.io/diegoparras/searchgirl:latest. Ambiente:SEARXNG_URL=http://searchgirl_searxng:8080, i tuoiSEARCHGIRL_USER/SEARCHGIRL_PASS/SECRET_KEY,COOKIE_SECURE=1eSEARCHGIRL_TRUSTED_PROXIES=172.16.0.0/12. Aggiungi il tuo dominio con HTTPS attivo, porta interna 8080. - Verifica:
curl https://tuo-dominio/healthz→ok, poi accedi dal browser. - Aggiorna: premi Deploy sul servizio
app— scaricalatest. Zero stato da migrare.
Dokploy / Coolify / Portainer: tutti e tre accettano Docker Compose — incolla il
docker-compose.yml del repository così com’è (monta già searxng/ e non espone il motore),
imposta le stesse variabili d’ambiente e metti il reverse proxy del pannello davanti alla porta
8089 con HTTPS (COOKIE_SECURE=1).
Opzionale: Risposta IA
Sezione intitolata “Opzionale: Risposta IA”Con un modello configurato, si attivano il pulsante Risposta IA, l’endpoint
POST /api/answer e lo strumento MCP answer. Scegli un provider:
# Anthropic (nativo):ANTHROPIC_API_KEY=sk-ant-... # opzionale: ANTHROPIC_MODEL
# ...oppure qualsiasi endpoint compatibile OpenAI — Ollama locale, OpenRouter, DeepSeek:LLM_BASE_URL=http://host.docker.internal:11434/v1LLM_MODEL=qwen2.5:7bSenza nessuno dei due, tutto il resto funziona uguale — semplicemente il pulsante non compare.
Principali variabili d’ambiente
Sezione intitolata “Principali variabili d’ambiente”| Variabile | Predefinito | Cosa controlla |
|---|---|---|
SEARXNG_URL | http://searxng:8080 | URL del SearXNG interno. |
SEARCHGIRL_DEFAULT_LANGUAGE | es | Lingua di ricerca predefinita. |
SEARCHGIRL_USER / SEARCHGIRL_PASS | — | Login locale standalone: un utente, la schermata standard di Escriba. |
SECRET_KEY | casuale | Chiave HMAC del cookie di sessione; impostala perché le sessioni sopravvivano ai riavvii. |
COOKIE_SECURE | 0 | 1 dietro HTTPS. |
SEARCHGIRL_MCP_TOKEN | — | Token Bearer per API+MCP. Diversi, con nome: claude:abc...,n8n:def... — revocarne uno non ruota gli altri. |
SEARCHGIRL_TRUSTED_PROXIES | — | IP/CIDR del reverse proxy perché la limitazione di frequenza veda l’IP reale del client via X-Forwarded-For. |
SEARCHGIRL_RATE_RPS / SEARCHGIRL_RATE_BURST | 20 / 60 | Limite di frequenza per IP su API, MCP e login (RPS=0 lo disattiva). |
AUTH_MODE | vuota | federado abilita OIDC con Lockatus (con LOCKATUS_ISSUER / LOCKATUS_CLIENT_ID / LOCKATUS_REDIRECT_URI). |
ANTHROPIC_API_KEY / LLM_BASE_URL + LLM_MODEL | — | Il provider opzionale della Risposta IA. |
La tabella completa si trova nel README del repository.
Leggi la documentazione