Montá tu propio buscador privado en casa con Docker: Whoogle o SearXNG

En mi infraestructura casera hoy conviven dos buscadores: Whoogle y SearXNG.
No porque uno sea mejor que el otro, sino porque me sirven para búsquedas distintas, según el tipo de información que necesito:
búsquedas directas y rápidas, o una exploración más amplia y comparativa.

Whoogle lo uso cuando quiero resultados al estilo Google, pero sin rastreo, sin JavaScript invasivo y sin cookies.

SearXNG, en cambio, permite buscar en más de 100 fuentes distintas y priorizar resultados locales, por ejemplo de Uruguay, según cómo lo configures.

Ambos corren en mi red, detrás de Nginx Proxy Manager, con HTTPS automático vía DuckDNS + Let’s Encrypt, y son accesibles desde cualquier dispositivo mediante usuario y contraseña.


Opción 1: Whoogle — tu Google privado

Whoogle es ideal si querés la experiencia de Google, pero sin espiar.
Filtra anuncios, elimina AMP, bloquea tracking y te da URLs limpias.

Comando docker para levantarlo (con autenticación básica)

docker run --restart=always \
  --publish 5000:5000 \
  --detach \
  --name whoogle-search \
  -e WHOOGLE_USER=tu_usuario \
  -e WHOOGLE_PASS=tu_contraseña_segura \
  -e WHOOGLE_CONFIG_THEME=dark \
  -e WHOOGLE_CONFIG_DISABLE=1 \
  -e WHOOGLE_CONFIG_URL=https://tutorial.duckdns.org \ 
  -e WHOOGLE_FALLBACK_ENGINE_URL="https://tutorial.duckdns.org/?q=" \ 
  benbusby/whoogle-search:latest

Nota Importante (2025):

Desde enero de 2025, Google está bloqueando búsquedas sin JavaScript.

Por eso, el WHOOGLE_FALLBACK_ENGINE_URL es tu plan B:

si Whoogle falla, te redirige a DuckDuckGo con la misma consulta.

Configuración en Nginx Proxy Manager

  • Dominio: tu-dominio

  • Forward a: http://IP_DEL_LXC:5000

  • SSL: activado con Let’s Encrypt

¡Listo! Accedé desde tu celular o browser.

user-whoogle.pngwhoogle.png

whooosearch.png


Opción 2: SearXNG — el meta-buscador descentralizado

Si Whoogle replica la experiencia de Google de forma limpia, SearXNG juega en otra liga!! ;)
No es un buscador único, sino un agregador que consulta múltiples motores al mismo tiempo, sin guardar búsquedas, sin crear perfiles y sin compartir datos entre usuarios.

Busca en Google, DuckDuckGo, Bing, Wikipedia, YouTube, GitHub, Qwant y decenas más, y presenta los resultados unificados en una sola página.

Instancias públicas

Pasos para desplegar:

  1. Cloná el repo oficial

git clone https://github.com/searxng/searxng-docker.git

  1. Debe quedar todo descomprimido en el servidor, a mi me quedo así:

/home/docker/searxng

2.1. Dentro del directorio searxng tenemos los siguientes archivos:

directorio -> config
directorio -> data
archivo -> docker-compose.yml
  1. Generá una secret_key segura:

openssl rand -hex 32

  1. El archivo docker compose, configuralo a gusto:

vim docker-compose.yml

version: '3.8'

services:
  redis:
    image: redis:alpine
    restart: always
    command: redis-server --save "" --appendonly no
    tmpfs:
      - /var/lib/redis
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    networks:
      - searxng_net

  searxng:
    image: elestio/searxng:latest
    restart: always
    ports:
      - "2468:8888"  # Solo accesible desde localhost (NPM hara el proxy)
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://tutorial.duckdns.org/  #tu dominio
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: json-file
      options:
        max-size: "1m"
        max-file: "1"
    depends_on:
      - redis
    networks:
      - searxng_net

networks:
  searxng_net:
    internal: true  # Aislamiento adicional: solo searxng y redis se ven
  1. Configurar el archivo config ( ojo que es muy sensible )

vim config/settings.yml

# SearXNG - Configuración básica para Uruguay
server:
  port: 8080 # elegir puerto preferido!!
  bind_address: 0.0.0.0 # donde queres que escuche tu interfaz de red!!
  secret_key: "tu_secret_key"

general:
  instance_name: "elegí_nombre_instancia"
  default_locale: "es"

search:
  default_lang: "es-UY"
  safe_search: 0  # 0=off, 1=moderate, 2=strict
  formats:
    - html
    - json

plugins:
  self_info: false
  hostname: false

ui:
  theme: "simple"
  default_theme: "simple"

¡Listo! Accedé desde tu celular o browser.

searXNG.pngbusquedaserxng.png


¿Y si quiero proteger el acceso con usuario y contraseña SearXNG?

Esto evita que tu instancia pública sea usada como proxy abierto o para scraping masivo.

Whoogle lo hace nativo (WHOOGLE_USER / WHOOGLE_PASS).
SearXNG no, pero Nginx Proxy Manager sí.

En NPM:

  1. Creá una Access List.

  2. Agregá un usuario y contraseña.

  3. Asignala al proxy host de SearXNG.

acceslist1.pngResultado: antes de ver la página solicita login

user-whoogle.png


Errores comunes

  • 502 Bad Gateway: usualmente el contenedor no responde. Verificá los logs y que el puerto esté escuchando.

  • Invalid settings.yml: en SearXNG 2025+, plugins: {} ya no funciona. Usá claves explícitas.


Reflexión final

Autohospedar herramientas como estas no es solo tecnología.
Es una decisión técnica y personal.

No necesitás ser ingeniero/a: alcanza con curiosidad, paciencia y ganas de no depender de los gigantes.

Hoy, Whoogle y SearXNG corren en mis LXC, detrás de Nginx Proxy Manager, con mi propio dominio.
Y cada búsqueda que hago no alimenta perfiles ni entrena algoritmos: es mía.

¿Te animás a montar el tuyo?
El código es tuyo, la infraestructura es tuya, los resultados también.


¡Salute y buen blogging!
— Valerka (Montevideo, Uruguay)
¿Te gustó el post? ¿Tenés dudas, comentarios o querés compartir tu experiencia?
Escribime a: valerkasystem@protonmail.com — ¡Siempre leo los mails y trato de responder cuando puedo!