MoreRSS

site iconFrank MeeuwsenModify

A team lead for Kaliber Studio, a talented group of content specialists. He’s a pioneering blogger, author of Bloghelden, the definitive history of blogging in the Netherlands.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Frank Meeuwsen

Ik leerde hoe ik Russische spam beter buiten de deur kan houden (een les in self-hosting)

2026-07-11 19:43:34

Ik klik op een artikel op de site van CreativeNotes en beland op een Russische gokwebsite. Niet één keer, elke keer.

De voorpagina van CreativeNotes laat gewoon alles netjes zien, maar zodra ik doorklik naar een los artikel, word ik weggestuurd. Soms naar die goksite, soms naar een wat vage Amazon-productpagina. Ik dacht eerst dat mijn browser iets geks deed, maar een check op mijn telefoon en in een paar andere browsers liet precies hetzelfde zien. Mijn site was gehackt.

Dit is niet de eerste keer dat een account van mij buiten mijn medeweten om iets deed wat ik niet had goedgekeurd. In 2023 ontdekte ik al dat een vergeten app-koppeling mijn Mastodon-account had overgenomen. Deze keer ging het net weer even anders.

CreativeNotes draait op Ghost, een open source CMS met ingebouwde nieuwsbrief-functionaliteit en veel koppelingsmogelijkheden. Daar koos ik destijds bewust voor, zodat ik zelf de regie hield over mijn boekproject. Die regie voelde nu ineens een stuk minder vanzelfsprekend.

Op zoek naar de oplossing

Ik dook in de logfiles van het CMS-beheer, maar veel wijzer werd ik er niet van. Wel zag ik dat er ooit was ingelogd met een Zapier-account. Zapier? Ik kon me niet herinneren dat ik ooit een Zapier-koppeling had gemaakt, en de systeemlogs waren verder minimaal, zeg maar gerust afwezig.

Voor ik op de server zelf ging graven, legde ik het probleem voor aan Claude. Die kwam meteen met een duidelijke diagnose:

[…] kwaadaardige code op de site zelf. Dit is een bekend patroon: iemand voegt via Ghost Admin (Settings → Code injection, header of footer) of via een gecompromitteerd thema een script toe dat kliks op links onderschept en herschrijft naar affiliate- of scamsites.

Bij de header en footer van de site vond ik niks, maar ik wist dat code injection in Ghost ook per post en pagina mogelijk is. Ik checkte de instellingen van een van de artikelen en bingo, daar stond het: een stukje kwaadaardige Javascript.

Auto-generated description: Er wordt een privacybeleid weergegeven met uitleg over het verzamelen en gebruiken van informatie, inclusief definities en verwijzingen naar een Privacy Policy Generator.

Nu moest ik nog uitzoeken hoe dit was gebeurd, wat ik beter moest afschermen en hoe ik in één keer alle geïnjecteerde code uit mijn posts kreeg. Ook daar hielp Claude Cowork me goed bij. Stap één was alle API-keys vernieuwen en mijn wachtwoord wijzigen. Ondertussen bouwde Claude een script dat ik lokaal op mijn Mac draaide: het gebruikt de officiële Ghost-API, loopt alle posts en pagina’s langs, checkt op kwaadaardige code en verwijdert die meteen als hij iets vindt. Binnen twee minuten was de site weer schoon en gewoon bereikbaar.

Beveiliging

Toen werd het tijd om de site en de server structureel beter te beveiligen. Ik ben geen senior developer en heb weinig verstand van het echt dichttimmeren van servers, maar Claude legt me prima uit wat nodig is, waarom het nodig is en hoe ik het instel.

Zo bleken de logfiles van mijn server maar minimale informatie te bewaren. Dat is nu anders: ik zie tot in detail wie welke pagina opvraagt, vanaf welk IP-adres en hoe vaak er wordt geprobeerd om beveiligingen te omzeilen of API’s te benaderen. Vervolgens bouwden we een script dat me via Telegram een seintje stuurt zodra een pagina op CreativeNotes wordt aangepast door iemand anders dan ikzelf, zodat ik een volgende poging meteen in de kiem kan smoren.

Tot slot staat er nu een klein dashboard waar ik de logfiles visueel terugzie in grafieken. Dat dashboard geeft best wel veel informatie, dus die moet ik nog scherper filteren, maar het belangrijkste staat er: de server is beter afgeschermd, ik krijg een signaal zodra er iets misgaat, en een eventuele nieuwe code-injectie los ik binnen een paar minuten op met mijn eigen script.

AI als assistent in dit alles

Na dertig jaar weet ik best wat van programmeren, van hoe computers en servers werken, van waar je bij beveiliging op moet letten, maar ik ben er geen bedreven uitvoerder van. Ik spreek de taal niet vloeiend, zeg maar, en ik weet ook niet altijd welke term of instelling nou precies de juiste is. Voor grote taalmodellen als Claude maakt dat weinig meer uit.

Door een gestructureerde aanpak loste ik het probleem in zo’n drie uur op. Ik beveiligde mijn werk beter en snap nu redelijk goed hoe en waarom dit is gebeurd, door te vragen waarom iets nodig is, door af en toe een tegenidee te opperen, door een foutmelding gewoon in het opdrachtveld te plakken met de simpele vraag: los dit voor me op.

Ik schreef eerder al over het verschil tussen agents en skills in Claude Code. Dit hele avontuur was typisch skill-werk: ik zat aan het stuur, Claude was mijn copiloot, en bij elke stap kon ik meekijken en bijsturen.

Kan het allemaal nog steviger en robuuster? Vast wel. Claude opperde zelf CrowdSec, een soort actieve waakhond die continu logfiles analyseert en zelfstandig beslissingen neemt, maar het advies was om eerst te kijken hoe de huidige beveiliging bevalt, voor ik er nog een laag bovenop leg.

