Hostear una instancia de SearX

Como alojar una instancia de SearxNG ;)

Buscas tener un motor de búsqueda enfocado a la privacidad? Quieres que tus búsquedas sean realmente privadas y que no sean vendidas a empresas de terceros para colocarte anuncios molestos? Entonces deberías alojar tu propia instancia de SearxNG :).

SearxNG (según su pagina web) es: “SearXNG es un metabuscador de Internet gratuito que agrega resultados de más de 70 servicios de búsqueda. Los usuarios no son rastreados ni perfilados.” (Traducido del ingles al español)

Esto actua al igual que otro motor de busqueda, pero saca los resultados de otros motores de busqueda como Google, Bing, DuckDuckGo y cuida tu privacidad; Ya que todo lo que se busca, se hace desde el servidor que aloja la instancia, enmascarando tu IP y otros datos que se utilizan para seguimiento (Como las cookies)

(Es una buena practica hacer tu instancia totalmente publica, si piensas hacerla privada y solo para ti, no tendria sentido ya que todo lo que busques saldra de la misma IP del servidor, las busquedas seran tuyas y no seran mixtas, lo cual hace facil identificarte. Seria como literalmente buscar lo que siempre buscas, pero con otra IP, tal cual como una VPN o Proxy)

Que es lo que se necesita para poder alojar una instancia?

En este tutorial proveere comandos que funcionan en Arch Linux y en Debian/Ubuntu

Instalación

SearxNG

Una vez ya tengas una VPS o simplemente un servidor de pruebas (como una maquina virtual) ya puedes empezar a instalar los programas necesarios para instalar SearxNG. Ejecuta el comando indicado para la distribución que instalaste

Debian/Ubuntu:

sudo -H apt-get install -y \
    python3-dev python3-babel python3-venv \
    uwsgi uwsgi-plugin-python3 \
    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \
    shellcheck

Arch Linux:

sudo -H pacman -S --noconfirm \
    python python-pip python-lxml python-babel \
    uwsgi uwsgi-plugin-python \
    git base-devel libxml2 \
    shellcheck

Esto instalara los paquetes necesarios para uWSGI el cual se usa para ejecutar SearxNG.

Creación de usuario

SearxNG ocupa su propio usuario aislado de los demás, esto se hace por seguridad, ya que si se aprobechan de una falla de seguridad, esta no tendrá efecto ya que esta dentro de un usuario con poco acceso a los archivos del servidor.

sudo -H useradd --shell /bin/bash --system \
    --home-dir "/usr/local/searx" \
    --comment 'Privacy-respecting metasearch engine' searx

sudo -H mkdir "/usr/local/searx"

sudo -H chown -R "searx:searx" "/usr/local/searx"

Instalación de SearxNG y dependencias

sudo -H -u searx -i

Este comando abrira una consola dentro de el usuario searx. Luego solo copia estos comando dentro de el

python3 -m venv "/usr/local/searx/searx-pyenv"

echo ". /usr/local/searx/searx-pyenv/bin/activate" >>  "/usr/local/searx/.profile"

Esto creara un entorno virtual de Python3 y sirve para evitar el conflicto entre dependencias.

Ahora sale de la consola del usuario searx con el comando exit y vuelve a entrar a ella.

sudo -H -u searx -i

Y dentro de la consola, empieza a copiar estos comandos

command -v python && python --version

Esto sirve para verificar que la version de python es la correcta, procura ver que la version de python sea mayor a 3.8.

Ejemplo:

/usr/local/searx/searx-pyenv/bin/python
Python 3.8.1

Ahora puedes seguir con los siguentes comandos (copia uno por uno):

pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml

Luego se que se hayan instalado, puedes seguir con la instalacion de las dependencias de SearxNG

cd "/usr/local/searx/searx-src"
pip install -e .

Y listo, searxng ya esta instalado, pero no listo para usar ;)

Configuración de SearxNG

Ejecuta estos 2 comandos dentro del usuario searx si es que no has cerrado la consola con el usuario. Si lo cerraste, solo vuelve a ejecutar sudo -H -u searx -i

sudo -H mkdir -p "/etc/searxng"

sudo -H cp "/usr/local/searx/searx-src/utils/templates/etc/searxng/settings.yml" \
             "/etc/searxng/settings.yml"

Esto copiara un plantilla de la configuración en /etc/searxng/settings.yml de SearxNG el cual podras editar más tarde. Es una configuración bastante minima asi más adelante mostrare que es lo más importante que hay que cambiar y modificar

Ahora ejecuta este comando:

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

Esto creara una llave secreta y totalmente aleatoria (como lo dice en el nombre ultrasecretkey) la cual tienes que mantener segura

Ahora como ultimo comando, escribe exit para salir de la consola de searx

Probar si SearxNG funciona :)

A este punto, SearxNG ya deberia estar instalado y configurado solo para uso personal. Así que probaremos si todo funciona correctamente con estos comandos

sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searxng/settings.yml"

Esto activa el modo debug para verificar que todo esta bien. Ahora ejecuta estos comandos uno por uno:

sudo -H -u searx -i

cd /usr/local/searx/searx-src
export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
python searx/webapp.py

Esto iniciara searxng para probar si realmente funciona. Ahora metete a el navegador y entra a la IP en el puerto 8888 del servidor (Si es una VPS, entra por la IP publica, y si es un servidor local, entra por la IP local).

http://ip:8888 (Reemplaza ip por la IP del servidor)

Si puedes ingresar sin problemas por la ip y el puerto, significa que esta funcionando, ahora detén el proceso y coloca esto para desactivar el modo debug:

sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searxng/settings.yml"