Changer le thème

Hébergeur d'images gratuit : Cloudflare R2 + PicGo pour une solution stable

Easton editorial illustration: global cache relay

En 2023, j’hébergeais les images du blog sur GitHub avec le CDN jsDelivr — ça allait plutôt bien. Puis jsDelivr a été bloqué en Chine : toutes les images du blog sont devenues des icônes cassées. J’ai ensuite testé plusieurs hébergeurs gratuits : suppression d’images sans raison, ou fermeture du service. Qiniu et Alibaba Cloud OSS sont stables, mais en Chine il faut l’enregistrement ICP et il y a un risque de frais au-delà du quota.

Cloudflare R2 offre 10 Go gratuits, 1 million d’uploads et 10 millions de lectures par mois — et surtout le trafic sortant est entièrement gratuit. Six mois d’utilisation, pas un centime, et la vitesse d’accès reste correcte. Avec PicGo en upload en un clic, l’expérience est fluide. Cet article détaille la mise en place : pourquoi R2, comment configurer l’accès public, et comment connecter PicGo. Comptez 30 minutes.

10 Go
Stockage gratuit
Suffisant pour un blog perso
1 M
Uploads/mois
Opérations classe A
10 M
Lectures/mois
Opérations classe B
Source: Quota gratuit R2

Pourquoi choisir R2 comme hébergeur d’images ?

Avant de m’engager sur R2, j’ai comparé pas mal de solutions. Voici l’état des hébergeurs gratuits — vous comprendrez pourquoi R2 a gagné.

Problèmes des autres solutions gratuites

GitHub + jsDelivr : autrefois la solution idéale, aujourd’hui inutilisable. jsDelivr est bloqué en Chine (pollution DNS) : les images ne se chargent plus. Utiliser GitHub pour stocker des images reste un détournement : chaque upload crée un commit, pollue l’historique, et si le compte est suspendu, toutes les images disparaissent.

Hébergeurs publics gratuits (SM.MS, etc.) : instabilité. Certaines plateformes suppriment des images sans prévenir, d’autres ferment. Beaucoup de blogueurs ont vu leurs articles devenir des pages d’icônes cassées. Gratuit, oui — mais oserez-vous y confier toutes les images du blog ?

Cloud chinois (Qiniu, Alibaba OSS, Tencent COS) : stables ; Qiniu offre aussi 10 Go gratuits. Mais en Chine, l’enregistrement ICP du domaine est obligatoire. Pour un blog perso, la procédure est lourde et le dépassement de quota peut coûter quelques euros par mois — pas rassurant.

Les atouts clés de R2

Après six mois d’utilisation, Cloudflare R2 me paraît la meilleure option pour un hébergeur personnel :

1. Quota gratuit très confortable

Le quota R2 comprend :

  • Stockage : 10 Go
  • Uploads mensuels : 1 million (classe A)
  • Lectures mensuelles : 10 millions (classe B)

Pour un blog perso, c’est largement suffisant. Mon blog : 100+ articles, ~500 images, moins de 2 Go. À ce rythme, 10 Go tiennent des années. Au-delà, c’est peu cher : stockage 0,015 $/Go/mois (~0,1 yuan RMB par Go et par mois).

2. Trafic sortant entièrement gratuit

C’est le plus gros avantage face à AWS S3. Les stockages classiques (S3, OSS) facturent le trafic sortant au Go. Sur un blog à fort trafic, cela peut dépasser le coût de stockage.

Avec R2, le trafic sortant est gratuit : peu importe le nombre de vues ou de téléchargements. Cloudflare s’appuie sur son CDN mondial (100+ pays, 275 villes) ; le trafic reste sur son réseau interne.

3. Fiabilité d’un grand acteur

Cloudflare est l’un des plus grands CDN au monde. Pas de risque de fermeture soudaine ou de suppression massive. Réputation de services très généreux pour les particuliers.

4. API compatible S3, migration possible

R2 est compatible avec l’API AWS S3. Pour migrer plus tard vers MinIO, OSS, etc., il suffit d’ajuster la configuration — pas de réécriture d’outils.

5. Pas d’ICP, prêt en 30 minutes

Service international : lier votre domaine ne demande pas d’ICP. Compte Cloudflare, activation R2, configuration — ~30 minutes.

Un petit rappel

