Configuración de SearXNG auto aloxado con Traefik
Introducción a SearXNG
Hoxe imos ver como instalar na Raspberry o meta buscador SearXNG. Este meta buscador libre ofrece as seguintes carácterísticas:
- Privacidade: tanto se usamos unha instancia oficial, como a nosa, non se comparten IPs, nin o historial de buscas cos motores de busca consultados. Tamén bloquea as coockies de seguimento que entregan os motores tradicionais. Isto evita a modificación dos resultados baseados no perfil de usuario.
- Evita redireccións: os resultados aparecen como un enlace directo ao sitio, non cun enlace de redirección como fai, por exemplo, Google.
- Busca en caché: se a páxina resultado está cacheada en arquive.org, accederemos a esta versión arquivada en vez de ao sitio.
- Filtros de busca: ademáis da busca xeral tamén teremos outras buscas, como arquivos, imaxes, TIC, mapas, música, noticias, ciencia, redes sociais e vídeos.
- Busca centralizada: SearXNG, unha vez configurado, ofrece resultados de busca duns oitenta e dous buscadores diferentes. Por exemplo, Google, Bing, DuckDuckGo, etc.
- Afinar as buscas: ofrece unha serie de etiquetas para poder filtrar máis as buscas.
Estas etiquetas teñen que ir antes dos termos de busca.
- !categoría: busca na categoría especificada en vez das predeterminadas.
- ?categoría: busca na categoría especificada ademáis das predeterminadas.
- !motor: especifica o motor a usar en lugar dos predeterminados.
- ?motor: usa o motor a usar ademáis dos predeterminados.
- :idioma: busca os resultados no idioma indicado en troques do predeterminado.
Os operadores !
e ?
poden usarse máis dunha vez,
por exemplo para engadir varios motores.
Neste artigo vou explicar como ter a nosa instancia privada de SearXNG. Pero tamén podemos usar algunha das instancias oficiais
Instalación de SearXNG usando Docker-compose
Para o proxecto de aplicacións auto aloxadas, instalaremos o SearXNG usando docker.
Neste caso non agardo incompatibilidades futuras no proxecto,
xa que é un servizo sen dependencias con outros servizos auto aloxados.
E tampouco almaceno información que poida ser incompatible con futuras versións.
Así pois usarei a imaxe oficial.
E directamente collerei a latest, para estar actualizado cada vez que constrúa
a instancia.
Así pois sería searxng/searxng:latest.
Polo tanto o noso docker-compose.yaml quedaría do seguinte xeito.
version: "3.7"
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
hostname: searxng
init: true
networks:
- proxy
volumes:
- ../../searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://${SEARXNG_BASE_URL:-localhost}/${SEARXNG_BASE_PATH:-searxng}
- OVERWRITEHOST
- OVERWRITEPROTOCOL
- SEARXNG_PORT=${SEARXNG_PORT:-80}
- TZ=Europe/Madrid
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.searxng.entrypoints=http"
- "traefik.http.routers.searxng.rule=Host(`${SEARXNG_BASE_URL:-localhost}`) && PathPrefix(`/${SEARXNG_BASE_PATH:-searxng}`)"
networks:
proxy:
name: proxy
external: true
Para explicar un pouco o ficheiro. Na primeira liña indicamos a versión de
docker-compose a utilizar. Neste caso a 3.7.
Despois indicamos os servizos que imos instanciar nel, agora mesmo tan só
SearXNG. Máis adiante se fose necesario, existe a opción de facer que o
servizo corra en conxunto cun Redis, para cachear as buscas.
Agora mesmo non o vexo necesario.
Como dixen antes usaremos a imaxe latest do proxecto, e definimos o nome do
contenedor e do hostname como searxng.
Ao igual que vimos noutro artigo, con init: true o que facemos e iniciar
un proceso pai antes dos outros servizos do contenedor. Así se hai algún erro,
este proceso adoptará aqueles que queden horfos,
facendo máis doada a sua xestión.
O servizo usará a rede proxy que é a que inicia o servizo Traefik.
Como podemos ver máis abaixo na sección de networks, xa lle indicamos que
é unha rede externa.
Vínculamos un cartafol neste caso da Raspberry, co volume do servizo, así no caso de ter que gardar algo, como algunha configuración farao no equipo local.
E agora xa as variables de entorno, despois pegarei o contido do ficheiro .env.dist.
- SEARXNG_BASE_URL e a url para acceder ao servizo.
- OVERWRITEHOST sobrescribimos o nome do host co que lle indiquemos.
- OVERWRITEPROTOCOL o protocolo que imos usar para conectar contra a web.
- SEARXNG_PORT con que porto imos traballar. Se non espeficiamos collerá o por defecto.
- TZ=Europe/Madrid a zona horaria na que estamos.
Nas seguintes liñas, as seccións que comezan por cap, estámos a indicarlle os permisos. Primeiro quitámoslle todo-los permisos ao usuario do contenedor. E despois indicamos cales destes permisos queremos que teña. Neste caso permitimos que mude o propietario dos ficheiros, mude o seu GID, co que pode acceder ao ficheiros de calquer grupo no contenedor e o mesmo para o seu UID.
Despois indicamos que queremos que o servizo esté permantentemente erguido, salvo que nós mesmos o paremos.
E por último a parte de Traefik. O primeiro que facemos e habilitar o enrutamento
por Traefik. Dicímoslle que queremos que o punto de entrada para a ruta de searxng
sexa http. Que é unha das entradas configuradas en Traefik. Só por recordar,
teño http e https. E xa á fin establecemos a última regra, que indica a
ruta para acceder. Neste caso será o host /
ruta. Por exemplo,
http://raspberry.local/searxng.
Algo interesante a comentar deste ficheiro docker-compose é a forma de sustituír
as variables. Se nos fixamos, moitas delas, aparecen como ${VARIABLE:-algo}
.
Con isto estamos a indicar que queremos que aplicar o valor da variable,
pero que se non está definida, entón aplique o valor que vai despois de :-
.
Ficheiro .env.dist
SEARXNG_BASE_URL=raspberry.local
SEARXNG_BASE_PATH=searxng
OVERWRITEPROTOCOL=http
OVERWRITEHOST=raspberry.local
SEARXNG_PORT=8081
SEARXNG_BIND_ADDRESS=0.0.0.0
Con esta configuración para acceder ao servizo web dende outro equipo,
na nosa rede, escribiríamos http://raspberry.local:8081/searxng.
E xa estaríamos dentro, como podemos ver na seguinte imaxe:
E aquí cun resultado de busca, tal vez dun próximo artigo:
Conclusión
Con este servizo teño a posibilidade de facer buscas evitando os seguimentos,
podo buscar ao mesmo tempo en ducias de motores e podo acceder ás versións
almacenadas en arquive.org.
Así teño xa montado o primer servizo auto aloxado na miña Raspberry.
A este seguirano outros, ca fin de obter máis control sobre os meus datos.
Evitando delegalos a terceiros para que comercien con eles.
Bibliografía
Artigo de Searx na Wikipedia: https://es.wikipedia.org/wiki/Searx
Sitio oficial Searx: https://searx.github.io/searx/
Artigos Relacionados:
- Actualizar Invidious despois de que me dese erro bastante tempo
- Instalación de News en Nextcloud
- Instalación de GPodder Sync en Nextcloud
- Actualizar Nextcloud en Docker
- Configuración de Calibre web auto aloxado con Traefik
- Configuración de Jellyfin auto aloxado con Traefik
- Copias de seguridade con Borgbackup
- Controlar la temperatura del equipo con bash y telegram
- Instalación de Nextcloud
- Instalación de Pi-hole
- Configuración de Invidious auto aloxado con Traefik
- Cómo instalar Traefik con docker
- Instalando docker en modo rootless en Debian
- Instalando Jekyll con Docker