Denne siden ligger på Codeberg, og du leser den nå på et domene jeg eier selv. Det var ikke vanskelig å få det til, men det var heller ikke bare å huke av. Her er hvordan prosjektet gikk, og hva som møtte meg av utfordringer underveis.
Utgangspunktet var selvstendighet, ikke avhengighet
Jeg ville ha en nettside der jeg hadde hundre prosent kontroll. Der jeg kunne laste opp mine egne filer, ha mitt eget domene, uten å bli låst inne i en eller annen nettstedbygger jeg ikke eier. Og jeg ville unngå å ha noen amerikanske spionprogramvare i stacken. Det er ingen grunn til å levere data til en CLOUD-akt-jurisdiksjon når det finnes gode europeiske alternativer. Først var jeg inne på tanken om jeg om jeg kunne bruke Nextcloud-skyen min som webhotell, men en offentlig delt mappe i en fillagringstjeneste er ikke en god nettside. Den får ikke eget domene, ingen ryddige adresser, ingen SSL. Verktøyet var feil for jobben.
Så, etter litt research falt valget falt på Codeberg Pages. Det er gratis, statisk hosting fra en ideell tysk organisasjon, drevet med fri programvare. Etterpå var det domenet som sto på tur. Drømmenavnet var opptatt, men kjellting.no viste seg å være bedre enn plan A. Det rommer både det jeg jobber med profesjonelt, hobbyene mine og alt annet jeg kan være opptatt av. En vakker paraply, mange ting under. Domene ble kjøpt billig hos webhuset.no, uten å ta i bruk noen av de andre tjenestene deres.
Repo, grener, og en misforståelse
Oppsettet på Codeberg er i prinsippet enkelt. Lag et offentlig repo
som heter pages, legg filene i roten, og innholdet
publiseres. Men jeg traff visst en klassisk misforståelse helt i starten. Jeg har ikke jobbet med git før,
og tenkte på en «branch» (gren) som en mappe. Det er det
ikke. En branch er en parallell versjon av hele repoet. Filene skulle
ligge i roten av en branch som heter pages. Ikke i en
mappe som heter pages. Liten forskjell i ordlyden, stor forskjell i
resultatet. Men det er feil man lærer av.
Så oppdaget jeg at Codeberg faktisk har to publiseringssystemer. Den
gamle «Pages Server v2» er stengt for nye brukere, og alle nye
kontoer må bruke det nye systemet, git-pages. For meg
betydde det konkret at repoet mitt skulle kobles til det nye systemet
med en såkalt webhook. Det er en liten adresse Codeberg pinger hver gang
jeg pusher noe. Før den var på plass, publiserte ingenting seg selv,
uansett hvor korrekt filene lå.
Arbeidsflyten hjemme hos meg selv
Nettlesergrensesnittet på Codeberg funker, men ekte arbeidsflyt er
lokalt. Jeg klonet repoet ned til en mappe som synkroniseres med
Nextcloud. Så nå har jeg arbeidskopien min tilgjengelig på alle maskiner, med
skybackup gratis. Etterpå fikk jeg på plass tre små ting som gjorde oppdateringer
enkelt. Git lagrer innloggingstokenet i systemets nøkkelring
(libsecret på Linux), et alias kalt git go gjør hele
«hent, legg til, lagre, push»-sekvensen til én kommando, og lokal
testing før publisering er bare å åpne en liten HTTP-server i
mappen og se siden i nettleseren før verden får se den.
Eget domene koblet til
Selve domenekoblingen er tre DNS-oppgaver hos registraten min. En
A-post som peker domenet mot Codebergs server, en AAAA-post for
IPv6, og det som var nytt for meg, en TXT-post som heter
_git-pages-repository med adressen til repoet mitt.
Den siste er en autorisasjon som beviser at domenet mitt tillater
innhold nettopp fra det repoet. I det nye systemet til Codeberg er DNS
kilden til autorisasjon. Den gamle .domains-filen i repoet
er ikke lenger i bruk.
Motbakkene
- 503 i en hel kveld. Midt i oppsettet sluttet Codebergs git-tjener å svare. Alt på min side var korrekt. Det var en driftsforstyrrelse hos dem. Jeg brukte noen timer på å feilsøke og det tok litt tid å bli kjent på nettområdet deres. Men når jeg endelig fant feilmeldingen til webhooken der, sa den nøyaktig hvor det satt, og at det ikke var min konfigurasjon. Det var bare å vente litt.
-
Sertifikat-sirkelen. Det var også et problem som fikk meg til å gruble i noen timer. SSL-
sertifikatet for domenet blir utstedt først når en vellykket
publisering har skjedd mot domenet. Men publiseringen går via
en webhook som trenger sertifikatet for å levere. Jeg var låst i en ond sirkel.
Men det var en enkel løsning. Les dokumentasjonen. Der står det at man må bytte webhook-adressen midlertidig
til
http://(uten s). HTTP trenger ikke sertifikat, publiseringen går gjennom, og sertifikatet bestilles som en følge av den.
Tips underveis: Du trenger ikke vente på
domeneregistreringen for å teste. Siden lever på
brukernavn.codeberg.page fra første push. Bygg og
verifiser alt der. Koble domenet på til slutt. Da feilsøker
du ett lag av gangen.
Hva jeg lærte
Tre ting sitter igjen. For det første, finn og les feilmeldingene: «new users are not allowed», «503», «tls: internal error» kunne forklart hvorfor hvis jeg hadde lest dokumentasjonen, og sjekket status. Men jeg brukte jeg timer på å lete etter feil som ikke var der. For det andre, kontroll er ikke det samme som å eie alt. Filene mine er mine og kan flyttes til en hvilken som helst annen tjener i morgen, domenet er mitt, resten er utbyttbare biter. For det tredje, fri programvare fungerer, men den forutsetter at du orker å forstå den. Betalt bekvemmelighet skjuler mekanismene, fri programvare viser dem. Det er ikke en bug, det er prisen.
Til deg som står der jeg sto
Totalregnskapet ble noen kvelder med forvirring, en tilnærmet null kronekostnad, og en nettside jeg kontrollerer fra domenenavn til siste CSS-linje. Du trenger ikke være utvikler. Jeg er jurist. Men du må tåle å grave i feilmeldinger og prøve én gang til. Hvis du vurderer det samme byttet, registrer domenet ditt i dag, opprett Codeberg-konto i morgen, og push din første index.html-fil før uken er over. Resten er motbakker du kommer over. Og sitter du fast midt i en ond sertifikat-sirkel en søndagskveld, prøv http først. Eller ta kontakt, så kanskje jeg kan hjelpe.
Kommentarer
Har du tanker om dette? Send en e-post til thewizardofmagicalcolors@proton.me, så legger jeg den ut her. Kommentarer modereres manuelt og vises som ren tekst.