Seul point d’attention : l’activation demande une carte bancaire ou PayPal — vérification d’identité uniquement, pas de prélèvement automatique. J’avais hésité ; six mois plus tard, zéro frais. Carte virtuelle ou PayPal domestique possibles si vous préférez.

Passons maintenant à la mise en place concrète.

Flux complet : hébergeur Cloudflare R2 + PicGo

En 30 minutes, créez un hébergeur d’images personnel gratuit — de l’inscription R2 à l’upload PicGo en un clic

Estimated time: PT30M

  1. 1

    Step 1: Étape 1 : Inscription et activation R2

    Créez un compte Cloudflare, ouvrez « R2 Object Storage » dans la barre latérale.
  2. 2

    Step 2: Note

    une carte ou PayPal est requis pour vérifier l’identité (pas de prélèvement automatique).
  3. 3

    Step 3: Étape 2 : Créer un bucket

    « Créer un bucket », nom explicite (ex. blog-images, nom global unique).
  4. 4

    Step 4: • Asie-Pacifique

    plus rapide en Chine, moins optimal à l’international
  5. 5

    Step 5: • Ouest nord-américain

    bon équilibre mondial avec le CDN (recommandé)
  6. 6

    Step 6: Classe de stockage

    « Standard ».
  7. 7

    Step 7: Étape 3 : Accès public (étape clé)

    Méthode 1 (tests) :
  8. 8

    Step 8: • « Domaine personnalisé »

    ex. img.votredomaine.com
  9. 9

    Step 9: Étape 4 : Créer un jeton API

    R2 « Vue d’ensemble » → « Gérer les jetons API R2 » → « Créer un jeton API ».
  10. 10

    Step 10: Étape 5 : Installer PicGo et le plugin S3

    Télécharger PicGo :
  11. 11

    Step 11: • Windows

    .exe
  12. 12

    Step 12: • macOS

    .dmg
  13. 13

    Step 13: • Linux

    .AppImage
  14. 14

    Step 14: Alternative

    PicList (fork PicGo, plus de fonctions).
  15. 15

    Step 15: Étape 6 : Paramètres S3 dans PicGo

    « Paramètres hébergeur » → « Amazon S3 » :
  16. 16

    Step 16: Étape 7 : Test d’upload

    1. Enregistrer, cocher « hébergeur par défaut »
  17. 17

    Step 17: Zone d’upload

    glisser une image test
  18. 18

    Step 18: • Access Denied

    clés et permissions
  19. 19

    Step 19: • Inaccessible

    accès public
  20. 20

    Step 20: • Lent

    réseau ou compression
  21. 21

    Step 21: Étape 8 : Optimisations (optionnel)

    Règles de cache :
  22. 22

    Step 22: • Niveau

    tout mettre en cache
  23. 23

    Step 23: • TTL edge

    6 mois
  24. 24

    Step 24: • TTL navigateur

    1 mois

Étapes détaillées de mise en place

Entrons dans le concret — suivez chaque étape.

Étape 1 : Inscription et activation R2

Créez un compte sur le site Cloudflare si besoin. Après connexion, ouvrez « R2 Object Storage » dans la barre latérale. Première visite : invitation à activer le service.

Point important : l’activation demande un moyen de paiement (carte ou PayPal). Beaucoup s’arrêtent ici — en réalité c’est une vérification d’identité, sans prélèvement automatique. Le quota gratuit reste gratuit ; des frais n’apparaissent qu’en cas de dépassement confirmé.

Vous pouvez utiliser :

  • Carte internationale (Visa, MasterCard)
  • PayPal (y compris compte domestique)
  • Carte virtuelle

Cliquez « Activer R2 » — quelques secondes.

Étape 2 : Créer un bucket

Cliquez « Créer un bucket » en haut à droite.

Nom du bucket : ex. blog-images, my-pics — nom globalement unique ; en cas de conflit, choisissez-en un autre.

Emplacement : astuce souvent mal comprise. Beaucoup recommandent « Asie-Pacifique » pour la proximité avec la Chine. En pratique :

  • Asie-Pacifique : un peu plus rapide en Chine, moins bon à l’international
  • Ouest nord-américain (WNAM) : avec le CDN Cloudflare, équilibre mondial correct, Chine acceptable

J’ai choisi l’ouest nord-américain pour des lecteurs internationaux. Adaptez à votre audience.

Classe : « Standard ». Puis « Créer ».

