<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nginx on eirikre</title><link>/nb/tags/nginx/</link><description>Recent content in Nginx on eirikre</description><generator>Hugo -- gohugo.io</generator><language>nb</language><copyright>Copyright (c) 2020-2024 eirikre</copyright><lastBuildDate>Sat, 19 Aug 2023 22:35:06 +0200</lastBuildDate><atom:link href="/nb/tags/nginx/rss.xml" rel="self" type="application/rss+xml"/><item><title>Selvbetjen Whoogle via docker</title><link>/nb/blog/2023/08/selvbetjen-whoogle-via-docker/</link><pubDate>Sat, 19 Aug 2023 22:35:06 +0200</pubDate><guid>/nb/blog/2023/08/selvbetjen-whoogle-via-docker/</guid><description>Sett opp din egen Whoogle søkemotor på en Nginx server</description><content:encoded>&lt;p>I en periode har jeg betjent min egen nettside og noen subdomener på en server jeg leier
via &lt;a href="https://www.vultr.com/">Vultr&lt;/a>, men alt har ligget direkte i mapper på serveren.
Det har bare vært ferdige nettsider som ligger der, tilgjengelige via domenet jeg eier.&lt;/p>
&lt;p>Men det er slutt på det nå, for jeg kjører nå min egen versjon av søkemotoren
&lt;a href="https://github.com/benbusby/whoogle-search">Whoogle&lt;/a> på serveren via docker, som jeg
kan nå fra hvor som helst via subdomenet &lt;a href="https://whoogle.eirik.re">whoogle.eirik.re&lt;/a>.&lt;/p>
&lt;h2 id="whoogle">Whoogle&lt;/h2>
&lt;p>Whoogle er et fint åpen kildekode-prosjekt som er &amp;ldquo;en selvbetjent, reklamefri,
personvernrespekterende meta-søkemotor&amp;rdquo;. Den kan installeres på flere måter: fra
kildekode, via &lt;a href="https://pypi.org">PyPI&lt;/a> eller via docker, for å nevne noen.&lt;/p>
&lt;p>Å kjøre den på datamaskinene mine via docker og få tilgang til den på
&lt;a href="http://localhost:5000">&lt;code>http://localhost:5000&lt;/code>&lt;/a> har vært min foretrukne løsning lenge,
men da blir telefonen min stående på sidelinjen. Dette er derfor et forsøk på å få et
komplett oppsett for alle enhetene mine samtidig.&lt;/p>
&lt;h3 id="dockerize-env">Dockerize env&lt;/h3>
&lt;p>Før vi setter opp docker-imaget, la oss først finne ut hvordan vi enkelt kan konfigurere
dette via miljøvariabler.
&lt;a href="https://github.com/benbusby/whoogle-search#environment-variables">Whoogle støtter mange av dem&lt;/a>,
så det er greit å vite hvordan man håndterer det med en gang.&lt;/p>
&lt;p>Ett problem er når man setter fargetemaet, som strekker seg over flere linjer, siden
&lt;a href="https://github.com/moby/moby/issues/12997">docker ikke kan sende linjeskift fra variabler i &lt;code>--env-file&lt;/code> filer&lt;/a>.
Vi løser dette med et praktisk lite skript kalt
&lt;a href="https://gist.github.com/hudon/149466af21dfc52fdc70">dockerize-env&lt;/a>. Det er beskrevet
hvordan man bruker det i skriptet, men kort sagt, du definerer alle variabler i &lt;code>.env&lt;/code>:&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">.env&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title=".env">&lt;pre tabindex="0" class="chroma">&lt;code class="language-env" data-lang="env">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WHOOGLE_CONFIG_LANGUAGE&lt;/span>&lt;span class="o">=&lt;/span>lang_no
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WHOOGLE_CONFIG_COUNTRY&lt;/span>&lt;span class="o">=&lt;/span>NO
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WHOOGLE_CONFIG_BLOCK&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;w3schools.com,w3schools.blog,w3schools.in,w3schools.io,w3schools.me&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WHOOGLE_CONFIG_DARK&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WHOOGLE_CONFIG_GET_ONLY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>Deretter kjører du&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Lager variabler for en dummy container kalt &amp;#39;my_container&amp;#39;&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Lager variabler for en dummy container kalt 'my_container'">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dockerize-env .env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> .env.exported &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> docker run --env-file .env.vars &amp;lt;my_container&amp;gt;&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;h3 id="docker">Docker&lt;/h3>
&lt;p>Så hva er containeren vi kjører? Imaget heter &lt;code>benbusby/whoogle-search&lt;/code>, så vi laster
det først ned med&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Last ned docker-imaget&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Last ned docker-imaget">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker pull benbusby/whoogle-search&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>før vi fikser miljøvariablene våre og starter containeren:&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Lag variabler og kjør whoogle-containeren&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Lag variabler og kjør whoogle-containeren">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dockerize-env .env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> .env.exported &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> docker run --publish 5000:5000 --detach --env-file .env.vars --name whoogle-search benbusby/whoogle-search:latest&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>På dette tidspunktet skal whoogle være tilgjengelig på
&lt;a href="http://localhost:5000">&lt;code>http://localhost:5000&lt;/code>&lt;/a>!&lt;/p>
&lt;h2 id="selvbetjening">Selvbetjening&lt;/h2>
&lt;p>Den vanskelige delen for meg var å forstå hvordan jeg skulle ta dette til serveren min
hvor jeg kjører &lt;a href="https://nginx.org/en/">Nginx&lt;/a> som en reverse proxy-server med https ved
hjelp av &lt;a href="https://certbot.eff.org/">certbot&lt;/a>, når jeg ikke bare peker til lokale filer,
men kjører programvare i en container. Plutselig må du håndtere IP-adressen til
containeren og forskjellige porter som imaget forventer.&lt;/p>
&lt;h3 id="nginx-og-oppsett-av-en-nettside">Nginx og oppsett av en nettside&lt;/h3>
&lt;p>Jeg startet først med nettsiden min ved å følge guiden på
&lt;a href="https://landchad.net">landchad.net&lt;/a>, som er grunnen til at jeg bruker Vultr og Nginx
(og &lt;a href="https://www.epik.com/">Epik&lt;/a>) i utgangspunktet. Dette betyr også at den statiske
siden min på &lt;a href="https://eirik.re">eirik.re&lt;/a> er konfigurert via en fil i
&lt;code>/etc/nginx/sites-available/&lt;/code> som&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">/etc/nginx/sites-available/eirikre&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="/etc/nginx/sites-available/eirikre">&lt;pre tabindex="0" class="chroma">&lt;code class="language-nginx" data-lang="nginx">&lt;span class="line">&lt;span class="cl">&lt;span class="k">server&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">listen&lt;/span> &lt;span class="mi">80&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">listen&lt;/span> &lt;span class="s">[::]:80&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">server_name&lt;/span> &lt;span class="s">eirik.re&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">root&lt;/span> &lt;span class="s">/var/www/eirikre&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">index&lt;/span> &lt;span class="s">index.html&lt;/span> &lt;span class="s">index.htm&lt;/span> &lt;span class="s">index.nginx-debian.html&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">location&lt;/span> &lt;span class="s">/&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">try_files&lt;/span> &lt;span class="nv">$uri&lt;/span> &lt;span class="nv">$uri/&lt;/span> &lt;span class="p">=&lt;/span>&lt;span class="mi">404&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>Så, hva må vi justere i dette for å ha en ny fil for whoogle-subdomenet vårt?&lt;/p>
&lt;h3 id="sette-det-hele-sammen">Sette det hele sammen&lt;/h3>
&lt;p>Fra domeneregistratorens perspektiv trengte jeg ikke å gjøre noe. Ved å følge
&lt;a href="https://landchad.net">landchad.net&lt;/a>-guiden vil vi omdirigere alle subdomener til nginx,
og hvis de ikke er konfigurert, vises standardfeilmeldingen:&lt;/p>
&lt;figure>
&lt;img
srcset="/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_480x0_resize_q85_h2_lanczos.webp 480w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_576x0_resize_q85_h2_lanczos.webp 576w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_768x0_resize_q85_h2_lanczos.webp 768w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_1025x0_resize_q85_h2_lanczos.webp 1025w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_1200x0_resize_q85_h2_lanczos.webp 1200w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_1440x0_resize_q85_h2_lanczos.webp 1440w,/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_3320x0_resize_q85_h2_lanczos.webp 3320w"
src="/blog/2023/08/self-hosting-whoogle-using-docker/welcome-to-nginx_huc11f795d8371262b1451d89c8b85d50e_180980_480x0_resize_q85_lanczos.jpg"
width="3320"
height="838"
decoding="async"
fetchpriority="auto"
loading="lazy"
alt=""
class="lazyload blur-up"
>&lt;figcaption>Side som vises når man besøker whoogle.eirik.re før oppdatering av nginx-innstillingene&lt;/figcaption>
&lt;/figure>
&lt;blockquote>
&lt;p>Du kan se et levende eksempel ved å besøke et subdomene som ikke er konfigurert ennå,
for eksempel &lt;a href="http://no-subdomain-here.eirik.re">no-subdomain-here.eirik.re&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>Derfor, etter å ha kjørt kommandoene fra før, men denne gangen på serveren min&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal not-content">
&lt;figcaption class="header">
&lt;span class="title">&lt;/span>
&lt;/figcaption>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dockerize-env .env
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> .env.exported &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> docker run --publish 5000:5000 --detach --env-file .env.vars --name whoogle-search benbusby/whoogle-search:latest&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>sjekket jeg hvilken IP-adresse docker-containeren brukte:&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame not-content">
&lt;figcaption class="header">
&lt;span class="title">&lt;/span>
&lt;/figcaption>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="gp">$&lt;/span> ip a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">3: docker0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link/ether 02:42:55:9c:07:3c brd ff:ff:ff:ff:ff:ff
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> valid_lft forever preferred_lft forever
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> inet6 fe80::42:55ff:fe9c:73c/64 scope link
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> valid_lft forever preferred_lft forever
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">...
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>Kommandoen &lt;code>ip a&lt;/code> gir mye output, men du kan finne docker oppført der, og etter &lt;code>inet&lt;/code>
på den andre linjen i docker-blokken, finner vi IP-adressen som &lt;code>172.17.0.1&lt;/code>! Fra
Whoogle README får vi faktisk en
&lt;a href="https://github.com/benbusby/whoogle-search#nginx">Nginx konfigurasjonsfil&lt;/a> som
&amp;ldquo;virker&amp;rdquo;, men å ha den faktiske IP-adressen var avgjørende for å få &lt;code>certbot&lt;/code> til å
akseptere den. Så vi gjør en liten endring på konfigurasjonsfilen, slik at den nå ser
slik ut&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">/etc/nginx/sites-available/whoogle&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="/etc/nginx/sites-available/whoogle">&lt;pre tabindex="0" class="chroma">&lt;code class="language-nginx" data-lang="nginx">&lt;span class="line">&lt;span class="cl">&lt;span class="k">server&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">server_name&lt;/span> &lt;span class="s">whoogle.eirik.re&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">access_log&lt;/span> &lt;span class="s">/dev/null&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">error_log&lt;/span> &lt;span class="s">/dev/null&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">location&lt;/span> &lt;span class="s">/&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">proxy_set_header&lt;/span> &lt;span class="s">X-Real-IP&lt;/span> &lt;span class="nv">$remote_addr&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">proxy_set_header&lt;/span> &lt;span class="s">X-Forwarded-For&lt;/span> &lt;span class="nv">$proxy_add_x_forwarded_for&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">proxy_set_header&lt;/span> &lt;span class="s">X-Forwarded-Proto&lt;/span> &lt;span class="nv">$scheme&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">proxy_set_header&lt;/span> &lt;span class="s">Host&lt;/span> &lt;span class="nv">$host&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">proxy_set_header&lt;/span> &lt;span class="s">X-NginX-Proxy&lt;/span> &lt;span class="s">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># proxy_pass http://localhost:5000;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kn">proxy_pass&lt;/span> &lt;span class="s">http://172.17.0.1:5000&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>Den viktige endringen her er at i stedet for å bruke &lt;code>localhost&lt;/code>, bruker vi IP-en til
docker-containeren vår. (Jeg prøvde også å bruke begge &lt;code>proxy_pass&lt;/code>-variablene, men det
fungerer ikke. Du kan bare ha én &lt;code>proxy_pass&lt;/code>-variabel.) Vi lagrer deretter dette til
&lt;code>/etc/nginx/sites-available/whoogle&lt;/code> og symlinker det til &lt;code>sites-enabled&lt;/code> med&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Lenk siden til aktiverte sider&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Lenk siden til aktiverte sider">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ln -s /etc/nginx/sites-available/whoogle /etc/nginx/sites-enabled/&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>La oss nå starte Nginx på nytt slik at den er klar over den nye siden vår&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Last inn nginx på nytt&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Last inn nginx på nytt">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl reload nginx&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>og deretter kjøre &lt;code>certbot&lt;/code> for å få sertifikatene våre og få siden til å bruke https&lt;/p>
&lt;div class="expressive-code">
&lt;figure class="frame is-terminal has-title not-content">
&lt;figcaption class="header">
&lt;span class="title">Lag sertifikater for whoogle.eirik.re&lt;/span>
&lt;/figcaption>
&lt;div class="highlight" title="Lag sertifikater for whoogle.eirik.re">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">certbot --nginx&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/div>
&lt;p>La oss nå beundre den store suksessen!&lt;/p>
&lt;figure>
&lt;img
srcset="/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_480x0_resize_q85_h2_lanczos.webp 480w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_576x0_resize_q85_h2_lanczos.webp 576w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_768x0_resize_q85_h2_lanczos.webp 768w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_1025x0_resize_q85_h2_lanczos.webp 1025w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_1200x0_resize_q85_h2_lanczos.webp 1200w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_1440x0_resize_q85_h2_lanczos.webp 1440w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_3344x0_resize_q85_h2_lanczos.webp 3344w"
src="/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-desktop_huc11f795d8371262b1451d89c8b85d50e_221261_480x0_resize_q85_lanczos.jpg"
width="3344"
height="2084"
decoding="async"
fetchpriority="auto"
loading="lazy"
alt="Whoogle på desktop!"
class="lazyload blur-up"
>&lt;figcaption>Whoogle på desktop!&lt;/figcaption>
&lt;/figure>
&lt;figure>
&lt;img
srcset="/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_480x0_resize_q85_h2_lanczos.webp 480w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_576x0_resize_q85_h2_lanczos.webp 576w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_768x0_resize_q85_h2_lanczos.webp 768w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_1025x0_resize_q85_h2_lanczos.webp 1025w,/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_1080x0_resize_q85_h2_lanczos.webp 1080w"
src="/blog/2023/08/self-hosting-whoogle-using-docker/whoogle-mobile_hu2bcdd1eeafd01e4d246f14f3adc04eaa_168830_480x0_resize_q85_lanczos.jpg"
width="1080"
height="2400"
decoding="async"
fetchpriority="auto"
loading="lazy"
alt="Whoogle på mobil!"
class="lazyload blur-up"
>&lt;figcaption>Whoogle på mobil!&lt;/figcaption>
&lt;/figure>
&lt;h2 id="ressurser">Ressurser&lt;/h2>
&lt;p>For å få alt til å fungere, var noen guider spesielt nyttige, utover det jeg har lenket
til gjennom innlegget så langt. Denne guiden om
&lt;a href="https://www.techaddressed.com/tutorials/basic-nginx-reverse-proxy/">nginx reverse proxy&lt;/a>
er super nyttig for å forstå hva som skal være i Nginx-konfigurasjonsfilen, og deretter
har samme nettsted en guide om hvordan man
&lt;a href="https://www.techaddressed.com/tutorials/setup-whoogle-search-docker/">setter opp whoogle search med docker&lt;/a>.
Likevel, det mest nyttige for meg var kanskje å se
&lt;a href="https://www.youtube.com/watch?v=aq3mZrDbbYQ">denne fyren gjøre akkurat dette&lt;/a>, men ved
å bruke GUI-er i stedet for kommandolinjen.&lt;/p></content:encoded></item></channel></rss>