bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de SearX

calendar_month Jun 29, 2026 schedule 23 min de lectura visibility 8 vistas
Установка SearXNG на VPS: приватный метапоисковик для безопасного поиска
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de SearXNG en VPS: metabuscador privado para una búsqueda segura

TL;DR

En esta guía, configuraremos paso a paso su propio metabuscador privado SearXNG en su servidor privado virtual (VPS) utilizando Docker Compose. SearXNG permite agregar anónimamente resultados de búsqueda de múltiples fuentes, evitando el rastreo y la personalización, ofreciendo un control total sobre su actividad de búsqueda. Obtendrá un servicio de búsqueda completamente funcional, seguro y escalable, accesible a través de HTTPS.

  • Instalará y configurará SearXNG en Ubuntu Server 24.04 LTS.
  • Utilizará Docker Compose para el aislamiento y la facilidad de gestión del servicio.
  • Asegurará el acceso seguro a través de HTTPS con un certificado automático de Let's Encrypt, configurado por Caddy.
  • Aprenderá los principios básicos de mantenimiento y copia de seguridad de su buscador privado.
  • Obtendrá control sobre sus resultados de búsqueda, eliminando el rastreo y la publicidad dirigida.

Qué configuramos y por qué

Esquema: Qué configuramos y por qué
Esquema: Qué configuramos y por qué

En el mundo digital actual, la privacidad se ha convertido en un recurso cada vez más valioso. Los grandes motores de búsqueda, como Google, Yandex o Bing, recopilan enormes volúmenes de datos sobre nuestras consultas de búsqueda, intereses y comportamiento, que luego se utilizan para publicidad dirigida, la formación de resultados personalizados e incluso la elaboración de perfiles de usuario. Esto no es solo un problema ético, sino también práctico: los resultados personalizados pueden limitar la perspectiva, y el rastreo crea riesgos de seguridad.

Aquí es donde entra en escena SearXNG — un metabuscador gratuito y de código abierto que agrega resultados de más de 70 servicios de búsqueda diferentes (Google, DuckDuckGo, Bing, Wikipedia, Reddit, YouTube y muchos otros), sin almacenar ninguna información sobre el usuario. Actúa como un proxy entre usted y los motores de búsqueda, ocultando eficazmente su dirección IP y su consulta de las fuentes finales. SearXNG no utiliza cookies, no recopila telemetría, no crea perfiles de usuario y no está sujeto a censura o personalización de los resultados.

En resumen, después de completar esta guía, obtendrá un servicio de búsqueda privado y completamente funcional que se ejecutará en su propio servidor. Podrá usarlo para usted, su familia o un pequeño equipo, garantizando el anonimato y la libertad de búsqueda. Obtendrá acceso directo a una internet limpia y sin filtrar, libre de ruido publicitario y sesgos algorítmicos.

Existen varias alternativas para la búsqueda privada. Se pueden utilizar instancias públicas de SearXNG ya preparadas, como las que se enumeran en searx.space, u otros buscadores privados como DuckDuckGo, Brave Search o Startpage. Sin embargo, cada una de estas opciones tiene sus matices:

  • Instancias públicas de SearXNG: Son convenientes, pero aún así confía en el operador de la instancia. Si la instancia está sobrecargada o su operador decide recopilar datos, pierde parte del control. Además, algunas instancias pueden ser bloqueadas o funcionar de manera inestable.
  • DuckDuckGo/Brave Search/Startpage: Son excelentes opciones para muchos usuarios que no quieren complicarse con la configuración. Ofrecen buena privacidad, pero siguen siendo servicios centralizados. Usted confía en su política de privacidad, y pueden estar sujetos a presiones externas o cambios en la política.
  • Soluciones gestionadas en la nube: Algunos proveedores ofrecen el alojamiento de SearXNG como un servicio, pero esto suele ser más caro y aún así implica delegar parte del control.

¿Por qué el autoalojamiento en un VPS es la mejor opción para nuestra audiencia objetivo? Porque le otorga control total. Usted controla el servidor, su configuración, los datos y las políticas. Nadie, excepto usted, tiene acceso a los registros o a su actividad de búsqueda. Es la opción ideal para quienes valoran la máxima privacidad, quieren entender cómo funciona el servicio y están dispuestos a dedicar un poco de tiempo a configurarlo. Además, es una excelente manera de profundizar en el trabajo con Linux, Docker y los servicios de red.

Qué configuración de VPS se necesita para esta tarea

Esquema: Qué configuración de VPS se necesita para esta tarea
Esquema: Qué configuración de VPS se necesita para esta tarea

SearXNG no es una aplicación que consuma muchos recursos para uso individual o un grupo pequeño. Sin embargo, cuantos más consultas y motores de búsqueda utilice, más recursos se necesitarán. Es importante elegir una configuración que garantice un funcionamiento estable y la posibilidad de expansión.

