Website onbereikbaar: wat een storing in 2016 me leerde
Even na middernacht op 15 november 2016 publiceerde ik een bericht met de titel "Mijn blog is onbereikbaar". Op dezelfde site die net was uitgevallen, legde ik uit waarom hij niet meer reageerde, met het wat naïeve enthousiasme van iemand die ontdekt dat een goede beveiligingspraktijk zich tegen je kan keren. Tien jaar later heb ik platformen beheerd waar uitval niet meer wordt gemeten in verloren bezoekers, maar in gemeenten die van hun verkiezingstool worden afgesneden. Dit bericht vertrekt vanuit het incident van 2016 en trekt daar de methode uit die ik vandaag toepas wanneer een site uitvalt.
November 2016: buitengesloten door mijn eigen beveiliging
Destijds werd mijn blog via HTTPS geserveerd met een gratis Let's Encrypt-certificaat. Ik had ook zelf HSTS ingeschakeld, tot ik het domein zelfs op de preload-lijst van de browsers zette. HSTS zegt in wezen tegen de browser: deze site wordt alleen via een beveiligde verbinding geserveerd, weiger al de rest, zonder uitzondering.
Die dag migreerde ik naar een server met meer middelen. Tijdens de migratie moest ik mijn SSL-certificaat opnieuw genereren, via een "één klik"-tool. Eén veld was verkeerd, dus het certificaat ook. En omdat HSTS elke onbeveiligde verbinding verbood, deden de browsers precies wat ik hun had gevraagd: ze weigerden mijn site te laden. Geen hack, geen dataverlies. Een site vergrendeld door de regel die ik zelf had geschreven, totdat ik een correct certificaat kon genereren.
Ik verduidelijkte destijds al dat ik Let's Encrypt niet de schuld gaf; de "één klik"-regeneratie kwam niet van hen. De echte les was niet "beveiliging is riskant". Het was: een kritieke handeling die overhaast en zonder controle wordt uitgevoerd, betaal je meteen.
Wat ik goed deed zonder het te beseffen
Bij het herlezen van dat bericht valt me één ding op. Mijn eerste reflex, midden in de nacht, was niet om te doen alsof er niets aan de hand was. Ik schreef openbaar wat er was gebeurd, wat ik had gemist en wat ik eruit meenam. Dat is, zonder dat ik het toen zo formuleerde, de basis van incidentbeheer: zeg wat je weet, wanneer je het weet.
Een klant die de storing via jouw bericht verneemt, vergeeft ze. Een klant die ze zelf ontdekt en daarna jouw stilte vaststelt, onthoudt vooral de stilte.
Les 1: een storing stel je niet vast, je meet ze
In 2016 ontdekte ik het probleem door mijn eigen site te bezoeken. Met andere woorden, ik was mijn enige monitoringtool. Vandaag controleert mijn site zelf voortdurend zijn diensten en publiceert het resultaat op een openbare statuspagina: webserver, applicatie, database, e-mail, galerijen, met een dag-per-dag geschiedenis over 90 dagen en de lijst met voorbije incidenten.
Een statuspagina verandert twee dingen. Ten eerste hangt detectie niet meer af van het toeval van een bezoek. Ten tweede wordt transparantie verifieerbaar: wanneer ik een beschikbaarheidscijfer aankondig, kan iedereen naar de groene balken kijken.
Les 2: een back-up bereid je vooraf voor, nooit tijdens
Grappig detail: het bericht van 2016 raadde al aan om "een back-up te maken voordat je begint". Ik had het principe begrepen voordat ik het gewicht ervan besefte. Een certificaatstoring herstel je zonder verlies. Een beschadigde database, een dode schijf of een hack, niet: daar redt alleen de back-up van vóór het incident je.
Daarom bevatten mijn formules voor beheerde hosting standaard back-ups over 14 dagen (30 dagen in de formule Business), beheerde updates en beschikbaarheidsmonitoring. Niet als optie, in de basis. De vraag die je aan je host moet stellen is niet "maken jullie back-ups?" maar "wanneer hebben jullie voor het laatst een herstel getest?".
Les 3: betrouwbaarheid wordt becijferd en vervolgens bewezen
In 2024, bij de Imprimerie Wallonne des Communes, bouwde en onderhield ik de digitale infrastructuur waarop 123 Belgische gemeenten rekenden voor de wetgevende en gemeentelijke verkiezingen, waaronder gebel.be, het meertalige platform voor het beheer van de stembureaus. Van 2.000 tot 4.500 bezoekers per dag, vier talen, en één simpele verplichting: alles moest draaien op de dag van de stemming, weekends en feestdagen inbegrepen. De minste fout kon het verkiezingsproces van een heel land in gevaar brengen. Het platform is nooit uitgevallen.
Een verkiezingsavond speel je niet opnieuw. Zo'n project dwingt je om betrouwbaarheid als een uitgangseis te behandelen: redundantie, bewaking, geschreven procedures, en geen ongecontroleerde "één klik"-handeling op een productiesysteem. Precies het tegenovergestelde van mijn migratie van 2016.
Je site is uitgevallen: de methode, op volgorde
Als je site nu, op dit moment, onbereikbaar is, dan is dit wat ik in jouw plaats zou doen.
- Bevestig de storing. Test vanaf een ander toestel of via 4G. Als de site elders wel reageert, ligt het probleem aan jouw kant (cache, lokale DNS, netwerk).
- Lees de exacte foutmelding. "Onbeveiligde verbinding" wijst naar het certificaat, zoals bij mij in 2016. Een 500-fout wijst naar de applicatie, een time-out naar de server, een parkeerpagina naar een verlopen domein.
- Controleer de vervaldata. Verlopen domeinnamen en certificaten blijven banale, vermijdbare oorzaken van uitval.
- Verander maar één ding tegelijk. Noteer elke actie. Drie gelijktijdige wijzigingen betekenen drie keer zoveel moeite om te begrijpen wat heeft gewerkt.
- Communiceer vroeg. Een kort en eerlijk bericht aan je klanten is beter dan een uur stilte: "de site is uitgevallen, ik heb het spoor gevonden, terug verwacht rond dat uur".
- Herstel indien nodig. Als er data is geraakt, vertrek dan van de laatste gezonde back-up in plaats van te knutselen aan een beschadigd systeem.
- Schrijf de post-mortem. Al zijn het maar drie regels. Mijn bericht van 2016 was er een, en dankzij dat kan ik dit schrijven.
Tien jaar tussen twee berichten
In 2016 was een storing van mijn blog een tegenvaller en een anekdote om te vertellen. In 2026 is een storing bij een klant omzet die stilvalt, en mijn werk bestaat erin ze zeldzaam, kort en aangekondigd te maken. Als je site net is uitgevallen, of als je wilt dat een storing nooit meer een verrassing is, laten we praten.