Privacy Tools #Whoogle#self-hosted#search privacy

Self-Host Whoogle: Private Google Search Without the Tracking

Run your own Whoogle search proxy with Docker, configure dark mode and custom settings, and get Google results without tracking or ads.

7 min read

Google Search produces excellent results, but using it directly means Google logs your query, your IP address, your browser fingerprint, and correlates it with your Google account if you are signed in. Over time, this builds a detailed profile of your interests, health concerns, political leanings, and habits.

Whoogle is an open-source, self-hosted meta-search proxy that fetches Google search results and strips out all the tracking before displaying them to you. You get Google’s index without Google’s surveillance. No ads, no tracking pixels, no personalization data collection.

How Whoogle Works

Whoogle acts as a middleman between your browser and Google. Your browser sends a search query to your Whoogle instance. Whoogle forwards the request to Google from your server’s IP address (not yours), receives the results, strips ads, tracking scripts, and fingerprinting elements, then returns clean HTML to your browser.

Google sees requests from your server IP — which may be shared among multiple users if you self-host for friends or family. Your personal IP and browser fingerprint are never sent to Google.

Docker is the fastest and cleanest way to run Whoogle.

Install Docker if you have not already:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

Run Whoogle with a single command:

docker run --name whoogle-search \
  -d \
  -p 5000:5000 \
  --restart unless-stopped \
  benbusby/whoogle-search

Visit http://localhost:5000 and you have a working Whoogle instance. That is all it takes for local use.

Option 2: Docker Compose with Persistent Config

For a server deployment with persistent settings, use Docker Compose:

mkdir ~/whoogle && cd ~/whoogle
nano docker-compose.yml
version: "3"
services:
  whoogle:
    image: benbusby/whoogle-search:latest
    container_name: whoogle-search
    restart: unless-stopped
    pids_limit: 50
    mem_limit: 256mb
    memswap_limit: 256mb
    security_opt:
      - no-new-privileges
    environment:
      WHOOGLE_URL_PREFIX: ""
      WHOOGLE_RESULTS_PER_PAGE: 10
      WHOOGLE_ALT_TW: nitter.net
      WHOOGLE_ALT_YT: invidious.snopyta.org
      WHOOGLE_ALT_IG: imginn.com
      WHOOGLE_ALT_RD: libreddit.kavin.rocks
      WHOOGLE_CONFIG_THEME: dark
      WHOOGLE_CONFIG_SAFE: 0
      WHOOGLE_CONFIG_COUNTRY: US
      WHOOGLE_CONFIG_LANGUAGE: lang_en
      WHOOGLE_CONFIG_SEARCH_LANGUAGE: en
    volumes:
      - ./whoogle-config:/config
    ports:
      - "5000:5000"

Start it:

docker compose up -d

Key Configuration Options

Whoogle is configured through environment variables or through the Settings page in the UI at http://your-server:5000/settings.

Privacy Redirects

One of Whoogle’s best features is automatic privacy redirect — when you click a link to Twitter/X, YouTube, Reddit, or Instagram from search results, Whoogle can redirect you to a privacy-respecting frontend instead:

Original SitePrivacy FrontendEnv Variable
Twitter/XNitterWHOOGLE_ALT_TW
YouTubeInvidiousWHOOGLE_ALT_YT
RedditLibreddit/RedlibWHOOGLE_ALT_RD
InstagramImginnWHOOGLE_ALT_IG

Set these to your preferred frontend instances in the Docker Compose file.

Dark Mode

Set WHOOGLE_CONFIG_THEME: dark in your compose file, or go to Settings → Theme in the UI and select Dark.

Custom CSS

Whoogle supports custom CSS for further UI customization. In Settings → Style:

body {
  font-family: 'Source Sans Pro', sans-serif;
}
.result {
  border-bottom: 1px solid #333;
  padding: 12px 0;
}

Search Safety and Region

WHOOGLE_CONFIG_SAFE: 0       # 0 = off, 1 = moderate, 2 = strict
WHOOGLE_CONFIG_COUNTRY: US   # Affects regional search results
WHOOGLE_CONFIG_LANGUAGE: lang_en

Securing Your Whoogle Instance

If you expose Whoogle publicly (so others can use it), add a password to prevent abuse:

environment:
  WHOOGLE_CONFIG_DISABLE: false
  WHOOGLE_PASS: your-secret-password

With a password set, users must enter it on first visit. The session is then stored in a browser cookie.

Better yet, put Whoogle behind an Nginx reverse proxy with HTTPS:

server {
    listen 443 ssl;
    server_name search.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/search.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/search.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

Obtain the certificate with Certbot:

sudo certbot --nginx -d search.yourdomain.com

Setting Whoogle as Your Default Browser Search Engine

Firefox

  1. Navigate to your Whoogle instance (e.g., http://localhost:5000)
  2. Click the address bar dropdown — Firefox may auto-detect the search engine
  3. If not: Preferences → Search → Add search engine
  4. Or install the Add custom search engine extension and add:
    • Name: Whoogle
    • URL: http://localhost:5000/search?q=%s

Chrome / Brave / Edge

  1. Go to Settings → Search engine → Manage search engines
  2. Click Add
  3. Fill in:
    • Search engine: Whoogle
    • Keyword: w (or whatever you prefer)
    • URL: http://localhost:5000/search?q=%s
  4. Click Add and set as default

Now every search from your address bar goes to Whoogle instead of directly to Google.

In Chrome/Brave, once you set the keyword (w), you can type w in the address bar, press Tab, and then type your query to specifically invoke Whoogle when you have multiple search engines configured.

Handling Google Rate Limiting

Google occasionally rate-limits or blocks the IP addresses Whoogle uses. Signs of this include CAPTCHA pages or no results. Options to mitigate:

  • Use a proxy or Tor — Whoogle supports WHOOGLE_PROXY_USER, WHOOGLE_PROXY_PASS, WHOOGLE_PROXY_TYPE, and WHOOGLE_PROXY_LOC environment variables for proxying requests through a SOCKS5 or HTTP proxy
environment:
  WHOOGLE_PROXY_TYPE: socks5
  WHOOGLE_PROXY_LOC: 127.0.0.1:9050  # Tor SOCKS proxy
  • Self-host on a residential IP — home servers are less likely to be rate-limited than VPS datacenter IPs
  • Use a public Whoogle instance temporarily — a list of public instances is maintained at the Whoogle GitHub repository

Compared to Other Private Search Engines

Search EngineSelf-HostableResults SourceAdsTracking
WhoogleYesGoogleNoneNone
SearXNGYesMultipleNoneNone
DuckDuckGoNoBing + ownYes (minor)Minimal
Brave SearchNoOwn indexYes (minor)Minimal
StartpageNoGoogleYesMinimal

Whoogle’s advantage over hosted alternatives is that you control the entire stack. Your search queries never touch a third-party server — only your Whoogle instance and Google’s servers.

Self-hosting Whoogle takes about 5 minutes with Docker and gives you Google-quality results with zero behavioral tracking. For anyone who uses Google daily, it is one of the most impactful privacy improvements you can make with minimal effort.

#proxy #Google alternative #Docker #search privacy #self-hosted #Whoogle