De Russische spammer heeft niets persoonlijks tegen mij. Het is geautomatiseerd, uitbesteed werk: op grote schaal zoeken naar sites met een Ghost-installatie, kijken waar de zwakke plekken zitten en daar massaal spam-links plaatsen. Ik was er even het toevallige slachtoffer van.

Balen is het wel, maar het is meteen ook weer een les: zelf hosten is een leuke hobby, maar je draagt er wel wat petten bij. Updates, beveiliging, het is allemaal jouw verantwoordelijkheid. Ik vind dat prima, het is mijn hobby en ik leer er telkens weer wat bij. Voor de meeste mensen is dat anders, en dat hoeft ook niet. Juist om deze reden.

sneakerweb The sneakerweb is a...

2026-07-09 16:46:40

sneakerweb

The sneakerweb is a peer-to-peer protocol for web publishing without permission: there are no DNS servers, domain registrars, or web hosts.

Instead, websites are stored directly on user devices, and transferred between them through the ultimate fallback infrastructure: physical storage media.

Ik weet nog niet wat het exact is en hoe het werkt, maar ik wil dit best eens proberen…

Mr. Penumbra is up all night I...

2026-07-09 16:05:22

Mr. Penumbra is up all night

I have to add: this paper SMELLS amazing (!) and I hope it main­tains some of its aroma in transit.

Okay — The Writer & the Witch is the story you’ll receive immediately. And the one you’ll smell immediately.

The second book will ship later this summer:

Mr. Penumbra’s All-Night Reading Room

Ik heb de bundel direct besteld. Ik blijf een groot fan van Robin Sloan. Niet alleen zijn boeken, maar juist het creatieve werk wat hij er bij doet. Een voorbeeld om naar te leven.

Om Malik is overleden

2026-07-09 14:57:00

Normaal zou ik nieuws als dit binnen een dag of twee dagen wel op hebben gepikt en er zelf iets over hebben geschreven. Maar nu zit er bijna twee weken tussen. Op 24 juni is de blogger, schrijver, fotograaf Om Malik overleden. En toevallig lees ik daar gisteren over. Jan schrijft een prachtig bericht hoe hij Om op een afstand bewonderde. Hoe Om een een echte blogger is. Een eersteling. Iemand die door veel te delen juist vermenigvuldigde.

Het is verschrikkelijk dat hij is overleden. Om is een van de oerbloggers; hij verdiende zijn sporenin de techjournalistiek van Silicon Valley. Hij heeft een enorm oeuvre opgebouwd met zijn scherpe blik over alle (Big)tech bedrijven. Hij zag nieuwe trends heel vroeg, eerder dan veel anderen. Ik volgde Om’s blog niet meer religieus zoals ik dat vroeger wel deed, maar net als Jan bewonderde ik hem van een afstand. Hij was een van de OG bloggers en zal dat altijd blijven. Dat bewijzen de vele verhalen over zijn leven

Maar dit bericht maakt tegelijk iets anders bij mij los. Hoe kan het dat ik dit pas twee weken later lees? Had ik het eerder moeten weten? Willen weten? Is dat belangrijk voor me? Misschien niet exact dit bericht, maar door de jaren heen hield ik zoveel nieuws bij dat ik een bericht als Om’s afscheid zeker veel eerder had gezien.

Mijn RSS-feeds zijn al tijden ongelezen, ik ben niet dagelijks op een vaste set blogs te vinden en het meeste wat ik bijhoud is gerelateerd aan AI, wat ik uit nieuwsbrieven, Linkedin en Whatsapp groepen haal. Het bericht van Om zette me op pauze om na te denken: vind ik dát dan wel de moeite waard? Ik ken mezelf inmiddels goed genoeg om te weten dat als ik dit soort vragen aan mezelf stel, het antwoord echt wel weet.

Ik kies er zelf voor om als zelfstandige diensten aan te bieden rondom AI. Dat betekent dat ik de veel te snelle technische ontwikkelingen volg. Maar ik vergeet om me heen te kijken en te zien wat er nog meer op dat fantastische open internet gebeurt. Vrienden die ik normaal volg, die dicht bij mij staan en die op een afstand wonen en werken, lijk ik plots uit het oog te zijn verloren.

Die realisatie betekent dat het tijd is om daar iets aan te doen. Dat betekent echt keuzes maken wat ik op een dag consumeer en natuurlijk er zelf over te schrijven.

Tenslotte over Om Malik, in september lijkt er een OmFest te komen, georganiseerd door zijn goede vriend Matt Mullenweg die een prachtige blogpost over hem schrijft. Het lezen meer dan waard.

Om’s last word was “love.”

The AI Compass Ik heb de test...

2026-07-07 16:56:49

The AI Compass

Ik heb de test zo eerlijk mogelijk beantwoord en kom er uit als een B2B Saas Consultant. Ik weet nog niet goed hoe ik me daar bij voel. Drie woorden waar ik bar weinig mee heb. Laat ik het er op houden dat de beschrijvingen zo gekozen zijn dat ze mijn ware aard niet goed weten te vangen…

Google Reader was building the...

2026-07-05 22:13:05

Google Reader was building the wrong future

Google Reader was the social network people wanted all along.

Ik vraag me af hoe Google Reader nu zou zijn, in deze dagen. Stel dat het nooit was weggegaan. Stel dat het was doorontwikkeld in de afgelopen 10+ jaar. Met mobiel, met apps, met AI. Zou Google beter in de race zijn gebleven voor de sociale laag van het web? In plaats van die weg te geven aan Meta en China? Zou Reader en Twitter de ultieme combi zijn geweest?