devops webudvikling

spage.dk, statuspage uden framework, kø eller container

spage er et eksempel på hvad webncode.dk leverer når jeg bygger en fuld SaaS fra bunden: kort afhængighedsliste, ét produkt på én VPS, drift via Unix-værktøjer, klar dokumentation.

Problem

Solo SaaS-grundlæggere står med et dårligt valg når en kunde første gang
spørger efter en statuspage. Enten betaler man en stor international
leverandør et par hundrede kroner om måneden for funktioner man aldrig
kommer til at bruge, eller man lader være og håber at ingen lægger mærke
til nedetiden. Markedet har dyre værktøjer i toppen og hjemmestrikkede
løsninger i bunden. Der mangler noget i midten der bare virker uden at
koste som et team-værktøj.

Løsning

Et statuspage-værktøj der overvåger services med HTTP-checks, opdager
nedetid efter to fejl i træk og notificerer abonnenter pr. mail når status
skifter. Hele produktet kører på én VPS uden message broker, in-memory
cache eller container-orkestrering. Public statussider serveres fra
disk-cache, så de holder oppe selv hvis Postgres er nede. Custom domæner
får automatisk TLS via Let’s Encrypt, daglig krypteret backup havner i
DigitalOcean Spaces, og en dead-man’s-switch pinger healthchecks.io hvert
minut for at fange det øjeblik monitor-loopet selv går ned.

Resultater

spage er live. Den fulde SaaS-feature-liste der typisk kræver et
udviklingshold er bygget og driftet af én person: signup og login,
multi-tenancy med wildcard-vhost på *.spage.dk, custom domæner med
automatisk Let’s Encrypt-udstedelse, monitor-loop via cron, notifikationskø
med idempotent dispatch, Stripe billing med trial og graceful suspension,
double opt-in for abonnenter, GDPR self-service, password reset, email
verification, krypteret backup til offsite storage og verificerede
restore-procedurer.

Public statussiderne leverer under 200ms TTFB i mindre end 50KB HTML uden
tredjepartsanmodninger, og kører videre fra disk-cache uden at røre
databasen i normal drift. Et enkelt Ansible-playbook gør en frisk droplet
til en kørende spage-host i ét kald.

Tech stack

PHP 8.3 PostgreSQL 16 Apache 2.4 + mod_php vanilla HTML/CSS Vue 3 fra CDN i admin uden build step Stripe Billing Mailgun rclone Ansible til provisionering og deploy Debian 12 på DigitalOcean.

Tilbage til cases