Hver gang du søger på Google, Bing eller Startpage, bliver forespørgslen logget, kategoriseret og i mange tilfælde brugt til at bygge en profil på dig. SearXNG løser det problem på en anden måde end de fleste privatlivsværktøjer: i stedet for at love dig, at en tredjepart ikke logger dine data, fjerner du tredjeparten helt fra ligningen. Du kører selv søgemaskinen, på din egen server, og bestemmer selv hvilke resultatkilder den henter fra. I denne guide sætter vi en fuld SearXNG-installation op med Docker, Redis-cache og HTTPS via Caddy, og vi ser på de sikkerhedshuller, der er dukket op omkring SearXNG-integrationer i 2026.
Hvad er SearXNG, og hvorfor er det relevant i 2026?
SearXNG er en gratis, open source metasøgemaskine. Den sender din forespørgsel videre til en række andre søgemaskiner (Google, Bing, Brave, DuckDuckGo, Wikipedia og en lang række specialiserede kilder), samler resultaterne, fjerner sporing og tracking-parametre, og viser dig en samlet liste. Ifølge det officielle GitHub-repository er projektet under aktiv udvikling med jævnlige commits, og dokumentationssiden opdateres løbende med nye versionsnumre efter et årstalsbaseret skema (for eksempel version 2026.9.5). Det er et tegn på et projekt, der bliver vedligeholdt løbende, ikke et forladt sideprojekt.
Det, der adskiller SearXNG fra Startpage, Brave Search og DuckDuckGo, er ejerskabet. De tre sidstnævnte er alle hostede tjenester, du logger ind på eller besøger via deres domæne. SearXNG er derimod bygget til at blive selvhostet: du downloader Docker-billedet, kører det på din egen VPS eller hjemmeserver, og ingen andre end dig har adgang til logs, cache eller konfiguration. Det gør SearXNG til det oplagte valg, hvis du vil have kontrol over søgeoplevelsen uden at stole på en tredjeparts privatlivspolitik.
Søgeordet “searxng” har ifølge søgedata fra DataForSEO en stigende søgetendens i Danmark, med en årlig vækst på omkring 179 procent i søgevolumen. Det afspejler en bredere tendens: flere danske og nordiske brugere leder efter alternativer til de store søgemaskiner, i takt med at bekymringer om dataindsamling og AI-drevne profiler vokser. SearXNG passer godt ind i en bredere privatlivsstrategi, hvor du også har kigget på ting som kryptering af browsertrafik og DNS-opslag.
Sådan fungerer metasøgning: privatliv gennem arkitektur, ikke løfter
Forskellen mellem SearXNG og de fleste andre “private” søgeløsninger ligger i, hvor tilliden placeres. Når du bruger DuckDuckGo eller Startpage, stoler du på, at virksomheden bag rent faktisk overholder sin egen privatlivspolitik, og at den ikke ændrer den næste gang, selskabet skifter ejer eller forretningsmodel. Med SearXNG er den tillid overflødig, fordi arkitekturen selv håndhæver adskillelsen. Din browser taler kun med din egen SearXNG-instans. SearXNG-instansen taler videre til Google, Bing og de øvrige kilder, men den gør det anonymiseret: forespørgslen kommer fra din servers IP-adresse, ikke din egen, og SearXNG fjerner sporings-parametre, klik-id’er og andre identifikatorer fra resultaterne, før de vises for dig.
Det betyder også, at søgemaskinerne på bagsiden ikke kan bygge en profil på dig specifikt, fordi de kun ser en samlet strøm af forespørgsler fra din servers IP-adresse, ikke fra din personlige enhed eller konto. Har du flere brugere på samme instans, deles denne IP-adresse mellem jer, hvilket yderligere udvander mulighederne for individuel profilering. Til gengæld betyder det centrale designvalg også, at du selv bærer ansvaret for at drifte og opdatere systemet korrekt. Privatliv gennem selvhosting er ikke gratis i den forstand, at det kræver løbende vedligeholdelse, i modsætning til at klikke dig ind på en hostet tjeneste og stole på, at nogen andre passer på den tekniske del.
Forudsætninger: dette skal du bruge, før du starter
Før du går i gang, skal følgende være på plads. Denne guide forudsætter et Linux-baseret system (Ubuntu 24.04 eller nyere, Debian 12 eller nyere), men trinene fungerer også på macOS med Docker Desktop, med mindre tilpasninger.
- En server eller VM med mindst 1 GB RAM og 1 vCPU (2 GB RAM anbefales, hvis du kører Redis/Valkey og reverse proxy på samme maskine)
- Docker Engine, version 25 eller nyere, samt Docker Compose plugin (kommandoen
docker compose, ikke det ældredocker-compose) - Et domænenavn, du kontrollerer, hvis du vil have gyldigt HTTPS-certifikat udadtil (valgfrit, men anbefalet)
- Grundlæggende kendskab til terminal, SSH og redigering af YAML-filer
- Cirka 45-60 minutter til hele opsætningen inklusive test
- Åbne porte 80 og 443 i din firewall, hvis du eksponerer instansen offentligt
Du behøver ikke være systemadministrator til daglig for at følge denne guide, men du skal være tryg ved at rette i konfigurationsfiler og genstarte containere, når noget ikke virker første gang.
Trin 1: Vælg hvor SearXNG skal køre
Før du installerer noget, skal du beslutte, hvor instansen skal bo. Tre modeller går igen blandt danske og nordiske selvhostere: en billig europæisk VPS, en hjemmeserver på det lokale netværk, eller en lavenergi-enhed som en Raspberry Pi. Valget afhænger af, om du vil have instansen tilgængelig fra hele internettet, eller om den kun skal bruges derhjemme.
| Løsning | Typisk pris | Fordel | Ulempe |
|---|---|---|---|
| VPS hos europæisk udbyder (fx Hetzner, DigitalOcean) | Ca. 25-60 kr./md. | Altid tilgængelig, fast IP, nem HTTPS via Caddy | Kræver tillid til hostingudbyderens datacenter |
| Hjemmeserver/NAS på lokalt netværk | Engangsomkostning, ingen løbende drift | Data forlader aldrig din bolig | Kræver portåbning eller VPN for adgang udefra |
| Raspberry Pi 5 (8 GB) | Engangsomkostning omkring 700-900 kr. | Lavt strømforbrug, kører 24/7 billigt | Begrænset kapacitet ved mange samtidige brugere |
Resten af denne guide fungerer uanset hvilken af de tre du vælger, da alt kører i Docker-containere. Forskellen er kun, hvordan du får adgang til serveren (SSH direkte til en VPS, eller SSH til en lokal IP-adresse for hjemmeserver og Raspberry Pi), og om du skal sætte port-forwarding op i din router for at gøre instansen tilgængelig udefra.
Vælger du en VPS, bør du desuden overveje datacenterets placering. En server placeret i et nordeuropæisk datacenter giver typisk lavere svartid for danske og nordiske brugere end en server på et andet kontinent, og for organisationer med databeskyttelseskrav kan det også gøre det nemmere at dokumentere, hvor databehandlingen fysisk finder sted. Har du i forvejen en hjemmeserver eller NAS, der kører andre selvhostede tjenester som Vaultwarden eller din egen krypterede DNS-server med Unbound, er det oplagt at tilføje SearXNG til samme maskine, så du undgår at betale for endnu en separat server.
Trin 2: Installer Docker og Docker Compose
Har du allerede Docker installeret, kan du springe dette trin over. På en frisk Ubuntu- eller Debian-server installerer du Docker Engine med det officielle installationsscript:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
docker --version
docker compose version
Kør docker --version og docker compose version for at bekræfte, at begge dele er installeret korrekt. Du skal se en version af Docker Engine på 25.x eller nyere, og Compose plugin skal svare med en version, ikke en fejlmeddelelse om ukendt kommando.
Trin 3: Opret projektmappe og hent SearXNG-image
Opret en dedikeret mappe til projektet, så konfiguration og data holdes adskilt fra resten af serveren:
mkdir -p ~/searxng-docker/searxng
cd ~/searxng-docker
docker pull searxng/searxng:latest
Det officielle Docker-image hedder searxng/searxng og udgives både på Docker Hub og GitHub Container Registry. Versionsnumrene følger et årstalsbaseret format (år.måned.dag-commithash), og der udkommer nye tags med kort mellemrum, ofte flere gange om måneden. For produktion bør du pinne et konkret tag i stedet for latest, så en opdatering ikke ændrer adfærd uden varsel. Tjek altid det aktuelle tag på Docker Hub, før du deployer, da et nyt tag typisk er udgivet, siden denne guide blev skrevet.
Trin 4: Skriv din docker-compose.yaml
Opret filen docker-compose.yaml i projektmappen. Denne konfiguration kører SearXNG sammen med Valkey (en Redis-kompatibel cache, som SearXNG bruger til rate-limiting og caching):
services:
redis:
image: valkey/valkey:8-alpine
container_name: searxng-redis
command: valkey-server --save "" --appendonly no
restart: unless-stopped
networks:
- searxng
searxng:
image: searxng/searxng:latest
container_name: searxng
depends_on:
- redis
environment:
- SEARXNG_BASE_URL=https://sog.dit-domaene.dk/
- SEARXNG_REDIS_URL=redis://redis:6379/0
volumes:
- ./searxng:/etc/searxng:rw
ports:
- "8888:8080"
restart: unless-stopped
networks:
- searxng
networks:
searxng:
driver: bridge
Bemærk volumen ./searxng:/etc/searxng:rw. Den sørger for, at din settings.yml og eventuelle tilpasninger overlever, når du opdaterer eller genstarter containeren. En almindelig begynderfejl er at glemme dette bind mount, hvilket betyder, at alle indstillinger nulstilles ved næste docker compose pull.
Gennemgår vi filen linje for linje: depends_on: redis sikrer, at Valkey-containeren starter før SearXNG, så applikationen ikke fejler ved opstart på grund af en manglende cache-forbindelse. Miljøvariablen SEARXNG_BASE_URL fortæller SearXNG, hvilken offentlig adresse den selv kører på, hvilket bruges til at generere korrekte links og OpenSearch-beskrivelsen. SEARXNG_REDIS_URL peger på Valkey-containeren via Dockers interne DNS, hvor redis er servicenavnet, ikke en IP-adresse, hvilket betyder, at forbindelsen fortsat virker, selvom containerens interne IP skifter ved genstart. Portmappingen 8888:8080 eksponerer containerens interne port 8080 som port 8888 på værtsmaskinen, så du kan teste lokalt, før du sætter en reverse proxy op i et senere trin.
Trin 5: Start containerne første gang
docker compose up -d
docker compose logs -f searxng
Første gang containeren starter, genererer SearXNG automatisk en standard settings.yml i den mountede mappe, hvis der ikke allerede findes en. Vent til loggen viser, at serveren lytter på port 8080, tryk Ctrl+C for at forlade log-visningen (containeren fortsætter med at køre i baggrunden), og test derefter lokalt:
curl -I http://localhost:8888/
Forventet output:
HTTP/1.1 200 OK
Server: uvicorn
Content-Type: text/html; charset=utf-8
Får du et 200-svar, kører SearXNG korrekt lokalt. Åbn http://din-server-ip:8888 i en browser for at se søgegrænsefladen.
Trin 6: Tilpas settings.yml
Åbn ~/searxng-docker/searxng/settings.yml i din yndlingseditor. Her er de vigtigste felter, du bør gennemgå:
general:
instance_name: "Mit Private Søg"
privacypolicy_url: false
donation_url: false
search:
safe_search: 1
autocomplete: "duckduckgo"
formats:
- html
- json
server:
base_url: "https://sog.dit-domaene.dk/"
limiter: true
image_proxy: true
Sæt limiter: true, hvis instansen skal være tilgængelig fra det offentlige internet. Det aktiverer SearXNG’s indbyggede bot-detektion, som er nævnt eksplicit i den officielle dokumentation som en af projektets kernefunktioner. Uden limiteren risikerer du, at din instans bliver misbrugt af scrapere, som sender tusindvis af forespørgsler igennem den, hvilket hurtigt får dine IP-adresser blokeret hos Google og Bing.
Feltet formats styrer, om SearXNG også skal eksponere et JSON-API. Slår du JSON til uden yderligere adgangsbegrænsning, kan hvem som helst forespørge din instans programmatisk, hvilket øger belastningen markant. Overvej at fjerne json fra listen, medmindre du aktivt bruger API’et, for eksempel til et browser-plugin eller en Raycast-integration.
Trin 7: Genstart og verificer konfigurationen
docker compose restart searxng
docker compose logs --tail=50 searxng
Tjek loggen for fejl relateret til YAML-syntaks. En manglende mellemrumsindrykning i settings.yml er den hyppigste årsag til, at containeren crasher lige efter genstart. YAML er følsomt over for indrykning, og en enkelt forkert indrykket linje kan forhindre hele filen i at blive parset.
Trin 8: Sæt Caddy op som reverse proxy med automatisk HTTPS
For at eksponere din instans sikkert på internettet, bør trafikken gå gennem en reverse proxy, der terminerer TLS. Caddy er et populært valg til dette, fordi det henter og fornyer Let’s Encrypt-certifikater automatisk. Tilføj Caddy til din compose-fil:
caddy:
image: caddy:2-alpine
container_name: searxng-caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
networks:
- searxng
volumes:
caddy_data:
caddy_config:
Opret derefter en Caddyfile i samme mappe:
sog.dit-domaene.dk {
reverse_proxy searxng:8080
encode zstd gzip
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
Referrer-Policy "no-referrer"
}
}
Fjern portmappingen 8888:8080 fra SearXNG-servicen, når Caddy håndterer trafikken, så porten ikke er eksponeret to gange. Kør docker compose up -d igen, og Caddy henter automatisk et gyldigt certifikat fra Let’s Encrypt, forudsat at dit domænes DNS-opslag peger på serverens IP-adresse, og port 80 og 443 er åbne i firewallen.
Før du kører op-kommandoen, skal du have oprettet en A-record hos din DNS-udbyder, der peger dit valgte underdomæne (for eksempel sog.dit-domaene.dk) mod serverens offentlige IP-adresse. DNS-ændringer kan tage alt fra få minutter til nogle timer at slå igennem afhængig af udbyder og TTL-værdi. Er certifikatudstedelsen fejlet, er den hyppigste årsag netop, at DNS-opslaget endnu ikke er opdateret, eller at en eksisterende firewall (for eksempel en cloud-udbyders sikkerhedsgruppe, ikke kun serverens egen ufw eller iptables) stadig blokerer port 80 udefra.
Trin 9: Vælg og prioriter søgemotorer
SearXNG understøtter over 200 forskellige kilder, fra store søgemaskiner til Wikipedia, GitHub, arXiv og nyhedsfeeds. Du styrer dette i sektionen engines i settings.yml. Skal du eksempelvis deaktivere Yandex af principielle årsager, tilføjer du:
engines:
- name: yandex
disabled: true
- name: brave
disabled: false
- name: wikipedia
disabled: false
En fælde, mange falder i her, er at aktivere alt for mange engines samtidig. Hver forespørgsel til din instans udløser parallelle kald til hver aktiveret kilde. Aktiverer du 30 engines, sender du 30 udgående forespørgsler pr. søgning, hvilket dramatisk øger risikoen for at blive rate-limitet eller CAPTCHA-blokeret af Google og Bing. Start med 5-8 pålidelige kilder, og udvid gradvist.
Engines i SearXNG er organiseret i kategorier, og du kan tildele forskellige kilder til forskellige kategorier afhængig af, hvad du typisk søger efter:
| Kategori | Eksempler på kilder | Typisk brug |
|---|---|---|
| Generel søgning | Google, Bing, Brave, DuckDuckGo | Almindelige hverdagssøgninger |
| Videnskab | arXiv, PubMed, Semantic Scholar | Akademisk research og fagartikler |
| Kode og udvikling | GitHub, GitLab, Stack Overflow | Teknisk søgning for udviklere |
| Nyheder | Google News, Bing News | Aktuelle begivenheder |
| Billeder og video | Google Billeder, Bing Billeder, YouTube | Visuelt indhold |
Du kan skifte mellem kategorier direkte i søgefeltet ved at bruge såkaldte bang-genveje, for eksempel !gh for at søge direkte på GitHub eller !yt for YouTube, uden at skulle klikke gennem faner i grænsefladen. Det er en af de funktioner, der ofte overses af nye brugere, men som gør daglig brug markant hurtigere, når du kender genvejene til dine mest brugte kilder.
Trin 10: Tilpas uWSGI for bedre ydeevne under belastning
SearXNG kører internt via uWSGI, som styrer, hvor mange samtidige processer (workers) der kan behandle forespørgsler. Standardopsætningen er tilstrækkelig til privat brug med få samtidige brugere, men deler du instansen med en husstand, et lille kontor eller kobler den til en AI-agent, der sender mange forespørgsler i træk, bør du hæve antallet af workers og threads. Opret eller rediger uwsgi.ini i din searxng-konfigurationsmappe:
[uwsgi]
workers = 4
threads = 4
worker-reload-mercy = 30
disable-logging = true
log-4xx = true
log-5xx = true
Et godt tommelfingerregel er at sætte workers til antallet af CPU-kerner på din server. Har du en 2-kernet VPS, sæt workers = 2. Sætter du tallet for højt i forhold til den fysiske hardware, ender du i stedet med, at containeren bruger mere tid på at skifte mellem processer end på at besvare søgninger, hvilket faktisk gør instansen langsommere. Genstart containeren, efter du har ændret filen, og overvåg docker stats searxng for at se, om CPU- og hukommelsesforbruget matcher din forventning under belastning.
Trin 11: Integrer med browser og mobil
De fleste moderne browsere (Firefox, Chrome, Brave) lader dig tilføje en brugerdefineret søgemaskine via en OpenSearch-beskrivelse. SearXNG eksponerer denne automatisk på /opensearch.xml. I Firefox: gå til adresselinjen, skriv din instans-URL, højreklik i søgefeltet på siden, og vælg “Tilføj søgemaskine”. I Chrome/Brave: gå til Indstillinger > Søgemaskine > Administrer søgemaskiner, og tilføj din instans manuelt med forespørgsels-URL’en https://sog.dit-domaene.dk/search?q=%s.
På Android kan du sætte din SearXNG-instans som standardsøgning i browsere som Fennec eller Vivaldi ved at tilføje den samme forespørgsels-URL manuelt under browserens søgemaskine-indstillinger. På iOS er processen tilsvarende i Safari via Indstillinger, hvis du har installeret en browser, der understøtter tilpassede søgemaskiner, da Safari selv har et mere begrænset udvalg af indbyggede alternativer. Uanset platform er pointen den samme: så snart din instans er sat som standard, forsvinder Google eller Bing som mellemled i din daglige browsing, og alle dine forespørgsler går gennem din egen server først.
Trin 12: Opsæt automatiske opdateringer
Fordi SearXNG udgiver nye Docker-tags hyppigt, ofte med sikkerhedsrettelser og forbedret bot-detektion, bør du have en rutine for opdateringer. Den simple, manuelle metode:
cd ~/searxng-docker
docker compose pull
docker compose up -d
docker image prune -f
Sæt dette op som en ugentlig cron-opgave, hvis du vil automatisere det, men test altid instansen manuelt efter en opdatering, da ændringer i settings.yml-strukturen fra tid til anden kræver, at du tilpasser din konfiguration.
Trin 13: Backup af konfiguration
tar -czf searxng-backup-$(date +%F).tar.gz ~/searxng-docker/searxng ~/searxng-docker/docker-compose.yaml ~/searxng-docker/Caddyfile
Da SearXNG som udgangspunkt ikke gemmer søgehistorik eller brugerdata (det er hele pointen med værktøjet), er der ikke en database at sikkerhedskopiere i traditionel forstand. Det eneste, du skal bevare, er konfigurationsfilerne, så du hurtigt kan genoprette instansen på en ny server, hvis den nuværende går ned.
Trin 14: Overvåg og begræns adgang
Vil du holde instansen privat til dig selv eller din husstand, er den enkleste løsning at binde den til et lokalt netværk eller lægge den bag en VPN som WireGuard, i stedet for at eksponere den offentligt via Caddy. Alternativt kan du tilføje HTTP Basic Auth i Caddyfile:
sog.dit-domaene.dk {
basicauth /* {
dinbruger $2a$14$hashedpasswordher
}
reverse_proxy searxng:8080
}
Det forhindrer, at søgemaskinen bliver fundet og misbrugt af tilfældige scannere, som konstant crawler internettet efter åbne SearXNG-instanser at sende automatiserede forespørgsler igennem.
Sikkerhedshuller i 2026: hvad SearXNG-brugere skal vide
Selve SearXNG-kerneapplikationen har ikke haft store, navngivne sårbarheder i 2026 ifølge tilgængelige kilder. Til gengæld er der registreret flere sårbarheder i værktøjer, der integrerer med SearXNG, særligt i MCP-servere (Model Context Protocol) og AI-agenter, som bruger SearXNG som søgekilde. Det er relevant, fordi mange udviklere i 2026 kobler SearXNG til lokale AI-assistenter og automatiseringsværktøjer.
| CVE | Berørt komponent | Type | Rettet i version |
|---|---|---|---|
| CVE-2026-54688 | mcp-searxng (MCP-server) | SSRF via web_url_read, guard slået fra som standard | 1.2.1 |
| CVE-2026-58483 | mcp-searxng | DoS via NodeHtmlMarkdown-behandling, høj CPU-belastning | 1.7.1 |
| CVE-2026-54689 | mcp-searxng | Informationslækage | 1.2.0 |
| CVE-2026-77085 | n8n SearXNG Agent-værktøj | SSRF-beskyttelse omgået | 2.34.1 / 2.33.4 |
| CVE-2026-46372 | SillyTavern (/api/search/searxng) | SSRF via baseUrl-parameter, CVSS 8,5 | 1.18.0 |
Fællesnævneren for disse sårbarheder er Server-Side Request Forgery (SSRF): en angriber kan i visse tilfælde få MCP-serveren eller agent-værktøjet til at hente interne netværksressourcer eller cloud-metadata-endpoints, som normalt ikke skulle være tilgængelige. Kører du SearXNG sammen med en AI-agent eller MCP-integration, skal du sikre dig, at den komponent er opdateret til den rettede version, og at netværket omkring SearXNG er segmenteret, så en kompromitteret agent ikke kan nå følsomme interne tjenester. Se den fulde tekniske gennemgang af CVE-2026-54688 hos GitLab Advisory Database og CVE-2026-58483 hos Tenable.
SearXNG og persondataret: hvorfor selvhosting giver mening i Danmark
For danske virksomheder og offentlige institutioner er spørgsmålet om, hvor søgedata og logfiler opbevares, ikke kun et teknisk valg, det er også et compliance-spørgsmål under GDPR. Bruger en medarbejder Google eller Bing direkte til research i følsomme sager, sendes forespørgslen til servere uden for din kontrol, og du kan ikke dokumentere præcis, hvad der logges, eller hvor længe. Kører du i stedet en selvhostet SearXNG-instans placeret hos en europæisk hostingudbyder, eller på eget udstyr i Danmark, ved du præcis, hvor databehandlingen foregår, og du kan selv fastsætte en logningspolitik, der passer til din organisations databehandlingsgrundlag.
Det gør ikke SearXNG til en GDPR-genvej i sig selv, og du skal stadig vurdere, om de bagvedliggende søgemaskiner, som SearXNG forespørger (Google, Bing og lignende), er en del af din egen databehandling, der kræver en databehandleraftale, eller om det falder uden for, fordi forespørgslerne kommer fra din serverinfrastruktur og ikke fra brugerens identificerbare enhed. For privatpersoner og mindre teams i Norden er den praktiske pointe enklere: du undgår, at din søgeadfærd bliver en del af en amerikansk techgigants annonceprofil, og du kan dokumentere over for kolleger eller kunder, at researcharbejdet ikke lækker til tredjepart via søgefeltet. Kombinerer du SearXNG med krypteret DNS over HTTPS på klientsiden, lukker du endnu et hul, hvor din netværksudbyder ellers kunne se, hvilke domæner du besøger.
SearXNG sammenlignet med Startpage, Brave Search og DuckDuckGo
Ingen af de tre hostede alternativer tilbyder officiel selvhosting. Startpage proxyer Google-resultater og fjerner identificerbare data, men du logger stadig ind på en tjeneste, du ikke selv driver. Brave Search bygger sit eget indeks og er ejet af Brave Software. DuckDuckGo kombinerer flere kilder, men forbliver en centraliseret, hostet tjeneste. SearXNG er den eneste af de fire, der er designet til at køre på din egen infrastruktur fra bunden.
| Egenskab | SearXNG | Startpage | Brave Search | DuckDuckGo |
|---|---|---|---|---|
| Selvhosting muligt | Ja, officielt understøttet | Nej | Nej | Nej |
| Kildemodel | Aggregerer 200+ kilder | Proxyer Google | Eget indeks | Flere kilder + eget indeks |
| Logning af søgninger | Ingen som standard, du kontrollerer selv | Ingen ifølge egen politik | Ingen ifølge egen politik | Ingen ifølge egen politik |
| Kræver du stoler på en tredjepart | Nej, hvis selvhostet | Ja | Ja | Ja |
| Pris | Gratis (server-omkostning selv) | Gratis, betalt Premium findes | Gratis | Gratis |
| Vedligeholdelsesbyrde | Du opdaterer og driver selv | Ingen | Ingen | Ingen |
Konklusionen er ikke, at SearXNG er “bedre” i alle sammenhænge. Er du ikke villig til at drive og vedligeholde en server, er Startpage eller Brave Search et rimeligt kompromis mellem privatliv og bekvemmelighed. Vil du derimod have fuld kontrol og ikke stole på nogen tredjeparts logning-løfte, er SearXNG den eneste af de fire, der reelt giver dig det valg.
Hvem bør selvhoste SearXNG, og hvem bør lade være?
SearXNG passer godt til dig, hvis du allerede har erfaring med at drive andre selvhostede tjenester, som Nextcloud, Vaultwarden eller en hjemmeserver med Docker. Er du komfortabel med at overvåge logs, håndtere opdateringer og fejlfinde en container, der driller, er den tekniske barriere lav, og gevinsten i form af kontrol over egne data er reel. Det samme gælder små teams eller frivillige organisationer, der arbejder med følsomt research-materiale, og som ønsker at holde søgeadfærd væk fra kommercielle profileringssystemer.
Omvendt er SearXNG ikke det rette valg, hvis du leder efter en løsning, du kan sætte op på fem minutter og aldrig røre igen. Instansen kræver periodisk vedligeholdelse: opdateringer, overvågning af rate-limiting-problemer, og i sjældnere tilfælde fejlretning, når en søgemotor ændrer sit API, og en engine i SearXNG holder op med at virke, indtil projektet udgiver en rettelse. Har du ikke tid eller lyst til den løbende drift, er en hostet privatlivsfokuseret søgemaskine som Startpage eller Brave Search et mere realistisk kompromis, hvor du stadig får et markant privatlivsløft i forhold til almindelig Google-søgning, uden selv at skulle drifte infrastruktur.
5 almindelige fejl, når du sætter SearXNG op
De fleste problemer, nye SearXNG-brugere støder på, stammer ikke fra selve softwaren, men fra antagelser om, hvordan Docker, DNS og eksterne søgemaskiner spiller sammen. Her er de fem fejl, der går igen oftest i selvhoster-fora og på projektets eget GitHub, sammen med hvorfor de opstår, og hvordan du undgår dem fra starten.
- Glemmer bind mount til /etc/searxng. Uden det bliver hele din konfiguration nulstillet ved næste opdatering eller genstart af containeren, og du opdager det typisk først, når dine tilpasninger til engines eller UI pludselig er væk efter en rutinemæssig
docker compose pull. - Aktiverer for mange søgemotorer på én gang. Det udløser hurtigere rate-limiting og CAPTCHA fra Google og Bing, fordi hver forespørgsel udløser dusinvis af udgående kald samtidig. Nybegyndere ser ofte dette som et fejlsignal fra SearXNG selv, men problemet ligger i den samlede belastning, instansen lægger på de eksterne kilder.
- Eksponerer instansen offentligt uden limiter eller adgangskontrol. Åbne SearXNG-instanser bliver ofte fundet og misbrugt af scrapere, der bruger dem som gratis proxy til søgeresultater. Det belaster ikke kun din server, men kan også få din servers IP-adresse sortlistet hos Google eller Bing, hvilket rammer din egen legitime brug.
- Bruger latest-tagget i produktion uden test. Da SearXNG udgiver nye versioner hyppigt, kan en automatisk opdatering introducere en konfigurationsændring, der kræver justering af din settings.yml. Pin i stedet et konkret versionstag, og opdater bevidst med et kort testvindue, hvor du tjekker, at søgning stadig fungerer, før du går videre.
- Ignorerer YAML-indrykning i settings.yml. En enkelt forkert mellemrumsindrykning får hele filen til at fejle ved parsing, og containeren crasher stille uden en tydelig fejlbesked i browseren. Brug en editor med YAML-syntakstjek, eller kør filen igennem en online YAML-validator, før du genstarter containeren.
Avancerede tips til din SearXNG-instans
Når grundopsætningen kører stabilt, er der flere måder at finpudse instansen på. For det første kan du route udgående forespørgsler gennem Tor for ekstra anonymitet over for de søgemotorer, SearXNG forespørger. Det kræver, at du tilføjer en SOCKS5-proxy-konfiguration i settings.yml under outgoing, men vær opmærksom på, at det kan gøre søgningerne markant langsommere og øge risikoen for CAPTCHA, da Tor-exit-noder ofte allerede er markeret som mistænkelige af store søgemaskiner.
For det andet kan du tilpasse temaet og sproget for din instans i settings.yml under ui-sektionen, herunder standardsprog sat til dansk. For det tredje bør du overveje at køre SearXNG bag Fail2ban eller CrowdSec, hvis den er offentligt tilgængelig, så gentagne mislykkede login-forsøg mod din Basic Auth automatisk blokeres på IP-niveau. Endelig kan du eksportere metrikker fra Caddy til Prometheus og Grafana, hvis du vil overvåge trafikmønstre og opdage unormal aktivitet, før den bliver et problem.
Skal du koble SearXNG til en lokal AI-assistent via en MCP-server som mcp-searxng, så husk på baggrund af 2026-sårbarhederne nævnt tidligere, at du aldrig bør pege agentens søgekald direkte mod en offentligt eksponeret instans uden ekstra beskyttelse. Kør i stedet MCP-serveren på samme interne netværk som SearXNG-containeren, undgå at eksponere MCP-serverens port til internettet, og opdater den til den rettede version (1.2.1 eller nyere for CVE-2026-54688, 1.7.1 eller nyere for CVE-2026-58483), før du sætter integrationen i produktion. Er MCP-serveren konfigureret med miljøvariablen MCP_HTTP_HARDEN, bør den være slået til, ikke fra, i din opsætning.
Komplet projektstruktur: sådan ser det færdige setup ud
Når alle trin er gennemført, ser din mappestruktur sådan ud:
searxng-docker/
├── docker-compose.yaml
├── Caddyfile
└── searxng/
├── settings.yml
└── uwsgi.ini
Kør docker compose ps for at bekræfte, at alle tre services (searxng, redis, caddy) kører med status “Up”:
NAME IMAGE STATUS
searxng searxng/searxng:latest Up 2 minutes
searxng-redis valkey/valkey:8-alpine Up 2 minutes
searxng-caddy caddy:2-alpine Up 2 minutes
Ser en af de tre services “Restarting” i stedet for “Up”, er det tegn på, at containeren crasher og genstarter i en løkke. Gå tilbage til den relevante fejlfindingssektion nedenfor, afhængig af hvilken container der driller. Det færdige setup giver dig, når alle tre kører stabilt, en fuldt fungerende, selvhostet søgemaskine med automatisk HTTPS, caching via Valkey og bot-beskyttelse, klar til dagligt brug eller integration med en lokal AI-assistent.
Fejlfinding: 9 almindelige problemer og løsninger
- Containeren starter og stopper igen med det samme. Kør
docker compose logs searxngog kig efter YAML-parsingfejl. Ret indrykningen i settings.yml, og genstart. - “502 Bad Gateway” fra Caddy. SearXNG-containeren er sandsynligvis ikke oppe endnu, eller portnavnet i Caddyfile matcher ikke servicenavnet i docker-compose.yaml. Tjek at
reverse_proxy searxng:8080matcher containernavnet. - Ingen søgeresultater, tomt output. Sandsynligvis er alle aktiverede engines blevet rate-limitet samtidig. Vent 10-15 minutter, og aktiver færre kilder ad gangen.
- CAPTCHA-sider vises i stedet for resultater. Google eller Bing har mistanke om automatiseret trafik fra din server-IP. Reducer antallet af aktive engines, og øg tidsintervallet mellem forespørgsler i konfigurationen.
- Certifikat udstedes ikke af Caddy. Bekræft, at DNS-opslaget for dit domæne peger på serverens IP, og at port 80 er åben udadtil, da Let’s Encrypt validerer domænet over HTTP før udstedelse.
- Indstillinger nulstilles efter opdatering. Bind mount til
/etc/searxngmangler eller peger forkert. Tjek volumes-sektionen i docker-compose.yaml. - Redis/Valkey-forbindelsesfejl i loggen. Bekræft at
SEARXNG_REDIS_URLpeger på det korrekte servicenavn (redis) og port (6379), og at begge containere er på samme Docker-netværk. Kørdocker compose exec searxng ping redisfor at teste, om containerne overhovedet kan se hinanden på netværksniveau. - Søgning er meget langsom. Skyldes ofte for mange aktiverede engines eller en langsom, geografisk fjern VPS. Reducer antallet af kilder, eller flyt serveren tættere på dine primære brugere, for eksempel til en nordisk datacenter-region. Tjek også, om
workersi uWSGI-konfigurationen fra trin 10 er sat for lavt i forhold til antallet af samtidige brugere. - OpenSearch-integration virker ikke i browseren. Bekræft, at
/opensearch.xmlsvarer korrekt ved at åbne URL’en direkte i browseren. Får du en 404, manglerbase_urli settings.yml, eller også peger den på den forkerte adresse.
Ofte stillede spørgsmål om SearXNG
Er SearXNG helt gratis at bruge?
Ja, softwaren er gratis og open source. Den eneste omkostning er drift af den server, du kører den på, typisk en billig VPS.
Kan jeg køre SearXNG uden Docker?
Ja, den officielle dokumentation beskriver også en installation direkte på systemet uden containere, men Docker er den hurtigste og mest isolerede metode, og den vi anbefaler i denne guide.
Logger SearXNG mine søgninger?
Som udgangspunkt nej. Fordi du selv driver instansen, er det dog dit ansvar at sikre, at logging er slået fra i din reverse proxy, hvis fuld anonymitet er målet.
Er min offentlige SearXNG-instans sikker mod misbrug?
Kun hvis du aktiverer limiteren og eventuelt lægger adgangskontrol som Basic Auth eller en VPN foran. Uden det bliver åbne instanser jævnligt fundet og udnyttet af scrapere.
Kan jeg bruge SearXNG som søgekilde til en lokal AI-model?
Ja, det er en af de mest almindelige brugssager i 2026, men vær opmærksom på SSRF-sårbarhederne i MCP-integrationer som mcp-searxng, og hold den slags værktøjer opdateret til de rettede versioner.
Hvorfor får jeg CAPTCHA fra Google, når jeg søger gennem min instans?
Fordi Google ser forespørgslerne komme fra din servers IP-adresse i stedet for din egen, og hvis mange forespørgsler sendes hurtigt, ligner det automatiseret trafik. Reducer antallet af aktive engines for at mindske belastningen.
Hvor ofte skal jeg opdatere min SearXNG-installation?
Da nye Docker-tags udkommer hyppigt, med jævne mellemrum inklusive sikkerhedsrettelser, anbefales det at opdatere mindst en gang om måneden, og straks hvis der offentliggøres en relevant sårbarhed.
Kan jeg dele min SearXNG-instans med familie eller kolleger?
Ja, det er en almindelig brug. Sæt Basic Auth op, eller opret separate adgangskoder, og overvej at sætte en rimelig grænse for antal aktive engines, så belastningen fordeles jævnt mellem brugerne.
Hvad sker der, hvis min VPS går ned?
Da SearXNG ikke gemmer brugerdata eller søgehistorik i en database, er gendannelse enkel. Har du taget backup af dine konfigurationsfiler som beskrevet i trin 13, kan du sætte hele stakken op igen på en ny server på under 15 minutter ved at genskabe mappestrukturen og køre docker compose up -d.
Virker SearXNG lige så godt som Google til alle typer søgninger?
Til de fleste hverdagssøgninger, ja, fordi SearXNG henter resultater fra Google og Bing i baggrunden. Til meget specifikke, lokalt tilpassede søgninger (for eksempel personlige Google Maps-anbefalinger baseret på din søgehistorik) vil resultaterne naturligt være mindre personaliserede, hvilket for mange brugere er selve pointen med at skifte.
Er SearXNG open source, og kan jeg selv bidrage til projektet?
Ja, koden er offentligt tilgængelig på GitHub under en open source-licens, og projektet modtager løbende bidrag fra frivillige udviklere. Har du selv rettet en fejl i en engine eller fundet et sikkerhedsproblem, kan du indsende det direkte til det officielle repository.