Étape 3 : Accès public (étape clé)

Par défaut, R2 est privé. Deux façons d’exposer les images :

Méthode 1 : sous-domaine r2.dev (tests)

  1. Paramètres du bucket → « Sous-domaine R2.dev »
  2. « Autoriser l’accès (Allow Access) »
  3. Saisir allow et confirmer

URL générée, par ex. :

https://pub-xxxxx.r2.dev

Attention : r2.dev a des limites de débit — tests uniquement. Fort trafic → images qui ne chargent plus. Cloudflare recommande un domaine personnalisé en production. Je l’ai appris à mes dépens avant de passer au domaine personnalisé.

Méthode 2 : domaine personnalisé (production)

Sans limite de débit r2.dev ; cache et anti-hotlink possibles.

Prérequis : domaine hébergé chez Cloudflare (serveurs DNS Cloudflare). Sinon, ajoutez le domaine dans la console et modifiez les DNS — gratuit.

  1. « Domaines personnalisés (Custom Domains) »
  2. « Ajouter (Add) »
  3. Sous-domaine, ex. img.votredomaine.com
  4. « Continuer »
  5. CNAME ajouté automatiquement
  6. « Connecter le domaine »

Après propagation DNS :

https://img.votredomaine.com/chemin/vers/image.png

C’est ma configuration : domaine personnalisé + cache — stable et rapide.

Étape 4 : Créer un jeton API

Pour que PicGo envoie des fichiers vers R2 :

  1. R2 « Vue d’ensemble »
  2. « Gérer les jetons API R2 »
  3. « Créer un jeton API »
  4. Nom, ex. PicGo-Upload
  5. Permission « lecture et écriture des objets »
  6. « Créer »

