Aller au contenu

Installer Searchgirl

Searchgirl, c’est deux conteneurs : l’application (ghcr.io/diegoparras/searchgirl) et son SearXNG interne (l’image officielle, non modifiée et jamais exposée — seule Searchgirl l’atteint via le réseau privé).

  • Docker (Docker Desktop sous Windows/Mac, ou Docker Engine sur un VPS).
  • Rien d’autre : pas de base de données, pas de services externes. Searchgirl ne conserve aucun état à migrer.
Fenêtre de terminal
git clone https://github.com/diegoparras/searchgirl
cd searchgirl
docker compose up -d --build

Ouvrez http://localhost:8089 — la recherche privée, en marche.

Pour une installation à vous avec un écran de connexion, définissez dans un .env à côté du compose :

Fenêtre de terminal
SEARCHGIRL_USER=diego
SEARCHGIRL_PASS=un-mot-de-passe-long
SECRET_KEY=un-secret-de-cookie # optionnel ; sans lui, les sessions se réinitialisent avec le conteneur

L’écran de connexion standard de la famille Escriba apparaît (une carte avec un bouton afficher/masquer sur le mot de passe) et tout — interface, API, MCP, miniatures — est verrouillé jusqu’à la connexion. C’est un utilisateur unique, sans base de données. En mode fédéré, ces variables sont ignorées : le contrat de la suite interdit qu’une connexion locale cohabite avec le SSO.

L’image publiée plus le SearXNG officiel, en deux services dans un même projet. Le guide de bout en bout (montages, domaine, HTTPS, dépannage) se trouve dans DEPLOY.md.

  1. Créez un projet nommé searchgirl. À l’intérieur d’un projet, les services se voient par DNS interne sous la forme <project>_<service> (par ex. searchgirl_searxng).
  2. Service searxng — App → Docker Image ghcr.io/searxng/searxng:latest. Définissez SEARXNG_SECRET (openssl rand -hex 32) et ajoutez un File Mount sur /etc/searxng/settings.yml avec formats: [html, json] et limiter: false (le contenu exact est dans DEPLOY.md). Pas de domaine — il reste interne.
  3. Service app — App → Docker Image ghcr.io/diegoparras/searchgirl:latest. Environnement : SEARXNG_URL=http://searchgirl_searxng:8080, vos SEARCHGIRL_USER/SEARCHGIRL_PASS/SECRET_KEY, COOKIE_SECURE=1 et SEARCHGIRL_TRUSTED_PROXIES=172.16.0.0/12. Ajoutez votre domaine avec HTTPS activé, port interne 8080.
  4. Vérifiez : curl https://votre-domaine/healthzok, puis connectez-vous depuis le navigateur.
  5. Mise à jour : cliquez sur Deploy sur le service app — il récupère latest. Zéro état à migrer.

Dokploy / Coolify / Portainer : tous trois acceptent Docker Compose — collez le docker-compose.yml du dépôt tel quel (il monte déjà searxng/ et n’expose pas le moteur), définissez les mêmes variables d’environnement et placez le reverse proxy du panneau devant le port 8089 avec HTTPS (COOKIE_SECURE=1).

Avec un modèle configuré, le bouton Réponse IA, l’endpoint POST /api/answer et l’outil MCP answer s’activent. Choisissez un seul fournisseur :

Fenêtre de terminal
# Anthropic (natif) :
ANTHROPIC_API_KEY=sk-ant-... # optionnel : ANTHROPIC_MODEL
# ...ou tout endpoint compatible OpenAI — Ollama local, OpenRouter, DeepSeek :
LLM_BASE_URL=http://host.docker.internal:11434/v1
LLM_MODEL=qwen2.5:7b

Sans l’un ni l’autre, tout le reste fonctionne à l’identique — le bouton n’apparaît simplement pas.

VariableValeur par défautCe qu’elle contrôle
SEARXNG_URLhttp://searxng:8080URL du SearXNG interne.
SEARCHGIRL_DEFAULT_LANGUAGEesLangue de recherche par défaut.
SEARCHGIRL_USER / SEARCHGIRL_PASSConnexion locale autonome : un utilisateur, l’écran Escriba standard.
SECRET_KEYaléatoireClé HMAC du cookie de session ; définissez-la pour que les sessions survivent aux redémarrages.
COOKIE_SECURE01 derrière HTTPS.
SEARCHGIRL_MCP_TOKENJetons Bearer pour API+MCP. Plusieurs, nommés : claude:abc...,n8n:def... — en révoquer un ne fait pas tourner les autres.
SEARCHGIRL_TRUSTED_PROXIESIP/CIDR du reverse proxy pour que la limitation de débit voie l’IP réelle du client via X-Forwarded-For.
SEARCHGIRL_RATE_RPS / SEARCHGIRL_RATE_BURST20 / 60Limitation de débit par IP sur l’API, le MCP et la connexion (RPS=0 la désactive).
AUTH_MODEvidefederado active OIDC avec Lockatus (avec LOCKATUS_ISSUER / LOCKATUS_CLIENT_ID / LOCKATUS_REDIRECT_URI).
ANTHROPIC_API_KEY / LLM_BASE_URL + LLM_MODELLe fournisseur optionnel de la Réponse IA.

Le tableau complet se trouve dans le README du dépôt.

Lire la documentation