MuseMVP Docs
Security

Turnstile Verification

Integrate Cloudflare Turnstile on auth UI and backend verification pipeline.

MuseMVP uses Cloudflare Turnstile to protect sensitive auth endpoints from bots and abuse. Turnstile is a privacy-friendly CAPTCHA alternative that verifies human users without requiring cumbersome challenges.

Setup Steps

Create a Site

Go to Cloudflare Turnstile and create a site. Cloudflare Turnstile Cloudflare Turnstile

Copy the Site Key and Secret Key. Cloudflare Turnstile

Set NEXT_PUBLIC_TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY. The site key is public and build-time. The widget stays off until both are non-empty. Changing them requires a rebuild or a platform secret update.


Common Issues

Debug Tip

Verify both Turnstile env vars first, then inspect business logic.

IssueSolution
Widget not renderingSet both NEXT_PUBLIC_TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY. The widget stays off until both are non-empty
Verification failsEnsure TURNSTILE_SECRET_KEY matches the secret from Cloudflare
Mixed keysTest and production keys cannot be mixed across environments

Optional: Disable Captcha

To disable Turnstile, leave either the site key or the secret empty in the app environment. The captcha plugin stays unloaded, and the forgot-password form does not render the widget.

The current Better Auth captcha plugin explicitly configures /forget-password/email-otp and /email-otp/reset-password. Do not assume every signup/login/API endpoint is automatically protected. New protected endpoints need server validation and failure tests.

On this page