Dimecres, febrer 11, 2026
DIY

Autohostatjar el teu propi cercador amb SearxNG

SearxNG és un metabuscador que afegeix resultats de múltiples motors sense emmagatzemar dades personals. Autohostatjar-lo significa executar la teva pròpia instància, controlant privacitat, personalització i disponibilitat. Aquest enfocament és ideal quan no vols dependre de tercers o busques filtrar resultats segons les teves necessitats.

En implementar SearxNG en la teva infraestructura, tens flexibilitat per ajustar-lo a diferents entorns: ús personal, equips petits, xarxes corporatives o fins i tot com un servei públic dins d’una comunitat. No obstant això, no és un substitut exacte de Google o Bing: alguns motors poden requerir API keys, i la rellevància o cobertura varia. A més, la responsabilitat sobre seguretat i manteniment recau sobre l’ operador.

Aquesta guia aborda el desplegament real i operatiu, des d’instal·lació fins a manteniment, incloent configuració avançada, seguretat, optimització i solució de problemes. La idea és que puguis implementar i mantenir el teu cercador sense haver de buscar més referències disperses ni enfrontar-te a problemes comuns sense solució clara.

1. Requisits previs i preparació de l’entorn

Recursos mínims recomanats

SearxNG no és gaire exigent, però l’experiència millora amb recursos adequats. Per a una instància personal o petita:

  • CPU: mínim 1 nucli modern (2+ recomanat).
  • RAM: mínim 512 MB, preferible 1 GB o més.
  • Disc: espai per a logs i caché, mínim 1 GB lliure.

Per a ús corporatiu o amb molts usuaris, la CPU ha d’escalar segons concurrència (4 nuclis o més) i almenys 2–4 GB de RAM.

Sistema operatiu

SearxNG funciona sobre Linux principalment. Distribucions provades:

  • Debian 11 o 12 (estable, amb paquets recents).
  • Ubuntu LTS (20.04, 22.04).
  • Fedora 37 +.
  • CentOS Stream 9 o Rocky Linux.

En sistemes menys comuns, assegura’t que Python 3.9+ estigui disponible i de poder instal·lar dependències.

Dependències

  • Python 3.9 o superior.
  • pip, virtualenv (si instal·les nadiu).
  • Docker i Docker Compose (si tries aquesta via).
  • Un servidor web per a proxy invers (Nginx, Caddy, Traefik).

Preparació

  • Reserva un usuari dedicat per executar SearxNG (recomanat per a instal·lacions natives).
  • Configura un firewall bàsic per restringir accés només als ports necessaris.
  • Si fas servir VPS, assigna un domini o subdomini per al servei i apunta DNS correctament.

2. Mètodes d’instal·lació: visió general

SearxNG ofereix dos mètodes principals per a instal·lació:

2.1 Instal·lació amb Docker

Avantatges:

  • Ràpida, reproduïble, aïllada del sistema.
  • Actualització senzilla amb docker-compose pull.
  • Gestió de dependències automàtic.

Desavantatges:

  • Requereix instal·lar i gestionar Docker.
  • Menys flexible per a personalitzacions profundes en entorn base.

2.2 Instal·lació nativa (Python + virtualenv)

Avantatges:

  • Control total sobre entorn i configuració.
  • Fàcil integració en serveis systemd per a producció.
  • Millor per a debugging i ajustos fins en codi.

Desavantatges:

  • Major complexitat inicial.
  • Dependències i actualitzacions manuals.

3. Instal·lació amb Docker pas a pas

3.1 Descàrrega i arxiu docker-compose.yml

La manera més ràpida és fer servir l’arxiu oficial:

version: "3"
 
services:
  searxng:
    image: searxng/searxng:latest
    container_name: searxng
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./searxng-data:/etc/searxng

Aquesta configuració:

  • Exposa el port 8080.
  • Munta la carpeta local ./searxng-data per guardar configuració i dades persistents.

3.2 Explicació clau del docker-compose.yml

  • image: indica la imatge oficial que inclou tot SearxNG llest per fer servir.
  • restart: unless-stopped: reinicia el contenidor automàticament en fallades o reboot.
  • volums: assegura que la configuració no es perdi en esborrar el contenidor.
  • ports: assigna el port local per accedir a la interfície web.

3.3 Arrencada i comprovació

docker compose up -d
docker logs -f searxng

Amb això, podràs accedir a http://localhost:8080. Si el fas servir en VPS, reemplaça localment per la IP o domini.

4. Instal·lació nativa pas a pas

4.1 Crear usuari dedicat

sudo adduser --system --group searxng

4.2 Clonar repositori

sudo mkdir /opt/searxng
sudo chown searxng:searxng /opt/searxng
sudo -u searxng git clone https://github.com/searxng/searxng.git /opt/searxng

4.3 Crear entorn virtual i instal·lar dependències

sudo -u searxng python3 -m venv /opt/searxng/venv
sudo -u searxng /opt/searxng/venv/bin/pip install --upgrade pip setuptools wheel
sudo -u searxng /opt/searxng/venv/bin/pip install -r /opt/searxng/requirements.txt

4.4 Configurar systemd

Arxiu /etc/systemd/system/searxng.service:

[Unit]
Description=SearxNG search engine
After=network.target
 
[Service]
User=searxng
Group=searxng
WorkingDirectory=/opt/searxng
ExecStart=/opt/searxng/venv/bin/python /opt/searxng/searx/webapp.py
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Activar servei:

systemctl daemon-reload
systemctl enable --now searxng

4.5 Comprovar estat

systemctl status searxng
journalctl -u searxng -f

Accedeix a http://ip-servidor:8080.

5. Configuració bàsica en settings.yml

5.1 Ubicació i estructura de l’ arxiu

  • En instal·lació Docker, la configuració sol estar en el volum muntat, típicament ./searxng-data/settings.yml.
  • En instal·lació nativa, l’arxiu està en /opt/searxng/searx/settings.yml o /etc/searxng/settings.yml si s’ha configurat així.

Aquest arxiu controla el comportament general del cercador: idiomes, motors actius, categories, dreceres i més.

5.2 Idioma i regió

Dins de settings.yml, els paràmetres més importants per a idioma i regió estan en:

general:
  language: es
  region: ES
  • language: defineix l’ idioma per a la interfície i resultats quan sigui possible.
  • region: indica als motors que usin filtres geogràfics o regionals (per exemple, Google).

Fes servir codis ISO 639-1 per a idioma i codis ISO 3166-1 alpha-2 per a regió.

5.3 Motors i categories

La configuració per defecte inclou molts motors (Google, Bing, DuckDuckGo, etc.). Per desactivar-ne un, simplement coménta-ho o canvia a enabled: false.

Exemple:

search:
  engines:
    google:
      enabled: false
    bing:
      enabled: true

Categories permeten agrupar motors per tipus (general, imatges, vídeos, etc.) i limitar recerques.

categories:
  general:
    - google
    - bing
  images:
    - flickr
    - pixabay

Si només vols resultats generals, limita a general.

5.4 Dreceres

Les dreceres són una forma ràpida de buscar en un motor concret des de la barra principal.

Exemple per buscar a Wikipedia amb drecera w:

shortcuts:
  w: wikipedia

Després, a la barra, escriure web farà la recerca directament a Wikipedia.


5.5 Consells per editar settings.yml

  • Fes servir sempre un editor que validi YAML per evitar errors d’indentació.
  • Fes còpies de seguretat abans de modificar.
  • Després dels canvis, reinicia el servei perquè tinguin efecte (docker restart searxng o systemctl restart searxng).
  • Per provar canvis menors, pots fer servir la interfície web, però no tot està allà.

6. Integració d’APIs i claus de servei

6.1 Per què algunes claus són necessàries?

Motors com Google o Bing limiten accés públic i requereixen API keys per fer-los servir sense bloquejos o errors 429 (massa peticions).

6.2 On aconseguir claus

6.3 Com configurar claus a settings.yml

Evita deixar claus en text pla dins l’arxiu, especialment si comparteixes o fas servir Docker. L’ideal és:

  • Fer servir variables d’entorn i referenciar-les a l’arxiu amb ${VAR_NAME}.
  • A Docker, defineix variables en .env o a l’arxiu docker-compose.yml amb:
environment:
  - GOOGLE_API_KEY=${GOOGLE_API_KEY}

I a settings.yml:

search:
  engines:
    google:
      api_key: ${GOOGLE_API_KEY}

6.4 Protegir les claus

  • No pujar-les a repositoris públics.
  • Limitar els permisos a l’ API (IP, quotes).
  • Renovar-les periòdicament.

7. Seguretat de la instància

7.1 secret_key i CSRF

SearxNG fa servir una secret_key per validar formularis i protegir contra atacs CSRF. Canvia-la sempre, evita la que ve per defecte.

Ubicació a settings.yml:

server:
  secret_key: "clau_aleatoria_llarga"

Genera una amb:

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

7.2 Proxy invers amb Nginx i TLS

Per exposar SearxNG de forma segura, l’habitual és posar-lo darrere d’un proxy invers que:

  • Redirigeix trànsit HTTP a HTTPS.
  • Gestiona certificats TLS (Let’s Encrypt).
  • Afegeix headers de seguretat.

Exemple bàsic /etc/nginx/sites-available/searxng.conf:

server {
    listen 80;
    server_name searx.example.com;
 
    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
    }
 
    location / {
        return 301 https://$host$request_uri;
    }
}
 
server {
    listen 443 ssl http2;
    server_name searx.example.com;
 
    ssl_certificate /etc/letsencrypt/live/searx.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/searx.example.com/privkey.pem;
 

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Recorda obtenir certificat amb Certbot:

certbot certonly --webroot -w /var/www/letsencrypt -d searx.example.com

7.3 Proxy invers amb Caddy (alternativa més senzilla)

Caddy automàticament obté i renova certificats TLS:

Arxiu Caddyfile:

searx.example.com {
    reverse_proxy localhost:8080
}

Inicia amb:

caddy run --config /ruta/a/Caddyfile

7.4 Control d’ accés i autenticació

Per evitar que la instància sigui pública sense restriccions, afegeix:

  • Autenticació HTTP bàsica (Nginx amb auth_basic).
  • Restriccions IP amb allow i deny.
  • Firewall a nivell de servidor.

Exemple per a autenticació bàsica en Nginx:

location / {
    auth_basic "Zona privada";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://localhost:8080;
}

Generar .htpasswd amb:

sudo apt install apache2-utils
htpasswd -c /etc/nginx/.htpasswd usuari

7.5 Limitació de tasa (rate limiting)

Evita abusos amb limit_req a Nginx:

limit_req_zone $binary_remote_addr zone=searx_limit:10m rate=5r/s;
 
server {
    ...
 
    location / {
        limit_req zone=searx_limit burst=10 nodelay;
        proxy_pass http://localhost:8080;
    }
}

Això limita a 5 peticions per segon per IP.

8. Optimització de rendiment

8.1 Ajust de fils i connexions

A settings.yml:

server:
  workers: 4

Determina el nombre de processos per servir peticions. Per a CPUs amb 4 nuclis, 4 workers pot ser òptim.

8.2 request_timeout

Defineix el temps màxim per esperar respostes de motors externs, per defecte 15 segons:

search:
  request_timeout: 10

Reduir-lo millora la latència però pot descartar resultats de motors lents.

8.3 Desactivar motors lents

Si algun motor és persistent a alentir resultats, desactíval o limíta’l a categories específiques.

8.4 Caché de resultats

SearxNG no té caché persistent integrat. Es pot fer servir un revers proxy amb caché, com Varnish o Nginx amb proxy_cache.

Exemple bàsic amb Nginx:

proxy_cache_path /var/cache/nginx/searx levels=1:2 keys_zone=searx_cache:10m max_size=100m inactive=10m use_temp_path=off;
 
server {
    ...
 
    location / {
        proxy_cache searx_cache;
        proxy_cache_valid 200 10m;
        proxy_pass http://localhost:8080;
    }
}

8.5 Mesurament i profiling

Eines útils:

  • curl -w per mesurar temps de resposta.
  • top i htop per monitoritzar càrrega.
  • Logs per detectar errors i colls d’ ampolla.

9. Personalització avançada

9.1 Temes i aparença

SearxNG permet modificar la interfície amb temes o plantilles Jinja2.

  • La carpeta de templates es troba normalment a /opt/searxng/searx/templates.
  • Pots copiar i modificar el tema predeterminat per adaptar-lo a colors corporatius o preferències.

És important no trencar l’estructura de l’HTML ni eliminar blocs clau com el formulari o scripts.

9.2 Filtratge de resultats

Pots excloure dominis específics o tipus de contingut no desitjats editant settings.yml:

search:
  blocked_domains:
    - example.com
    - tracker.site

Aquesta llista ajuda a evitar resultats no rellevants o amb risc de privacitat.

9.3 Afegir motors personalitzats

SearxNG suporta motors personalitzats definits amb expressions URL.

Exemple per afegir DuckDuckGo amb paràmetres personalitzats:

search:
  engines:
    duckduckgo:
      base_url: https://duckduckgo.com/html/
      method: GET
      params:
        q: "{query}"

Això requereix coneixements bàsics de com funciona el motor extern i el seu format d’ URL.

10. Monitorització i manteniment

10.1 Logs

  • A Docker: docker logs searxng
  • A la instal·lació nativa, els logs poden anar a journalctl -u searxng o arxius configurats a systemd.

És fonamental revisar els logs davant d’errors o bloquejos de motors.

10.2 Actualitzacions

  • Amb Docker, actualitza la imatge amb:
docker-compose pull
docker-compose up -d
  • En instal·lació nativa:
sudo -u searxng /opt/searxng/venv/bin/git pull
sudo -u searxng /opt/searxng/venv/bin/pip install --upgrade -r /opt/searxng/requirements.txt
systemctl restart searxng

Revisa sempre les notes de versió per a canvis en configuració.

10.3 Còpia de seguretat de configuració i dades

Fes còpies regulars de:

  • La carpeta de configuració (searxng-data a Docker).
  • Els arxius settings.yml i personalitzats.
  • Qualsevol script o integració.

10.4 Seguretat

  • Renova els certificats TLS.
  • Canvia les claus i contrasenyes periòdicament.
  • Revisa els ports oberts i l’accés.

11. Escenaris i recomanacions per a ús real

11.1 Ús personal

  • Suficient amb Docker en un VPS petit.
  • Fes servir autenticació bàsica per evitar accessos no desitjats.
  • Limita els motors i categories per enfocar-te en resultats que realment facis servir.

11.2 Xarxes corporatives o equips

  • Afegeix autenticació més robusta (LDAP, OAuth) si el proxy ho permet.
  • Integra amb sistemes de monitoratge per detectar abusos.
  • Fes servir balanceig si tens alta concurrència.

11.3 Comunitat o servei públic

  • Caché agressiva per evitar sobrecàrrega.
  • Limitació de velocitat estricta.
  • Revisió periòdica de motors actius i bloquejos per evitar abusos.

12. Diagnòstic i resolució de problemes comuns

ProblemaDiagnòstic ràpidSolució recomanada
Pàgina no càrregaVerifica que el contenidor o servei estigui actiudocker ps, systemctl estat searxng
Errors 429 (massa peticions)Ús excessiu o falta d’ API keysAfegeix claus API, activa rate limiting
No es veuen resultats de Google o BingBloqueig d’ IP o falta de clauConfigura API key i revisa quotes
Configuració no canvia després d’editarNo reinicia el serveidocker restart searxng o systemctl restart searxng
Problemes amb TLS/HTTPSCertificat mal configuratRevisa rutes de certificats i proxy
Lentitud generalMotors lents o recursos insuficientsRedueix motors actius, incrementa workers

13. Checklist per autohostatjar SearxNG

  • Tria el mètode d’instal·lació (Docker o nadiu).
  • Reserva els recursos mínims adequats.
  • Configura l’usuari dedicat per a la instal·lació nativa.
  • Instal·la les dependències i descàrrega SearxNG.
  • Configura el proxy invers amb TLS.
  • Cambia la secret_key a settings.yml.
  • Afegeix claus API per als motors que ho requereixin.
  • Activa l’autenticació o les restriccions d’ accés si és necessari.
  • Ajusta els motors actius i les categories per al teu cas.
  • Configura rate limiting al proxy.
  • Monitoritza els logs i el rendiment.
  • Programa backups regulars.
  • Actualitza regularment l’ aplicació i les dependències.
  • Implementa caché si la càrrega és alta.
  • Revisa i actualitza els certificats TLS.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *