Sätt upp din egen sökproxy, SearXNG

Många är väl medvetna om att något märkligt händer då vi använder Google, Bing eller andra söktjänster på Internet, inte bara blir det svårt att sålla bland vad som är betalda annonser, vad som är betald placering och vad som är faktiska sökresultat utan dessutom börjar andra sidor som innehåller annonser visa massor av tips och förslag på det vi precis sökt på eller likanade produkter … När du använder söktjänster, utan ”kostnad”, så är det du som är produkten, det som säljs till andra är information om dig och dina, i det här fallet, sökningar på Internet.

Hur kommer du runt detta då? In kommer till exempel SearXNG!

Provsök gärna nedan och se hur dina sökresultat visas, klickar du på sökresultaten fungerar inte detta … 😉

Det som är trevligt med SearXNG är att den lämnar ingen information om dig, din webbläsare eller något annat till de sökmotorer den hämtar information från. Sökmotorerna upplever var sökning du gör som om den kommer från en ny dators webbläsare, inget gammalt finns med och dessutom, resultaten som visas för dig är helt rena från annonser eller ”placerat” material. Inte minst det sistnämnda lär man sig snabbt att uppskatta …

SearXNG kan du intingen installera direkt i en dator eller via Docker, smaken är som baken och jag föredrar en ren installation. I mitt fall grävdes ytterligare en Raspberry Pi 4 med 8 GB minne fram ur skrivbordslådan. Kanske inget man tillhandahåller som en tjänst på Internet för allmänheten men för eget hemmabruk duger en Raspberry Pi alldeles utmärkt. Dessutom, med SearXNG, så får man möjligheten att välja resultat från ett flertal söktjänster på Internet, mer om detta längre fram, efter installationen … 😉

Det finns en uppsjö av installationsanvisningar på Internet, det är bara att söka efter dem men … detta är en lite speciell installation, väldigt få fungerar rakt av och att debugga dessa skript är inte det enklaste. Så jag skrev mitt eget lilla recept.

Installationsanvisning 202404 …

Ett tips, läs först genom samtliga installationspunkter och gör dig bekväm med installationen INNAN du börjar, det är många punkter men jag har, för att minska risken för att missa någon, valt att skriva dem en och en.

Uppdatera ditt OS.

sudo apt update

sudo apt ugrade

Du kommer att köra SerXNG under en annan användare så sätt upp denna.

sudo useradd -s /bin/bash -d /home/searx -m -G sudo searx

sudo passwd searx

… och ange lösenordet för användare ”Searx”. Att köra SearXNG under en annan användare än root/admin är ur säkerhetssynpunkt smart, det kan också vara fördelaktigt om man installerar i en virtuell miljö.

Logga in med den nya användaren för att fortsätta installationen.

sudo searx

… och ange lösenordet för ”searx”.

Som ”searx”, installera nu följande applikationer och beroenden, jag brukar ta dem ett i taget för full kontroll.

Jag startar med åtkomst till mjukvaruplattformen Github.

sudo apt install git

Sedan fortsätter jag med webbservern, i det här installationsexemplet NginX.

sudo apt install nginx

Brandväggen IPtables är redan förinstallerad men vill man vara säker, så visst …

sudo apt install iptables

För att på enklaste sätt göra det möjligt att spara sina brandväggsregler, och att ladda dem efter en om- eller uppstart så kan man använda sig av verktyget IPtables Persistent.

sudo apt install iptables-persistent

Vill du sedan ha ett lite enklare sätt att konfigurera dina brandväggsregler så kan du använda UFW, Uncomplicated Firewall men det är inget som är nödvändigt … Min anvisning bygger på att det installeras och används.

sudo apt install ufw

Vidare på ämnet säkerhet, Let’s Encrypt har en hanterare för sina gratiscertifikat så den installerar vi vilket enkelt ger oss SSL-certifikat för vår webbtjänst.

sudo apt install certbot

sudo apt install python3-certbot-nginx

Nu, när vi har alla applikationer SearXNG behöver installerade, kan påbörja lite grundkonfiguration.

Jag börjar med brandväggsregler för webbservern.

sudo iptables -I INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT
sudo iptables -I INPUT -m state –state NEW -p tcp –dport 443 -j ACCEPT
sudo netfilter-persistent save
sudo ufw allow 80
sudo ufw allow 443

De två IPtables-kommandona sätter regelverket, netfilter-kommandot sparar reglerna så att de används vid om- eller uppstart och ufw-kommandona håller öppningarna under sessionen.

Installera SearXNG

