| # Cloudflare Turnstile Integration |
|
|
| TTS Arena supports Cloudflare Turnstile for bot protection. This guide explains how to set up and configure Turnstile for your deployment. |
|
|
| ## What is Cloudflare Turnstile? |
|
|
| Cloudflare Turnstile is a CAPTCHA alternative that provides protection against bots and malicious traffic while maintaining a user-friendly experience. Unlike traditional CAPTCHAs, Turnstile uses a variety of signals to detect bots without forcing legitimate users to solve frustrating puzzles. |
|
|
| ## Setup Instructions |
|
|
| ### 1. Register for Cloudflare Turnstile |
|
|
| 1. Create a Cloudflare account or log in to your existing account |
| 2. Go to the [Turnstile dashboard](https://dash.cloudflare.com/?to=/:account/turnstile) |
| 3. Click "Add Site" and follow the instructions |
| 4. Create a new site key |
| - Choose "Managed" or "Invisible" mode (Managed is recommended for better balance of security and user experience) |
| - Set an appropriate domain policy |
| - Create the site key |
|
|
| Once created, you'll receive a **Site Key** (public) and **Secret Key** (private). |
|
|
| ### 2. Configure Environment Variables |
|
|
| Add the following environment variables to your deployment: |
|
|
| ``` |
| TURNSTILE_ENABLED=true |
| TURNSTILE_SITE_KEY=your_site_key_here |
| TURNSTILE_SECRET_KEY=your_secret_key_here |
| TURNSTILE_TIMEOUT_HOURS=24 |
| ``` |
|
|
| | Variable | Description | |
| |----------|-------------| |
| | `TURNSTILE_ENABLED` | Set to `true` to enable Turnstile protection | |
| | `TURNSTILE_SITE_KEY` | Your Cloudflare Turnstile site key | |
| | `TURNSTILE_SECRET_KEY` | Your Cloudflare Turnstile secret key | |
| | `TURNSTILE_TIMEOUT_HOURS` | How often users need to verify (default: 24 hours) | |
|
|
| ### 3. Implementation Details |
|
|
| When Turnstile is enabled: |
| - All routes and API endpoints require Turnstile verification |
| - Users are redirected to a verification page when they first visit |
| - Verification status is stored in the session |
| - Re-verification is required after the timeout period |
| - API requests receive a 403 error if not verified |
|
|
| ## Customization |
|
|
| The Turnstile verification page uses the same styling as the main application, providing a seamless user experience. You can customize the appearance by modifying `templates/turnstile.html`. |
|
|
| ## Troubleshooting |
|
|
| - **Verification Loops**: If users get stuck in verification loops, check that cookies are being properly stored (ensure proper cookie settings and no browser extensions blocking cookies) |
| - **API Errors**: If API clients receive 403 errors, they need to implement Turnstile verification |
| - **Missing Environment Variables**: Ensure all required environment variables are set correctly |