惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园 - 叶小钗
D
DataBreaches.Net
D
Docker
月光博客
月光博客
博客园 - 司徒正美
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
The Night I Built Sentinel: A Story of Bots, Breakdowns, ...
slawekluzny · 2026-06-14 · via DEV Community

slawekluzny

The Night I Built Sentinel: A Story of Bots, Breakdowns, and Breaking Through

It was 3am when I woke up to the alert. My server was under attack.

I opened my laptop, stared at the screen, and felt that familiar sinking feeling in my gut. SSH was timing out. The CPU usage graph looked like a heart attack—flatlining at 100%. Something was wrong.

This wasn’t the first time my server had been hit by bots. But this wasn’t a casual scan or a low-level probing. This was a full-on assault.

By the time I got into the hosting panel, the damage was already done. My contact form had been hammered. Emails had been sent out in a matter of hours. My IPs were blacklisted. My server was toast.

I spent the next week in a fog of exhaustion—days on the construction site, nights trying to salvage what was left. Rate limiting, CAPTCHA, SPF records, DKIM—all the things I should have done before the attack, not after.

But in that mess, something clicked. I started making a list of everything that had gone wrong—everything that could go wrong. And I realised: I didn’t just need to fix this. I needed to prevent it.


The Birth of Sentinel

Sentinel didn’t start as a product. It started as a script. A crude, ugly thing that ran core monitoring roughly every 5 minutes via a long-running systemd daemon with APScheduler interval jobs—cron was intentionally avoided to keep the crontab clean and uncluttered—and checked a list of things:

  • Is the database running?
  • Are the SSL certificates valid?
  • Is the CPU spiking?
  • Are the bots hammering the contact form again?

It wasn’t impressive. But it worked.

Over time, it grew. A dashboard here, a fleet view there. Integration with Fail2Ban. AI-powered checks for anomalies.

Today, Sentinel is one of our core offerings. It’s running on our servers, and it’s running on other people’s servers too. What started as a desperate fix became a product.


Why I Ditched Laravel

I didn’t hate Laravel. But I didn’t understand it either.

The codebase I inherited was a patchwork quilt of freelancer decisions—shortcuts, half-working features, and choices that made sense to someone, somewhere, at some point. But not to me.

So I rewrote it.

From scratch. A modern stack for a platform that needed to be fast, clean, and scalable.

It wasn’t easy. It took months. But when it was done, I understood every line of code. Every decision. Every fix.


The AI Shift

I wasn’t always good at this.

Years ago, I couldn’t tell you what SSH stood for. Today, I’m building SaaS products that people pay for.

The difference? AI.

Not as a crutch, but as a collaborator.

With tools like Claude, I could think out loud. I could describe a problem—badly, imprecisely—and have the imprecision noticed and questioned. I could ask why, not just how.

I learned to verify before implementing. To trust my instincts when something felt off. To push back when the AI suggested something technically correct but fundamentally wrong.

That back-and-forth—human judgment combined with AI capability—was what made the difference.


The Products That Came From Chaos

I didn’t set out to build a company.

Sentinel started as a fix for my own server. 24ad.info started as an idea on a construction site. PostPilot—they all started as tools I needed to solve problems I faced.

Today, they’re products. Real ones. With pricing, documentation, and customers.


The Lessons I’ve Learned

  1. Tools matter less than you think. Find what fits how you work. I tested several different servers, each handling what it did best, but ran into conflicts. Caddy was chosen only after testing as the best overall fit. I stuck with it because it worked.

  2. Breaking things is the education. The things I remember most clearly are the things that went wrong.

  3. AI is a collaborator, not a replacement. The code is better when I understand it. The solutions are better when I push back.

  4. Shipping beats perfecting. Every product I have is imperfect. Every product I have is live.

  5. The story is the product. Authenticity is the differentiator.


The Invitation

If you’re reading this and you have an idea you haven’t started because you don’t have the technical background—start.

Not with a plan to learn everything first. Not with a commitment to do it properly before doing it at all. Just start.

The knowledge follows the doing.

I didn’t learn to manage a server and then build products. I built products and learned to manage a server because I had to.

The credential doesn’t come before the work. It comes from it.


"I don’t know programming languages at an expert level. I don’t need to.

I imagine, describe, verify—AI codes. I decide."

— Slawomir Luzny

Founder, FixFlex LTD • West London