Très important — trois valeurs affichées une seule fois :

  • Access Key ID
  • Secret Access Key
  • Point de terminaison S3 (https://xxxxx.r2.cloudflarestorage.com)

Copiez-les tout de suite (gestionnaire de mots de passe, fichier chiffré). Sinon, supprimez le jeton et recréez-en un — comme moi la première fois.

Le point de terminaison est aussi dans « Vue d’ensemble » → « Utiliser R2 via l’API S3 ».

Côté R2, c’est terminé. Passons à PicGo.

Configuration de PicGo

PicGo est un outil open source d’upload d’images. Une fois configuré : glisser-déposer, lien Markdown automatique.

Étape 1 : Installer PicGo et le plugin S3

Télécharger PicGo

Site PicGo ou releases GitHub :

  • Windows : .exe
  • macOS : .dmg
  • Linux : .AppImage

Installation classique.

PicList (recommandé)

Fork PicList : gestion des images uploadées, compression, conversion WebP, filigrane. C’est ce que j’utilise.

Plugin S3

PicGo ne parle pas S3 nativement.

  1. « Paramètres des plugins »
  2. Rechercher s3
  3. Installer picgo-plugin-s3 ou s3-lls
  4. Attendre la fin de l’installation

Note : Node.js requis. Échec possible : réseau (GitHub lent), Node.js absent (nodejs.org), droits admin sous Windows. Essayez une autre connexion ou installation hors ligne.

Étape 2 : Paramètres du hébergeur S3

« Paramètres hébergeur » → « Amazon S3 » (ou « AWS S3 »).

ID de clé d’application (Access Key ID)
Valeur « Access Key ID » du jeton R2.

Clé secrète (Secret Access Key)
La clé secrète — ne pas inverser ID et secret.

Bucket (Bucket Name)
Nom du bucket, ex. blog-images — pas l’ARN ni l’URL.

Chemin d’upload (Upload Path)
Exemples :

  • {year}/{month}/{md5}.{extName} — par mois, nom MD5 anti-doublon
  • PicGo/{fullName} — dossier PicGo, nom original
  • {year}/{month}/{fullName} — par mois, nom original

J’utilise le premier.

Sans / au début du chemin — sinon échec ou chemins incorrects.

Nœud personnalisé (Endpoint)
https://xxxxx.r2.cloudflarestorage.com — avec https://.

Domaine personnalisé (Custom Domain)

  • Domaine personnalisé : https://img.votredomaine.com
  • r2.dev : URL publique du bucket (ex. https://pub-xxxxx.r2.dev)

Détermine l’URL finale des images — à saisir avec soin.

Autres paramètres

  • Région : auto ou us-east-1 — R2 l’ignore en pratique
  • Mode d’upload : path style

Étape 3 : Test d’upload

  1. « OK » pour enregistrer
  2. Cocher « hébergeur par défaut »
  3. « Zone d’upload »
  4. Glisser une image test

Succès → lien copié dans le presse-papiers. Ouvrez-le dans le navigateur.

Erreurs courantes

  1. Access Denied / 403 — clés, permissions « lecture/écriture », nom du bucket
  2. Upload OK mais image invisible — accès public, domaine avec https://, propagation DNS
  3. Lent / timeout — réseau, taille d’image (compresser avec PicList)
  4. Chemin incorrect — pas de / en tête de chemin

Ma première erreur : ID et secret inversés. En cas de blocage, revérifiez chaque champ.

Optimisation et aller plus loin

Fonctionnel, oui — voici comment gagner en stabilité, vitesse et sérénité.

Règles de cache (fortement recommandé)

Avec un domaine personnalisé :

  • Moins de lectures R2 (quota)
  • Chargement plus rapide (CDN)
  • Protection contre l’abus de trafic

Configuration :

  1. Console Cloudflare → votre domaine
  2. « Règles » → « Règles de cache » (ou règles de page)
  3. URL : img.votredomaine.com/*
  4. Niveau : tout mettre en cache ; TTL edge 1 mois à 1 an (6 mois conseillé) ; TTL navigateur 1 mois

Première visite depuis R2, puis cache CDN — quelques milliers de requêtes R2 en six mois chez moi, largement dans le quota gratuit.

Quelques milliers
Requêtes R2 réelles
Source: Après 6 mois de cache

Accélération pour la Chine (optionnel)

Le CDN Cloudflare en Chine est inégal selon les régions. Si votre audience est surtout domestique :

Tencent EdgeOne — CDN international gratuit, sans ICP, peut accélérer R2. Inscription Tencent, configuration un peu plus longue.

WebP Cloud — proxy et optimisation, conversion WebP. Limite de requêtes, payant au-delà.

Répartition domestic / international — rclone vers COS pour la Chine, R2 pour l’étranger. Rapide des deux côtés, maintenance plus lourde.

Ma méthode : domaine personnalisé + cache — 1 à 3 secondes en Chine, suffisant pour un blog perso. Exigence extrême → solutions ci-dessus.

Sécurité

Désactiver r2.dev

Avec un domaine personnalisé, fermez l’accès r2.dev pour éviter le contournement des règles anti-hotlink.

Bucket → R2.dev → « Interdire l’accès », saisir disallow.

Anti-hotlink

WAF Cloudflare : Referer ne contient pas votreblogue.com → bloquer ou challenge.

Surveillance

Console R2 : stockage, requêtes classe A/B. Pic anormal → possible abus.

Conclusion

Récapitulatif :

  1. Compte Cloudflare + R2 — 10 Go gratuits
  2. Bucket + accès public (domaine ou r2.dev)
  3. Jeton API pour PicGo
  4. PicGo configuré — upload en un clic
  5. Cache et sécurité

Fini les hébergeurs qui suppriment, ferment ou facturent surprise. Glissez l’image dans PicGo, collez le lien Markdown — flux fluide.

Configurer R2 reste l’une de mes meilleures décisions techniques ces deux dernières années. Première config un peu longue (surtout les pièges), puis six mois+ stables, 500+ images, zéro frais, zéro panne.

Si les images du blog vous posent problème, essayez R2 — 30 minutes avec ce guide. La plupart des blocages = paramètre mal saisi.

Gardez les clés API en lieu sûr pour une reconfiguration ou un nouvel ordinateur.

À vous de monter votre hébergeur gratuit — questions bienvenues en commentaires, je réponds quand je peux.

FAQ

Quel est le quota gratuit de Cloudflare R2 ?
Le quota gratuit R2 comprend :
• 10 Go d'espace de stockage
• 1 million d'uploads par mois (opérations classe A)
• 10 millions de lectures par mois (opérations classe B)
• Trafic sortant entièrement gratuit

Pour un blog personnel avec 500 images, moins de 2 Go — cela suffit pendant plusieurs années.

Au-delà du quota :
• Stockage : 0,015 $/Go/mois (environ 0,1 yuan RMB par Go et par mois)
• Opérations : classe A 4,50 $/million, classe B 0,36 $/million
Quels avantages R2 par rapport aux autres solutions d'hébergement d'images ?
Avantages clés :
1) Trafic sortant entièrement gratuit (vs S3 : quelques centimes à plusieurs dollars par Go) — c'est le plus gros atout
2) Fiabilité d'un grand acteur (Cloudflare, l'un des plus grands CDN au monde)
3) API compatible S3, migration possible (vers d'autres services S3)
4) Pas d'enregistrement ICP, prêt à l'emploi (service international, ~30 minutes)
5) Distribution CDN mondiale (100+ pays, 275 villes)

Limites des autres solutions :
• GitHub + jsDelivr : bloqué en Chine
• Hébergeurs publics gratuits : instables
• Cloud chinois : enregistrement ICP requis
Comment configurer l'accès public sur R2 ?
Méthode 1 (tests) :
• Dans les paramètres du bucket, section « Sous-domaine R2.dev »
• Cliquer « Autoriser l'accès », saisir allow pour confirmer
• Attention : r2.dev a des limites de débit ; en production, utilisez un domaine personnalisé

Méthode 2 (production recommandée) :
• Prérequis : domaine hébergé chez Cloudflare
• Dans « Domaine personnalisé », saisir un sous-domaine (ex. img.votredomaine.com)
• Cloudflare ajoute automatiquement un CNAME ; attendre la propagation DNS
Comment configurer PicGo pour se connecter à R2 ?
Étapes d'installation :
1. Installer PicGo et le plugin S3 (picgo-plugin-s3 ou s3-lls)
2. Dans « Paramètres hébergeur » → « Amazon S3 »

Paramètres clés :
• ID de clé d'application (Access Key ID)
• Clé secrète (Secret Access Key)
• Bucket (Bucket Name)
• Chemin des fichiers (ex. {year}/{month}/{md5}.{extName}, sans / au début)
• Nœud personnalisé (Endpoint, avec https://)
• Domaine personnalisé (domaine personnalisé ou URL r2.dev)
• Région (ex. auto)
• Mode d'upload (path style)

Après un test d'upload réussi, c'est prêt.
Comment optimiser les performances et les coûts d'un hébergeur R2 ?
Astuces d'optimisation :
1) Règles de cache :
• Console Cloudflare → Règles → Règles de cache
• Correspondance img.votredomaine.com/*
• TTL cache edge 6 mois, TTL navigateur 1 mois
• En pratique, les requêtes passent de dizaines de milliers à quelques milliers

2) Désactiver l'accès r2.dev (si domaine personnalisé déjà utilisé)

3) Règle WAF anti-hotlink (bloquer si Referer ne contient pas votreblogue.com)

4) Surveiller régulièrement l'utilisation pour éviter le dépassement

Accélération en Chine (optionnel) : Tencent EdgeOne ou WebP Cloud.
L'ouverture de R2 exige une carte bancaire : y a-t-il des frais automatiques ?
Non, pas de prélèvement automatique.

L'activation de R2 demande une carte bancaire ou PayPal pour vérifier l'identité — ce n'est pas un abonnement payant automatique.

Le quota gratuit Cloudflare est réellement gratuit ; des frais n'apparaissent que si vous dépassez volontairement le quota et confirmez le paiement.

Moyens acceptés :
• Carte internationale (Visa, MasterCard)
• PayPal (y compris en Chine)
• Carte virtuelle

En six mois d'utilisation réelle : aucun centime facturé.
Comment résoudre les erreurs courantes d'échec d'upload PicGo ?
Erreurs fréquentes et solutions :

1) Access Denied ou 403 :
• Vérifier les clés API (ne pas les inverser)
• Vérifier que le jeton inclut « lecture et écriture des objets »
• Vérifier le nom du bucket

2) Upload réussi mais image inaccessible :
• Vérifier l'accès public (r2.dev ou domaine personnalisé)
• Vérifier le domaine personnalisé (avec https://)
• Attendre la propagation DNS

3) Upload lent ou timeout :
• Problème réseau (R2 à l'étranger)
• Image trop lourde : compresser d'abord

4) Erreur de chemin de fichier :
• Vérifier qu'il n'y a pas de / au début du chemin

La plupart des problèmes viennent de paramètres mal saisis — revérifiez chaque champ.

10 min de lecture · Publié le: 30 nov. 2025 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog