Instalacja oraz zarzÄ dzanie metawyszukiwarkÄ SearXNG
++ SearXNG jest silnikiem wyszukiwania, agregujÄ cym wyniki ze wszytkich + dostÄpnych w internecie wyszukiwarek przy czym obdziera je ze różnych + elementów ÅledzÄ cych, dlatego jest dobre rozwiÄ zanie dla osób chcÄ cych + uchroniÄ siÄ przed targetowaniem przez takie firmy jako Google czy + Microsoft. SearXNG nie wydaje siÄ byÄ same w sobie wyszukiwarkÄ to tylko + agregat (zawierajÄ c kilka przydatnych funkcji) - dlatego w tym materiale + bÄdÄ używaÄ bardziej nomenklatury + silnik wyszukiwania, a niżeli wyszukiwarka. Do jej + skutecznoÅci dziaÅania trzeba siÄ przyzwyczaiÄ - to nie Google, który + stara siÄ odgadnÄ Ä na podstawie naszego profilowania, jakich wyników + bÄdziemy od niego oczekiwaÄ. Tutaj mamy raczej doczynienia z prawdziwym + wyszukiwaniem, zatem jakÄ frazÄ podamy taki wynik otrzymamy. JeÅli + ktoÅ mam doÅwiadczenie w korzystaniu z takich wyszukiwarek jak + DuckDuckGo to myÅlÄ, że nie bÄdzie mieÄ problemów wynikami + prezentowanymi przez SearXNG. Instalacja instancji SearXNG nie jest + trudna i w pewnym stopniu możemy jÄ dostosowaÄ do wÅasnych preferencji. + W tym materiale opiszÄ proces instalacji oraz dostosowywania jej, w + przypadku, w którym trzeba ingerowaÄ pliki projektu (zmiana ta bÄdzie + wyÅÄ cznie kosmetyczna i nie wpÅynie na jej dziaÅanie. Jako serwer + hostujÄ cy wykorzystamy Debiana 12. Zatem rozpocznijmy instalacjÄ. +
+1. Instalacja
++ Przed uruchomieniem wÅaÅciwej instalacji, musimy wykonaÄ jednÄ bardzo + ważnÄ zmianÄ w naszym systemie. Mianowicie musimy dodaÄ do repozytoriów + systemu, repozytoria z backports. Dlaczego? Otóż od pewnego + commitu, SearXNG (tak, commitu. SearXNG to + rolling-release - nie ma klasycznego wersjonowania, a każda + kolejna wersja to każda kolejna zmiana. BÄdzie to mieÄ poźniej kluczowe + znaczenie.) przestaÅ korzystaÄ z bazy danych Redis i przeszedÅ + na Valkey, który nie jest dostÄpny w klasycznym repozytorium. + To może jednak ulec zmianie, ze wzglÄdu na to, że jest on obecny w + repozytoriach przyszÅej wersji stablnej, a na czas pisania tego materiaÅu + jeszcze wersji testowej. +
++ Aby wÅÄ czyÄ repozytoria backports, w pliku + /etc/apt/sources.list dopisujemy poniższÄ liniÄ. +
++deb http://deb.debian.org/debian bookworm-backports main contrib ++
+ NastÄpnie musimy odÅwieżyÄ listÄ pakietów oprogramowania APT, za pomocÄ + poniższego polecenia. +
++$ sudo apt update ++
+ SearXNG wykorzystuje do dziaÅania WSGI co powoduje, że + aplikacja nie dziaÅa ciÄ gle oraz nie oczkuje na poÅÄ czenia. Zapytania + do aplikacji sÄ przekazywane do WSGI, a ono uruchamia kod Pythona. + PrzeglÄ darki internetowe nie sÄ wstanie obsÅużyÄ WSGI, ponieważ posÅugujÄ + siÄ one ÅciÅle okreÅlonym schematem jakim jest protokoÅ HTTP lub HTTPS. + Dlatego też potrzebujemy klasycznego serwera WWW w postaci proxy, + który przekaże zapytanie HTTP/S do WSGI a ono uruchomi aplikacjÄ + SearXNG. Tutaj panuje peÅna dowolnoÅci, oczywiÅcie o ile ktoÅ potrafi + skonfigurowaÄ swój ulubiony serwer WWW do postaci przekaźnika. Dla osób + poczÄ tkujÄ cych lub szanujÄ cych swój czas polecam klasycznego Apache w + wersji 2 i tutaj też on zostanie wykorzystany. Przy czym poza instalacjÄ + pakietów, nie bÄdziemy musieli nic robiÄ. Skrypt instalacyjny SearXNG + przygotuje za nas odpowiedni plik hostingu, który nie tylko odpowiednio + przekieruje, ale również wÅÄ czy odpowiednie moduÅy serwera WWW. +
++$ sudo apt install apache2 -y ++
+ Po instalacji serwera WWW, możemy sklonowaÄ ze strony projektu na + serwisie github.com, pliki projektu. NastÄpnie przechodzimy do pobranego + katalogu i wydajeny nastÄpujÄ ce polecenie: +
++ searxng$ sudo -H ./utils/searxng.sh install all ++
+ Po wydaniu tego polecenia instalacja, może siÄ nie rozpoczÄ Ä, a my + uzyskamy nastÄpujÄ cÄ informacjÄ zwrotnÄ od skryptu. +
++xf0r3m@searx:~/searxng$ sudo -H ./utils/searxng.sh install all +/home/xf0r3m/searxng/utils/brand.sh: line 19: python: command not found +/home/xf0r3m/searxng/utils/brand.sh: line 20: python: command not found +/home/xf0r3m/searxng/utils/brand.sh: line 21: python: command not found +ERROR: missing command curl ++
+ Pierwszy znich możemy rowiÄ
zaÄ poprzez utworzenie dowiÄ
zania
+ symbolicznego o nazwiÄ python
+ wskazujÄ
cego na plik /usr/bin/python3 (który również jest
+ dowiÄ
zaniem symbolicznym).
+
+xf0r3m@searx:~/searxng$ sudo ln -s /usr/bin/python3 /usr/bin/python ++
+ Drugim problemem jest poprostu brak pakietu
+ curl w systemie i należy go doinstalowaÄ,
+ chcÄ
c kontynuowaÄ instalacjÄ.
+
+xf0r3m@searx:~/searxng$ sudo apt install curl -y. ++
+ Po zainstalowaniu pakietu możemy ponowiÄ polecenie odpowiedzialne za + uruchomienie instalacji. Poszczególne etapy instalacji sÄ opisane + przez skrypt, caÅy proces jest w dużym stopniu zautomatyzowany, ponieważ + mimo pytaÅ o potwierdzenie użytkownika, to na nie naÅożony jest + czas oczekiwania, jeÅli nie podejmiemy decyzji w odpowiednim czasie + zostanie ona podjÄta za nas. Na wszyskie pytania należy odpowiedzieÄ + twierdzÄ co, chcÄ c zainstalowaÄ poprawnie SearXNG. Podczas nie których + czynnoÅci mogÄ pojawiÄ siÄ bÅÄdy. JeÅli skrypt siÄ nie zatrzyma, nie + należy siÄ nimi przejmowaÄ (tak ma byÄ) - skrypt próbuje wykonaÄ + zapytania do nieistniejÄ cej bazy oraz skomunikowaÄ siÄ z serwerem + Valkey, który jeszcze nie zostaÅ zainstalowany. Wszystko ma na + celu sprawdzenie naszego Årodowiska i podjÄcia odpowiednich kroków. + BrakujÄ ce pakiety takie jak uwsgi oraz serwer Valkey + zostanÄ doinstalowane w kolejnych etapach instalacji. W ostatnim etapie + skrypt przeprowadza kilka testów, jeÅli tutaj nie pojÄ wiÄ siÄ Å¼adne + bÅÄdy tudzież ostrzeżenia, to możemy uznaÄ naszÄ instancjÄ za poprawnie + zainstalowanÄ . +
++Finalize installation +===================== + +Do you want to run some checks? [YES/no] y +INFO: wrapper: utils/searxng.sh instance _call searxng.check + +SearXNG checks +-------------- +INFO searx : max_request_timeout=None +INFO searx.valkeydb : connecting to Valkey host='localhost' port=6379 db=0 +INFO searx.valkeydb : connected to Valkey ++
+ Po instalacji chcÄ c uzyskaÄ do naszego silnika wyszukiwania za pomocÄ + przeglÄ darki musimy uruchomiÄ przekierowanie, które przeÅle zapytania + wysÅane przez klienta bezpoÅrednio do hosta (gdy w przeglÄ darce wpiszemy + peÅnÄ nazwÄ domenowÄ hosta), tak jakby do folderu + /searxng/ (zaznaczyÅem tutaj koÅcowy + slash, ponieważ od pewnego commitu peÅni on bardzo + ważnÄ rolÄ, o której opowiem podczas rozwiÄ zywania problemów z + instancjami SearXNG). Jednak do nie jest folder, a jedynie czÄÅÄ URL, + które spowoduje, że serwer WWW (Apache) uruchomi konfiguracjÄ + przygotowanÄ przez skrypt instalacyjny uruchamiajÄ cy proxy, + które przekaże nasze Å¼Ä danie do usÅugi UWSGI, które jak sama nazwa + wskazuje jest odpowiedzialne z WSGI w tym projekcie. Zatem w pliku + /etc/apache/sites-available/000-default.conf dopisujemy poniższÄ + liniÄ. +
++Redirect / /searxng/ ++
+ Teraz przy pomocy przeglÄ darki możemy już poÅÄ czyÄ siÄ z naszÄ instancjÄ . + JeÅli chcemy możemy przed pierwszym slashem podaÄ peÅnÄ nazwÄ + jednak nie jest to wymagane. Tak zainstalowana instancja silnika + wyszukiwania jest w peÅni sprawna i gotowa do dziaÅania. +
+2. Podstawowa customizcja
++ W zależnoÅci od potrzeb, możemy dostosowaÄ naszÄ instancjÄ w mniejszym + lub wiekszym stopniu. Ja swojej instancji używam jako strony startowej + domyÅlnych profili przeglÄ darek internetowych zainstalowanych w + dystrybucji immudex i zmieniÅem w niej logo wyÅwietlane na + stronie startowej, faviconÄ, tytuÅ karty/okna wyÅwielane przez + przeglÄ darkÄ oraz domyÅlnÄ wyszukiwarkÄ, z której majÄ zostaÄ pobrane + podpowiedzi dla wpisywanej frazy. Pierwsze dwie rzeczy zmieniamy + ingerujÄ c w pliki projektu zainstalowane w naszym systemie. Dwie ostatnie + zaÅ wymagajÄ zmiany pliku ustawieÅ /etc/searxng/settings.yml. + Zmiany w plikach projektu, bÄdÄ dostarczaÄ dodatkowych problemów, o + których bÄdzie szerzej w rozdziale odnoÅnie zarzÄ dzania. Zmiana + konfiguracji jest prostsza, ale wymaga restartu usÅugi uwsgi. + Od tych zmian zaczniemy. W wyżej wymienionym pliku edytujemy dwie + wartoÅci: +
++instance_name: ++
+ Ta wartoÅÄ znajduje siÄ w sekcji general:
+ i odpowiada ona za ustawienie tytuÅu strony naszej instancji. DrugÄ
+ wartoÅciÄ
jest:
+
+autocomplete: ++
+ Ona z kolei odpowiada, za ustawienie wyszukiwarki, z której majÄ byÄ + pobierana podpowiedzi dla wpisywanych sÅów kluczowych. JeÅli przyjrzymy + siÄ komentarzom w pliku, to dostrzeżemy sposób, aby wykluczaÄ + wyszukiwarki, z których nasz silnik ma pobieraÄ wyniki wyszukiwania. + Po każdej zmianie w pliku settings.yml, należy zrestartowaÄ + usÅugÄ uwsgi.service +
++$ sudo systemctl restart uwsgi.service ++
+ Kolejne zmiany tyczÄ siÄ już ingerencji w pliki projektu i bÄdÄ one + polegaÄ na podstawieniu w odpowiednie miejsca odpowiednich plików. Zatem + żeby zmieniÄ logo na gÅównej stronie silnika wyszukiwania należy wstawiÄ + swoje logo - plik graficzny o nazwiÄ searxng.png do + katalogu: +
++/usr/local/searxng/searxng-src/searx/static/themes/simple/img/ ++
+ Obraz możebyÄ dowolnych rozmiarów, wówczas zostanie dostosowany wymiarów + narzuconych przez styl strony. Drugim elementem jest favicona, + czyli malutki obrazek wyÅwietlany w rogu karty/okna. Tutaj jest nieco + wiÄcej czynnoÅci, ponieważ strona bardziej preferuje format SVG niż + PNG. JeÅli mamy naszÄ ikonÄ w tym formacie to wystarczy tak jak w + przypadku logo podmieniÄ pliki. Z kolei jeÅli nasze logo jest np. w + PNG to wówczas musimy wykonaÄ poniższe czynnoÅci: +
++sudo cp -vv favicon.png /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.png +sudo rm -v /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.svg +sudo ln -s /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.png /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.svg ++
+ Ważne jest w tych wyżej wymienionych przypadkach jest przestrzeganie + odpowiednich nazw plików. Nasze zmiany powinny byÄ już widoczne, jeÅli + nie sÄ to na poczÄ tek warto jest wczytaÄ jeszcze raz stronÄ silnika + wyszukiwania z pominiÄciem pamiÄci podrÄcznej przeglÄ darki lub w trybie + prywatnym. +
+3. ZarzÄ dzanie
++ W podstawowym stopniu zarzÄ dzanie instancjÄ sprowadza siÄ do dwóch + czynnoÅci: usuniÄcia instancji oraz jej + aktualizacji. UsuniÄcie instancji może byÄ przydatne + podczas rozwiÄ zywania problemów. Jest to natyle prosta usÅuga, którÄ + możemy bez problemu reinstalowaÄ bez ryzyka utraty danych, jedyne co + warto zachowaÄ to plik settings.yml - chociaż zmiany w nim + poczynione sÄ na tyle maÅe (oczywiÅcie te opisane tutaj), że wczasie + odzyskiwania pliku z kopii, zdÄ Å¼ylibyÅmy jÄ skonfigurowaÄ na nowo. Innymi + plikami wartymi ochrony jest nasze logo oraz favicona. +
++ Aby usunÄ Ä instancjÄ SearXNG, należy wydaÄ poniższe polecenie: +
++/usr/local/searxng/searxng-src$ sudo -H ./utils/searxng.sh remove all ++
+ Przed wydaniem polecenia, należy zwróciÄ uwagÄ, że nie jest klasyczne + polecenie, tylko co spotrzegawczy zauwaÅ¼Ä , że jest skrypt instalacji i + należy na poczÄ tek przejÅÄ do folderu nadrzÄdnego dla jego lokalizacji + podobnie do instalacji instancji. JeÅli faktycznie chcemy pozbyÄ siÄ + instancji SearXNG z naszego systemu, serwer Valkey bÄdziemy + musieli usunÄ Ä samodzielnie. JeÅli tylko jÄ reinstalujemy może on + pozostaÄ w systemie. Tak samo w przypadku uwsgi. W systemie + pozostaje również konfiguracja proxy serwera WWW i jÄ również + należy wyÅÄ czyÄ - oczywiÅcie jeÅli pozbywamy siÄ instancji na dobre z + systemu. +
+
+ DrugÄ
czynnoÅciÄ
sÄ
aktualizacje. Jak czÄsto należy je robiÄ? To ciÄżko
+ okresliÄ. Moja instancja próbuje aktualizowaÄ siÄ codziennie. Dlaczego?
+ Otóż nie które wyszukiwarki wymagajÄ
od zewnÄtrznych systemów kluczy
+ API (takÄ
wyszukiwarkÄ
jest np. DuckDuckGo) i te klucze sÄ
wydawane
+ na jakiÅ okres czasu - jaki? Tego nie wiem, dlatego też aby uniknÄ
Ä
+ sytuacji w której pozbawiam siÄ z silnika jednego ze źródeÅ aktualizuje
+ siÄ codziennie. OczywiÅcie proces jest automatyzowany przy użyciu
+ usÅugi cron oraz skryptu powÅoki BASH. Sam proces aktualizacji
+ jest bardzo podobny do procesu instalacji. Klonuje pliki projektu z
+ Githuba, a nastÄpnie zamiast poleceÅ skryptu
+ install all wydajemy
+ instance update. Jednym pytaniem skryptu
+ bÄdzie - czy zastÄ
piÄ plik settings.yml nowszÄ
wersjÄ
pochodzÄ
c
+ z pobranego kodu źródÅowego. JeÅli dokonywaliÅmy tam zmian, to możemy
+ pozostawiÄ dotyczasowÄ
wersjÄ i jest opcja domyÅlna. Poniżej znajduje siÄ
+ polecenie sÅużÄ
ce do przeprowadzenia aktualizacji.
+
+Downloads/searxng$ sudo -H ./utils/searxng.sh instance update ++
+ JeÅli nasza instancja ma byÄ dostÄpna publicznie w internecie, to warto + wykonywaÄ regularnie te aktualizacje. Poniżej zamieszczam mój skrypt. + Co to regularnoÅci jego uruchamiania to już pozostawiam w waszej gestii. +
+
+#!/bin/bash
+
+if [ ! -d ~/Downloads ]; then mkdir ~/Downloads; fi
+cd ~/Downloads;
+
+if [ -d searxng ]; then rm -rf searxng; fi
+
+git clone https://github.com/searxng/searxng.git searxng;
+cd searxng;
+
+sed -i '358a _t="-t 1"' ~/Downloads/searxng/utils/lib.sh;
+sudo -H ./utils/searxng.sh instance update
+
+sudo cp -vv ${HOME}/searxng.png /usr/local/searxng/searxng-src/searx/static/themes/simple/img
+sudo cp -vv ${HOME}/favicon.png /usr/local/searxng/searxng-src/searx/static/themes/simple/img
+sudo rm -v /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.svg
+sudo ln -v -s /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.png /usr/local/searxng/searxng-src/searx/static/themes/simple/img/favicon.svg
+
+ + Skrypt zmieniejsza czas oczekiwana na odpowiedź na pytanie do jednej + sekundy przez co plik settings.yml pozostaje bez zmian. JeÅli + nie zmienialiÅmy favicony oraz loga to możemy pozbyÄ 4 ostatnich + linii. JeÅli dokonywaliÅmy taki zmian to należy pozostawiÄ je luzem w + katalogu domowym lub wskazaÄ innÄ ÅcieżkÄ w tychże poleceniach. Skrypt + SearXNG podczas aktualizacji nadpisze nowymi plikami nasze pliki. Nie + sprawdza ich w żaden sposób, dlatego też te modyfikacje należy wprowadzaÄ + ponownie po każdej aktualizacji. +
+4. RozwiÄ zywanie problemów
++ InstancjÄ SearXNG hostuje od ok. 3 lat i w sumie nie napotkaÅem żadnych + poważnych problemów. Chociaż w przypadku oprogramowania wydawanego jako + Rolling-Release oraz automatycznych aktualizacji to jest to + pewnego rodzaju loteria - czy po kolejnej aktualizacji instancja bÄdzie + zdatna w ogóle do użytku. Jednym z takich powszechniejszych problemów + jaki możemy napotkaÄ to, że zamiast strony startowej wyÅwietla siÄ: +
++Internal Server Error ++
+ To warto na poczÄ tek sprawdziÄ czy takie usÅugi jak uwsgi oraz + Valkey dziaÅajÄ i ewentualnie rozwiÄ zaÄ problem z ich + dziaÅaniem, jeÅli coÅ jest nie tak. Chociaż to siÄ rzadko zdarza. + Innym rozwiÄ zaniem, które może siÄ sprawdziÄ jest reinstalacja + instancji. W moim przypadku - dwóch takich problemów na przestrzeni 3 lat + reinstalacja pomogÅa w 100% lub czÄÅciowo. +
++ Ponieważ w drugim przypadku zmiana miÄdzy poszczególnymi wersjami byÅa + doÅÄ duża. Poprzedni silniki bazodanowy Redis zastÄ piono + wÅaÅnie wymienionym tutaj Valkey oraz zmieniono sposób + dystrybucji plików statycznych (m.in. arkuszy styli CSS czy kodu + JavaScript) przez co mimo uruchomienia instancji po jej reinstalacji + wyglÄ daÅa źle - nie wczytaÅo arkuszy styli. Dlaczego siÄ to staÅo? Otóż + winna byÅa moja konfiguracja przekierowania Å¼Ä daÅ HTTP na konfiguracjÄ + proxy. Mój serwer WWW przekierowywaÅ zapytania na + /searxng wówczas nazwy plików statycznych pozbawione już + poprzedzajÄ cego je slasha doklejaÅy siÄ do ciÄ gu + searxng a takich plików nie ma. WiÄc ten ostatni slash + w konfiguracji jest taki ważny - od pewnej wersji. +
++ CzÄsto podczas troubleshootu pomocna może byÄ dokumentacja + admina. Dokumencja projektu SearXNG, dzieli siÄ na trzy kategorie: + dokumentacje usera, admina oraz dewelopera. Przydatna jest + sekcja zgÅoszenie na stronie projektu w serwisie Github. +
++ Tym wÅasnie akcentem zakoÅcze tworzenie tego materiaÅu. DowiedzieliÅmy + sie w jaki sposób zainstalowaÄ, dostosowaÄ do wÅasnego upodobania - w + stopniu podstawowym, zarzadzaÄ oraz rozwiÄ zaÄ problemy, które na pierwszy + rzut oka nie wydajÄ siÄ bÅache, ale majÄ takie rozwiÄ zanie. RozdziaÅ + z rozwiÄ zywaniem problemów pozostawiam otwarty, jeÅli coÅ jeszcze mi siÄ + przydarzy z SearXNG i uda mi siÄ to naprawiÄ to opiszÄ to tam o + aktualizacji dowiecie siÄ z listy zmian na stronie gÅównej. +
++ ~xf0r3m +
+