[{"data":1,"prerenderedAt":791},["ShallowReactive",2],{"blog-fr-supabase-storage-backup":3,"blog-index-fr":443},{"id":4,"title":5,"body":6,"category":398,"cover":399,"coverAlt":400,"description":401,"draft":402,"extension":403,"faq":404,"image":420,"keywords":421,"meta":431,"navigation":432,"ogTitle":433,"path":434,"published":435,"seo":436,"stem":437,"tldr":438,"updated":435,"__hash__":442},"blog_fr\u002Fblog\u002Fsupabase-storage-backup.md","Supabase storage backup : votre copie de base n'a aucun fichier",{"type":7,"value":8,"toc":386},"minimark",[9,13,21,24,29,45,53,61,65,68,82,88,91,95,98,107,110,116,124,137,141,144,147,166,176,193,206,213,217,220,226,238,243,246,269,275,279,282,288,291,295,319,323,326,331,363,371,378],[10,11,12],"p",{},"Vous avez mis en place des sauvegardes pour votre application Lovable ou Bolt,\nou vous payez le plan Supabase qui les prend, et le mot a fait son travail :\nvous avez cessé de vous inquiéter. Puis une restauration, ou un déménagement\nvers un nouveau projet, et l'application revient avec une image cassée là où\nchaque photo de profil se trouvait. Chaque table et chaque ligne est là. Les\nimages ont disparu, avec chaque facture, chaque export et chaque pièce jointe\nqu'un utilisateur a jamais uploadés.",[10,14,15,16,20],{},"Voici la partie que le mot sauvegarde cache : ",[17,18,19],"strong",{},"un Supabase storage backup est\nune tâche à part, parce qu'une sauvegarde de base de données contient une ligne\npour chaque fichier que vos utilisateurs ont uploadé et aucun des fichiers."," La\nligne est dans votre base de données. Le fichier est dans Storage, un service\nséparé, et aucune copie de base de données, sur aucun plan, n'y entre. Cet\narticle explique comment prendre cette seconde copie, et dans quel ordre les\ndeux moitiés reviennent, ce qui est la partie qui se passe mal même quand vous\navez les deux.",[10,22,23],{},"Il est utile de penser à une bibliothèque. Le catalogue est un tiroir de fiches,\nune par livre, chacune indiquant sur quel rayon le livre se trouve. Les livres\nsont sur les rayons. Une sauvegarde de base de données copie le tiroir.",[25,26,28],"h2",{"id":27},"supabase-sauvegarde-t-il-mes-fichiers-storage","Supabase sauvegarde-t-il mes fichiers Storage ?",[10,30,31,32,39,40,44],{},"Non, sur aucun plan. La\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fbackups",[37],"nofollow","documentation des sauvegardes","\nde Supabase indique que les sauvegardes ne contiennent pas les fichiers déposés\nvia l'API Storage, seulement leurs métadonnées en base, et le\n",[33,41,43],{"href":42},"\u002Fblog\u002Fsupabase-point-in-time-recovery","point-in-time recovery"," est une\nfonction de la base de données, donc la même phrase le couvre.",[10,46,47,48,52],{},"Ce que chaque sauvegarde contient bel et bien, c'est la liste. Supabase tient\ndans votre base Postgres une table nommée ",[49,50,51],"code",{},"storage.objects",", avec une ligne par\nfichier dans chaque bucket : dans quel bucket il se trouve, son chemin, qui l'a\nuploadé, sa taille et la date de son arrivée. Cette table est copiée avec tout\nle reste, et c'est exactement pourquoi un projet restauré a l'air si complet.\nChaque fiche est dans le tiroir.",[10,54,55,56,60],{},"Les octets de chaque fichier sont ailleurs. Ils vivent dans le stockage objet,\nun service séparé à côté de votre base de données, et un outil qui copie une\nbase de données ne le lit jamais. Le\n",[33,57,59],{"href":58},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","plan gratuit ne prend aucune sauvegarde automatique",",\ndonc la question ne se pose même pas là ; à partir de Pro, la copie quotidienne\ncontient vos lignes et aucun de vos uploads.",[25,62,64],{"id":63},"où-supabase-garde-vos-fichiers","Où Supabase garde vos fichiers",[10,66,67],{},"À deux endroits, et une sauvegarde de base de données atteint l'un des deux.",[10,69,70,71,73,74,77,78,81],{},"Quand un utilisateur uploade un avatar, votre application confie le fichier à\nStorage. Storage écrit les octets dans le stockage objet sous le nom du bucket\net le chemin, et dans la même opération écrit une ligne dans ",[49,72,51],{},"\nqui le décrit. Votre application garde ensuite ce chemin dans l'une de ses\npropres tables, disons une ligne ",[49,75,76],{},"profiles"," avec une colonne ",[49,79,80],{},"avatar_url",", et en\nconstruit un lien chaque fois que l'image est nécessaire.",[10,83,84,85,87],{},"Une image uploadée est donc trois choses : les octets dans le stockage objet, la\nligne dans ",[49,86,51],{}," que Storage entretient, et le chemin dans votre\npropre table. Une sauvegarde de base de données emporte les deux dernières.\nRestaurez-la et votre application a chaque chemin, Storage a chaque ligne, et\nle lien qu'ils construisent ensemble pointe vers un endroit où il n'y a rien.",[10,89,90],{},"C'est aussi pourquoi la panne est si silencieuse. Chaque ligne concorde avec\nchaque autre ligne, chaque décompte tombe juste, et chaque vérification qui lit\nla base de données passe, y compris l'étape de vérification de la plupart des\noutils de sauvegarde, parce que les fichiers n'ont jamais été dans ce qui était\nvérifié.",[25,92,94],{"id":93},"à-quoi-ressemble-une-restauration-avec-seulement-la-moitié","À quoi ressemble une restauration avec seulement la moitié",[10,96,97],{},"Un projet qui passe chaque vérification et affiche une image cassée partout où\nun fichier devrait apparaître.",[10,99,100,101,106],{},"La restauration annonce un succès parce qu'elle a fait ce qu'on lui demandait :\nles tables sont revenues et les décomptes de lignes concordent. Ouvrez le\ntableau de bord, et Storage liste chaque bucket et chaque fichier qu'il\ncontient, avec tailles et dates, parce que cette liste est lue depuis la table\nque la restauration a remise en place. Le propre\n",[33,102,105],{"href":103,"rel":104},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fmigrating-within-supabase\u002Fdashboard-restore",[37],"guide de Supabase pour restaurer une sauvegarde du tableau de bord dans un nouveau projet","\ndécrit exactement cet état : les buckets et les métadonnées des fichiers\napparaissent, et les objets derrière eux non.",[10,108,109],{},"La façon dont vous l'apprenez est ordinaire. La page de l'équipe affiche une\nrangée d'icônes d'image cassée là où étaient les avatars. Un client répond au\ncourriel de facture du mois dernier pour dire que le lien ouvre sur une erreur.\nQuelqu'un clique sur un fichier dans le navigateur Storage et le téléchargement\néchoue. La fiche dit rayon quatre, troisième en partant de la gauche, et le\nrayon quatre est vide.",[111,112],"diagram",{"alt":113,"caption":114,"src":115},"Une copie sauvegardée alimente un contour de projet en pointillés. À l'intérieur, une table de trois lignes allumées est cochée, et chaque ligne est reliée par un trait fin à un cadre d'image dessiné en pointillés et vide. Les cadres sont barrés.","La restauration a remis chaque ligne qui décrit un fichier. Les fichiers que ces lignes décrivent n'ont jamais été dans la copie.","\u002Fblog\u002Fsupabase-storage-backup\u002Fthe-list-came-back-1600x620.png",[10,117,118,119,123],{},"Rien ne vous prévient avant ce moment, parce que chaque alerte dont vous\ndisposez est branchée sur la base de données.\n",[33,120,122],{"href":121},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Comment restaurer une sauvegarde Supabase","\npasse en revue les cinq façons dont une restauration revient cassée, et les\nfichiers sont la ligne de ce tableau sans solution, à moins que vous n'en ayez\nfait une copie.",[10,125,126,127,131,132,136],{},"Pendant que la page Storage est ouverte, il vaut la peine de savoir ce qu'elle\nmontre à un inconnu. Notre scan gratuit lit votre application en ligne depuis\nl'extérieur et demande à chaque bucket sa liste de fichiers, avec rien d'autre\nque la clé déjà présente dans le code de votre application. En août 2026, il a\nobtenu une liste de 792 des 27 269 applications qu'il pouvait vérifier, un\nchiffre tiré de\n",[33,128,130],{"href":129},"\u002Fresearch\u002Fvibe-coded-app-security-2026","notre propre étude",". Il lit des noms\net ne télécharge jamais un fichier, prend environ 20 secondes et ne demande\naucun compte : ",[33,133,135],{"href":134},"\u002Fsecurity-scanner","scannez votre application",".",[25,138,140],{"id":139},"comment-sauvegarder-un-bucket-supabase-storage","Comment sauvegarder un bucket Supabase Storage ?",[10,142,143],{},"Par le point d'accès compatible S3, avec une seule commande qui copie un bucket\nentier dans un dossier que vous détenez.",[10,145,146],{},"Supabase Storage parle le protocole S3, ce qui veut dire que les outils\nordinaires construits pour le stockage d'Amazon fonctionnent contre le vôtre.\nC'est la seule étape de cet article qui se passe dans une ligne de commande, et\nelle vaut la peine d'être faite une fois à la main, pour que vous sachiez de\nquoi la copie est faite.",[148,149,150,154,157],"ol",{},[151,152,153],"li",{},"Dans votre tableau de bord Supabase, ouvrez les réglages Storage et activez\nle protocole S3. La même page affiche l'URL du point d'accès et la région de\nvotre projet ; copiez les deux depuis là plutôt que depuis ici.",[151,155,156],{},"Sur cette page, créez une paire de clés d'accès S3. Le secret n'est affiché\nqu'une fois, alors mettez-le dans un gestionnaire de mots de passe avant de\nfermer la boîte de dialogue.",[151,158,159,160,165],{},"Installez la ",[33,161,164],{"href":162,"rel":163},"https:\u002F\u002Faws.amazon.com\u002Fcli\u002F",[37],"ligne de commande AWS",", donnez-lui\nles deux clés sous forme de profil, et lancez une synchronisation par bucket :",[167,168,173],"pre",{"className":169,"code":171,"language":172},[170],"language-text","aws s3 sync s3:\u002F\u002Favatars .\u002Fsupabase-files\u002Favatars \\\n  --endpoint-url https:\u002F\u002F\u003Cproject-ref>.storage.supabase.co\u002Fstorage\u002Fv1\u002Fs3 \\\n  --region \u003Cregion>\n","text",[49,174,171],{"__ignoreMap":175},"",[10,177,178,179,182,183,188,189,192],{},"Relancez-la demain et elle ne copie que ce qui a changé. ",[49,180,181],{},"rclone"," fait le même\ntravail si vous le préférez ; sur un gros bucket, la\n",[33,184,187],{"href":185,"rel":186},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frclone-error-s3-protocol-error-received-listing-v1-with-istruncated-set-no-nextmarker-and-no-contents-e64d34",[37],"note de dépannage","\nde Supabase dit de passer ",[49,190,191],{},"--s3-list-version 2",", sinon le listage peut\ns'arrêter trop tôt.",[10,194,195,196,201,202,136],{},"Deux choses sur cette clé. La\n",[33,197,200],{"href":198,"rel":199},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fstorage\u002Fs3\u002Fauthentication",[37],"page d'authentification S3","\nde Supabase indique qu'une clé d'accès S3 a un accès complet à chaque bucket et\ncontourne Row Level Security, donc elle a sa place sur un serveur ou sur votre\npropre machine et jamais dans votre application. Et elle peut écrire autant que\nlire, parce que Supabase n'émet aucune clé en lecture seule pour Storage ;\nquiconque la détient peut supprimer des fichiers aussi facilement que les\ncopier. Traitez-la comme vous traiteriez\n",[33,203,205],{"href":204},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","votre clé service_role",[10,207,208,209,212],{},"Puis rangez le dossier quelque part hors de votre compte Supabase, pour\n",[33,210,211],{"href":58},"la même raison qu'une copie de base de données devrait vivre en dehors"," :\nun projet suspendu ou un identifiant perdu emporte avec lui chaque copie\nrangée dans ce compte.",[25,214,216],{"id":215},"les-fichiers-dabord-ou-les-lignes-dabord","Les fichiers d'abord, ou les lignes d'abord ?",[10,218,219],{},"La base de données d'abord, puis les fichiers, et les fichiers reviennent par\nStorage pour que Storage écrive les lignes.",[10,221,222,223,225],{},"Chaque upload qui passe par Storage, depuis votre application, depuis le point\nd'accès S3 ou depuis la CLI Supabase, fait deux choses en une seule opération :\nil enregistre les octets et il écrit la ligne de ",[49,224,51],{}," qui les\ndécrit. Le livre est rangé sur le rayon et la fiche est écrite par la même\nmain. Remettez les fichiers de cette façon et les lignes arrivent avec eux, et\nles deux ne peuvent pas diverger.",[10,227,228,229,231,232,237],{},"L'autre sens n'a pas de mécanisme de ce genre. Recopier des lignes de\n",[49,230,51],{}," avec un outil de base de données écrit des fiches et ne range\nrien. Cela complique aussi l'étape suivante : par défaut, Storage refuse un\nupload vers un chemin qui a déjà une ligne, avec une erreur disant que la\nressource existe déjà, et le\n",[33,233,236],{"href":234,"rel":235},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fstorage\u002Fuploads",[37],"guide des uploads"," de\nSupabase dit qu'on la contourne en activant l'écrasement. Donc quand la\nrestauration de la base a déjà ramené les lignes, ce que le propre guide de\nmigration de Supabase vous fait faire, la copie des fichiers qui suit doit être\nautorisée à écraser.",[111,239],{"alt":240,"caption":241,"src":242},"Deux couloirs. Dans celui du haut, une copie sauvegardée entre directement dans une base de données et allume trois lignes, tandis qu'un conteneur dessiné sous la flèche reste en pointillés et vide, et le couloir est barré. Dans celui du bas, trois images entrent d'abord dans le conteneur, une flèche continue du conteneur vers la base de données, et les trois mêmes lignes s'allument à mesure que les images arrivent. Le couloir du bas est coché.","Un fichier qui arrive par Storage écrit sa propre ligne. Une ligne qui arrive par la base de données n'apporte aucun fichier avec elle.","\u002Fblog\u002Fsupabase-storage-backup\u002Fthrough-storage-or-around-it-1600x620.png",[10,244,245],{},"L'ordre, donc :",[148,247,248,255,266],{},[151,249,250,251,254],{},"Restaurez la base de données, comme\n",[33,252,253],{"href":121},"cet article"," le décrit.",[151,256,257,258,261,262,265],{},"Recopiez les fichiers par Storage, avec ",[49,259,260],{},"aws s3 sync"," lancé dans l'autre\nsens (le dossier d'abord, le bucket ensuite) ou avec\n",[49,263,264],{},"supabase storage cp -r",", et l'écrasement activé. Un bucket qui n'existe\nplus doit être créé avant, avec le même nom et le même réglage public.",[151,267,268],{},"Ouvrez un fichier, puis plusieurs autres.",[10,270,271,272,274],{},"La version la plus propre de tout cela ne rejoue pas du tout ",[49,273,51],{},"\ndans l'étape base de données et laisse les uploads écrire chaque ligne à neuf,\nde sorte que rien n'a jamais à être écrasé. C'est ainsi que notre propre\nrestauration procède. Il faut pour cela filtrer la copie avant de la rejouer,\nce qui est une étape pour l'outil qui fait la restauration.",[25,276,278],{"id":277},"comment-vérifier-que-vous-avez-les-deux","Comment vérifier que vous avez les deux",[10,280,281],{},"En ouvrant des fichiers, parce que chaque liste que vous pouvez tirer est lue\ndepuis la table.",[10,283,284,285,287],{},"Le navigateur de fichiers du tableau de bord, une requête sur ",[49,286,51],{},"\net le décompte de lignes d'un rapport de sauvegarde décrivent tous le tiroir,\net après une restauration de la base seule, le tiroir est parfait. La seule\nrequête qui touche le rayon est une requête pour le fichier lui-même.",[10,289,290],{},"Donc après une restauration, et après la première copie que vous prenez, ouvrez\ndes fichiers. Prenez-en une poignée dans chaque bucket, les plus anciens\ncompris, et ouvrez-les à travers l'application, comme un utilisateur le ferait.\nUn fichier qui s'ouvre est revenu. Un fichier qui renvoie une erreur n'a jamais\nété là, quoi qu'en dise la liste.",[25,292,294],{"id":293},"ce-quil-faut-faire-cette-semaine","Ce qu'il faut faire cette semaine",[296,297,298],"key-takeaways",{},[299,300,301,304,310,313,316],"ul",{},[151,302,303],{},"Ouvrez Storage dans votre tableau de bord Supabase et notez chaque bucket, et à peu près ce qu'il contient. Tout ce qu'un utilisateur a uploadé vit là et dans aucune sauvegarde de base de données.",[151,305,306,307,309],{},"Activez le protocole S3, créez une clé d'accès, et lancez un ",[49,308,260],{}," par bucket vers un dossier hors de votre compte Supabase. Gardez le secret dans un gestionnaire de mots de passe ; il peut supprimer aussi facilement qu'il copie.",[151,311,312],{},"Relancez la synchronisation selon un rythme que vous tiendrez, que ce soit un rappel dans le calendrier ou une tâche sur un serveur.",[151,314,315],{},"Écrivez l'ordre de restauration quelque part où vous le retrouverez : la base de données d'abord, puis les fichiers par Storage avec l'écrasement activé.",[151,317,318],{},"Restaurez une fois dans un projet jetable et ouvrez dix fichiers, pour que la première fois où vous apprenez si la copie fonctionne ne soit pas pendant une panne.",[25,320,322],{"id":321},"où-reeve-care-trouve-sa-place","Où Reeve Care trouve sa place",[10,324,325],{},"Care copie les fichiers avec la base de données, dans l'ordre que cet article\ndécrit, et les remet en place de la même façon.",[111,327],{"alt":328,"caption":329,"src":330},"Un panneau Reeve Care avec deux rangées. Dans la première, une base de données et une image se trouvent dans un contour de compte en pointillés. La base de données en sort sous forme de fichier sauvegardé, verrouillé, relu à travers une loupe et coché, numéroté un, et alors seulement l'image en sort comme second fichier sauvegardé, numéroté deux. Dans la seconde rangée, une carte portant un bouton renvoie une copie dans le compte, numérotée un, et une seconde copie le long d'une flèche qui traverse un conteneur en chemin, numérotée deux.","La copie de la base de données est relue et passe avant que les fichiers soient copiés. Au retour, la base de données part en premier, et les fichiers reviennent par Storage.","\u002Fblog\u002Fsupabase-storage-backup\u002Fcare-database-then-files-1600x560.png",[299,332,333,339,345,351,357],{},[151,334,335,338],{},[17,336,337],{},"Les fichiers que vos utilisateurs ont uploadés sont copiés aussi",", dès que vous connectez les buckets Storage de votre application Supabase. C'est une seconde clé, demandée séparément, parce que la clé que Supabase émet pour Storage peut écrire autant que lire, et nous préférons demander plutôt que de la mêler à la clé de base de données, qui ne le peut pas.",[151,340,341,344],{},[17,342,343],{},"La copie des fichiers tourne après que la copie de la base a été relue et vérifiée",", jamais à côté, de sorte qu'un point de restauration ne revendique jamais des fichiers qu'il n'a pas copiés. Une copie qui a manqué de temps est marquée partielle, avec les vrais décomptes.",[151,346,347,350],{},[17,348,349],{},"Chaque point de restauration note quel chemin contenait quel fichier."," Une base remise à mardi reçoit les fichiers de mardi, et un fichier encore en place est laissé tranquille.",[151,352,353,356],{},[17,354,355],{},"La restauration remet les fichiers par Storage",", de sorte que chaque ligne est écrite par l'upload qui porte le fichier. Rien de ce qui existe aujourd'hui n'est écrasé ni supprimé, ce qui veut dire qu'appuyer sur le bouton dans la panique ne peut pas détruire ce que vous essayiez de sauver.",[151,358,359,362],{},[17,360,361],{},"La restauration est un bouton",", et elle prend un instantané de l'état actuel avant de commencer, de sorte que la restauration elle-même a une annulation.",[10,364,365,366,370],{},"Care démarre à €49 par mois pour une application. C'est un prix catalogue, et\nla ",[33,367,369],{"href":368},"\u002Fpricing","page des tarifs"," est parfois en dessous du chiffre indiqué ici et\njamais au-dessus.",[10,372,373,374,136],{},"Comment une copie est prise, vérifiée et remise en place, fichiers compris, est\ndessiné pas à pas sur la\n",[33,375,377],{"href":376},"\u002Fsupabase-backups","page des sauvegardes Supabase",[10,379,380,381,385],{},"Avant de fermer cet onglet, ouvrez Storage dans votre tableau de bord et comptez\nles buckets. Chacun est un ensemble de fichiers qu'aucune sauvegarde prise par\nSupabase ne contiendra jamais, et la commande de synchronisation ci-dessus est\ntout ce qu'il faut pour changer cela. Si un bucket s'est aussi révélé listable,\n",[33,382,384],{"href":383},"\u002Fblog\u002Fsupabase-storage-bucket-public","ce qu'un inconnu obtient de cette liste","\nest la prochaine chose à lire.",{"title":175,"searchDepth":387,"depth":387,"links":388},3,[389,391,392,393,394,395,396,397],{"id":27,"depth":390,"text":28},2,{"id":63,"depth":390,"text":64},{"id":93,"depth":390,"text":94},{"id":139,"depth":390,"text":140},{"id":215,"depth":390,"text":216},{"id":277,"depth":390,"text":278},{"id":293,"depth":390,"text":294},{"id":321,"depth":390,"text":322},"Backups","\u002Fblog\u002Fsupabase-storage-backup\u002Fcover-1200x630.png","Une base de données avec trois lignes, chacune reliée par un trait fin à une image posée dans un bac séparé à côté.","Un Supabase storage backup est une tâche à part. Les sauvegardes de la base gardent la liste de vos fichiers et aucun des fichiers, donc chaque upload casse.",false,"md",[405,408,411,414,417],{"q":406,"a":407},"Supabase sauvegarde-t-il mes buckets Storage ?","Non. Supabase le dit sur sa propre page consacrée aux sauvegardes : les sauvegardes de base de données ne contiennent pas les fichiers déposés via l'API Storage, seulement les lignes de base de données qui les décrivent. Cela vaut pour les sauvegardes quotidiennes des plans payants et pour le point-in-time recovery. Le plan gratuit ne prend aucune sauvegarde automatique, la question ne se pose donc pas là. Vos fichiers ont besoin d'une copie à eux sur chaque plan.",{"q":409,"a":410},"Le point-in-time recovery couvre-t-il Supabase Storage ?","Non. Le point-in-time recovery rembobine la base de données, et Storage est un service séparé vers lequel la base ne détient que des chemins. Un projet rembobiné à mardi pointe vers ce qui se trouve dans les buckets aujourd'hui, et un fichier supprimé mercredi reste supprimé après une récupération qui a parfaitement fonctionné.",{"q":412,"a":413},"Comment télécharger tous les fichiers d'un bucket Supabase ?","Par le point d'accès compatible S3. Activez le protocole S3 dans les réglages Storage de votre tableau de bord, créez une paire de clés d'accès, et pointez la ligne de commande AWS ou rclone vers le point d'accès et la région imprimés sur la même page. Une seule commande de synchronisation copie un bucket entier dans un dossier que vous détenez. Le tableau de bord télécharge un fichier à la fois, ce qui convient pour un logo et ne mène nulle part pour un bucket.",{"q":415,"a":416},"Qu'est-ce que storage.objects ?","Une table de votre base Postgres avec une ligne pour chaque fichier de chaque bucket : dans quel bucket il se trouve, son chemin, qui l'a uploadé, sa taille et son type, et quand il est arrivé. C'est l'index. Les octets du fichier n'y sont pas, et c'est pourquoi une sauvegarde de base de données peut lister chaque fichier que vous avez sans en contenir aucun.",{"q":418,"a":419},"Si je restaure ma base de données, mes fichiers reviennent-ils ?","Non. La restauration ramène les lignes de storage.objects, donc le tableau de bord liste chaque fichier et votre application affiche chaque lien, et chacun ouvre sur une erreur parce que le fichier derrière n'a jamais été dans la copie. Les fichiers doivent être remis séparément, par Storage, depuis une copie que vous en avez prise.","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",[422,423,424,425,426,427,428,429,430],"supabase storage backup","sauvegarder un bucket supabase storage","supabase sauvegarde-t-il le storage","supabase storage objects backup","sauvegarde fichiers supabase","restaurer supabase storage","supabase s3 storage backup","télécharger tous les fichiers d'un bucket supabase","supabase storage disaster recovery",{},true,"Supabase storage backup : votre copie n'a aucun fichier","\u002Fblog\u002Fsupabase-storage-backup","2026-09-14",{"title":5,"description":401},"blog\u002Fsupabase-storage-backup",[439,440,441],"Un Supabase storage backup est une tâche distincte de la sauvegarde de base de données. Chaque sauvegarde que Supabase prend, sur chaque plan, contient la ligne qui décrit chaque fichier uploadé et aucun des fichiers eux-mêmes.","Restaurez la base de données seule et vous obtenez une application qui fonctionne, dans laquelle chaque avatar, chaque facture et chaque upload ouvre sur une erreur, parce que le fichier visé n'a jamais été dans la copie.","Le point d'accès compatible S3 est le moyen de copier les fichiers vers l'extérieur. Le chemin du retour passe par Storage lui-même, qui écrit la ligne correspondante à l'arrivée de chaque fichier, de sorte que la liste et les fichiers ne peuvent pas diverger.","7ynrOrMOCQIpDPqmyPgFjAXXmW37_DL7uVIsMeaVTpQ",[444,451,457,463,469,475,481,487,493,499,505,511,517,523,529,535,540,546,552,558,564,570,576,582,588,594,600,606,607,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,731,736,742,748,754,759,765,770,776,781,787],{"path":445,"title":446,"description":447,"published":448,"category":449,"image":450,"draft":402},"\u002Fblog\u002Fbase44-security-scan","Scan de sécurité Base44 : ce que lui seul peut voir","Le scan de sécurité Base44 vérifie sept types de problèmes depuis l’intérieur. Voici la moitié que lui seul lit, et celle qu’il ne regarde jamais.","2026-10-10","Bases de la sécurité","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":452,"title":453,"description":454,"published":455,"category":449,"image":456,"draft":402},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Votre clé API a fuité. L'ordre dans lequel agir","Une clé API a fuité et vous ne savez pas par quoi commencer. Toutes les clés de votre frontend n'en sont pas une, et l'ordre compte plus que la vitesse.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":458,"title":459,"description":460,"published":461,"category":449,"image":462,"draft":402},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sans désactiver RLS","\"Infinite recursion detected in policy for relation\" signifie que votre policy a interrogé la table qu'elle protège. Voici comment rompre le cercle.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":464,"title":465,"description":466,"published":467,"category":449,"image":468,"draft":402},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" sur Supabase, et le mauvais correctif","\"No API key found in request\" veut dire que votre requête est arrivée sans clé. La plupart des réponses pointent vers les règles de votre base.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":470,"title":471,"description":472,"published":473,"category":449,"image":474,"draft":402},"\u002Fblog\u002Fis-base44-safe","Base44 est-il sûr ? Ce que 5 442 applications ont montré","Base44 est-il sûr ? Neuf vérifications sur 5 442 applications Base44 en ligne. Presque toutes ont eu un B, pour des raisons que personne n’a choisies.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":476,"title":477,"description":478,"published":479,"category":449,"image":480,"draft":402},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Cacher une clé API : la déplacer dans une Edge Function Supabase","Cacher une clé API veut dire la sortir du navigateur, et une Edge Function Supabase est le plus petit endroit où la mettre. Deux étapes comptent davantage.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":482,"title":483,"description":484,"published":485,"category":449,"image":486,"draft":402},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Votre fichier .env est-il exposé ? Les douze chemins à vérifier","Votre fichier .env est-il exposé sur votre propre serveur web ? Douze adresses vous le disent, et une réponse signifie que tout son contenu est public.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":488,"title":489,"description":490,"published":491,"category":449,"image":492,"draft":402},"\u002Fblog\u002Fis-v0-safe","Sécurité de v0 : les 1 790 applications scannées ont toutes eu A","La sécurité de v0 mesurée sur 1 790 applications en ligne : toutes ont eu A. Seules 17 citaient une base de données, et c’est surtout cela que ce A mesure.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":494,"title":495,"description":496,"published":497,"category":449,"image":498,"draft":402},"\u002Fblog\u002Fis-bolt-safe","Bolt est-il sûr ? Ce que 1 123 applications Bolt ont montré","Bolt est-il sûr ? Neuf vérifications sur 1 123 applications Bolt en ligne. L’hébergement était propre. Les trouvailles : des clés et des tables ouvertes.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":500,"title":501,"description":502,"published":503,"category":449,"image":504,"draft":402},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase en panne, ou est-ce votre app ? Comment le savoir","Supabase est-il en panne, ou est-ce votre app ? Un projet en pause, une base pleine et un bug chez vous se ressemblent. Quatre vérifications les séparent.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":506,"title":507,"description":508,"published":509,"category":449,"image":510,"draft":402},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Supabase chiffre-t-il mes données ? Oui. Ce que cela arrête","Supabase chiffre-t-il les données ? Oui : AES-256 au repos, TLS en transit, SOC 2 et ISO 27001. Ce que couvre chacun, et la fuite qu'aucun n'arrête.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":512,"title":513,"description":514,"published":515,"category":449,"image":516,"draft":402},"\u002Fblog\u002Fsupabase-free-plan-limits","Limites du plan gratuit Supabase : ce qui se passe à chacune","Les limites du plan gratuit Supabase : 500 Mo de base, 5 Go d'egress, aucune sauvegarde. Ce qui se passe à chaque seuil, et ce que change Pro à $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":518,"title":519,"description":520,"published":521,"category":398,"image":522,"draft":402},"\u002Fblog\u002Ftest-your-supabase-backup","Testez votre sauvegarde Supabase avant d'en avoir besoin","Comment tester votre sauvegarde Supabase : la restaurer dans un projet d'exercice, compter les lignes, se connecter, chercher la ligne qui manque.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":524,"title":525,"description":526,"published":527,"category":398,"image":528,"draft":402},"\u002Fblog\u002Fsupabase-backup-github-action","Sauvegarde Supabase gratuite avec une GitHub Action, et le piège","Une sauvegarde Supabase par GitHub Action est gratuite et convient à beaucoup d'apps. Le workflow, la bonne connection string et l'egress de chaque run.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":530,"title":531,"description":532,"published":533,"category":398,"image":534,"draft":402},"\u002Fblog\u002Fdownload-your-supabase-backup","Pourquoi vous ne pouvez pas télécharger votre sauvegarde Supabase","Impossible de télécharger votre sauvegarde Supabase sur un projet récent : la copie quotidienne est physique. Comment le vérifier et garder la vôtre.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":536,"title":537,"description":538,"published":533,"category":449,"image":539,"draft":402},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\" : le grant manquant","Dès le 30 octobre, une nouvelle table Supabase répond \"permission denied for table\" tant que l'accès n'est pas accordé. Le grant de l'e-mail est la moitié.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":541,"title":542,"description":543,"published":544,"category":449,"image":545,"draft":402},"\u002Fblog\u002Fopen-api-endpoint-exposed","Un endpoint d'API ouvert est-il un problème de sécurité ?","Votre scan a signalé un endpoint d'API ouvert. Que cela compte dépend de ce qui est revenu, et la plupart de ceux trouvés étaient à la plateforme.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":547,"title":548,"description":549,"published":550,"category":449,"image":551,"draft":402},"\u002Fblog\u002Flovable-security-scan","Scan de sécurité Lovable : ce qu’il ne peut pas prouver","Scan de sécurité Lovable : ce que vérifient le Quick scan et le Deep scan, quand chacun part, et la seule chose qu’un scan de l’intérieur ne prouve pas.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":553,"title":554,"description":555,"published":556,"category":398,"image":557,"draft":402},"\u002Fblog\u002Fsupabase-backup-auth-users","Pourquoi votre dump Supabase ne contient aucun utilisateur","Lancez supabase db dump tout seul et vous obtenez la forme de votre base et aucune de ses lignes, sans le schéma auth où vivent vos utilisateurs.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":559,"title":560,"description":561,"published":562,"category":449,"image":563,"draft":402},"\u002Fblog\u002Fdomain-and-certificate-expiry","Domaine expiré, site hors ligne : ce qui se passe ensuite","Votre domaine a expiré et votre site est hors ligne. Le compte à rebours qui démarre, pourquoi le certificat est le moindre souci, et comment vérifier les deux.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":565,"title":566,"description":567,"published":568,"category":449,"image":569,"draft":402},"\u002Fblog\u002Fis-lovable-safe","Lovable est-il sûr ? Ce que 18 554 applications Lovable ont montré","Lovable est-il sûr ? 18 554 applications, neuf vérifications. La plateforme était la plus propre des cinq. Les trouvailles étaient dans les applications.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":571,"title":572,"description":573,"published":574,"category":449,"image":575,"draft":402},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La checklist de sécurité du vibe coding, en neuf vérifications","Une checklist de sécurité du vibe coding en neuf points, chacun vérifiable de l’extérieur sur votre appli en ligne, et chacun avec un test d’une ligne.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":577,"title":578,"description":579,"published":580,"category":449,"image":581,"draft":402},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Une clé secrète Stripe dans votre frontend peut déplacer de l’argent","Une clé secrète Stripe exposée dans votre frontend peut rembourser, débiter et lire chaque fiche client que vous détenez. Votre clé pk_live_ y a sa place.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":583,"title":584,"description":585,"published":586,"category":449,"image":587,"draft":402},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variables d’environnement Vite exposées : le préfixe dit publier","Variables d’environnement Vite exposées : votre appli a fait ce que le préfixe demandait. VITE_ et NEXT_PUBLIC_ veulent dire publier, et l’IA ignorait le prix.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":589,"title":590,"description":591,"published":592,"category":449,"image":593,"draft":402},"\u002Fblog\u002Fbase44-source-maps","Sécurité Base44 : ce qu’un scan signale, et ce qui dépend de vous","Sécurité Base44 sur 5 438 applis : trois signalements sur presque chacune sont ceux de la plateforme, la source map est le badge Base44, votre part est courte.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":595,"title":596,"description":597,"published":598,"category":449,"image":599,"draft":402},"\u002Fblog\u002Fis-cursor-ai-safe","Cursor AI est-il sûr ? L’éditeur, le code et l’appli publiée","Cursor AI est-il sûr ? Trois questions dans une recherche : ce que Cursor garde, ce que son code rate, et si l’appli que vous avez publiée est ouverte.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":601,"title":602,"description":603,"published":604,"category":449,"image":605,"draft":402},"\u002Fblog\u002Fis-replit-safe","Replit est-il sûr ? Ce que 3 042 applications Replit nous ont montré","Replit est-il sûr ? 3 042 applications Replit en ligne, neuf vérifications externes. Les trouvailles étaient dans l’application publiée, pas chez l’hébergeur.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":434,"title":5,"description":401,"published":435,"category":398,"image":420,"draft":402},{"path":42,"title":608,"description":609,"published":610,"category":398,"image":611,"draft":402},"Point-in-time recovery Supabase : prix et limites","Le point-in-time recovery de Supabase rembobine votre base à la seconde près sur la dernière semaine. $100 par mois en plus de Pro, et rien que la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":613,"title":614,"description":615,"published":616,"category":398,"image":617,"draft":402},"\u002Fblog\u002Fsupabase-project-paused-recover","Projet Supabase en pause ? Vos données sont toujours là","Supabase a mis votre projet en pause après une semaine sans activité. Rien n'est supprimé, Restaurer est à côté du nom, et vous avez un an pour cliquer.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":619,"title":620,"description":621,"published":622,"category":449,"image":623,"draft":402},"\u002Fblog\u002Fsafest-ai-app-builder","Quel builder d'app IA est le plus sûr ? 30 998 apps testées","Quel builder d'app IA est le plus sûr ? Nous avons scanné 30 998 apps actives de Lovable, Base44, Replit, v0 et Bolt. Ce n'est pas le builder qui décide.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":625,"title":626,"description":627,"published":628,"category":449,"image":629,"draft":402},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activer Row Level Security sur chaque table Supabase, et le prouver","Activer Row Level Security dans Supabase sans politique ferme la table entièrement. Une politique sans le réglage ne fait rien. Voici le SQL, et le test.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":631,"title":632,"description":633,"published":634,"category":449,"image":635,"draft":402},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\" : ce que l'alerte rate","Supabase signale \"RLS disabled in public\" comme une erreur. Elle ne dit rien de la politique de lecture qui laisse votre table tout aussi ouverte.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":637,"title":638,"description":639,"published":640,"category":449,"image":641,"draft":402},"\u002Fblog\u002Frotate-supabase-service-role-key","Faire tourner une clé service_role Supabase qui a fuité","Supabase dit de colmater la fuite d'abord. D'autres guides disent de faire tourner la clé tout de suite. Tout dépend d'où votre clé service_role a fuité.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":643,"title":644,"description":645,"published":646,"category":449,"image":647,"draft":402},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Scanners de sécurité vibe coding comparés, le nôtre compris","Le meilleur scanner de sécurité vibe coding tient à trois questions qu'aucune liste de fonctions ne traite. Dix outils comparés, avec les prix.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":649,"title":650,"description":651,"published":652,"category":449,"image":653,"draft":402},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker : les cinq vérifications à faire soi-même","Un Supabase security checker lit votre app publiée plutôt que les réglages de votre projet. Voici les cinq vérifications, et comment faire chacune vous-même.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":655,"title":656,"description":657,"published":658,"category":449,"image":659,"draft":402},"\u002Fblog\u002Fvibe-coding-security-scanner","Scanner de sécurité vibe coding : ce qu’un scan d’URL rate","Un scanner de sécurité vibe coding lit votre app en ligne depuis l’extérieur. Ce qu’il couvre, les quatre choses qu’il ne voit pas, et comment lire le résultat.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":661,"title":662,"description":663,"published":664,"category":449,"image":665,"draft":402},"\u002Fblog\u002Fmissing-security-headers","En-têtes de sécurité manquants : quand cela compte","Les en-têtes de sécurité manquants sont notre constat le plus fréquent. Contre quoi ils protègent, et quand ils comptent le moins dans votre rapport.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":667,"title":668,"description":669,"published":670,"category":449,"image":671,"draft":402},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Votre clé API OpenAI est exposée dans votre frontend. Changez-la.","Une clé API OpenAI exposée dans votre frontend ne peut être liée à aucun domaine. Changez-la aujourd'hui, passez par votre serveur et plafonnez la dépense.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":673,"title":674,"description":675,"published":676,"category":449,"image":677,"draft":402},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clé API exposée dans le frontend : ce que 30 998 applis livrent","Une clé API exposée dans votre frontend est le plus souvent une clé Google Maps. Nous avons scanné 30 998 applis vibe-codées et compté ce qui fuit vraiment.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":679,"title":680,"description":681,"published":682,"category":398,"image":683,"draft":402},"\u002Fblog\u002Fsupabase-backup-tools-compared","Outils de sauvegarde Supabase comparés, le nôtre compris","Quatre familles d'outil de sauvegarde Supabase, ce que chacun copie vraiment, et quand une GitHub Action gratuite bat le fait de payer, nous compris.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":685,"title":686,"description":687,"published":688,"category":449,"image":689,"draft":402},"\u002Fblog\u002Freplit-secrets-explained","Utiliser les secrets sur Replit, et ce qui est publié quand même","Utiliser les secrets sur Replit : en ajouter un, le relire, corriger les deux causes du undefined. Et les clés que l'outil Secrets ne peut pas protéger.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":691,"title":692,"description":693,"published":694,"category":398,"image":695,"draft":402},"\u002Fblog\u002Fback-up-supabase-free-tier","Sauvegardes du plan gratuit Supabase : en faire une sans terminal","Le plan gratuit de Supabase ne fait aucune sauvegarde : la copie vient de vous. Comment la faire depuis le tableau de bord, et ce que le CSV oublie.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":697,"title":698,"description":699,"published":700,"category":449,"image":701,"draft":402},"\u002Fblog\u002Fis-supabase-secure","Supabase est-il sûr ? Oui. Votre projet est une autre question","Supabase est-il sûr ? La plateforme est auditée, chiffrée et testée en intrusion. Sa documentation dit où cela s'arrête et où vos réglages commencent.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":703,"title":704,"description":705,"published":706,"category":449,"image":707,"draft":402},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Où trouver vos clés API Supabase : anon, service_role et URL","L'URL du projet, la clé anon et la clé service_role tiennent sur une page du tableau de bord. Voici où elle est, et laquelle des quatre va dans votre app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":709,"title":710,"description":711,"published":712,"category":449,"image":713,"draft":402},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy sur Supabase : et après ?","\"New row violates row-level security policy\" signifie que Supabase a refusé une écriture. Le correctif rapide rouvre la table à tout le monde.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":715,"title":716,"description":717,"published":718,"category":449,"image":719,"draft":402},"\u002Fblog\u002Fcors-wildcard-security-risk","Un joker CORS est-il un risque de sécurité ? Rarement.","Un joker CORS est-il un risque de sécurité ? C'est souvent le réglage par défaut de votre builder, et il ne livre rien que votre serveur ne donnait déjà.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":721,"title":722,"description":723,"published":724,"category":398,"image":725,"draft":402},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Le branching Supabase n'est pas une sauvegarde de vos données.","Pourquoi le branching Supabase n'est pas une sauvegarde : une branche démarre sans vos données, et un merge ne déplace que le schéma. À quoi il sert vraiment.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":121,"title":727,"description":728,"published":729,"category":398,"image":730,"draft":402},"Restaurer une sauvegarde Supabase, et ce qui casse après","Restaurer une sauvegarde Supabase depuis le tableau de bord ou un fichier de dump, ce que la restauration remplace et pourquoi votre app peut rester cassée.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":383,"title":732,"description":733,"published":734,"category":449,"image":735,"draft":402},"Votre bucket Supabase Storage est public. Est-ce un problème ?","Un bucket Supabase Storage public signifie que celui qui a l'URL d'un fichier peut l'ouvrir. Il ne signifie pas que quelqu'un peut lister ce qu'il contient.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":737,"title":738,"description":739,"published":740,"category":449,"image":741,"draft":402},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Une clé API Google dans votre frontend, est-ce un problème ?","Une clé API Google exposée dans votre frontend est la clé que notre scanner trouve le plus souvent, et en général tout va bien. Un réglage gratuit tranche.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":743,"title":744,"description":745,"published":746,"category":398,"image":747,"draft":402},"\u002Fblog\u002Fai-agent-deleted-my-database","Un agent IA a supprimé mes données Supabase. Que puis-je récupérer ?","Un agent IA a supprimé des données de votre base. Ce que vous pouvez récupérer était déjà décidé avant, et les prochaines minutes décident du reste.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":749,"title":750,"description":751,"published":752,"category":449,"image":753,"draft":402},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Qui peut lire votre base Supabase ? Nous avons testé 3 680 apps","N'importe qui peut-il lire votre base de données Supabase sans se connecter ? Nous avons scanné 30 998 apps en ligne créées avec des builders IA.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":755,"title":756,"description":757,"published":752,"category":449,"image":758,"draft":402},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps exposées : votre app publie son code original","Une source map exposée laisse n'importe qui lire le code original de votre app, commentaires compris. Le test de 30 secondes, et ce qui compte vraiment.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":760,"title":761,"description":762,"published":763,"category":449,"image":764,"draft":402},"\u002Fblog\u002Fsupabase-new-api-keys","Les nouvelles clés API Supabase : laquelle va dans votre app ?","Supabase a remplacé anon et service_role par des clés publiables et secrètes. Laquelle a sa place dans votre app, et laquelle jamais ?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":58,"title":766,"description":767,"published":768,"category":398,"image":769,"draft":402},"Supabase sauvegarde-t-il ma base de données ? Cela dépend du plan.","Supabase sauvegarde-t-il votre base de données ? Chaque jour sur les plans payants, jamais sur le gratuit. Comment savoir ce que vous avez vraiment.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":771,"title":772,"description":773,"published":774,"category":449,"image":775,"draft":402},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security est activé. La table reste publique.","Activer Supabase Row Level Security ne protège pas une table. Ce sont vos politiques, et celle qui a réparé votre app laisse peut-être entrer tout le monde.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":777,"title":778,"description":779,"published":774,"category":398,"image":780,"draft":402},"\u002Fblog\u002Fversion-history-is-not-a-backup","L'historique des versions n'est pas une sauvegarde de vos données.","Lovable et Bolt tiennent un historique des versions de votre code. Votre base de données est un service à part, et revenir en arrière ne la ramène pas.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":782,"title":783,"description":784,"published":785,"category":398,"image":786,"draft":402},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Trois façons de sauvegarder une base Supabase, et ce qui manque","Le tableau de bord, pg_dump et un service géré. Ce que chacun enregistre, ce qu'il laisse de côté sans le dire, et lequel survit à la perte du compte.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":204,"title":788,"description":789,"published":785,"category":449,"image":790,"draft":402},"Quelles clés API sont sûres côté navigateur, et lesquelles non","Votre clé anon Supabase est faite pour être publique. Votre clé service_role non, et elle ignore toutes les règles que vous posez. Comment les distinguer.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618969136]