# Configuration de l'Accès Public Cloudflare R2

Ce guide explique comment configurer votre bucket Cloudflare R2 pour permettre l'accès public aux fichiers audio et images.

## Étape 1 : Activer l'Accès Public

Dans votre dashboard Cloudflare R2 :

1. Sélectionnez votre bucket (ex: `my-music-bucket`)
2. Allez dans **Settings** → **Public Access**
3. Activez **Public Access**

## Étape 2 : Configurer l'URL Publique

Vous avez 3 options pour l'URL publique :

### Option 1 : URL de Développement R2 (Recommandé pour tests)

Format : `https://pub-xxxxx.r2.dev`

**Exemple** :
```
https://pub-f3b02d9efe91444b8f88d49cc4a5c35e.r2.dev
```

**Avantages** :
- Fourni automatiquement par Cloudflare
- Pas besoin de configuration DNS
- Idéal pour le développement

**Limitations** :
- Rate-limited (non recommandé pour production)
- URL non personnalisable

### Option 2 : Domaine Personnalisé (Recommandé pour production)

**Configuration dans Cloudflare R2** :
1. Allez dans **Settings** → **Custom Domains**
2. Cliquez sur **Add**
3. Ajoutez votre domaine (ex: `afrique-musique.com`)
4. Choisissez le niveau TLS minimum

**Exemples** :
```
https://afrique-musique.com
https://my-music-bucket.afrique-musique.com
https://cdn.afrique-musique.com
```

**Avantages** :
- Pas de rate limiting
- URL personnalisée
- Support production complet
- Meilleure performance

### Option 3 : S3 API Endpoint (Nécessite proxy)

Format : `https://{account-id}.r2.cloudflarestorage.com/{bucket}`

**Exemple** :
```
https://0c3ed8643116729c890a96abcbdfcf47.r2.cloudflarestorage.com/my-music-bucket
```

**Note** : Cette URL nécessite l'authentification AWS. L'application utilisera automatiquement un proxy pour servir les fichiers.

## Étape 3 : Configuration CORS

Pour permettre la lecture audio dans le navigateur, configurez CORS :

1. Allez dans **Settings** → **CORS Policy**
2. Ajoutez une règle :

```json
[
  {
    "AllowedOrigins": ["*"],
    "AllowedMethods": ["GET", "HEAD"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag", "Content-Length", "Content-Type"],
    "MaxAgeSeconds": 3600
  }
]
```

Pour plus de sécurité en production, remplacez `"*"` par votre domaine :
```json
"AllowedOrigins": ["https://afrique-musique.com"]
```

## Configuration dans AfricanMusic

Une fois votre bucket R2 configuré :

1. Allez dans **Admin** → **Stockage**
2. Sélectionnez **Cloudflare R2**
3. Remplissez les champs :
   - **Account ID** : Trouvé dans R2 dashboard
   - **Access Key ID** : Clé API R2
   - **Secret Access Key** : Secret API R2
   - **Bucket Name** : `my-music-bucket`
   - **URL Publique** : Une des options ci-dessus

## Test de Configuration

Après configuration, uploadez un fichier audio :

1. Allez dans **Artist** → **Upload**
2. Uploadez un fichier test
3. Essayez de le lire depuis **Admin** → **Tracks**

Si le fichier se lit correctement, votre configuration est bonne !

## Dépannage

### Le fichier ne se lit pas

**Vérifiez** :
- L'accès public est activé sur le bucket
- L'URL publique est correctement configurée
- La politique CORS est en place
- Le fichier existe dans le bucket R2

### Erreur CORS

**Solution** :
- Vérifiez que la règle CORS inclut `GET` et `HEAD`
- Assurez-vous que `AllowedOrigins` inclut votre domaine ou `*`

### Erreur 404 (NoSuchKey)

**Causes possibles** :
- Le chemin du fichier est incorrect
- Le bucket name est incorrect dans la configuration
- Le fichier n'a pas été uploadé correctement

## Ressources

- [Cloudflare R2 Docs](https://developers.cloudflare.com/r2/)
- [R2 Public Buckets](https://developers.cloudflare.com/r2/buckets/public-buckets/)
- [R2 CORS Configuration](https://developers.cloudflare.com/r2/buckets/cors/)
