{
"$type": "site.standard.document",
"canonicalUrl": "https://eirik.re/blog/setting-up-whoogle/index.nb",
"description": "Sett opp din egen Whoogle søkemotor på en Nginx server",
"path": "/blog/setting-up-whoogle/index.nb",
"publishedAt": "2023-08-19T20:35:06.000Z",
"site": "at://did:plc:jhmdbcph6xja3hamtoi4kdy4/site.standard.publication/3moyb2g35kh2t",
"tags": [
"docker",
"self-host",
"nginx",
"whoogle"
],
"textContent": "I en periode har jeg betjent min egen nettside og noen subdomener på en server jeg leier\nvia Vultr, men alt har ligget direkte i mapper på serveren.\nDet har bare vært ferdige nettsider som ligger der, tilgjengelige via domenet jeg eier.\n\nMen det er slutt på det nå, for jeg kjører nå min egen versjon av søkemotoren\nWhoogle på serveren via docker, som jeg\nkan nå fra hvor som helst via subdomenet whoogle.eirik.re.\n\nWhoogle\n\nWhoogle er et fint åpen kildekode-prosjekt som er \"en selvbetjent, reklamefri,\npersonvernrespekterende meta-søkemotor\". Den kan installeres på flere måter: fra\nkildekode, via PyPI eller via docker, for å nevne noen.\n\nÅ kjøre den på datamaskinene mine via docker og få tilgang til den på\nhttp://localhost:5000 har vært min foretrukne løsning lenge,\nmen da blir telefonen min stående på sidelinjen. Dette er derfor et forsøk på å få et\nkomplett oppsett for alle enhetene mine samtidig.\n\nDockerize env\n\nFør vi setter opp docker-imaget, la oss først finne ut hvordan vi enkelt kan konfigurere\ndette via miljøvariabler.\nWhoogle støtter mange av dem,\nså det er greit å vite hvordan man håndterer det med en gang.\n\nEtt problem er når man setter fargetemaet, som strekker seg over flere linjer, siden\ndocker ikke kan sende linjeskift fra variabler i --env-file filer.\nVi løser dette med et praktisk lite skript kalt\ndockerize-env. Det er beskrevet\nhvordan man bruker det i skriptet, men kort sagt, du definerer alle variabler i .env:\n\nDeretter kjører du\n\nDocker\n\nSå hva er containeren vi kjører? Imaget heter benbusby/whoogle-search, så vi laster\ndet først ned med\n\nfør vi fikser miljøvariablene våre og starter containeren:\n\nPå dette tidspunktet skal whoogle være tilgjengelig på\nhttp://localhost:5000!\n\nSelvbetjening\n\nDen vanskelige delen for meg var å forstå hvordan jeg skulle ta dette til serveren min\nhvor jeg kjører Nginx som en reverse proxy-server med https ved\nhjelp av certbot, når jeg ikke bare peker til lokale filer,\nmen kjører programvare i en container. Plutselig må du håndtere IP-adressen til\ncontaineren og forskjellige porter som imaget forventer.\n\nNginx og oppsett av en nettside\n\nJeg startet først med nettsiden min ved å følge guiden på\nlandchad.net, som er grunnen til at jeg bruker Vultr og Nginx\n(og Epik) i utgangspunktet. Dette betyr også at den statiske\nsiden min på eirik.re er konfigurert via en fil i\n/etc/nginx/sites-available/ som\n\nSå, hva må vi justere i dette for å ha en ny fil for whoogle-subdomenet vårt?\n\nSette det hele sammen\n\nFra domeneregistratorens perspektiv trengte jeg ikke å gjøre noe. Ved å følge\nlandchad.net-guiden vil vi omdirigere alle subdomener til nginx,\nog hvis de ikke er konfigurert, vises standardfeilmeldingen:\n\n{{< figure caption=\"Side som vises når man besøker whoogle.eirik.re før oppdatering av nginx-innstillingene\" src=\"welcome-to-nginx.jpg\" >}}\n\n> Du kan se et levende eksempel ved å besøke et subdomene som ikke er konfigurert ennå,\n> for eksempel no-subdomain-here.eirik.re.\n\nDerfor, etter å ha kjørt kommandoene fra før, men denne gangen på serveren min\n\nsjekket jeg hvilken IP-adresse docker-containeren brukte:\n\nKommandoen ip a gir mye output, men du kan finne docker oppført der, og etter inet\npå den andre linjen i docker-blokken, finner vi IP-adressen som 172.17.0.1! Fra\nWhoogle README får vi faktisk en\nNginx konfigurasjonsfil som\n\"virker\", men å ha den faktiske IP-adressen var avgjørende for å få certbot til å\nakseptere den. Så vi gjør en liten endring på konfigurasjonsfilen, slik at den nå ser\nslik ut\n\nDen viktige endringen her er at i stedet for å bruke localhost, bruker vi IP-en til\ndocker-containeren vår. (Jeg prøvde også å bruke begge proxy_pass-variablene, men det\nfungerer ikke. Du kan bare ha én proxy_pass-variabel.) Vi lagrer deretter dette til\n/etc/nginx/sites-available/whoogle og symlinker det til sites-enabled med\n\nLa oss nå starte Nginx på nytt slik at den er klar over den nye siden vår\n\nog deretter kjøre certbot for å få sertifikatene våre og få siden til å bruke https\n\nLa oss nå beundre den store suksessen!\n\n{{< figure caption=\"Whoogle på desktop!\" src=\"whoogle-desktop.jpg\" alt=\"Whoogle på desktop!\" >}}\n\n{{< figure caption=\"Whoogle på mobil!\" src=\"whoogle-mobile.jpg\" alt=\"Whoogle på mobil!\" >}}\n\nRessurser\n\nFor å få alt til å fungere, var noen guider spesielt nyttige, utover det jeg har lenket\ntil gjennom innlegget så langt. Denne guiden om\nnginx reverse proxy\ner super nyttig for å forstå hva som skal være i Nginx-konfigurasjonsfilen, og deretter\nhar samme nettsted en guide om hvordan man\nsetter opp whoogle search med docker.\nLikevel, det mest nyttige for meg var kanskje å se\ndenne fyren gjøre akkurat dette, men ved\nå bruke GUI-er i stedet for kommandolinjen.",
"title": "Selvbetjen Whoogle via docker"
}