Börja med att kopiera SearXNG till din dator, lokalt.

git clone https://github.com/searxng/searxng searxng

Gå in i mappen dit filerna kopierats.

cd searxng

Du står nu i /home/searx/searxng

Starta nu installationsskriptet med följande kommando.

sudo -H ./utils/searxng.sh install all

Hela installationsprocessen är till stora delar helt automagisk men du kan behöva svara ”Y” då skriptet efterfrågar svar på till exempel allt skall installeras och så vidare.

Som du sett, denna anvisning bygger på webbservern NginX för leverans av data till webbläsarna …

Då hela installationsskriptet körts utan några felmeddelanden så kan vi fortsätta till nästa dela av uppsättningen.

Konfigurera NginX

Skapa en ny konfigurationsfil för NginX under /etc/nginx/sites-available/searxng

sudo nano /etc/nginx/sites-available/searxng

och lägg in följande rader.

server {

# Ports.

listen 80;
listen [::]:80;

# Hostname.

server_name yetanothersearxserver.xyz;

# Logging.

access_log /dev/null;
error_log /dev/null;

# Searx Redirect.

location / {
uwsgi_pass unix:///usr/local/searxng/run/socket;

include uwsgi_params;

uwsgi_param    HTTP_HOST             $host;
uwsgi_param    HTTP_CONNECTION       $http_connection;

# see flaskfix.py
uwsgi_param    HTTP_X_SCHEME         $scheme;
uwsgi_param    HTTP_X_SCRIPT_NAME    /searxng;

# see limiter.py
uwsgi_param    HTTP_X_REAL_IP        $remote_addr;
uwsgi_param    HTTP_X_FORWARDED_FOR  $proxy_add_x_forwarded_for;

}
}

Efter ”server_name” anger du det fulla FQDN för just din server, använd det namn som medger åtkomst från Internet så att du kan skapa ett publikt och verifierat SSL-ceritifikat i följande steg.

Efter ”location” anger du om din sökmotor skall vara åtkomlig direkt i rotten av ditt FQDN eller så anger du en subdomän, till exempel ”location /searxng”. Jag gillar att bara behöva skriva URL:en utan subdomän/sökväg.

Då detta är gjort, ta bort ”location” i den NginX-fil du har under /etc/nginx/sites-enabled/.

För att sätta upp ett certifikat för din nya SearXNG-server, se till att webbservern är nåbar från Internet på port 80 och 443, hur just det görs i din miljö överlåter jag till dig … 😉

Då åtkomst till webbservern från Internet är klart kör du Let’s Encrypts skript.

certbot –nginx yetanothersearxserver.xyz

Här anger du återigen ditt FQDN för just din server.

Du behöver också sätta upp en symlink för NginX mot serverns ”sites-enabled”-mapp.

sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/

Då detta är klart, starta om webbservern och SearXNG.

sudo systemctl reload nginx
sudo service uwsgi restart searxng

Nu kan du logga ut som användare ”searx”, du är nu klar …

exit

Vill du enbart ha söktjänsten tillgänglig internt, stäng åtkomsten till servern i din Internetrouter, brandvägg eller vad du nu använder …

… och grattis, du har nu en egen söktjänst!

Första gången … 😉

När du nu öppnar upp din söktjänst för första gången, passa på att klicka på kugghjulet uppe till höger på söksidan, jag föreslår att du väljer att söka sidor på alla språk om du till exempel söker mycket med engelska ord. Låter du sökskriptet själv avgöra vilket språk du använder får du ofta sökfel om inte svenska hemsidor innehåller de engelska sökord du anger. Välj också vilka sökmotorer du föredrar att hämta information från …

Dina inställningar sparas lokalt i en liten cookie lokalt men/och är inget som delas med någon annan …

Som sagt, en lite besvärlig installation kanske men det ger dig ett fantastiskt verktyg som inte gör din information eller dina sökord säljbara till andra parter på Internet.

Håll din installation uppdaterad

Det gör du som användare ”searx” …

su searx

Ange lösenordet du gav denna användare.

Gå till SearXNG:s mapp.

cd searxng

Skriv sedan följande för att uppdatera din installation.

sudo -H ./utils/searxng.sh instance update

Då uppdateringsskriptet är klart kan du starta om NginX och SearXNG.

sudo systemctl reload nginx
sudo service uwsgi restart searxng

Logga ut användare ”searx”.

exit

Sedan kör det vanliga …

sudo apt update

sudo apt upgrade

Nu tror jag att jag fått med allt som är värt att skriva om, hoppas du har glädje av din nya säkra söktjänst.