Tropic Host

SearXNG: cos'è e come installare il proprio motore di ricerca su un VPS

6 min di lettura
Tropic
SearXNG: cos'è e come installare il proprio motore di ricerca su un VPS

SearXNG: il proprio motore di ricerca senza tracciamento su un VPS

Un normale motore di ricerca può associare una query all'indirizzo IP, ai cookie e alla cronologia delle attività. SearXNG cambia il percorso: il browser contatta la propria istanza, che interroga diversi motori di ricerca esterni e riunisce le loro risposte in un'unica pagina.

Le fonti esterne vedono l'indirizzo del server SearXNG, non i cookie dell'utente. Il servizio stesso non crea un profilo pubblicitario. Tuttavia, questo non garantisce l'anonimato completo: il proprietario di un'istanza pubblica può tecnicamente conservare i log e, dopo l'apertura di un collegamento, il sito di destinazione torna a interagire direttamente con il browser.

Vedremo le funzionalità di SearXNG e installeremo la nostra istanza su un VPS con HTTPS e protezione tramite password.

Che cos'è SearXNG e come funziona

SearXNG è un metamotore di ricerca gratuito e open source. Non dispone di un proprio indice dei siti: il servizio ottiene i risultati dai motori di ricerca configurati e da fonti specializzate, li uniforma e li mostra in un'unica interfaccia.

Browser → il tuo SearXNG → motori di ricerca
                            ↓
                    risultati combinati

Per ogni query, SearXNG:

  1. determina la categoria di ricerca: Web, immagini, notizie, video o un'altra;
  2. interroga le fonti selezionate per conto del server;
  3. non trasmette loro i cookie dell'utente e usa un profilo del browser casuale per le richieste in uscita;
  4. riunisce le risposte in un'unica pagina dei risultati.

La velocità dipende dai sistemi esterni: possono rispondere lentamente, mostrare un CAPTCHA o bloccare l'indirizzo IP. SearXNG è un livello intermedio controllabile, non un indice autonomo.

Perché SearXNG è più interessante di un singolo motore di ricerca

Fonti diverse in un'unica pagina dei risultati

È possibile combinare motori di ricerca generici con fonti specializzate: enciclopedie, mappe, pubblicazioni scientifiche, repository, notizie o cataloghi di immagini. Questo aiuta quando una normale pagina dei risultati è sovraccarica di pagine SEO o fatica a trovare materiali di nicchia.

Al momento della preparazione dell'articolo, la documentazione elencava 272 integrazioni, 83 delle quali erano abilitate per impostazione predefinita. Questo non significa che siano tutte ugualmente stabili.

L'insieme dipende dalla configurazione. Alcune fonti stabili in genere funzionano più velocemente rispetto all'attivazione contemporanea di tutte quelle disponibili.

Comandi rapidi

Le abbreviazioni permettono di selezionare temporaneamente un motore, una categoria o una lingua:

!wp docker compose       — cercare su Wikipedia
!images aurora boreale   — cercare immagini
:it !wp server proxy     — cercare in italiano su Wikipedia

Il comando !! reindirizza l'utente direttamente a un motore di ricerca esterno. In questa modalità, la protezione di SearXNG non è più attiva.

Ricerca per il browser e per i propri strumenti

SearXNG supporta OpenSearch, quindi può essere impostato come motore di ricerca predefinito del browser. È disponibile anche un'API HTTP con risposte in JSON, CSV o RSS, se l'amministratore ha abilitato i formati necessari.

Una singola istanza può diventare il backend di ricerca per una dashboard interna, un bot, uno script di ricerca o un assistente IA locale. È consigliabile esporre l'API solo dopo aver configurato l'autenticazione e i limiti delle richieste.

Quanto è privato SearXNG

Che cosa faChe cosa non fa
Non trasmette i cookie del browser ai motori di ricerca esterniNon garantisce l'anonimato completo
Nasconde l'IP dell'utente dietro l'IP del serverNon protegge l'utente dopo l'apertura del sito trovato
Rimuove la pubblicità di terze parti e alcuni parametri di tracciamentoNon garantisce che il proprietario di un server altrui non conservi log
Può caricare le immagini tramite proxyNon sostituisce una VPN, Tor o le protezioni del browser

Un'istanza pubblica è comoda per provare il servizio, ma bisogna fidarsi del suo amministratore e un indirizzo IP condiviso riceve più spesso limitazioni.

Un server proprio offre il controllo su log, fonti e accesso, ma non rende anonimo il browser.

Istanza pubblica, server domestico o VPS

OpzioneVantaggiLimitazioni
PubblicaNon occorre installare nullaFiducia nel proprietario, sovraccarico, CAPTCHA
Server domesticoControllo completo senza noleggiare un VPSIl dispositivo deve rimanere sempre acceso; l'accesso esterno è più difficile da configurare
VPS proprioFunzionamento continuo, dominio, HTTPS, accesso da dispositivi diversiOccorre aggiornare i container e monitorare la sicurezza

Un'istanza SearXNG propria è utile per una famiglia, un team, uno sviluppatore o strumenti IA locali. Per ricerche occasionali, un'istanza pubblica è più semplice.

Quale VPS serve per SearXNG

Il carico dipende dal numero di utenti, dalle fonti e dalle query simultanee. Configurazioni iniziali pratiche:

ScenarioCPURAMSpazio su disco
Un utente1 vCPU1 GB10 GB
Famiglia o piccolo team2 vCPU2 GB20 GB
API e servizi aggiuntivi2–4 vCPUda 4 GBda 30 GB

Non è necessario un disco grande. Sono più importanti la qualità della rete, un indirizzo IP stabile e una riserva di RAM.

Per questo scenario è adatto un VPS Linux di tropic.host: si può iniziare con una configurazione ridotta e aumentare le risorse man mano che vengono aggiunti utenti o accessi API. Nella scelta del piano è più utile investire nella RAM e nella qualità della rete che pagare di più per la capacità di archiviazione.

Installazione di SearXNG su un VPS con Docker Compose

Nell'esempio utilizzeremo Ubuntu 24.04 LTS, search.example.com, Valkey e Caddy. Puntare il record DNS A al server e aprire le porte 80 e 443.

1. Installare Docker e creare una directory

sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker

sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng

Creare un file .env con il dominio e un segreto casuale:

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. Creare docker-compose.yml

name: searxng

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
      SEARXNG_SECRET: ${SEARXNG_SECRET}
      SEARXNG_VALKEY_URL: valkey://valkey:6379/0
    volumes:
      - ./searxng:/etc/searxng:rw
      - searxng-cache:/var/cache/searxng
    depends_on: [valkey]

  valkey:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    command: valkey-server --save 30 1 --loglevel warning
    volumes:
      - valkey-data:/data

  caddy:
    image: docker.io/caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on: [searxng]

volumes:
  searxng-cache:
  valkey-data:
  caddy-data:
  caddy-config:

3. Configurare SearXNG

Creare searxng/settings.yml:

use_default_settings: true

general:
  instance_name: "Private Search"

search:
  safe_search: 1
  autocomplete: ""
  formats: [html]

server:
  limiter: true
  image_proxy: true

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

Creare searxng/limiter.toml:

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

Il limiter riduce il rischio che i bot sovraccarichino l'istanza e che i motori di ricerca esterni limitino più rapidamente il suo indirizzo IP.

4. Aggiungere una password e HTTPS

Generare l'hash di una password complessa:

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'SOSTITUISCI_LA_PASSWORD'

Inserire l'hash ottenuto nel file Caddyfile:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSERISCI_HASH
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

Caddy memorizza l'hash, non la password in chiaro. In alternativa a Basic Auth, il servizio può anche essere limitato all'interno di una VPN.

5. Avviare i container

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Aprire https://search.example.com. Caddy otterrà automaticamente un certificato TLS, dopodiché il browser richiederà il nome utente searchuser e la password. I log di SearXNG sono disponibili con il comando:

sudo docker compose logs -f searxng

Che cosa configurare dopo l'avvio

Lasciare attive solo le fonti utili, scegliere la lingua e l'impostazione SafeSearch, quindi aggiungere SearXNG al browser tramite OpenSearch. Per eseguire l'aggiornamento è sufficiente usare:

sudo docker compose pull
sudo docker compose up -d

Eseguire il backup di .env, Caddyfile e della directory searxng. Abilitare l'API JSON solo quando serve e non lasciarla accessibile senza password e limitazione della frequenza delle richieste.

Errori comuni

ErroreConseguenzaSoluzione
Aprire l'istanza a tuttiI bot generano carico e l'IP riceve limitazioni più spessoUsare una password, una VPN o il Single Sign-On
Abilitare troppe fontiRisultati lenti e timeoutMantenere pochi motori stabili
Considerare SearXNG un indice proprioIn caso di problemi ai sistemi esterni, alcuni risultati scompaionoTenere conto della dipendenza dalle fonti
Aspettarsi anonimato completoIl sito trovato può comunque tracciare il browserUsare le protezioni del browser, una VPN o Tor
Avviarlo senza HTTPSLe query e la password vengono trasmesse in modo non sicuroUsare un reverse proxy con TLS

Conclusione

SearXNG combina fonti diverse in un'unica interfaccia, riduce la personalizzazione e offre una ricerca comune al browser, agli script o a un'IA locale. Per provarlo è sufficiente un'istanza pubblica. Per un utilizzo regolare è preferibile un server proprio con HTTPS, autenticazione, limiter e un piccolo insieme di fonti stabili.

Si può iniziare con 1 GB di RAM. È opportuno aumentare le risorse quando cresce il numero di utenti, quando si abilita l'API o quando si avviano container aggiuntivi.

FAQ

SearXNG è completamente anonimo?

No. Nasconde alcuni dati ai motori di ricerca esterni, ma l'amministratore dell'istanza può conservare i log. Dopo l'apertura di un sito, si applicano i suoi strumenti di tracciamento.

SearXNG è migliore di Google?

Risolve un problema diverso. Google è generalmente più veloce e personalizza maggiormente i risultati. SearXNG offre più controllo, permette di combinare le fonti e dipende meno dal profilo dell'utente.

È possibile usare SearXNG senza un VPS?

Sì. È possibile utilizzare un'istanza pubblica, un computer domestico, un NAS o un mini-server. Un VPS serve per avere accesso continuo da qualsiasi rete.

Quanta RAM è necessaria?

Per un utente è ragionevole iniziare con 1 GB. Per una famiglia, un team, un'API o container aggiuntivi sono preferibili 2–4 GB.

È possibile collegare SearXNG a un browser o a un'IA?

Sì. Il browser può utilizzare OpenSearch, mentre i programmi possono usare l'API HTTP. L'accesso all'API deve essere protetto con autenticazione e limiter.