Requisitos mínimos (para 1-5 usuarios):

  • CPU: 1 vCPU (núcleo) con una frecuencia de 2 GHz o superior.
  • RAM: 2 GB de memoria RAM. SearXNG por sí mismo no consume mucho, pero los búferes del kernel, Docker y las cachés pueden utilizar este volumen.
  • Disco: 20-30 GB SSD. El SSD es crítico para el funcionamiento rápido del sistema y los contenedores Docker. El volumen es principalmente necesario para el sistema operativo, las imágenes de Docker y los registros.
  • Red: 100 Mbps. SearXNG enviará y recibirá datos de múltiples motores de búsqueda, por lo que un canal estable y suficientemente amplio es importante.

Plan de VPS recomendado (para 5-20 usuarios o con otros servicios):

Para un funcionamiento más cómodo, especialmente si planea usar SearXNG activamente o alojar otros servicios ligeros en el mismo VPS, se recomienda la siguiente configuración:

  • CPU: 2 vCPU (núcleos) con una frecuencia de 2.5 GHz o superior.
  • RAM: 4 GB de memoria RAM. Esto proporcionará un margen suficiente para cargas máximas y almacenamiento en caché.
  • Disco: 50-80 GB NVMe/SSD. Un disco rápido mejorará significativamente la capacidad de respuesta del sistema.
  • Red: 200-500 Mbps. Un canal más amplio garantizará una rápida obtención de resultados de todas las fuentes.

Encontrar un VPS con las características indicadas no será difícil con la mayoría de los proveedores. También es importante prestar atención a la reputación del proveedor y la calidad del soporte.

Cuándo se necesita un dedicado, no un VPS

El paso a un servidor dedicado se justifica si:

  • Carga alta: Planea atender a cientos o miles de usuarios, o SearXNG será parte de una infraestructura más grande con una frecuencia de consultas muy alta.
  • Muchos otros servicios: Además de SearXNG, aloja en el servidor varias otras aplicaciones que consumen muchos recursos (por ejemplo, bases de datos, servidores de juegos, aplicaciones web de alta carga).
  • Requisitos específicos de hardware: Necesita acceso directo a los recursos de hardware, por ejemplo, para usar procesadores especializados, una gran cantidad de memoria RAM (más de 64 GB) o subsistemas de disco muy rápidos (NVMe RAID).
  • Máximo rendimiento y aislamiento: Quiere excluir a los "vecinos ruidosos" y obtener un rendimiento garantizado sin virtualización.

Para la mayoría de los escenarios de uso de SearXNG, incluso para un equipo pequeño, un VPS será más que suficiente y económicamente ventajoso. Si aún así decide que necesita un servidor dedicado, asegúrese de que su configuración cumpla con sus requisitos de rendimiento. Por ejemplo, un servidor dedicado adecuado puede ofrecer 4-8 núcleos físicos, 16-32 GB de RAM y 2 discos NVMe de 500 GB.

Ubicación: en qué influye

La elección de la ubicación geográfica del VPS influye en varios aspectos clave:

  • Latencia: Cuanto más cerca esté el servidor de usted y sus usuarios, menor será la latencia al acceder a SearXNG. Esto es especialmente importante para una respuesta rápida del buscador.
  • Leyes y jurisdicción: La ubicación del servidor determina bajo la jurisdicción de qué país caen sus datos y operaciones. Para la privacidad, muchos prefieren países con leyes sólidas de protección de datos (por ejemplo, Países Bajos, Alemania, Suiza).
  • Disponibilidad de motores de búsqueda: Algunos motores de búsqueda pueden mostrar resultados diferentes o tener restricciones de acceso dependiendo de la dirección IP desde la que provienen las consultas. Elegir una ubicación cercana a los principales centros de datos de los buscadores puede mejorar la calidad y velocidad de obtención de resultados.

Se recomienda elegir una ubicación geográficamente cercana a la mayoría de sus usuarios y que se encuentre en una jurisdicción favorable a la privacidad.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de instalar SearXNG, es necesario realizar una serie de configuraciones básicas en su VPS. Utilizaremos Ubuntu Server 24.04 LTS como el sistema operativo más actual y compatible para el año 2026.

1. Acceso SSH y creación de usuario con sudo

Se asume que ya tiene acceso SSH al servidor con la cuenta root o un usuario con privilegios sudo. Se desaconseja encarecidamente trabajar directamente como root. Crearemos un nuevo usuario (por ejemplo, searxng_admin) y le otorgaremos privilegios sudo.


# Creación de un nuevo usuario
sudo adduser searxng_admin

# Añadir el usuario al grupo sudo
sudo usermod -aG sudo searxng_admin

Ahora, cierre la sesión de root e inicie sesión con el nuevo usuario searxng_admin, utilizando su contraseña.

2. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda configurar la autenticación por claves SSH y deshabilitar la autenticación por contraseña.

En su máquina local, genere una clave SSH si aún no tiene una:


ssh-keygen -t ed25519 -C "[email protected]"

Copie la clave pública al servidor:


ssh-copy-id searxng_admin@ВАШ_IP_СЕРВЕРА

Luego, en el servidor, edite el archivo de configuración del demonio SSH /etc/ssh/sshd_config:


sudo nano /etc/ssh/sshd_config

Busque las siguientes líneas y modifíquelas (o añádalas si no existen):


# Deshabilitar el inicio de sesión para root
PermitRootLogin no

# Deshabilitar la autenticación por contraseña (¡después de asegurarse de que el inicio de sesión por clave funciona!)
PasswordAuthentication no

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:


sudo systemctl restart sshd

Importante: Asegúrese de poder iniciar sesión con la clave SSH antes de deshabilitar PasswordAuthentication, ¡de lo contrario, corre el riesgo de perder el acceso al servidor!

3. Actualización del sistema

Siempre comience actualizando el sistema para asegurarse de que tiene los últimos parches de seguridad y versiones de paquetes instalados.


sudo apt update          # Actualizar la lista de paquetes
sudo apt upgrade -y      # Actualizar los paquetes instalados
sudo apt autoremove -y   # Eliminar dependencias innecesarias

4. Configuración del firewall (UFW)

Configuraremos un firewall básico UFW (Uncomplicated Firewall) para permitir solo las conexiones necesarias.


sudo apt install ufw -y              # Instalación de UFW
sudo ufw default deny incoming       # Denegar todas las conexiones entrantes por defecto
sudo ufw default allow outgoing      # Permitir todas las conexiones salientes por defecto
sudo ufw allow ssh                   # Permitir SSH (puerto 22)
sudo ufw allow http                  # Permitir HTTP (puerto 80)
sudo ufw allow https                 # Permitir HTTPS (puerto 443)
sudo ufw enable                      # Habilitar UFW
sudo ufw status verbose              # Verificar el estado de UFW

Al habilitar UFW, se le pedirá que confirme la acción. Escriba y y presione Enter.

5. Instalación de Fail2Ban

Fail2Ban ayuda a proteger el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se originan muchos intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y         # Instalación de Fail2Ban
sudo systemctl enable fail2ban       # Habilitar el inicio automático de Fail2Ban
sudo systemctl start fail2ban        # Iniciar Fail2Ban

Crearemos un archivo de configuración local para que nuestros cambios no sean sobrescritos durante una actualización del paquete:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edite /etc/fail2ban/jail.local para configurar los parámetros, por ejemplo, añadir su dirección IP a ignoreip:


sudo nano /etc/fail2ban/jail.local

Busque la sección [DEFAULT] y modifique bantime (tiempo de bloqueo), findtime (período en el que se cuentan los intentos) y maxretry (número máximo de intentos). Añada su dirección IP a ignoreip para evitar ser bloqueado accidentalmente:


[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 SU_DIRECCIÓN_IP_LOCAL
bantime = 1h
findtime = 10m
maxretry = 5

Guarde y cierre el archivo. Reinicie Fail2Ban para aplicar los cambios:


sudo systemctl restart fail2ban

Ahora su servidor está listo para la instalación de SearXNG.

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Instalaremos SearXNG utilizando Docker Compose. Este enfoque proporciona aislamiento de la aplicación, simplifica la gestión de dependencias y facilita las actualizaciones. Para 2026, Docker y Docker Compose son el estándar de facto para el despliegue de muchos servicios web.

1. Instalación de Docker Engine y Docker Compose

Primero, instalaremos los componentes necesarios de Docker. Utilizaremos los repositorios oficiales de Docker para obtener las versiones más recientes.


# Actualización del índice de paquetes (actualizado para 2026)
sudo apt update

# Instalación de paquetes necesarios para usar el repositorio de Docker a través de HTTPS
sudo apt install -y ca-certificates curl gnupg

# Añadir la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Añadir el repositorio de Docker a las fuentes de APT
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Actualizar el índice de paquetes después de añadir el repositorio de Docker
sudo apt update

# Instalación de Docker Engine, Docker CLI y Docker Compose (versiones actuales para 2026)
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Añadir el usuario actual al grupo docker para trabajar con Docker sin sudo
sudo usermod -aG docker $USER

# Aplicar cambios para el grupo docker (es necesario volver a iniciar sesión o ejecutar newgrp docker)
newgrp docker

# Verificar la instalación de Docker
docker run hello-world

El comando docker run hello-world debería mostrar un mensaje de bienvenida, confirmando la instalación exitosa de Docker.

2. Creación de directorio para SearXNG y configuración

Crearemos un directorio de trabajo para SearXNG, donde se almacenarán todos los archivos de configuración y Docker Compose.


mkdir ~/searxng
cd ~/searxng

3. Creación del archivo docker-compose.yml

Cree el archivo docker-compose.yml. Este archivo definirá cómo Docker debe ejecutar SearXNG.


nano docker-compose.yml

Pegue el siguiente contenido. Esta es una configuración básica que utiliza la imagen oficial de SearXNG y el servidor proxy Caddy para HTTPS.


version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest # Versión actual de SearXNG para 2026
    container_name: searxng
    ports:
      - "8080:8080" # SearXNG estará disponible en el puerto 8080 dentro del contenedor
    volumes:
      - ./searxng_settings.yml:/etc/searxng/settings.yml:ro # Montamos nuestra configuración
      - ./data/searxng:/data # Directorio para los datos y la caché de SearXNG
    environment:
      - SEARXNG_BASE_URL=https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/ # Reemplace con su dominio
      - SEARXNG_URL=http://searxng:8080/ # URL interna para Caddy
    restart: unless-stopped
    networks:
      - searxng_network

  caddy:
    image: caddy:2-alpine # Versión actual de Caddy para 2026
    container_name: caddy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro # Montamos nuestra configuración de Caddy
      - ./data/caddy:/data # Directorio para los datos de Caddy (certificados Let's Encrypt)
    environment:
      - CADDY_EMAIL=ВАШ[email protected] # Email para Let's Encrypt
    restart: unless-stopped
    networks:
      - searxng_network

networks:
  searxng_network:
    driver: bridge

Importante: Reemplace ВАШ_ДОМЕН_ДЛЯ_SEARXNG con su dominio real (por ejemplo, searx.mydomain.com) y ВАШ[email protected] con su dirección de correo electrónico para recibir notificaciones de Let's Encrypt.

4. Configuración del archivo searxng_settings.yml

SearXNG tiene muchas configuraciones que se pueden modificar en el archivo settings.yml. Para empezar, crearemos un archivo base.


nano searxng_settings.yml

Pegue el siguiente contenido mínimo. Para obtener una lista completa de configuraciones, consulte la documentación oficial de SearXNG.


# searxng_settings.yml - Ejemplo de configuración básica

# Configuraciones generales
debug: False
limiter: True # Habilitar limitación de velocidad de solicitudes
user_agent: 'SearXNG/1.3' # Ejemplo de user-agent, actual para 2026

# Configuraciones de privacidad
no_cookie_tracking: True
no_session_tracking: True
no_result_urls_tracking: True

# Configuraciones de motores (ejemplo - los principales están habilitados)
# Para la lista completa y configuración, consulte https://docs.searxng.org/admin/settings.html#engines
engines:
  - google
  - duckduckgo
  - bing
  - wikipedia
  - startpage
  - yandex

# Configuraciones de interfaz (opcional)
# theme: simple
# autocomplete: 'duckduckgo'

# Opciones adicionales
# image_proxy: True
# timezone: 'Europe/Moscow'

# Clave secreta para proteger sesiones (¡DEBE GENERAR LA SUYA PROPIA!)
secret_key: "GENERE_SU_PROPIA_CLAVE_SECRETA"

Muy importante: Reemplace "GENERE_SU_PROPIA_CLAVE_SECRETA" con una cadena aleatoria. Puede generarla, por ejemplo, así:


python3 -c 'import secrets; print(secrets.token_hex(32))'

Copie la cadena resultante y péguela en searxng_settings.yml.

5. Creación del archivo Caddyfile

Caddy actuará como un proxy inverso, redirigiendo las solicitudes a SearXNG y configurando automáticamente HTTPS con Let's Encrypt.


nano Caddyfile

Pegue el siguiente contenido:


ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
    # Reemplace con su dominio, por ejemplo, searx.mydomain.com
    # Caddy obtendrá automáticamente un certificado SSL de Let's Encrypt

    reverse_proxy searxng:8080 {
        # Redirige las solicitudes al contenedor SearXNG
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Encabezados adicionales para seguridad (recomendado)
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains"
        X-Frame-Options DENY
        X-Content-Type-Options nosniff
        X-XSS-Protection "1; mode=block"
        Referrer-Policy no-referrer-when-downgrade
    }

    # Registro (opcional)
    log {
        output file /data/access.log {
            roll_size 10mb
            roll_keep 5
            roll_keep_for 720h
        }
        format json
    }
}

Importante: Reemplace ВАШ_ДОМЕН_ДЛЯ_SEARXNG con su dominio real. Asegúrese de que el registro DNS (tipo A) para este dominio apunte a la dirección IP de su VPS. Sin un registro DNS correcto, Caddy no podrá obtener un certificado SSL.

6. Ejecución de SearXNG con Docker Compose

Una vez creados todos los archivos necesarios, puede iniciar SearXNG.


# Creación de directorio para datos de Caddy y SearXNG
mkdir -p data/caddy data/searxng

# Iniciar contenedores en segundo plano
docker compose up -d

# Verificar el estado de los contenedores en ejecución
docker compose ps

El comando docker compose ps debería mostrar que los contenedores searxng y caddy están en ejecución y en estado Up. Si Caddy no se inicia inmediatamente, dele unos minutos para obtener el certificado de Let's Encrypt. Puede verificar los registros de Caddy si surgen problemas:


docker compose logs caddy

Ahora su metabuscador privado SearXNG debería estar accesible a través de su nombre de dominio mediante HTTPS.

Configuración

Esquema: Configuración
Esquema: Configuración

Después de la instalación básica de SearXNG y Caddy, el siguiente paso es configurarlos aún más para optimizar el rendimiento, la seguridad y la funcionalidad.

1. Configuración de SearXNG: archivo searxng_settings.yml

El archivo searxng_settings.yml, que creamos anteriormente, es central para la configuración de SearXNG. Puede encontrar una lista completa de opciones en la documentación oficial de SearXNG. Aquí hay algunas configuraciones importantes a considerar:

Edite el archivo:


nano ~/searxng/searxng_settings.yml

Ejemplos de configuraciones adicionales:


# ... (configuraciones anteriores) ...

# Configuraciones de motores (ejemplo: añadir Wikipedia, Reddit, YouTube)
# Puede habilitar/deshabilitar cualquier motor.
# Algunos motores pueden requerir claves API (ver documentación).
engines:
  - google
  - duckduckgo
  - bing
  - wikipedia
  - reddit
  - youtube
  # - github # Ejemplo de motor para desarrolladores
  # - stackoverflow # Otro motor útil

# Configuraciones de limitación de velocidad de solicitudes (limiter)
# Ayuda a prevenir abusos y bloqueos por parte de los motores de búsqueda.
limiter:
  enabled: True
  rate: 10/minute # Máximo 10 solicitudes por minuto por IP
  burst: 5        # 5 solicitudes adicionales por encima del límite por un corto tiempo

# Configuraciones de proxy para solicitudes a motores (si es necesario)
# proxy:
#   url: "socks5h://127.0.0.1:9050" # Ejemplo para Tor
#   type: "socks5"

# Configuraciones de interfaz
autocomplete: 'duckduckgo' # Habilitar el autocompletado de consultas a través de DuckDuckGo
theme: 'oscar' # O 'simple', 'garuda', 'nord', 'kavin', etc.
image_proxy: True # Proxy de imágenes para privacidad adicional
suggestions: True # Mostrar sugerencias de búsqueda

# Configuraciones de seguridad
# allowed_hosts:
#   - "ВАШ_ДОМЕН_ДЛЯ_SEARXNG" # Especifique su dominio para protección adicional

# Encabezados HTTP
# http_headers:
#   X-Frame-Options: "DENY"
#   X-Content-Type-Options: "nosniff"

# Clave secreta - ¡DEBE GENERAR LA SUYA PROPIA!
secret_key: "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ"

Después de realizar cambios en searxng_settings.yml, es necesario reiniciar el contenedor de SearXNG para que surtan efecto:


docker compose restart searxng

2. Configuración de Caddy: archivo Caddyfile

Caddy ya está configurado para proporcionar HTTPS y proxy de solicitudes a SearXNG. Puede añadir encabezados de seguridad adicionales, configurar el registro o añadir otros dominios si es necesario.

Edite el archivo:


nano ~/searxng/Caddyfile

Ejemplo de adición de encabezados CORS (si planea usar SearXNG desde otras aplicaciones web):


ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
    # ... (configuraciones anteriores) ...

    # Encabezados adicionales para CORS (Cross-Origin Resource Sharing)
    header / {
        Access-Control-Allow-Origin "" # Permitir a todos. Use un dominio específico para mayor seguridad.
        Access-Control-Allow-Methods "GET, POST, OPTIONS"
        Access-Control-Allow-Headers "Content-Type, Authorization"
    }

    # ... (otras configuraciones) ...
}

Después de modificar Caddyfile, reinicie el contenedor de Caddy:


docker compose restart caddy

3. Secretos y variables de entorno

Como se muestra en docker-compose.yml, ya estamos usando variables de entorno para SEARXNG_BASE_URL y CADDY_EMAIL. Para la secret_key de SearXNG, montamos el archivo searxng_settings.yml. Si desea que la clave secreta no se almacene en un archivo, puede pasarla como una variable de entorno en docker-compose.yml:


  searxng:
    # ...
    environment:
      - SEARXNG_BASE_URL=https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/
      - SEARXNG_URL=http://searxng:8080/
      - SEARXNG_SECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_ИЗ_ПЕРЕМЕННОЙ_ОКРУЖЕНИЯ # Añadir esta línea
    # ...

En este caso, deberá eliminar la línea secret_key: "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ" de searxng_settings.yml. Esto puede ser útil para la automatización de la implementación, donde la clave secreta se extrae de un sistema de gestión de secretos.

4. Verificación de la operatividad

Después de todas las configuraciones, nos aseguraremos de que SearXNG funcione correctamente.

Verificación de disponibilidad a través de curl:

curl -I https://ВАШ_ДОМЕН_ДЛЯ_SEARXNG/

Debería recibir un estado HTTP 200 OK y encabezados que indiquen Caddy y SearXNG.


HTTP/2 200
alt-svc: h3=":443"; ma=2592000
content-length: 12345
content-type: text/html; charset=utf-8
server: Caddy
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
date: Wed, 01 Jan 2026 12:00:00 GMT
Verificación de servicios internos de Docker:

Asegúrese de que los contenedores estén en ejecución y no muestren errores:


docker compose ps
docker compose logs searxng
docker compose logs caddy

No debería haber errores críticos en los registros. Si los hay, examínelos cuidadosamente para determinar la causa.

Verificación en el navegador:

Abra su dominio (https://ВАШ_ДОМЕН_PARA_SEARXNG/) en un navegador web. Debería ver la interfaz de SearXNG. Intente realizar algunas búsquedas para asegurarse de que los resultados se recuperen y muestren correctamente.

Si todos los pasos se han completado correctamente, su metabuscador privado SearXNG está completamente configurado y listo para funcionar.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son cruciales para el funcionamiento estable y seguro de cualquier servicio, incluido SearXNG. Aunque SearXNG en sí mismo no almacena datos confidenciales del usuario (ya que es un motor de búsqueda privado), es importante guardar su configuración y los datos de Caddy (certificados Let's Encrypt) para evitar la reconfiguración en caso de fallo.

1. Qué hacer copia de seguridad

Para SearXNG en Docker Compose, los elementos principales que requieren copia de seguridad son:

  • Archivos de configuración de SearXNG: searxng_settings.yml. Este es el archivo principal que define el comportamiento de su motor de búsqueda.
  • Archivos de Docker Compose: docker-compose.yml. Define cómo iniciar SearXNG y Caddy.
  • Archivos de configuración de Caddy: Caddyfile. Contiene la configuración de su proxy inverso y HTTPS.
  • Datos de Caddy: El directorio ./data/caddy (en nuestro caso ~/searxng/data/caddy). Aquí se almacenan los certificados de Let's Encrypt y otra información de servicio de Caddy.
  • Datos de SearXNG: El directorio ./data/searxng (en nuestro caso ~/searxng/data/searxng). Puede contener caché, registros y otros datos temporales de SearXNG.

Los datos del usuario no se copian, ya que SearXNG no los almacena.

2. Script simple de copia de seguridad automática

Crearemos un script simple que archivará todos los archivos y directorios necesarios. Como herramienta de copia de seguridad, se puede usar tar para archivar y rsync para sincronizar con un almacenamiento remoto. Para escenarios más avanzados, se pueden considerar borgbackup o restic, que admiten la deduplicación y el cifrado.

Cree un archivo de script, por ejemplo, backup_searxng.sh, en su directorio de inicio:


nano ~/backup_searxng.sh

Pegue el siguiente contenido:


#!/bin/bash

# Ruta al directorio de SearXNG
SEARXNG_DIR="/home/searxng_admin/searxng" # Reemplace con la ruta a su directorio de SearXNG
BACKUP_DIR="/var/backups/searxng"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/searxng_backup_$TIMESTAMP.tar.gz"
RETENTION_DAYS=7 # Mantener copias de seguridad de los últimos 7 días

# Creación del directorio para copias de seguridad, si no existe
mkdir -p "$BACKUP_DIR"

echo "Iniciando la copia de seguridad de SearXNG en $BACKUP_FILE..."

# Detener SearXNG para la consistencia de los datos (opcional, pero recomendado para datos de caddy/searxng)
# docker compose -f "$SEARXNG_DIR/docker-compose.yml" stop

# Archivando los archivos y directorios necesarios
tar -czf "$BACKUP_FILE" -C "$SEARXNG_DIR" \
    docker-compose.yml \
    searxng_settings.yml \
    Caddyfile \
    data/caddy \
    data/searxng \
    --remove-files-from data/searxng/cache # Limpieza de la caché de SearXNG, si es grande

# Iniciar SearXNG de nuevo (si se detuvo)
# docker compose -f "$SEARXNG_DIR/docker-compose.yml" start

echo "Copia de seguridad completada."

# Eliminación de copias de seguridad antiguas
echo "Eliminando copias de seguridad antiguas (más de $RETENTION_DAYS días)..."
find "$BACKUP_DIR" -name "searxng_backup_.tar.gz" -type f -mtime +$RETENTION_DAYS -delete
echo "Limpieza de copias de seguridad antiguas completada."

# Ejemplo de envío de copia de seguridad a un servidor remoto a través de rsync
# REMOTE_USER="backup_user"
# REMOTE_HOST="your_backup_server_ip"
# REMOTE_PATH="/mnt/backups/searxng/"
# rsync -avzh "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"

# Ejemplo de envío de copia de seguridad a un almacenamiento compatible con S3 usando s3cmd/awscli
# s3cmd put "$BACKUP_FILE" s3://your-s3-bucket/searxng/

Haga el script ejecutable:


chmod +x ~/backup_searxng.sh

Configure cron para ejecutar el script automáticamente. Por ejemplo, para una copia de seguridad diaria a las 03:00 de la madrugada:


crontab -e

Añada la siguiente línea al final del archivo crontab:


0 3   * /home/searxng_admin/backup_searxng.sh >> /var/log/searxng_backup.log 2>&1

Esto ejecutará el script diariamente a las 3 de la madrugada y redirigirá la salida al archivo de registro /var/log/searxng_backup.log.

3. Dónde almacenar las copias de seguridad

No se recomienda almacenar las copias de seguridad en el mismo servidor que el servicio principal. Si el servidor falla (por ejemplo, un fallo de disco), perderá tanto el servicio como las copias de seguridad. Lugares de almacenamiento recomendados:

  • Almacenamiento externo compatible con S3: Servicios como Backblaze B2, Amazon S3, DigitalOcean Spaces, MinIO (autoalojado), ofrecen almacenamiento de objetos fiable y asequible. Puede usar s3cmd o awscli para la carga automática de copias de seguridad.
  • VPS o servidor dedicado separado: Si tiene otro servidor, puede usar rsync o scp para copiar las copias de seguridad.
  • NAS/almacenamiento local: Para uso personal, puede configurar la copia de seguridad en un almacenamiento de red local.

Siempre cifre las copias de seguridad, especialmente si se almacenan en servicios de terceros. Herramientas como borgbackup o restic lo hacen automáticamente.

4. Actualizaciones: rolling vs maintenance window

Mantener el sistema y las aplicaciones actualizadas es fundamental para la seguridad y la estabilidad.

  • Actualización del sistema operativo: Ejecute regularmente sudo apt update && sudo apt upgrade -y. Para Ubuntu LTS, se recomienda hacerlo al menos una vez al mes. Considere usar unattended-upgrades para aplicar automáticamente los parches de seguridad.
  • Actualización de imágenes Docker (SearXNG, Caddy):
    • Rolling updates (actualizaciones continuas): Para SearXNG, que no tiene una base de datos o estado complejo, simplemente puede ejecutar periódicamente:
      
      docker compose pull # Descargar las últimas versiones de las imágenes
      docker compose up -d # Volver a crear los contenedores con las nuevas imágenes
      
      Esto se puede hacer cada pocas semanas. Caddy actualizará automáticamente sus certificados Let's Encrypt si están a punto de caducar.
    • Maintenance window (ventana de mantenimiento): Si desea asegurarse de que no haya problemas, planifique una pequeña ventana de mantenimiento (por ejemplo, 15-30 minutos una vez al mes) cuando ejecute manualmente docker compose pull && docker compose up -d y luego verifique los registros y la operatividad. Esto le permite estar preparado para posibles problemas y revertir los cambios si algo sale mal.

Siempre haga una copia de seguridad antes de realizar actualizaciones importantes o cambios de configuración.

Solución de problemas + Preguntas frecuentes

Durante la instalación y operación de SearXNG, pueden surgir varios problemas. Aquí se recopilan los errores típicos y las respuestas a las preguntas frecuentes.

SearXNG no se inicia o muestra un error 502 Bad Gateway

Qué verificar: Asegúrese de que el contenedor SearXNG esté en ejecución y sea accesible a través del puerto interno 8080. Revise los registros del contenedor SearXNG.


docker compose ps
docker compose logs searxng
        
Busque errores de inicialización, problemas de acceso al archivo searxng_settings.yml o parámetros incorrectos. Si en los registros de Caddy ve "502 Bad Gateway", significa que Caddy no puede comunicarse con el contenedor SearXNG. Verifique que SEARXNG_URL=http://searxng:8080/ en docker-compose.yml sea correcto y corresponda al nombre del servicio SearXNG en el mismo archivo.

Cómo solucionarlo: Corrija los errores en searxng_settings.yml (por ejemplo, errores de sintaxis YAML), asegúrese de que la ruta al archivo en docker-compose.yml sea correcta. Reinicie el contenedor SearXNG: docker compose restart searxng.

HTTPS no funciona, el navegador muestra un error de certificado

Qué verificar: Caddy obtiene automáticamente los certificados Let's Encrypt.


docker compose logs caddy
        
Busque mensajes de error al obtener el certificado (por ejemplo, "tls: no ACME client was able to solve the challenge"). Esto a menudo indica problemas con el DNS o el firewall. Asegúrese de que el registro DNS (tipo A) de su dominio apunte a la dirección IP de su VPS. Verifique que los puertos 80 y 443 estén abiertos en UFW: sudo ufw status verbose.

Cómo solucionarlo: Corrija el registro DNS si es incorrecto. Abra los puertos 80 y 443 en UFW. Asegúrese de que el dominio correcto esté especificado en Caddyfile. Reinicie Caddy: docker compose restart caddy.

SearXNG funciona lento o muestra muchos captchas

Qué verificar: El funcionamiento lento puede ser causado por una sobrecarga del servidor, una conexión a internet lenta o bloqueos frecuentes por parte de los motores de búsqueda. Una gran cantidad de captchas indica que los motores de búsqueda identifican sus solicitudes como automáticas. Verifique la carga de CPU/RAM en el VPS: htop. Revise los registros de SearXNG en busca de errores de los motores de búsqueda.

Cómo solucionarlo: Aumente los límites de solicitudes en searxng_settings.yml (sección limiter). Considere usar servidores proxy (por ejemplo, Tor o proxies externos) para las solicitudes a los motores de búsqueda (configuración proxy en searxng_settings.yml). Si el VPS está sobrecargado, considere actualizar los recursos (CPU/RAM/red). Intente desactivar algunos motores de búsqueda que con mayor frecuencia causan captchas.

¿Qué configuración mínima de VPS es adecuada?

Para SearXNG (un usuario o un grupo muy pequeño) se requerirá un mínimo de 1 vCPU, 2 GB de RAM y 20-30 GB de disco SSD. Esta configuración será suficiente para un funcionamiento básico, pero con un uso activo o la adición de otros servicios en el VPS, pueden producirse retrasos. Se recomienda elegir configuraciones más potentes si planea usar SearXNG regularmente o para varios usuarios.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los usuarios que instalan SearXNG para uso personal o para un equipo pequeño, un servidor privado virtual (VPS) es la opción óptima. Ofrece suficiente rendimiento, flexibilidad y rentabilidad. Un servidor dedicado solo tiene sentido considerarlo en casos de carga muy alta (cientos de usuarios), cuando SearXNG forma parte de una infraestructura grande, o si necesita control total sobre el hardware y el máximo rendimiento garantizado sin virtualización. En la mayoría de los escenarios, un VPS será más que suficiente.

¿Cómo actualizar SearXNG a una nueva versión?

Dado que usamos Docker Compose, la actualización es muy sencilla:


cd ~/searxng
docker compose pull      # Descarga las últimas versiones de las imágenes de SearXNG y Caddy
docker compose up -d     # Recrea los contenedores, usando las nuevas imágenes
docker image prune -f    # Elimina las imágenes Docker antiguas no utilizadas para ahorrar espacio
        
Antes de actualizar, se recomienda hacer una copia de seguridad de los archivos de configuración.

¿Puedo añadir mis propios motores de búsqueda o configurarlos?

Sí, SearXNG soporta muchos motores de búsqueda y permite su configuración detallada. En el archivo searxng_settings.yml, en la sección engines, puede habilitar o deshabilitar los motores que necesite. Algunos motores (por ejemplo, Google Custom Search, Reddit) pueden requerir la obtención de claves API, que deberán especificarse en el mismo archivo. La documentación completa sobre la configuración de motores está disponible en el sitio web oficial de SearXNG.

¿Cómo restringir el acceso a mi SearXNG solo a direcciones IP específicas?

Puede configurar Caddy para restringir el acceso. Edite el Caddyfile:


ВАШ_ДОМЕН_ДЛЯ_SEARXNG {
    # ...
    # Restricción de acceso por dirección IP
    # Reemplace ВАШ_IP_АДРЕС con sus IPs permitidas (se pueden varias separadas por espacio)
    # Si la dirección IP no coincide, Caddy devolverá 403 Forbidden
    # remote_ip {
    #     ip_range ВАШ_IP_АДРЕС/32
    #     ip_range ВАШ_ВТОРОЙ_IP_АДРЕС/32
    #     # O usar una subred completa
    #     # ip_range 192.168.1.0/24
    #     policy deny_ip
    # }
    # ...
}
        
Después de modificar el Caddyfile, reinicie Caddy: docker compose restart caddy.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado con éxito su propio metabuscador privado SearXNG en un VPS. Ahora controla su actividad de búsqueda, está protegido del seguimiento y la personalización de resultados, y puede disfrutar de una búsqueda limpia e imparcial en internet. También ha adquirido habilidades básicas para trabajar con Docker Compose, Caddy y la administración de un servidor Linux, lo que es una experiencia valiosa.

¿Qué sigue?

  • Ajustes finos: Explore la documentación completa de SearXNG para adaptar searxng_settings.yml al máximo a sus necesidades. Experimente con diferentes temas, active y desactive motores de búsqueda, configure límites.
  • Integración con el navegador: Configure su navegador (Firefox, Chrome, Brave) para usar su nueva instancia de SearXNG como motor de búsqueda predeterminado. Esto simplificará significativamente su uso.
  • Monitoreo y escalado: Si planea atender a un gran número de usuarios, explore herramientas de monitoreo de servidores (por ejemplo, Prometheus + Grafana) y considere la posibilidad de ejecutar varias instancias de SearXNG detrás de un balanceador de carga.

¿Te fue útil esta guía?

Instalación de Searxng en VPS: metabuscador privado para búsqueda segura
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.