SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor · Actualizado 2026-08-29

Searx vs SearXNG: ¿Searx está abandonado?

Searx no recibe commits de código desde abril de 2023 y su README dice que no tiene mantenimiento. Comprueba el estado y descubre qué cambia al instalar SearXNG.

Searx o SearXNG: ¿cuál debe instalar?

Searx y SearXNG son dos proyectos distintos con nombres casi idénticos, pero sólo uno de ellos sigue recibiendo correcciones. Instale SearXNG. El Searx original no ha recibido ningún commit de código desde abril de 2023 y su propio README lo indica claramente en una línea: «Searx ya no recibe mantenimiento».

Esto plantea un problema práctico, no filosófico. Los dos proyectos comparten una captura de pantalla, gran parte del archivo de configuración y la mitad del nombre, por lo que una guía escrita para uno parece aplicarse al otro. No es así. El archivo de configuración está en otra ubicación, la protección contra bots es nueva y el nombre del paquete ya no está disponible en las versiones actuales de Ubuntu. A continuación se explica la diferencia, se incluyen los comandos para comprobar el estado por cuenta propia y se enumeran los cambios que afectan a quien pone en marcha una instancia.

Qué es Searx y de dónde surgió SearXNG

Searx es un metabuscador. No mantiene un índice propio. Recibe la consulta, la reenvía a otros servicios de búsqueda, como Bing, DuckDuckGo o Wikipedia, y combina las respuestas en una sola página de resultados. La ventaja es que esos servicios ven la dirección del servidor en lugar de la del usuario. El coste es el mantenimiento. Cada motor es un pequeño componente de código que analiza el HTML o la API de otra entidad, por lo que deja de funcionar cuando cambia ese servicio externo. La estabilidad de un metabuscador depende de las personas que corrigen sus módulos de motores.

El repositorio searx se creó en octubre de 2013. En abril de 2021, un antiguo mantenedor inició SearXNG como una bifurcación del proyecto. «NG» significa next generation. El README de searx describe ambos proyectos uno junto al otro, y esa descripción sigue siendo el resumen más claro de la separación:

SearxNG es una bifurcación de searx, creada por un antiguo mantenedor de searx.
SearxNG publica versiones continuamente, actualiza las dependencias con más frecuencia y corrige los motores más rápido.

El desacuerdo que motivó la bifurcación estaba relacionado con los diagnósticos. Searx consideraba que una instancia no debía conservar datos de uso, y su configuración predeterminada lo indica explícitamente: enable_stats: False # activate /stats page - note: it may leak usage data. SearXNG tomó la decisión contraria e incluye enable_metrics: true de forma predeterminada. Esas métricas rellenan las barras de tiempo de respuesta y las páginas de error que facilitan localizar y corregir un motor averiado. Ambas posturas son defendibles. Sólo una de ellas mantuvo la publicación de código.

¿Está muerto Searx? Cómo comprobarlo

«Muerto» no es un estado que GitHub informe, así que lea las dos señales disponibles y saque sus propias conclusiones. La primera es si el repositorio está archivado y cuándo recibió su último push.

curl -s https://api.github.com/repos/searx/searx | jq -r '.archived, .pushed_at'
curl -s https://api.github.com/repos/searxng/searxng | jq -r '.archived, .pushed_at'

El 22 de agosto de 2026 el primer comando muestra false y 2026-05-14T10:02:22Z. El segundo muestra false y una marca de tiempo del día en que lo ejecute. Anote el primer valor. El repositorio de searx no está archivado y nadie lo bloqueó, por eso la pregunta sigue reapareciendo.

pushed_at es una señal débil por sí sola, porque cambia con un push a cualquier rama, incluso si sólo se modifica una línea de documentación. Consulte la lista de commits.

curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
  | jq -r '.[] | .commit.committer.date[:10] + "  " + (.commit.message | split("\n")[0])'

En agosto de 2026 muestra lo siguiente:

