Fra Amazon Web Services til Site.js

Noe av hensikten med denne bloggen er å dokumentere mine egne forsøk på å bytte ut teknologi i livet mitt jeg ikke blir glad av å bruke. Et fint sted å starte da er dette nettstedet.

Egentlig er jeg veldig fornøyd med nettstedet mitt. Det består av statiske filer som jeg har full kontroll over selv. Statiske filer, hva betyr det? La oss starte med litt grunnleggende netteknologi: Nettsteder kommer grovt sett i to utgaver, statiske og dynamiske. Statisk betyr at filene ligger klare på serveren, og derfor bare kan hentes rett ut når du ber om dem. Dynamisk betyr at når du ber om å få se en side, startes et program på serveren som bygger siden ferdig. En dynamisk side vil derfor kunne vise deg hva klokken er akkurat nå, men en statisk side vil være raskere å hente, fordi den allerede ligger klar.

Denne forskjellen er ikke så viktig for deg som bruker. (I praksis er også statiske nettsider ofte dynamiske, men de gjør det dynamiske via Javascript i browseren, ikke på serveren.) Derimot er dette en viktig forskjell hvis du har et personlig nettsted. Et dynamisk nettsted krever at du eier eller leier plass på en server et sted som kan stå og kjøre hele tiden. Et statisk nettsted krever bare et sted å legge filene, typisk noe som kalles object storage, som er enklere, billigere og kjappere.

En annen fordel med et statisk nettsted er at det lever evig. HTML-filene du laget i 2000 og 2010 er like gode som de du lager i 2020. Dynamiske nettsteder dør ofte etter en stund, fordi teknologien de kjører på blir utdatert. Hvis du er virkelig glad i PHP-løsningen din fra 2000, orker du kanskje å oppgradere den og holde den i live, men det er kjipt og vanskelig. Det er lettere å bare droppe hele den gamle løsningen og starte på nytt. Dermed dør det gamle innholdet ditt og et lite stykke netthistorie blir borte.

Dette nettstedet består av statiske filer. Noen av dem er mer enn tjue år gamle. Du finner den aller første bloggen min fra 2001 her, og et arkiv som strekker seg over en rekke bloggprosjekter jeg har hatt siden. Noen av disse filene har jeg eksportert fra ulike dynamiske bloggløsninger som Blogger og WordPress. Andre har jeg skrevet for hånd. Det nyeste innholdet vedlikeholder jeg i en fin og enkel løsning som heter Hugo, hvor jeg kan redigere innholdet som tekstfiler (markdown), men det blir gjort om til statiske HTML-filer. Hugo er en fin løsning som jeg vil anbefale til alle som er komfortable med filer og enkle kommandolinjeoperasjoner. Men hvis jeg en dag ønsker å bytte den ut, tar jeg bare en kopi av filene den har bygget, og lar dem ligge i arkivet - til evig tid.

Det er ikke alt det gamle innholdet mitt som har blitt bevart perfekt. Det er noen døde linker og bilder og styling som ikke fungerer helt lenger. Jeg prøver å fikse det når jeg ser det. Men alt ligger der. Jeg har full kontroll. Jeg eier alle filene. Sånt blir jeg glad av.

Hvor legger man så ut det statiske nettstedet sitt? Amazon Web Services. Jeg vet ikke om ikke-teknologer er klar over hvor mye av grunnmuren på nettet Amazon utgjør nå. Du er antagelig innom serverne deres hele dagen gjennom, uansett hvilke apper eller nettsteder du bruker. Amazons object storage-løsning heter S3, og der har hele nettstedet mitt ligget i et par år nå.

I gamle dager lå nettstedet mitt på et tradisjonelt webhotell. Det kostet meg ca 100 kroner i måneden. Amazon S3 koster meg under en krone i måneden. I tillegg betaler jeg et par kroner for Amazon CloudFront, et Content Delivery Network som gjør det kjapt å laste nettstedet uansett hvor du er i verden.

