|
# 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 |