How-to Guides¶
You know what you want; these are the steps. Each page starts from a goal and ends with it done.
If you are still deciding what you want, start with Getting Started. If you want to know what a setting does, that is Configuration and Plugins.
Start with the Recipes if you know what you want but not which feature does it — "block a country", "stop a login flood", "let Googlebot in safely".
-
Recipes
Keyed on intent rather than on feature. Each one is a working configuration and a link to the reference behind it.
-
Integrate With Your Platform
Wire the firewall into Drupal, WordPress, Laravel or a plain front controller, in the right place in the bootstrap.
-
Host Recipes
What a host has to answer before the firewall behaves — what is in front of it, where it can write, where logs go — and how to get those answers out of your own environment.
-
Migrating From Another Firewall
Wordfence, ModSecurity or Cloudflare rules expressed here — and, first, an honest list of what does not move.
-
Add a Challenge
Make suspicious traffic prove it is human instead of refusing it outright — configured, pointed at a rule, and checked before it enforces.
-
Add a Rule Source
Point a rule at a list that lives somewhere else — a file, a URL, a feed someone else publishes — in whatever shape it already has.
-
Send Logs Somewhere
A file, a rotating file, a queryable table, or a Slack channel that only speaks up when something is actually broken.
-
Troubleshooting
Organised by the sentence you would actually type — "my allow rule isn't working", "I locked myself out", "the challenge loops forever" — with the one command that confirms each.
-
Check a Request
Ask whether a given request would be blocked, and by which rule, from a terminal — without banning the address you are asking about.
-
Custom Plugins
Implement
PluginInterfaceto evaluate requests against your own logic. -
Custom Storage
Persist blocks and rate-limit counters anywhere — Memcached, DynamoDB, your app's ORM.
-
Advanced Examples
A full multi-layered production configuration, annotated.
-
Syncing Rule Sources
Refresh remote rule lists at deploy time and on a cron, then take the request path offline so a visitor never waits on somebody else's server.
-
Schema Migrations
Add the columns and indexes an existing database table is missing, without dropping it. Only ever additive, so no run can lose a row.
-
Diagnosing an Installation
Run against the real environment and find out what is wrong with it: rules that are not running, stores that cannot be reached, a stale GeoIP database.
-
Managing Rules
Add, remove and disable rules from the command line, without opening a YAML file and without losing the comments in it.
-
Reacting to Decisions
Have the firewall tell your application what it decided about each request, over PSR-14 — for metrics, notifications or an audit trail, without parsing logs.
-
GeoIP Setup
Obtain, install, and refresh the MaxMind GeoLite2 databases the GeoLocation and ASN plugins need.