Vi flyttet bloggen til en VPS

Vi flyttet bloggen til en VPS

Denne uken flyttet vi bloggen fra et lokalt Docker Compose-oppsett til en produksjonsklar VPS.

Målet var enkelt: Tjenestene skulle være reproduserbare, dataene skulle beholdes, og utrullingen skulle kunne gjentas uten at serveren ble behandlet som en engangsmaskin.

Hva som ble flyttet

Applikasjonen kjører som flere Compose-tjenester: frontend, autentisering, blogg-API, e-post, logging, Postgres, MinIO og Caddy.

Postgres- og MinIO-dataene ble flyttet til VPS-en i stedet for at vi startet med tomme volumer. Dermed beholdt vi eksisterende brukere, innlegg, medier og tjenestedata. Postgres-passordet ble rotert under migreringen, og produksjonsmiljøfilen ligger på serveren, ikke i repositoriet.

Caddy håndterer HTTPS for blog.bjornmagne.com. Nettsiden videresender til den språkspesifikke forsiden, og helsesjekkene gjør tjenestene enkle å kontrollere.

Utrulling

Den første produksjonsutrullingen brukte lokalt bygde images for å få siden trygt på nett. Repositoriet har nå også et Compose-overlay for registry-images og en GitLab-jobb for utrulling. Bygg fra main tagges med commit-SHA-en, og jobben venter på en offentlig HTTPS-helsesjekk før utrullingen regnes som vellykket.

Det gir oss en tydelig rollback: velg forrige image-tag, start stakken på nytt og kontroller det samme helseendepunktet.

En liten lærdom om autentisering

Datamigreringen viste en detalj som er lett å overse. Signeringsnøkler for autentisering krypteres med en egen deploy-hemmelighet. Databasen og de krypterte nøklene kan flyttes sammen, men krypteringshemmeligheten må også bli med.

Det første VPS-miljøet brukte en annen hemmelighet. Passordsjekken fungerte fortsatt, men auth kunne ikke dekryptere signeringsnøkkelen og utstede et access-token. Vi trakk tilbake den ubrukelige migrerte nøkkelen og genererte en ny lokal VPS-nøkkel. Eksisterende sesjoner ble ugyldige, noe som er riktig etter et nøkkelbytte.

Veien videre

Det som gjenstår er å koble til GitLab Registry og beskyttede CI-variabler, og deretter kjøre den første godkjente utrullingen og rollback-testen. Siden er live nå, men utrullingsprosessen er ikke ferdig før både ny utrulling og rollback er testet.

0 kommentarer

Logg inn for å kommentere.

Logg inn

Ingen konto?