to all posts

Om å få sine egne greier på internett

Published

For nesten seks år siden skrev jeg min aller første blogpost, hvor jeg argumenterte for at før en kaster seg hodestups inn i det siste og heteste frontendrammeverket, så burde en ha litt peiling på mer grunnleggende HTML og CSS — de fundamentale byggesteinene. Jeg har sagt mye dumt i livet, men dette er vel noe av det mer oppegående. Jeg mener fremdeles at det er en god idé, jeg er glad jeg gjorde det selv, og jeg prioriterer fremdeles å se hva som er mulig med HTML og CSS før jeg skriver Javascript for å løse en oppgave.

Men når støvet har lagt seg, tastaturet har fått hvile, og det har vært på tide å sende all denne HTML-en, CSS-en og kanskje til og med Javascripten, til andres nettlesere, da har jeg gått i akkurat samme felle som jeg advarte mot for seks år siden: Hoppet bukk over grunnmuren og kjørt rett på click-to-deploy løsninger som Netlify, Vercel, Heroku og lignende.

På et vis er det forståelig: Jeg bet allerede over for mye nytt å lære meg på en gang den gangen for lenge siden, om jeg ikke skulle tukle med serverdrift også. Og GitHub Pages bare funker!

Og senere, når jeg begynte å få betalt for å drive med utvikling, så kom jeg som regel inn i prosjekter hvor vi enten kjørte på en Platform as a Service, øh, -plattform, eller så var det en egen avdeling i bedriften som var ansvarlig for deploy-pipline og Kubernetes og alt sånt. Det eneste jeg behøvde å gjøre var å skrive git push.

Nok er nok

Jeg har i det siste funnet glede i å lære meg Clojure, og hadde hin dagen snekret sammen en pitteliten kodesnutt hvor jeg bruker http-kit og hiccup til å vise IP-en til den besøkende. Ikke noe revolusjonerende, men et lite lekeprosjekt som i alle fall lar meg dyppe tærne i Clojures web-vann og kjenne på temperaturen.

Etter hvert ville jeg ha dette på internett, og da stod (egentlig satt) jeg der: Det er ikke så mange click-to-deploy tjenester for Clojure, og jeg nekter å skrive 40 linjer Docker for 20 linjer Clojure.

Dette ble dråpen som fikk begeret til å renne over. Jeg leide billigste mulige server fra Hetzner, sa ja takk til Debian, gav den en SSH-nøkkel, og fikk en IP-adresse tilbake. Jeg kopierte koden over med rsync, installerte Clojure, installerte Caddy og skrev 3 linjer konfigurasjon, satte opp ufw for å ikke slippe inn hvem som helst hvor som helst, knotet meg gjennom akkurat nok systemd til å få en tjeneste opp og gå men ikke nok til å ha sterke meninger om det, og så … bare virket det?

Og når jeg først var så godt i gang så bygget jeg bloggen på min lokale maskin (den benytter Astro til å lage en site som kun er lange flate filer), kopierte dist-mappen til min rykende ferske server, og la til dette i Caddyfile:

eaj.no {
  root /var/www/blog
  file_server
}

Så var det bare å endre litt på DNS hos min domeneregistrar, og så fungerte fader meg det også.

Og la gå, dette er kanskje ikke like beinhardt som å ha hele dritten på en Raspberry Pi skapet, men det er jo likevel litt tilfredsstillende at ordene du leser nå har sitt opphav fra en pitteliten VM i Finland. Og at neste gang jeg har et lite prosjekt jeg vil dele, så vet jeg akkurat hvordan — og SQLite er helt fint, det.

Serveren har i alle fall litt å gå på.

uptime | cut -d ',' -f 4-6
  load average: 0.00, 0.00, 0.00