コンテンツにスキップ

Searchgirlのインストール

Searchgirlは 2つのコンテナです:アプリ(ghcr.io/diegoparras/searchgirl)と、その内部の SearXNG(無改変の公式イメージで、決して公開されません — プライベートネットワーク経由で Searchgirlだけが到達します)。

  • Docker(Windows/MacではDocker Desktop、VPSではDocker Engine)。
  • それ以外は何も不要:データベースなし、外部サービスなし。Searchgirlは移行すべき状態を持ちません。

クイックスタート(Docker Compose)

Section titled “クイックスタート(Docker Compose)”
Terminal window
git clone https://github.com/diegoparras/searchgirl
cd searchgirl
docker compose up -d --build

http://localhost:8089 を開きます — プライベート検索が動いています。

ローカルログイン(スタンドアロン)

Section titled “ローカルログイン(スタンドアロン)”

サインイン画面付きの自分専用のインストールには、composeの隣の .env で次を定義します:

Terminal window
SEARCHGIRL_USER=diego
SEARCHGIRL_PASS=a-long-password
SECRET_KEY=a-cookie-secret # optional; without it sessions reset with the container

Escribaファミリーの標準ログイン(パスワードに表示 / 非表示トグルの付いたカード)が現れ、サインイン するまですべて — UI、API、MCP、サムネイル — がゲートされます。データベースなしの単一ユーザーです。 **連携(federated)**モードではこれらの変数は無視されます:スイートの取り決めは、SSOの隣に ローカルログインが存在することを禁じています。

公開イメージと公式のSearXNGを、1つのプロジェクトに2つのサービスとして配置します。端から端までの ガイド(マウント、ドメイン、HTTPS、トラブルシューティング)は DEPLOY.md にあります。

  1. searchgirl という名前のプロジェクトを作成します。プロジェクト内では、サービス同士は 内部DNSで <project>_<service> として見えます(例:searchgirl_searxng)。
  2. サービス searxng — App → Docker Image ghcr.io/searxng/searxng:latestSEARXNG_SECRETopenssl rand -hex 32)を設定し、/etc/searxng/settings.ymlformats: [html, json]limiter: false を含む File Mount を追加します (正確な内容は DEPLOY.md にあります)。ドメインなし — 内部に留まります。
  3. サービス app — App → Docker Image ghcr.io/diegoparras/searchgirl:latest。 環境変数:SEARXNG_URL=http://searchgirl_searxng:8080、あなたの SEARCHGIRL_USER/SEARCHGIRL_PASS/SECRET_KEYCOOKIE_SECURE=1SEARCHGIRL_TRUSTED_PROXIES=172.16.0.0/12。HTTPSを有効にしてドメインを追加し、 内部ポートは 8080 にします。
  4. 確認curl https://your-domain/healthzok、その後ブラウザからサインインします。
  5. 更新app サービスで Deploy を押します — latest をpullします。移行すべき状態はゼロです。

Dokploy / Coolify / Portainer:3つともDocker Composeを受け付けます — リポジトリの docker-compose.yml をそのまま貼り付け(すでに searxng/ をマウントし、エンジンを公開しません)、 同じ環境変数を設定し、パネルのリバースプロキシをHTTPS付きでポート8089の前に置きます (COOKIE_SECURE=1)。

モデルを設定すると、AI回答ボタン、POST /api/answer エンドポイント、MCPツール answer が 点灯します。プロバイダーを1つ選びます:

Terminal window
# Anthropic (native):
ANTHROPIC_API_KEY=sk-ant-... # optional: ANTHROPIC_MODEL
# ...or any OpenAI-compatible endpoint — local Ollama, OpenRouter, DeepSeek:
LLM_BASE_URL=http://host.docker.internal:11434/v1
LLM_MODEL=qwen2.5:7b

どちらもない場合、それ以外はすべて同じように動きます — ボタンが現れないだけです。

変数既定値役割
SEARXNG_URLhttp://searxng:8080内部SearXNGのURL。
SEARCHGIRL_DEFAULT_LANGUAGEes既定の検索言語。
SEARCHGIRL_USER / SEARCHGIRL_PASSスタンドアロンのローカルログイン:単一ユーザー、Escribaの標準画面。
SECRET_KEYランダムセッションクッキーのHMACキー。再起動をまたいでセッションを維持するには設定します。
COOKIE_SECURE0HTTPSの背後では 1
SEARCHGIRL_MCP_TOKENAPI+MCP用のBearerトークン。複数、名前付き:claude:abc...,n8n:def... — 1つを失効しても残りはローテーションされません。
SEARCHGIRL_TRUSTED_PROXIESレート制限が X-Forwarded-For 経由で実際のクライアントIPを見られるようにする、リバースプロキシのIP/CIDR。
SEARCHGIRL_RATE_RPS / SEARCHGIRL_RATE_BURST20 / 60API、MCP、ログインに対するIPごとのレート制限(RPS=0 で無効化)。
AUTH_MODEfederado でLockatusとのOIDCを有効化(LOCKATUS_ISSUER / LOCKATUS_CLIENT_ID / LOCKATUS_REDIRECT_URI と併用)。
ANTHROPIC_API_KEY / LLM_BASE_URL + LLM_MODELオプションのAI回答のプロバイダー。

完全な一覧はリポジトリの README にあります。

ドキュメントを読む