Det er en pris man kan bli glad av. Men jeg blir ikke glad av å bruke Amazon. Amazon er en av de onde gigantene som gjør meg motløs. De behandler arbeiderne sine som dritt. Det er det mange selskaper som gjør, men Amazon gjør det i en skala ingen andre har gjort før. Andre selskaper kan ha mellomledere som oppfører seg som drittsekker. Amazon har erstattet disse mellomlederne med IT-systemer som oppfører seg enda mer umenneskelig. Drittsekkkoppførselen abstraheres bort slik at ingen behøver å føle dårlig samvittighet over de elendige arbeidsforholdene. Dette gjelder primært nettbutikken Amazon, ikke Amazon Web Services, men jeg liker ikke å sende penger til dem. Samme hvor lite det er. Og jeg liker ikke at ett eneste selskap er så stort og drifter så mye av nettet.

Jeg vil derfor bort fra AWS. Det enkleste alternativet er da en annen object storage-tilbyder. Det finnes mange av de nå. De er enten gratis eller svært billige. En som fungerer bra for statiske nettsteder er Netlify, som blant annet har pek-og-klikk-støtte for Hugo-baserte løsninger, og langt på vei er gratis for nettsteder som mitt.

Jeg kunne gått for noe sånt, og det er nok det jeg vil anbefale til andre. Du vil lage et nettsted og er litt teknisk anlagt? Bruk Hugo + Netlify, eller noe sånt. Dette er ikke leketeknologi, nesten alle nye nettløsninger bygges slik nå. (De avanserte løsningene tar bare et par skritt videre og legger på Javascript og APIer.)

Men så kom jeg på en spennende løsning teknologiaktivisten Aral Balkan har laget, Site.js. Balkan er bekymret for mye av det samme jeg er bekymret for og har lyst til å gi kontrollen over nettet tilbake til enkeltpersoner. Site.js er ment å være en del av noe han kaller The Small Web, det lille nettet. Det skal jeg skrive mer om en annen gang, men Site.js er ment å gjøre det så lett som mulig å kjøre et nettsted som bygger på solid og god teknologi du kan kontrollere selv. Den har for eksempel innebygd SSL-oppsett, altså at du kan lese nettstedet kryptert over HTTPS. Dette er standard praksis på nettet nå, men det er litt vanskelig for ikke-teknikere å sette det opp.

Site.js er ment å kjøres fra en server du styrer selv. Du kan for eksempel kjøre den fra en Raspberry Pi på hjemmenettverket ditt. Raspberry Pi er en enkel datamaskin til under tusen kroner. Jeg har ikke en Raspberry Pi, men jeg har en gammel maskin i skapet som jeg har brukt til mye rart gjennom årene og som jeg nylig installerte Linux på. Hvorfor ikke bare bruke den?

Det morsomme med Site.js er at den kommer med Hugo innebygd. Dermed var det svært enkelt å flytte Hugo-løsningen min over på Site. Det var bare å legge det i en mappe som heter .hugo. Men i tillegg kan Site.js kjøre dynamiske nettløsninger også, laget i Node.js.

Site er ikke for de totalt ikke-tekniske, men det skal sannelig ikke mye til for å bruke dette. Det er omtrent så lett som det kan bli, gitt hva den er ment å brukes til. Den ville for eksempel vært perfekt for noen som har litt teknisk interesse, ikke er redd for kommandolinjeoperasjoner og tekstfiler, og vil ha en snill læringskurve på veien mot en ordentlig nettløsning. Den fjerner mye av det som er unødvendig vanskelig ved å lage en nettløsning, men samtidig bruker den god og oppdatert teknologi og gjør veivalg som er i henhold til god praksis, så langt jeg kan se.

Hvordan gikk det? At du leser dette, betyr at det fungerte. Nettstedet mitt er ikke like kjapt lenger, fordi jeg ikke har en CDN. Det kan jeg legge på hvis jeg gidder. Det å kjøre en server fra hjemmenettet gjør også DNS-oppsettet mer sårbart. Hvis nettet mitt plutselig skifter IP, finner man ikke bearstrong.net lenger. Det kan hende jeg setter opp dynamisk DNS for å løse dette. Først vil jeg vente og se hvor stort dette problemet er. Hvis adressen bare endrer seg en sjelden gang, er det ikke så farlig.

Jeg vet ikke om jeg kommer til å bruke noe av den dynamiske funksjonaliten i Site, men det er nå gøy å ha muligheten. Det er gøy å ha nettstedet mitt stående borte i skapet igjen og vite at jeg kan gjøre veldig spennende ting med det, hvis jeg vil, helt uten å sende penger til Amazon. Det blir jeg glad av.