<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://wiki.1haugerud.no/index.php?action=history&amp;feed=atom&amp;title=Svartekunster</id>
	<title>Svartekunster - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.1haugerud.no/index.php?action=history&amp;feed=atom&amp;title=Svartekunster"/>
	<link rel="alternate" type="text/html" href="https://wiki.1haugerud.no/index.php?title=Svartekunster&amp;action=history"/>
	<updated>2026-04-04T16:58:59Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://wiki.1haugerud.no/index.php?title=Svartekunster&amp;diff=4032&amp;oldid=prev</id>
		<title>Nicolai@1haugerud.no: Ny side: = Sagaen om wiki.1haugerud.no =  === Eller: Hvordan en CTO, en AI og fem certbot-containere bygde en wiki for en speidergruppe === ----Det startet, som alle gode tekniske prosjekter gjør, med et tilsynelatende uskyldig spørsmål:  &#039;&#039;«Jeg skal sette opp en wiki for speidergruppa. Hva anbefaler du?»&#039;&#039;  Og Claude – altså jeg – svarte med den selvsikkerheten bare en språkmodell uten konsekvenser kan mønstre: &#039;&#039;&#039;Wiki.js på Lightsail. $5 i måneden. Ferdig på en halvtime.&#039;&#039;&#039;…</title>
		<link rel="alternate" type="text/html" href="https://wiki.1haugerud.no/index.php?title=Svartekunster&amp;diff=4032&amp;oldid=prev"/>
		<updated>2026-02-12T15:44:04Z</updated>

		<summary type="html">&lt;p&gt;Ny side: = Sagaen om wiki.1haugerud.no =  === Eller: Hvordan en CTO, en AI og fem certbot-containere bygde en wiki for en speidergruppe === ----Det startet, som alle gode tekniske prosjekter gjør, med et tilsynelatende uskyldig spørsmål:  &amp;#039;&amp;#039;«Jeg skal sette opp en wiki for speidergruppa. Hva anbefaler du?»&amp;#039;&amp;#039;  Og Claude – altså jeg – svarte med den selvsikkerheten bare en språkmodell uten konsekvenser kan mønstre: &amp;#039;&amp;#039;&amp;#039;Wiki.js på Lightsail. $5 i måneden. Ferdig på en halvtime.&amp;#039;&amp;#039;&amp;#039;…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Sagaen om wiki.1haugerud.no =&lt;br /&gt;
&lt;br /&gt;
=== Eller: Hvordan en CTO, en AI og fem certbot-containere bygde en wiki for en speidergruppe ===&lt;br /&gt;
----Det startet, som alle gode tekniske prosjekter gjør, med et tilsynelatende uskyldig spørsmål:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Jeg skal sette opp en wiki for speidergruppa. Hva anbefaler du?»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Og Claude – altså jeg – svarte med den selvsikkerheten bare en språkmodell uten konsekvenser kan mønstre: &amp;#039;&amp;#039;&amp;#039;Wiki.js på Lightsail. $5 i måneden. Ferdig på en halvtime.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Jeg la til, med en nærmest faderlig advarsel: &amp;#039;&amp;#039;«Ville unngått MediaWiki – overkill, tungt å drifte for en liten gruppe.»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Husk det. Det blir viktig senere.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt I: Lightsail – «Enklere enn EC2, færre knapper å trykke feil på» ==&lt;br /&gt;
Planen var vakker i sin enkelhet. En Lightsail-instans i Stockholm. Ubuntu 24.04. Docker Compose med Wiki.js, PostgreSQL og Nginx. Let’s Encrypt for HTTPS. Et setup-skript som skulle gjøre alt automatisk.&lt;br /&gt;
&lt;br /&gt;
Nicolai opprettet instansen. $5/mnd. 512 MB RAM. Hva kan gå galt?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alt.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Først puller Docker certbot-imaget. Den puller... og puller... og puller. Lightsail sin $5-instans har nettverksthroughput som et 56k-modem i 1998. Etter 49 minutter var det fem certbot-containere som alle kjørte samtidig, ingen av dem produserte en eneste logg-linje, og serveren hadde brukt opp alt den hadde av vilje til å leve.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«sudo docker logs wiki-certbot-run-a368668f40b7 gir ikke noe svar»&amp;#039;&amp;#039;, rapporterte Nicolai.&lt;br /&gt;
&lt;br /&gt;
Naturligvis ikke. Containeren satt i et eksistensielt vakuum og kontemplerte sitt eget formål.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt II: «Den ber om passord» ==&lt;br /&gt;
Claude foreslo å kjøre certbot manuelt. Nicolai tastet inn kommandoen. Terminalen svarte med å be om passord.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Det er rart»&amp;#039;&amp;#039;, sa Claude. &amp;#039;&amp;#039;«Lightsail Ubuntu har vanligvis passwordless sudo.»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Vi feilsøkte. Vi sjekket sudoers. Vi sjekket grupper. Vi sjekket whoami.&lt;br /&gt;
&lt;br /&gt;
Sannheten var enklere og mer smertefull enn noen feilmelding: Nicolai satt i feil terminal. Han var ikke på serveren. Han var lokalt. På sin egen Mac. Og prøvde å kjøre &amp;lt;code&amp;gt;sudo docker compose&amp;lt;/code&amp;gt; på en maskin uten Docker Compose, uten certbot, og uten en wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Ah.. jeg er ikke på serveren, men lokalt»&amp;#039;&amp;#039;, innrømmet han.&lt;br /&gt;
&lt;br /&gt;
En CTO som leder teknologien for millioner av nordmenns bankopplevelser. Satt i feil terminalvindu.&lt;br /&gt;
&lt;br /&gt;
(Vi snakker aldri om dette igjen.)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt III: SSH henger. Browser Connect henger. Alt henger. ==&lt;br /&gt;
OK, så vi SSHer inn på serveren. Bortsett fra at SSH bare... henger. Ingen timeout. Ingen feilmelding. Bare evig, eksistensiell stillhet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Prøv Browser Connect»&amp;#039;&amp;#039;, sa Claude. Lightsail har nemlig en innebygd SSH-klient i nettleseren. Perfekt for slike situasjoner.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Browser connect fungerer heller ikke...»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Instansen hadde gitt opp. 512 MB RAM, fem zombifiserte certbot-containere, en PostgreSQL-database, Wiki.js, og Nginx som restarter i loop. Det var som å be en Fiat Punto om å trekke en semitrailer opp Holmenkollen.&lt;br /&gt;
&lt;br /&gt;
Claude foreslo reboot. Stopp/start. Bønn.&lt;br /&gt;
&lt;br /&gt;
Nicolai tok den eneste rasjonelle beslutningen:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Jeg stopper. Ønsker å bruke EC2.»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Lightsail, du ble lovet som «enklere enn EC2, færre knapper å trykke feil på». Du leverte færre knapper, ja. Fordi ingen av dem fungerte.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt IV: EC2 – «Nå skal det bli ordentlig» ==&lt;br /&gt;
Ny instans. EC2. t3.small. 2 GB RAM. Fire ganger så mye minne. Ny SSH-nøkkel (&amp;lt;code&amp;gt;1hwiki.pem&amp;lt;/code&amp;gt;). Ny IP. Nytt håp.&lt;br /&gt;
&lt;br /&gt;
DNS ble pekt om. Setup-skriptet ble oppdatert. Alt var klart.&lt;br /&gt;
&lt;br /&gt;
Første test:&lt;br /&gt;
 &amp;lt;code&amp;gt;curl: (7) Failed to connect to wiki.1haugerud.no port 80: Couldn’t connect to server&amp;lt;/code&amp;gt;&lt;br /&gt;
Security Group. Portene 80 og 443 var ikke åpnet. Naturligvis. AWS sin default er å beskytte deg mot deg selv ved å nekte all trafikk inn til serveren din. Det er som å kjøpe en butikk og oppdage at døren er murt igjen.&lt;br /&gt;
&lt;br /&gt;
Portene ble åpnet. DNS propagerte. Nginx startet.&lt;br /&gt;
&lt;br /&gt;
Nginx crashet.&lt;br /&gt;
&lt;br /&gt;
Nginx prøvde å laste TLS-sertifikater som ikke fantes ennå, fordi certbot ikke hadde kjørt, fordi Nginx måtte kjøre først for at certbot skulle fungere, fordi certbot trenger en webserver for verifisering. Det er høna-og-egget-problemet, men med containere.&lt;br /&gt;
&lt;br /&gt;
Vi løste det med en midlertidig Nginx-konfig uten TLS, kjørte certbot, byttet til full konfig, og restartet.&lt;br /&gt;
 &amp;lt;code&amp;gt;HTTP/2 502&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;502 Bad Gateway.&amp;#039;&amp;#039;&amp;#039; TLS fungerer! Nginx svarer! Men Wiki.js bak den? Tja.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt V: «Vi ønsker å bytte til MediaWiki» ==&lt;br /&gt;
Etter å ha fått Wiki.js til å kjøre – endelig, faktisk kjøre – kom den uunngåelige meldingen:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;«Vi ønsker å bytte til MediaWiki.»&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
MediaWiki. Den tingen Claude eksplisitt sa å unngå. «Overkill, tungt å drifte for en liten gruppe.»&lt;br /&gt;
&lt;br /&gt;
Nicolai hadde oppdaget det Claude burde ha visst fra starten: en speidergruppe trenger kategorier, maler, røde lenker, og den trygge Wikipedia-følelsen som gjør at selv en 12-åring instinktivt vet hvordan man navigerer.&lt;br /&gt;
&lt;br /&gt;
Ned med Wiki.js. Opp med MediaWiki. Samme server. Ny &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt;. MariaDB i stedet for PostgreSQL. PHP i stedet for Node.js.&lt;br /&gt;
 &amp;lt;code&amp;gt;no space left on device&amp;lt;/code&amp;gt;&lt;br /&gt;
Selvfølgelig. Docker-images fra den forrige installasjonen hadde fylt opp disken. Vi ryddet opp. Vi prøvde igjen. Vi fikset volume-mounts som pekte på Docker-volumes i stedet for lokale mapper. Vi debugget en &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; som var mountet to ganger (&amp;lt;code&amp;gt;:ro&amp;lt;/code&amp;gt; begge gangene, som om read-only blir mer read-only av å si det to ganger).&lt;br /&gt;
&lt;br /&gt;
Men til slutt – &amp;#039;&amp;#039;til slutt&amp;#039;&amp;#039; – svarte &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://wiki.1haugerud.no&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; med en MediaWiki-installasjonsside.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Akt VI: Claude som arbeidshest ==&lt;br /&gt;
Det folk ikke ser bak den ferdige wikien er omfanget av det Claude ble satt til å gjøre. Nicolai styrte prosjektet som en ekte CTO: han definerte krav, tok arkitekturbeslutninger, og delegerte &amp;#039;&amp;#039;absolutt alt annet&amp;#039;&amp;#039; til en AI.&lt;br /&gt;
&lt;br /&gt;
Claude ble bedt om å:&lt;br /&gt;
&lt;br /&gt;
* Velge plattform (feil, som det viste seg)&lt;br /&gt;
* Skrive Docker Compose-filer&lt;br /&gt;
* Konfigurere Nginx med TLS&lt;br /&gt;
* Debugge certbot i sanntid&lt;br /&gt;
* Oppdatere skript med nye IP-adresser&lt;br /&gt;
* Bytte fra Lightsail til EC2&lt;br /&gt;
* Bytte fra Wiki.js til MediaWiki&lt;br /&gt;
* Konfigurere MariaDB&lt;br /&gt;
* Fikse Nginx som restarter i loop&lt;br /&gt;
* Rydde opp i Docker-images&lt;br /&gt;
* Sette opp automatisk backup til S3&lt;br /&gt;
* Installere AWS CLI (som ikke var tilgjengelig som pakke, for Ubuntu 24.04 gjør ingenting enkelt)&lt;br /&gt;
* Installere &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt; for å pakke ut AWS CLI (som heller ikke var installert)&lt;br /&gt;
* Konfigurere Google-indeksering og sitemap&lt;br /&gt;
* Scrape Speidersport.no for merkebilder&lt;br /&gt;
* Laste opp bilder til MediaWiki via API&lt;br /&gt;
* Og mye, mye mer&lt;br /&gt;
&lt;br /&gt;
Hele tiden satt Nicolai på andre siden og limte inn terminaloutput. Én kommando av gangen. Copy. Paste. Enter. Feilmelding. Tilbake til Claude.&lt;br /&gt;
&lt;br /&gt;
Det er i grunnen DevOps i sin reneste form: &amp;#039;&amp;#039;én person som vet hva som skal gjøres, og én entitet som gjør det.&amp;#039;&amp;#039; At den ene entiteten er en språkmodell som ikke kan huske hva den sa for fem minutter siden og som anbefalte å unngå den plattformen dere til slutt valgte? Detaljer.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Epilog: Resultatet ==&lt;br /&gt;
I dag lever &amp;#039;&amp;#039;&amp;#039;wiki.1haugerud.no&amp;#039;&amp;#039;&amp;#039; på en EC2 t3.small i Stockholm. MediaWiki kjører i en Docker-container sammen med MariaDB og Nginx. Let’s Encrypt fornyer sertifikater automatisk. Backup kjører til S3 hver natt klokken 03:00. Google indekserer den. Speidere kan lese om merker og pakkelister.&lt;br /&gt;
&lt;br /&gt;
Hele oppsettet består av:&lt;br /&gt;
&lt;br /&gt;
* 1 × EC2-instans (Ubuntu 24.04)&lt;br /&gt;
* 3 × Docker-containere (MediaWiki, MariaDB, Nginx)&lt;br /&gt;
* 1 × S3-bucket for backup&lt;br /&gt;
* 1 × Let’s Encrypt-sertifikat&lt;br /&gt;
* 1 × Cron-job&lt;br /&gt;
* ~47 × feilmeldinger&lt;br /&gt;
* 5 × døde certbot-containere (hvil i fred)&lt;br /&gt;
* 2 × plattformbytter (Lightsail → EC2, Wiki.js → MediaWiki)&lt;br /&gt;
* 1 × CTO i feil terminalvindu&lt;br /&gt;
* 1 × AI som ble jaget gjennom det hele&lt;br /&gt;
&lt;br /&gt;
Totalt tidsbruk: én lang fredagskveld med kaffe i koppen og speidere som vimset rundt.&lt;br /&gt;
&lt;br /&gt;
Hadde det vært raskere å bare sette opp en Notion-side? Ja. Absolutt. Uten tvil.&lt;br /&gt;
&lt;br /&gt;
Men det hadde ikke vært en 1.Haugerud-&amp;#039;&amp;#039;speider&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ut på tur, aldri sur.&amp;#039;&amp;#039;&amp;#039; Selv når turen går gjennom fem certbot-containere og et terminalvindu på feil maskin.&lt;br /&gt;
----&amp;#039;&amp;#039;Denne teksten ble skrevet av Claude – den samme Claude som sa «Ville unngått MediaWiki» og deretter brukte 12 timer på å sette opp MediaWiki. Lærdom: lytt til brukeren, ikke til deg selv.&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Nicolai@1haugerud.no</name></author>
	</entry>
</feed>