2026-05-14  [doc] add hister reference
2023-09-07  Searx is no longer maintained
2023-04-05  Fix quoting issue in search_operator plugin (#3479)
2023-04-04  Bump pallets-sphinx-themes from 2.0.2 to 2.0.3 (#3450)
2023-04-04  Bump selenium from 4.7.2 to 4.8.3 (#3490)

Léalo desde abajo hacia arriba. El trabajo habitual se detiene en abril de 2023. El commit de septiembre de 2023 corresponde a los mantenedores escribiendo el aviso en el README. El único commit posterior es de documentación, porque el autor original se pasó a Hister, una herramienta de búsqueda que indexa las páginas y los archivos que usted elige en lugar de consultar otros motores. Es una idea diferente y útil si lo que realmente quiere es un motor de búsqueda personal para su propio contenido.

La segunda señal es el empaquetado, del que dependen silenciosamente la mayoría de los tutoriales antiguos.

  • PyPI contiene una versión searx, la 0.17.0, subida en julio de 2020. pip install searx termina correctamente y le proporciona código de nueve meses antes de que existiera el fork.
  • Debian incluyó searx 1.1.0 en Debian 12 (bookworm) y todavía lo mantiene en unstable. Se eliminó de testing en octubre de 2023, por lo que Debian 13 (trixie) no incluye ningún paquete de searx.
  • Ubuntu lo incluyó por última vez en 22.04, en la versión 1.0.0. En Ubuntu 24.04, sudo apt install searx termina con E: Unable to locate package searx.
  • searx.space, el directorio de instancias públicas al que el proyecto siempre remitía a los usuarios, ahora muestra instancias de SearXNG.

Este es el estado real. El código es público, sigue funcionando y puede clonarlo e iniciarlo hoy mismo. Lo que no obtiene son correcciones para los motores ni actualizaciones de seguridad, y en un metamoto de búsqueda ese es el trabajo principal. Los motores se degradan según el calendario de terceros. Una instancia sin mantenimiento devuelve menos resultados cada mes sin que nadie toque el servidor.

Qué cambió con la bifurcación para una instancia nueva

El archivo de configuración cambió de ubicación y ahora es una sobrecarga

En Searx editaba searx/settings.yml dentro del árbol de código fuente. En SearXNG, el archivo se encuentra en /etc/searxng/settings.yml, y el proceso lo localiza mediante la variable de entorno SEARXNG_SETTINGS_PATH. La plantilla que el instalador copia allí es breve:

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'
  formats:
    - html

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true

valkey:
  # URL to connect valkey database. Is overwritten by ${SEARXNG_VALKEY_URL}.
  url: valkey://localhost:6379/0

use_default_settings: true es la línea que cambia la forma de trabajar. Con ella, el archivo sólo contiene sobrecargas, y cada clave que omita toma el valor predeterminado incluido en el paquete. Sin ella, el archivo debe describir toda la configuración, motor por motor. Así es como una instancia puede iniciar correctamente y no encontrar nada. Un archivo de configuración antiguo de Searx pegado en esta ruta es una configuración completa con nombres de clave diferentes, por lo que sigue la segunda ruta y lo hace de forma incorrecta.

La clave secreta detiene el proceso

sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \
              "/etc/searxng/settings.yml"

Ejecute esto una vez después de copiar la plantilla. Si lo omite, SearXNG registra una línea y sale con el estado 1, porque webapp.py compara la clave con el valor de la plantilla antes de atender ninguna petición:

server.secret_key is not changed. Please use something else instead of ultrasecretkey.

La comprobación se omite cuando general.debug es true, por lo que una instancia puede funcionar correctamente en una sesión de depuración y después negarse a iniciar bajo systemd o en un contenedor. Si un contenedor se reinicia continuamente y esa línea aparece en docker compose logs, la causa es esta comprobación, no una imagen dañada.

El limitador es nuevo y necesita Valkey

Searx no tenía limitación de tasa dentro de la aplicación. Las instancias públicas de Searx colocaban servicios independientes delante: filtron para filtrar peticiones y morty para hacer proxy del contenido de los resultados. Ambos repositorios recibieron su último commit en 2023.

SearXNG realiza ese trabajo internamente. La limitación de tasa y la detección de bots corresponden al limitador, que se activa con server.limiter. Está en false en los valores predeterminados distribuidos y en true en la plantilla del instalador, y necesita una base de datos Valkey para guardar sus contadores. Valkey es una bifurcación de Redis, y Ubuntu 24.04 la incluye en sus paquetes:

sudo apt install -y valkey-server
server:
  limiter: true

valkey:
  url: valkey://localhost:6379/0

Las guías escritas antes de ese cambio de nombre configuran un bloque redis:, por lo que debe copiar el nombre de la clave de la documentación actual del limitador. El ajuste detallado se encuentra en un segundo archivo, /etc/searxng/limiter.toml, y server.public_instance: true activa la detección de bots más estricta que necesita una instancia pública, incluido el método del token de enlace. El resultado visible es que algunas peticiones reciben HTTP 429 en lugar de resultados, incluidas las suyas si utiliza scripts contra la instancia. Este comportamiento tiene su propia página: por qué una instancia de SearXNG responde 429 Too Many Requests.

Los motores se suspenden solos y los tiempos de espera son largos

Cuando un servicio ascendente responde con un CAPTCHA o una página de limitación de tasa, SearXNG genera una excepción tipada y deja de consultar ese motor durante un tiempo determinado, en lugar de reintentar hasta provocar un bloqueo. Los valores predeterminados se encuentran en searx/settings.yml, bajo search.suspended_times. Estos son los 6 valores publicados a fecha de agosto de 2026:

ChartSearXNG default engine suspension times, in seconds
The data behind this chart
[
  {
    "label": "SearxEngineAccessDenied",
    "suspend_seconds": "180"
  },
  {
    "label": "SearxEngineCaptcha",
    "suspend_seconds": "3,600"
  },
  {
    "label": "SearxEngineTooManyRequests",
    "suspend_seconds": "180"
  },
  {
    "label": "cf_SearxEngineCaptcha",
    "suspend_seconds": "1,296,000"
  },
  {
    "label": "cf_SearxEngineAccessDenied",
    "suspend_seconds": "86,400"
  },
  {
    "label": "recaptcha_SearxEngineCaptcha",
    "suspend_seconds": "604,800"
  }
]

Una respuesta de acceso denegado simple suspende ese motor durante 180 segundos. Un CAPTCHA lo suspende durante 3,600 segundos. Un CAPTCHA de Cloudflare lo suspende durante 1,296,000 segundos, es decir, quince días, y un Google reCAPTCHA durante 604,800 segundos, es decir, una semana. Los valores largos son intencionados, porque volver a consultar después de que un servicio ya haya marcado la dirección es lo que puede hacer que la IP de la instancia quede bloqueada definitivamente.

Mientras un motor está suspendido, la página de resultados lo omite y lo muestra en el bloque lateral titulado "Mensajes de los motores de búsqueda", y /stats/errors enumera los fallos. Una instancia nueva que devuelve pocos resultados normalmente está mostrando este comportamiento, no una instalación dañada.

La API JSON está desactivada de forma predeterminada

El valor predeterminado distribuido es formats: [html] y nada más, por lo que la API que necesita cualquier script permanece cerrada hasta que la habilite.

curl -s -o /dev/null -w '%{http_code}\n' \
  'http://127.0.0.1:8888/search?q=test&format=json'

Esto imprime 403, porque la ruta de búsqueda llama a flask.abort(403) cuando el formato solicitado no aparece en search.formats. Añada el formato y reinicie el servicio:

search:
  formats:
    - html
    - json

El archivo de configuración de searx no tiene ninguna clave formats, por lo que su salida JSON estaba disponible directamente. Todos los scripts y fragmentos de código de esa época dan por hecho lo mismo, y el modo de fallo es un 403 sin explicación. Si va a integrar una instancia con herramientas, proporcionar a un agente un endpoint de SearXNG para realizar búsquedas empieza con este ajuste.

Por qué fallan los tutoriales de Searx copiados y pegados

Cada una de estas líneas aparece en guías que todavía tienen buena posición en los resultados, y cada una falla o induce a error en una instalación actual.

  • sudo apt install searx en Ubuntu 24.04 se detiene en E: Unable to locate package searx porque el paquete se publicó por última vez en 22.04.
  • pip install searx termina correctamente e instala la versión 0.17.0, de julio de 2020. No avisa de que es anterior al fork.
  • git clone https://github.com/asciimoo/searx todavía funciona porque GitHub redirige el nombre antiguo del propietario y entrega el árbol de abril de 2023.
  • Los pasos que modifican searx/settings.yml en el árbol de código fuente no cambian nada en SearXNG, que lee /etc/searxng/settings.yml.
  • Los pasos que instalan filtron o morty vuelven a construir componentes que SearXNG ya incluye.
  • Una URL redis: para el limitador está un cambio de nombre por detrás de la clave actual valkey:.

Las guías de SearXNG también quedan obsoletas, y la URL del clon es la forma más rápida de fechar una. Los archivos de Compose estaban antes en un repositorio searxng-docker independiente. Ese repositorio se archivó en marzo de 2026 y sus archivos se trasladaron a container/ en el repositorio principal. El inicio rápido actual con contenedores de la documentación es:

mkdir -p ./searxng/core-config/
cd ./searxng/
curl -fsSL \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .env
nano .env
docker compose up -d

Modifique .env antes del último comando. La imagen asigna las variables de entorno a las claves de configuración, por lo que SEARXNG_SECRET se convierte en server.secret_key y SEARXNG_BASE_URL en server.base_url. La instalación automatizada en el host sigue una ruta distinta con el mismo resultado:

git clone https://github.com/searxng/searxng.git searxng
cd searxng
sudo -H ./utils/searxng.sh install all

Esto crea el usuario searxng, el entorno virtual en /usr/local/searxng y el servicio uWSGI, que es la configuración de referencia en la documentación de SearXNG. El recorrido más detallado de esta ruta está en instalar SearXNG en un VPS propio.

Instancia pública o su propia instancia

Una instancia pública es un servidor de otra persona que termina su conexión TLS (transport layer security), por lo que el software de ese servidor lee su consulta como texto sin cifrar. La documentación de SearXNG plantea claramente la cuestión de la confianza: debe confiar en el administrador y no puede saber si las solicitudes se registran, se agregan o se envían a terceros. La lista visible es breve y completa. La pila del operador puede ver el texto de la consulta, la hora, la dirección IP desde la que llega la solicitud, el agente de usuario del navegador y la cookie de preferencias que contiene su configuración. El operador también controla el código, por lo que cualquier parche que aplique se ejecuta en cada búsqueda que realice allí.

Una configuración predeterminada facilita que esto se registre por accidente. Searx enviaba las búsquedas mediante POST. SearXNG releases method: "GET", con el comentario de que POST mantiene las consultas fuera del historial del navegador, pero causa problemas de usabilidad. Con GET, la consulta queda en la línea de solicitud, por lo que se escribe de forma predeterminada en el registro de acceso del reverse proxy y en el historial del navegador. Ese es el comportamiento normal de un servidor web. Conviene saberlo antes de elegir en qué servidor ocurrirá.

Ejecutar su propia instancia cambia el punto en el que debe depositar la confianza, pero no elimina esa necesidad. Usted controla el código y los registros. Si prefiere no publicar un nombre de host ni un certificado TLS para un único equipo de usuario, acceder a ella mediante un servicio onion v3 mantiene la instancia fuera del DNS público y permite acceder a ella desde cualquier lugar. A cambio, los motores upstream ven una única dirección para todas sus búsquedas. En una instancia para un solo usuario, cada consulta puede vincularse con usted en lugar de mezclarse con las consultas de otros usuarios. Una instancia pública con mucho tráfico le proporciona ese anonimato colectivo y evita que usted gestione los registros. Elija la propiedad que considere más importante. Si quiere revisar primero la lista completa de riesgos, si es seguro usar SearXNG la analiza.

Una consideración práctica para un VPS. Los rangos de direcciones de los centros de datos se marcan como sospechosos antes que las conexiones domésticas. Por eso, una instancia nueva puede encontrarse con CAPTCHAs en algunos motores durante las primeras búsquedas. Ese es el comportamiento de suspensión descrito arriba; no es un error de configuración.

Si ya ejecuta una instancia de Searx

Nada deja de funcionar el día que lea esto. El servidor seguirá funcionando hasta que un cambio posterior rompa otro motor; después, la instancia permanecerá averiada. Planifique la migración y no copie el archivo de configuración. Empiece con la plantilla de SearXNG y vuelva a añadir sólo lo que haya cambiado de forma intencionada: el nombre de la instancia, safe_search, los motores que haya habilitado o deshabilitado por nombre y los valores predeterminados de la interfaz. Los nombres y las opciones de los motores cambiaron en el fork. Compruebe cada uno en la documentación actual en lugar de asumir que la clave sigue existiendo. Las reglas de Filtron y una URL de morty no tienen equivalente, porque esas funciones ahora forman parte de la aplicación.

Ejecute la nueva instancia en otro puerto mientras la antigua siga activa. La migración funciona cuando la página principal devuelve 200, una búsqueda devuelve resultados de más de un motor y /stats/errors está vacío o sólo muestra fallos que entiende. Después, cambie el reverse proxy a la nueva instancia y detenga el servicio antiguo.

FAQ

¿Sigue muerto Searx en 2026?

El repositorio no está archivado, así que nada impide clonarlo, pero el proyecto ya no recibe mantenimiento. El último commit de código se incorporó en abril de 2023 y el README contiene la frase «Searx is no longer maintained». Compruébelo con curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at' y revise después los mensajes de los commits recientes, porque la fecha de un push puede corresponder únicamente a una edición de la documentación. En un metabuscador, la falta de mantenimiento significa que los resultados empeoran por sí solos, ya que cada módulo de motor depende de un sitio ascendente que sigue cambiando.

¿Todavía puedo instalar Searx con apt o pip?

No en los sistemas actuales, ni de forma útil donde todavía sea posible. Ubuntu empaquetó searx por última vez en 22.04, en la versión 1.0.0, por lo que sudo apt install searx en 24.04 devuelve E: Unable to locate package searx. Debian incluyó la versión 1.1.0 en Debian 12 y la eliminó de testing en octubre de 2023, así que Debian 13 no tiene ningún paquete. PyPI todavía ofrece la versión 0.17.0 de julio de 2020, que es anterior al propio fork. Instale SearXNG.

¿Funcionará mi archivo searx settings.yml antiguo en SearXNG?

No. Copie los valores, no el archivo. SearXNG lee /etc/searxng/settings.yml y espera use_default_settings: true al principio, por lo que su archivo actúa como una capa sobre los valores predeterminados incluidos. Un archivo antiguo de searx es una configuración completa con nombres de claves diferentes. Además, no contiene limiter, ningún bloque valkey ni ninguna lista formats. Empiece con la plantilla de utils/templates/etc/searxng/settings.yml y vuelva a añadir los cambios de uno en uno.

¿Por qué mi propia instancia de SearXNG devuelve menos resultados que una instancia pública?

Algunos motores están suspendidos. Cuando un motor responde con un CAPTCHA o una página de límite de tasa, SearXNG deja de consultarlo durante un tiempo fijo: desde 180 segundos para un rechazo simple hasta 1,296,000 segundos para un CAPTCHA de Cloudflare. La página de resultados informa de ello en «Messages from the search engines» y /stats/errors muestra los fallos con sus motivos. Las direcciones de centros de datos se marcan antes que las conexiones domésticas, por lo que una instancia nueva en un VPS lo detecta pronto.

¿Debo usar una instancia pública de SearXNG o ejecutar la mía?

Ejecute la suya si quiere controlar el código y los registros, y acepta que los motores ascendentes verán una única dirección para todas sus búsquedas. Use una instancia pública si para usted es más importante mezclar sus consultas con las de otras personas que saber qué se registra. En una instancia pública, el operador puede ver el texto de la consulta, la hora, su dirección IP y su user agent, y puede cambiar el código cuando quiera. Una política de registro declarada no se puede verificar desde el exterior.