PoW CAPTCHA for Flarum
A local Proof-of-Work CAPTCHA extension for Flarum that protects login, registration and password-reset forms without relying on any external service (no Cloudflare, no Google reCAPTCHA, no cookies).
How it works
- When an auth modal opens, the browser silently fetches a one-time challenge from the Flarum API.
- The browser solves a SHA-256 hash puzzle (finds a nonce N such that SHA-256(challenge:N) starts with D hex zeros, where D is the configured difficulty).
- The solution token challenge:nonce is appended to the form submission.
- The server verifies the solution and rejects the request if the check fails.
Bots must solve the same puzzle for every request; legitimate users complete it invisibly in the background (< 100 ms at the default difficulty).
Features
🔒 No external services – fully self-hosted
⚡ Invisible to users – solved automatically while they fill the form
⚙️ Configurable difficulty – 5 levels (< 1 ms → 10 s)
🌓 Dark / light mode – widget adapts to Flarum's current theme
🌍 Italian & English – auto-detected; add more locales in locale/
🔁 Replay-proof – each challenge is single-use (stored in Flarum's cache)
✅ Flarum 1.x and 2.x compatible
Requirements
Dependency Version
PHP | ≥ 8.1
Flarum | 1.0 or 2.0
Screenshot


Installation
composer require peopleinside/fla-powcaptcha
Then enable the extension in the Flarum admin panel.
Update:
composer update peopleinside/fla-powcaptcha
How to remove
composer remove peopleinside/fla-powcaptcha
After install, removal or update run
php flarum cache:clear
Minimal support.
Links:
Support Links:
License:
Apache License Version 2.0