[{"data":1,"prerenderedAt":967},["ShallowReactive",2],{"blog-es-download-your-supabase-backup":3,"blog-index-es":621},{"id":4,"title":5,"body":6,"category":578,"cover":579,"coverAlt":580,"description":581,"draft":582,"extension":583,"faq":584,"image":599,"keywords":600,"meta":610,"navigation":611,"ogTitle":5,"path":612,"published":613,"seo":614,"stem":615,"tldr":616,"updated":613,"__hash__":620},"blog_es\u002Fblog\u002Fdownload-your-supabase-backup.md","Por qué no puedes descargar tu backup de Supabase",{"type":7,"value":8,"toc":564},"minimark",[9,13,21,24,29,46,127,135,139,147,150,163,169,173,181,202,205,236,241,245,248,256,259,263,266,272,292,306,310,319,329,336,343,367,370,374,377,394,399,402,416,424,428,431,444,451,459,463,494,498,503,544,557],[10,11,12],"p",{},"Tienes un plan de pago de Supabase, así que tienes backups. Abres Database,\nluego Backups, y ahí están: una lista de copias diarias con fecha, cada una con\nun botón de Restore. Buscas el botón que te permita descargar tu backup de\nSupabase y guardarlo en algún sitio tuyo, y no existe.",[10,14,15,16,20],{},"No hay nada roto. Esta es la parte que las guías antiguas siguen contando mal:\n",[17,18,19],"strong",{},"en un proyecto actual no hay ningún backup diario que descargar."," Supabase\npasó sus copias diarias a otro tipo de backup, uno que puede restaurar por ti y\nque no puede entregarte. El botón de descarga que describen esas guías era del\ntipo antiguo. Un archivo que tengas en tus manos ahora lo haces tú, y es un tipo\nde archivo distinto.",[10,22,23],{},"Tu móvil es la forma más fácil de ver la diferencia. La copia que hace de sí\nmismo cada noche es completa y exacta, y vuelve en un solo paso a un móvil con\nla misma cuenta. No puedes abrirla en un portátil y sacar tus fotos de ella.\nPara tener fotos que puedas guardar en cualquier sitio, las exportas, y lo que\nobtienes es una carpeta de archivos normales. El backup diario de Supabase es\nahora el primer tipo. El archivo que puedes tener es el segundo.",[25,26,28],"h2",{"id":27},"puedo-descargar-mi-backup-de-supabase","¿Puedo descargar mi backup de Supabase?",[10,30,31,32,39,40,45],{},"El diario no, si tu proyecto usa Postgres 15.8.1.079 o posterior. La\ndocumentación de backups de Supabase dice que\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fbackups",[37],"nofollow","todos los proyectos en esa versión y posteriores usan backups físicos",",\ny sus notas de solución de problemas dicen que, con los backups físicos\nactivados, Supabase\n",[33,41,44],{"href":42,"rel":43},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Fdownload-logical-backups",[37],"ya no genera el archivo de backup descargable",".\nPuedes restaurar esas copias cuando quieras. No puedes llevarte ninguna.",[47,48,49,64],"table",{},[50,51,52],"thead",{},[53,54,55,58,61],"tr",{},[56,57],"th",{},[56,59,60],{},"El backup diario de Supabase (físico)",[56,62,63],{},"Un dump que haces tú (lógico)",[65,66,67,79,95,106,117],"tbody",{},[53,68,69,73,76],{},[70,71,72],"td",{},"Qué es",[70,74,75],{},"Una instantánea de los archivos que Postgres guarda en disco",[70,77,78],{},"SQL: instrucciones para reconstruir cada tabla, y después las filas",[53,80,81,84,87],{},[70,82,83],{},"Quién lo restaura",[70,85,86],{},"Supabase, cuando pulsas Restore",[70,88,89,90,94],{},"Tú, con ",[91,92,93],"code",{},"psql",", en cualquier Postgres",[53,96,97,100,103],{},[70,98,99],{},"Adónde puede ir",[70,101,102],{},"Este proyecto, o uno nuevo en la misma región",[70,104,105],{},"Otro proyecto, otra cuenta, tu portátil, tu servidor",[53,107,108,111,114],{},[70,109,110],{},"Se puede descargar",[70,112,113],{},"No",[70,115,116],{},"Ya es un archivo",[53,118,119,122,124],{},[70,120,121],{},"Sobrevive a perder el acceso a la cuenta",[70,123,113],{},[70,125,126],{},"Sí, si lo guardas en otro sitio",[10,128,129,130,134],{},"La última fila merece una segunda lectura. Supabase dice que, cuando se borra\nun proyecto, elimina todos los datos asociados,\n",[33,131,133],{"href":35,"rel":132},[37],"incluidos los backups guardados en S3",".\nBorra el proyecto y sus copias diarias se van en el mismo paso.",[25,136,138],{"id":137},"qué-diferencia-hay-entre-un-backup-físico-y-uno-lógico","¿Qué diferencia hay entre un backup físico y uno lógico?",[10,140,141,142,146],{},"De dónde se saca la copia. Un backup físico copia los archivos que el propio\nPostgres escribe en disco, lo que Supabase describe como\n",[33,143,145],{"href":35,"rel":144},[37],"una instantánea del directorio subyacente de la base de datos",".\nUn backup lógico le pide a la base de datos que se describa a sí misma en SQL,\ntabla por tabla y fila por fila, y escribe esa descripción en un archivo de\ntexto.",[10,148,149],{},"Cada uno sirve para algo distinto. Una copia física se hace rápido y se\ndevuelve rápido, y vuelve exactamente como estaba. Solo la puede leer el mismo\ntipo de instalación de Postgres de la que salió, lo que en Supabase significa\nlas máquinas de la propia Supabase. Una copia lógica tarda más en volcarse y\nocupa más, y cualquier Postgres de la misma versión o posterior puede cargarla.\nEs otra vez la copia del móvil y la carpeta exportada, y solo la segunda es un\narchivo que puedes tener.",[10,151,152,153,158,159,162],{},"El botón de descarga que la gente recuerda era del tipo lógico. La\n",[33,154,157],{"href":155,"rel":156},"https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\u002Fblob\u002Fb34da8d7eca562be5e1341413d140dd76ee19f25\u002Fapps\u002Fdocs\u002Fcontent\u002Fguides\u002Fplatform\u002Fbackups.mdx",[37],"propia documentación de Supabase de 2025","\ndecía que el proceso diario ejecutaba ",[91,160,161],{},"pg_dumpall",", comprimía el archivo SQL y\nlo guardaba, y que los backups físicos cargan menos la base de datos y evitan\nbloquear tus tablas durante mucho tiempo. La misma página decía que las copias\nfísicas no se pueden descargar desde la sección de Backups del panel.",[164,165],"diagram",{"alt":166,"caption":167,"src":168},"Dos carriles. En el de arriba, una instantánea sellada dentro de un límite discontinuo de Supabase llega a dos proyectos que están dentro, ambos con marca de verificación, y una tercera flecha queda tachada en el límite, antes de un proyecto de Supabase, un portátil y un servidor dibujados en gris. En el de abajo, un archivo simple fuera de cualquier límite llega a esos mismos tres, iluminados y con marca.","La copia diaria puede volver a Supabase y a ningún otro sitio. Un dump que haces tú va a cualquier lugar donde funcione un Postgres.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fwhere-each-copy-can-go-1600x640.png",[25,170,172],{"id":171},"cómo-sé-cuál-tiene-mi-proyecto","¿Cómo sé cuál tiene mi proyecto?",[10,174,175,176,180],{},"Busca una opción de descarga en la página de Backups. Abre Database, luego\nBackups, en tu panel de Supabase. Si cada copia con fecha tiene una forma de\ndescargarla, tu proyecto sigue con backups lógicos. Si cada una ofrece Restore\ny nada más, está con backups físicos, y la\n",[33,177,179],{"href":155,"rel":178},[37],"documentación antigua de Supabase usaba exactamente esa prueba",".",[10,182,183,184,187,188,191,192,195,196,199,200,180],{},"La segunda comprobación es el número de versión. Aparece en Project Settings,\nluego General. Cualquier cosa a partir de ",[91,185,186],{},"15.8.1.079"," significa backups\nfísicos. Léelo de izquierda a derecha: una versión que empieza por ",[91,189,190],{},"17"," es\nposterior a cualquier ",[91,193,194],{},"15",", y ",[91,197,198],{},"15.8.1.100"," es posterior a ",[91,201,186],{},[10,203,204],{},"Hay dos casos que no necesitas comprobar:",[206,207,208,225],"ul",{},[209,210,211,219,220,224],"li",{},[17,212,213,214,218],{},"La ",[33,215,217],{"href":216},"\u002Fblog\u002Fsupabase-point-in-time-recovery","recuperación a un punto en el tiempo","\nestá activada."," Funciona con backups físicos por definición. Supabase dice\nademás que, si\n",[33,221,223],{"href":35,"rel":222},[37],"desactivas la recuperación a un punto en el tiempo",",\nsigue haciendo backups físicos, así que la descarga no vuelve.",[209,226,227,230,231,235],{},[17,228,229],{},"Estás en el plan gratuito."," La página de Backups no tiene nada que\ndescargar ni restaurar, porque el plan gratuito no te da backups diarios que\npuedas usar.\n",[33,232,234],{"href":233},"\u002Fblog\u002Fback-up-supabase-free-tier","Hacer una copia sin terminal"," es el punto\nde partida.",[164,237],{"alt":238,"caption":239,"src":240},"Dos listas de cinco copias con fecha, una al lado de la otra, una encabezada por un archivo simple y la otra por una instantánea sellada. En la lista izquierda cada fila lleva una marca de restaurar y una de descarga. En la derecha cada fila lleva la misma marca de restaurar, y donde estaba la de descarga hay un contorno discontinuo vacío.","La misma página en dos proyectos. A la izquierda, los antiguos backups lógicos, cada uno con su descarga. A la derecha, backups físicos: solo restaurar.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fwhich-one-you-have-1600x620.png",[25,242,244],{"id":243},"de-qué-me-protege-cada-uno","¿De qué me protege cada uno?",[10,246,247],{},"El backup diario te protege de que algo salga mal dentro del proyecto. Un\narchivo que tengas tú también cubre perder el proyecto en sí.",[10,249,250,251,255],{},"El primer tipo de pérdida lo causas tú. Un borrado que se llevó más filas de las\nque querías, una migración que escribió un agente de IA y que tú aprobaste, un\nscript apuntando a la tabla equivocada. La copia diaria es justo la herramienta\npara eso: eliges ayer, pulsas Restore y el proyecto vuelve a su sitio. Hasta\ndónde llega depende de tu plan, y\n",[33,252,254],{"href":253},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","en qué plan estás"," se aclara en unos\ndos minutos.",[10,257,258],{},"El segundo tipo no tiene nada que ver con un error en la base de datos. Una\ntarjeta que caducó mientras estabas fuera, un acceso que no puedes recuperar, un\nproyecto que alguien borró. Las copias están al otro lado de la misma puerta\nque el proyecto, y la puerta es lo que se ha cerrado. La copia de tu móvil se\ncomporta igual: te salva si el móvil cae al mar, y no te sirve de nada el día\nque no puedes entrar en la cuenta donde vive. Supabase guarda sus backups con la\nplataforma porque eso es lo que permite que una restauración sea un solo botón.\nUna copia que sobreviva a la cuenta tiene que guardarse en otro sitio, lo que en\nSupabase significa un dump lógico sacado de ella.",[25,260,262],{"id":261},"qué-significa-restaurar-en-cada-caso","¿Qué significa restaurar en cada caso?",[10,264,265],{},"Con la copia diaria, Supabase hace el trabajo y tú eliges dónde acaba. Con un\narchivo que tienes tú, el trabajo lo haces tú, y puede acabar en cualquier\nsitio.",[10,267,268,271],{},[17,269,270],{},"Restaurar la copia diaria en el mismo proyecto"," sustituye la base de datos\npor la copia que elijas. Supabase dice que el proyecto no está accesible\nmientras tanto y que una base de datos más grande tarda más.",[10,273,274,277,278,283,284,287,288,291],{},[17,275,276],{},"Restaurarla en un proyecto nuevo"," es una función de pago que Supabase llama\n",[33,279,282],{"href":280,"rel":281},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fclone-project",[37],"Restore to a New Project",",\ntodavía marcada como beta. Crea un proyecto aparte en la misma región, con tus\nusuarios y sus contraseñas cifradas con hash, y se factura como un segundo\nproyecto. Hay un aviso en esa misma página que es fácil pasar por alto. Copia la\nbase de datos entera, incluidas las extensiones que actúan hacia fuera como\n",[91,285,286],{},"pg_cron"," y ",[91,289,290],{},"pg_net",", y esas tareas empiezan a ejecutarse en cuanto termina la\nrestauración. Si una tarea programada de tu app envía correos o llama a una API\nde pagos, el proyecto nuevo también empieza a hacerlo desde el momento en que\nexiste.",[10,293,294,297,298,300,301,305],{},[17,295,296],{},"Restaurar un archivo que tienes tú"," significa volcarlo con ",[91,299,93],{}," en lo que\nle indiques: un proyecto nuevo de Supabase, uno en otra cuenta o un Postgres en\ntu propio ordenador.\n",[33,302,304],{"href":303},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Cómo restaurar un backup de Supabase","\nrepasa los comandos, y también lo que sigue roto cuando termina.",[25,307,309],{"id":308},"cómo-consigo-una-copia-de-mi-base-de-datos-de-supabase-en-un-archivo","¿Cómo consigo una copia de mi base de datos de Supabase en un archivo?",[10,311,312,313,318],{},"Haz tú mismo un dump lógico. Supabase lo publica en su\n",[33,314,317],{"href":315,"rel":316},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fmigrating-within-supabase\u002Fbackup-restore",[37],"guía de backup y restauración","\ncomo tres comandos, cada uno de los cuales escribe un archivo:",[320,321,326],"pre",{"className":322,"code":324,"language":325},[323],"language-text","supabase db dump --db-url \"postgresql:\u002F\u002F…\" -f roles.sql --role-only\nsupabase db dump --db-url \"postgresql:\u002F\u002F…\" -f schema.sql\nsupabase db dump --db-url \"postgresql:\u002F\u002F…\" -f data.sql --use-copy --data-only\n","text",[91,327,324],{"__ignoreMap":328},"",[10,330,331,332,335],{},"La cadena de conexión sale del botón Connect en la parte superior de tu\nproyecto, con la contraseña de tu base de datos en lugar del marcador. La CLI de\nSupabase necesita Docker instalado, porque ejecuta ",[91,333,334],{},"pg_dump"," dentro de un\ncontenedor en vez de usar el de tu ordenador.",[10,337,338,339,180],{},"Guarda los tres archivos. El segundo por sí solo es la forma de tus tablas sin\nuna sola fila dentro, y\n",[33,340,342],{"href":341},"\u002Fblog\u002Fsupabase-backup-auth-users","tus usuarios solo están en el tercero",[10,344,345,346,348,349,354,355,357,358,363,364,366],{},"También puedes ejecutar ",[91,347,334],{}," directamente. Antes, dos cosas.\n",[33,350,353],{"href":351,"rel":352},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Frestore-from-platform",[37],"Supabase dice","\nque un ",[91,356,334],{}," en bruto se lleva los esquemas internos de Supabase junto con\nlos tuyos, y que volcarlos provoca errores de permisos a la vuelta. Y\n",[33,359,362],{"href":360,"rel":361},"https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fapp-pgdump.html",[37],"Postgres documenta","\nque ",[91,365,334],{}," no hace el dump de un servidor con una versión mayor más nueva que\nla suya, así que una copia antigua en tu ordenador se niega a arrancar en vez\nde escribir un archivo defectuoso.",[10,368,369],{},"Guarda los archivos en algún sitio que no sea tu cuenta de Supabase, y no solo\nen tu portátil.",[25,371,373],{"id":372},"puedo-restaurar-un-backup-de-supabase-en-mi-propio-ordenador","¿Puedo restaurar un backup de Supabase en mi propio ordenador?",[10,375,376],{},"Uno lógico sí, en un Postgres de la misma versión mayor o posterior. La copia\ndiaria física no se puede restaurar en ningún sitio salvo en Supabase.",[10,378,379,380,384,385,389,390,393],{},"La regla de versiones viene del propio Postgres. Su documentación dice que un\ndump\n",[33,381,383],{"href":360,"rel":382},[37],"debería poder cargarse en versiones más nuevas","\ny que no hay garantía de que cargue en una anterior, ni siquiera en la misma de\nla que salió. La guía de Supabase para\n",[33,386,388],{"href":351,"rel":387},[37],"pasar un proyecto de la plataforma a Supabase autoalojado","\nmuestra cómo se ve eso. La plataforma puede usar Postgres 17 mientras que la\nimagen autoalojada usa 15 por defecto, y entonces el archivo de datos lleva una\nlínea, ",[91,391,392],{},"SET transaction_timeout = 0",", que Postgres 15 no reconoce.",[164,395],{"alt":396,"caption":397,"src":398},"Dos carriles. En el de arriba, un archivo sale de una base de datos marcada con 15 y llega a una marcada con 17, con marca de verificación. En el de abajo, un archivo sale de una base de datos marcada con 17 y se detiene ante una marcada con 15, tachado.","Un dump avanza. Cargarlo en un Postgres más antiguo que aquel del que salió es donde empiezan los errores.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fforwards-not-backwards-1600x560.png",[10,400,401],{},"Esos mismos tres archivos son también la forma de salir de Supabase del todo.\nEsa guía es el camino para tener Supabase en un servidor tuyo, y el desajuste\nde versiones es lo primero de lo que avisa.",[10,403,404,405,408,409,411,412,415],{},"En tu propio ordenador, la CLI de Supabase levanta una copia local de Supabase\nen Docker cuando escribes ",[91,406,407],{},"supabase start",". Vuelca los tres archivos en ella con\nel comando ",[91,410,93],{}," de la guía de backup y restauración de Supabase, apuntando a\n",[91,413,414],{},"postgresql:\u002F\u002Fpostgres:postgres@localhost:54322\u002Fpostgres",", y tus datos se\npueden leer en tu propio ordenador sin ninguna cuenta de por medio.",[10,417,418,419,423],{},"Hay un sitio donde Supabase todavía ofrece un backup para descargar. Un\nproyecto gratuito pausado más allá de su ventana de restauración cambia el botón\nde Restore por la descarga de la última copia hecha antes de la pausa, y\n",[33,420,422],{"href":421},"\u002Fblog\u002Fsupabase-project-paused-recover","qué hacer con ese archivo"," es otro\nartículo.",[25,425,427],{"id":426},"qué-no-está-en-ninguna-de-las-dos-copias","¿Qué no está en ninguna de las dos copias?",[10,429,430],{},"Tus archivos subidos, tus Edge Functions y la mayor parte de la configuración de\ntu proyecto.",[10,432,433,434,438,439,443],{},"Supabase dice que los backups de la base de datos\n",[33,435,437],{"href":35,"rel":436},[37],"no incluyen los objetos guardados mediante la Storage API",".\nLa base de datos guarda una fila que describe cada archivo, y el archivo en sí\nvive en otro sitio, así que ningún backup de la base de datos, en ningún plan,\ncontiene lo que han subido tus usuarios.\n",[33,440,442],{"href":441},"\u002Fblog\u002Fsupabase-storage-backup","Hacer backup de Storage"," es un trabajo aparte.",[10,445,446,447,450],{},"La lista que da Supabase para\n",[33,448,282],{"href":280,"rel":449},[37],"\nes un buen inventario del resto: Edge Functions, ajustes de autenticación y\nclaves de API, ajustes de Realtime, ajustes de extensiones y réplicas de lectura\nhay que volver a configurarlos a mano.",[10,452,453,454,458],{},"Hay un hueco que solo afecta al archivo que tienes tú. Si tu app guarda secretos\nen Supabase Vault o usa columnas cifradas, Supabase dice que\n",[33,455,457],{"href":315,"rel":456},[37],"los archivos de backup nunca contienen la clave raíz",",\nsolo los datos cifrados. Un proyecto nuevo empieza con su propia clave, así que\nesos valores llegan ilegibles hasta que se copia la clave antigua. Y la clave\nantigua solo se puede obtener mientras el proyecto antiguo sigue activo. Una vez\npausado o borrado ese proyecto, la clave ya no se puede recuperar, y tampoco\nnada de lo que se cifró con ella.",[25,460,462],{"id":461},"qué-hacer-esta-semana","Qué hacer esta semana",[464,465,466],"key-takeaways",{},[206,467,468,471,474,485,488,491],{},[209,469,470],{},"Abre Database, luego Backups, y busca una opción de descarga. Si cada copia solo ofrece Restore, tienes backups físicos y nada ahí que llevarte.",[209,472,473],{},"Haz hoy un dump lógico con los tres comandos y guarda los tres archivos juntos.",[209,475,476,477,480,481,484],{},"Busca ",[91,478,479],{},"auth.users"," en ",[91,482,483],{},"data.sql"," antes de fiarte de él. Ese es el archivo donde están tus cuentas, cuando están.",[209,486,487],{},"Guarda los archivos en un sitio que no sea tu cuenta de Supabase.",[209,489,490],{},"Si usas Supabase Vault o columnas cifradas, lee cómo se traslada la clave raíz antes de necesitarla. No está en el archivo.",[209,492,493],{},"Vuelca el dump una vez en un proyecto de prueba o en un Supabase local, para que la primera vez que lo abras no sea el día que lo necesites.",[25,495,497],{"id":496},"dónde-encaja-reeve-care","Dónde encaja Reeve Care",[10,499,500],{},[17,501,502],{},"Care hace la copia lógica por ti, la guarda fuera de Supabase, y cada copia es\nun archivo que puedes descargar.",[206,504,505,522,528,534],{},[209,506,507,510,511,514,515,517,518,521],{},[17,508,509],{},"Descarga cualquier copia como zip."," Dentro van ",[91,512,513],{},"schema.sql",", ",[91,516,483],{}," y\n",[91,519,520],{},"roles.sql",", un manifiesto que cuenta las filas de cada tabla y una nota sobre\ncómo cargarlo en cualquier Postgres. Es un dump estándar, así que cualquier\ndesarrollador puede abrirlo, y también cualquier otro proveedor de hosting.",[209,523,524,527],{},[17,525,526],{},"Guardada fuera de tu cuenta de Supabase",", cifrada, así que sigue ahí el día\nque la cuenta ya no está.",[209,529,530,533],{},[17,531,532],{},"Se relee antes de contar."," La fecha de tu panel es la de la última copia\nque se abrió y se verificó, nunca la del último intento.",[209,535,536,539,540,543],{},[17,537,538],{},"Tus usuarios van dentro."," El esquema ",[91,541,542],{},"auth"," viaja con tus tablas, y los\narchivos que han subido tus usuarios también vienen en cuanto conectas una\ncredencial de Storage.",[10,545,546,547,551,552,556],{},"Care guarda una copia de tu base de datos de Supabase. Deja los backups diarios\nde Supabase activados a su lado: son la vía más rápida para volver de una\nmigración que salió mal, y el archivo es lo que queda si pierdes la cuenta. Cómo\nse hace, se comprueba y se descarga una copia está dibujado paso a paso en la\n",[33,548,550],{"href":549},"\u002Fsupabase-backups","página de backups de Supabase",", y\n",[33,553,555],{"href":554},"\u002Fpricing","qué incluye cada plan"," está en la página de precios.",[10,558,559,560,563],{},"Antes de cerrar esta pestaña, abre Database, luego Backups, y mira al lado de tu\ncopia más reciente. Si ahí no hay nada que descargar, el próximo archivo que\ntengas será el que hagas tú, y\n",[33,561,562],{"href":341},"qué hace que un dump esté completo"," es lo que\nconviene leer antes de hacerlo.",{"title":328,"searchDepth":565,"depth":565,"links":566},3,[567,569,570,571,572,573,574,575,576,577],{"id":27,"depth":568,"text":28},2,{"id":137,"depth":568,"text":138},{"id":171,"depth":568,"text":172},{"id":243,"depth":568,"text":244},{"id":261,"depth":568,"text":262},{"id":308,"depth":568,"text":309},{"id":372,"depth":568,"text":373},{"id":426,"depth":568,"text":427},{"id":461,"depth":568,"text":462},{"id":496,"depth":568,"text":497},"Backups","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcover-1200x630.png","Cuatro instantáneas diarias de una base apiladas en un recinto de Supabase, la delantera iluminada y sellada, junto a una bandeja vacía.","No puedes descargar tu backup de Supabase en un proyecto actual: la copia diaria es una instantánea física. Cómo comprobarlo y tener tu propia copia.",false,"md",[585,587,589,592,594,596],{"q":28,"a":586},"El diario no, si tu proyecto usa Postgres 15.8.1.079 o posterior. Supabase dice que todos los proyectos en esas versiones usan backups físicos y que, una vez activados, ya no genera el archivo de backup descargable. Esas copias se pueden seguir restaurando desde el panel. Para tener un archivo que puedas guardar, haz tú mismo un dump lógico con la CLI de Supabase o con pg_dump.",{"q":138,"a":588},"Un backup físico copia los archivos que Postgres guarda en disco. Se restaura rápido y de forma exacta, y solo sobre el mismo tipo de instalación de Postgres de la que salió, lo que en Supabase significa que Supabase lo restaura por ti. Un backup lógico es SQL: las instrucciones para reconstruir cada tabla, seguidas de las filas. Tarda más en volcarse y se carga en cualquier Postgres de la misma versión o posterior, también en uno en tu propio ordenador.",{"q":590,"a":591},"¿Por qué ha desaparecido el botón de descarga?","Porque lo que descargaba ya no se produce. El botón pertenecía a los antiguos backups diarios lógicos, que eran archivos SQL que Supabase comprimía y guardaba. Cuando un proyecto pasa a backups físicos, Supabase deja de producir ese archivo y la página de Backups ofrece Restore sin ninguna descarga al lado. Desactivar la recuperación a un punto en el tiempo no lo devuelve, porque Supabase sigue haciendo backups físicos después.",{"q":309,"a":593},"Ejecuta los tres comandos que Supabase publica en su guía de backup y restauración: supabase db dump con --role-only, luego sin opciones para el esquema, y luego con --data-only y --use-copy para las filas. La CLI necesita Docker, porque ejecuta pg_dump dentro de un contenedor. Guarda los tres archivos juntos, en un sitio que no sea tu cuenta de Supabase.",{"q":373,"a":595},"Uno lógico sí, en un Postgres de la misma versión mayor o posterior. Postgres documenta que un dump se carga hacia delante y que no hay garantía de que cargue en una versión anterior, y Supabase da un ejemplo: su plataforma puede usar Postgres 17 mientras que Supabase autoalojado usa 15 por defecto. Una copia diaria física no se puede restaurar en ningún sitio salvo en Supabase.",{"q":597,"a":598},"¿El plan Pro me da un backup descargable?","No en un proyecto con Postgres 15.8.1.079 o posterior. Allí, Pro te da backups físicos diarios guardados durante siete días, que puedes restaurar en el mismo proyecto o, mientras la función siga en beta, en un proyecto nuevo de la misma región. Ninguna de las dos vías te da un archivo. Una copia descargable la haces tú o pagas a alguien para que la haga.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",[601,602,603,604,605,606,607,608,609],"download supabase backup","descargar backup supabase","backup físico supabase","backup lógico supabase","archivo de backup supabase","copia de mi base de datos supabase","backup supabase no se puede descargar","descargar copia diaria supabase","exportar backup supabase",{},true,"\u002Fblog\u002Fdownload-your-supabase-backup","2026-09-26",{"title":5,"description":581},"blog\u002Fdownload-your-supabase-backup",[617,618,619],"No puedes descargar tu backup de Supabase en un proyecto con Postgres 15.8.1.079 o posterior. Allí las copias diarias son instantáneas físicas: Supabase puede restaurarlas por ti y tú no puedes descargarlas.","El botón de descarga que describen las guías antiguas pertenecía a los backups lógicos, que eran archivos SQL. Solo lo conservan los proyectos que siguen en las versiones antiguas.","Para tener un archivo propio, haces tú mismo un dump lógico con la CLI de Supabase o con pg_dump. Es la única copia que sobrevive a perder el acceso a la cuenta.","LXFMzf_VC4M193gAD0XJbgOatpOT0VOujF9_L_Ibnes",[622,629,635,641,647,653,659,665,671,677,683,689,695,701,707,708,713,719,725,730,736,742,748,754,760,766,772,778,783,788,793,799,805,811,817,823,829,835,841,847,853,859,865,870,876,882,888,894,900,905,911,917,923,929,934,940,945,951,956,962],{"path":623,"title":624,"description":625,"published":626,"category":627,"image":628,"draft":582},"\u002Fblog\u002Fbase44-security-scan","Escaneo de seguridad de Base44: lo que solo él ve","El escaneo de seguridad de Base44 revisa siete tipos de problema desde dentro. Esta es la mitad que lee y nadie más puede leer, y la mitad que nunca mira.","2026-10-10","Fundamentos de seguridad","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":630,"title":631,"description":632,"published":633,"category":627,"image":634,"draft":582},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Tu clave API se filtró. El orden en el que hay que actuar","Una clave API se filtró y no sabes por dónde empezar. No todas las claves de tu frontend lo son, y el orden importa más que la velocidad.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":636,"title":637,"description":638,"published":639,"category":627,"image":640,"draft":582},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sin desactivar RLS","\"Infinite recursion detected in policy for relation\" significa que tu policy preguntó a la tabla que protege. Así se rompe el círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":642,"title":643,"description":644,"published":645,"category":627,"image":646,"draft":582},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" en Supabase, y el arreglo equivocado","\"No API key found in request\" significa que tu petición llegó a Supabase sin clave. Casi todas las respuestas apuntan a las reglas de tu base de datos.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":648,"title":649,"description":650,"published":651,"category":627,"image":652,"draft":582},"\u002Fblog\u002Fis-base44-safe","¿Es seguro Base44? Lo que vimos en 5.442 apps Base44","¿Es seguro Base44? Pasamos nueve comprobaciones a 5.442 apps Base44 en producción. Casi todas sacaron B por motivos que su dueño nunca eligió.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":654,"title":655,"description":656,"published":657,"category":627,"image":658,"draft":582},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Ocultar una clave API: muévela a una Edge Function de Supabase","Ocultar una clave API significa sacarla del navegador, y una Edge Function de Supabase es el sitio más pequeño donde ponerla. Dos pasos importan más.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":660,"title":661,"description":662,"published":663,"category":627,"image":664,"draft":582},"\u002Fblog\u002Fenv-file-exposed-on-your-server","¿Tu archivo .env está expuesto? Las doce rutas a revisar","¿Tu archivo .env está expuesto en tu propio servidor web? Doce direcciones te lo dicen, y un acierto significa que todo lo que contiene ya es público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":666,"title":667,"description":668,"published":669,"category":627,"image":670,"draft":582},"\u002Fblog\u002Fis-v0-safe","Seguridad de v0: las 1.790 aplicaciones escaneadas sacaron una A","Seguridad de v0, medida en 1.790 aplicaciones v0 en vivo: todas sacaron A. Solo 17 nombraban una base de datos, y eso es casi todo lo que mide la A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":672,"title":673,"description":674,"published":675,"category":627,"image":676,"draft":582},"\u002Fblog\u002Fis-bolt-safe","¿Es seguro Bolt? Lo que vimos en 1.123 aplicaciones Bolt","¿Es seguro Bolt? Pasamos 1.123 aplicaciones Bolt en vivo por nueve comprobaciones. El hosting salió limpio. Los hallazgos eran claves y tablas abiertas dentro.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":678,"title":679,"description":680,"published":681,"category":627,"image":682,"draft":582},"\u002Fblog\u002Fis-supabase-down-or-your-app","¿Supabase está caído o es tu app? Cómo distinguirlo","¿Supabase está caído o es tu app? Un proyecto pausado, una base de datos llena y un fallo tuyo parecen lo mismo. Cuatro comprobaciones los separan.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":684,"title":685,"description":686,"published":687,"category":627,"image":688,"draft":582},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","¿Supabase cifra mis datos? Sí. Esto es lo que detiene","¿Supabase cifra los datos? Sí: AES-256 en reposo, TLS en tránsito, SOC 2 e ISO 27001. Qué cubre cada uno, y la fuga que ninguno de ellos detiene.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":690,"title":691,"description":692,"published":693,"category":627,"image":694,"draft":582},"\u002Fblog\u002Fsupabase-free-plan-limits","¿Cuánto cuesta Supabase? Los límites del plan gratuito","Los límites del plan gratuito de Supabase: 500 MB de base de datos, 5 GB de egress y ningún backup. Qué pasa en cada uno y qué cambia Pro por $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":696,"title":697,"description":698,"published":699,"category":578,"image":700,"draft":582},"\u002Fblog\u002Ftest-your-supabase-backup","Prueba tu backup de Supabase antes del día que lo necesites","Cómo probar tu backup de Supabase: restaurarlo en un proyecto de prueba, contar filas, iniciar sesión y buscar la línea que le falta a un archivo cortado.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":702,"title":703,"description":704,"published":705,"category":578,"image":706,"draft":582},"\u002Fblog\u002Fsupabase-backup-github-action","Backup gratis de Supabase con una GitHub Action, y la trampa","Un backup de Supabase con GitHub Action es gratis y sirve a muchas apps. El workflow, el connection string correcto y el egress de cada ejecución.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":612,"title":5,"description":581,"published":613,"category":578,"image":599,"draft":582},{"path":709,"title":710,"description":711,"published":613,"category":627,"image":712,"draft":582},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": el grant que falta","Desde el 30 de octubre, una tabla nueva de Supabase responde \"permission denied for table\" hasta que le das acceso. El grant del email es la mitad del arreglo.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":714,"title":715,"description":716,"published":717,"category":627,"image":718,"draft":582},"\u002Fblog\u002Fopen-api-endpoint-exposed","¿Un endpoint de API abierto es un problema? Mira el JSON","Tu escaneo señaló un endpoint de API abierto. Que importe depende de lo que devolvió, y la mayoría de los que encontramos eran de la plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":720,"title":721,"description":722,"published":723,"category":627,"image":724,"draft":582},"\u002Fblog\u002Flovable-security-scan","Escaneo de seguridad de Lovable: lo que no puede probar","Escaneo de seguridad de Lovable: qué revisan el Quick scan y el Deep scan, cuándo corre cada uno, y lo único que ningún escaneo desde dentro puede probar.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":341,"title":726,"description":727,"published":728,"category":578,"image":729,"draft":582},"Por qué tu dump de Supabase no tiene usuarios dentro","Ejecuta supabase db dump por sí solo y obtienes la forma de tu base de datos y ninguna de sus filas, sin el esquema auth donde viven tus usuarios.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":731,"title":732,"description":733,"published":734,"category":627,"image":735,"draft":582},"\u002Fblog\u002Fdomain-and-certificate-expiry","Dominio caducado, web caída: qué pasa a partir de ahora","Tu dominio caducó y tu web está caída. Aquí tienes el reloj que acaba de arrancar, por qué el certificado es el menor problema, y cómo comprobar ambos.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":737,"title":738,"description":739,"published":740,"category":627,"image":741,"draft":582},"\u002Fblog\u002Fis-lovable-safe","¿Es seguro Lovable? Lo que vimos en 18.554 aplicaciones Lovable","¿Es seguro Lovable? Pasamos 18.554 aplicaciones Lovable por nueve comprobaciones. La plataforma fue la más limpia de cinco. Los hallazgos estaban dentro.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":743,"title":744,"description":745,"published":746,"category":627,"image":747,"draft":582},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La lista de seguridad del vibe coding, en nueve comprobaciones","Una lista de seguridad del vibe coding con nueve puntos, cada uno verificable en tu app desde fuera por cualquiera, y cada uno con una prueba de una línea.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":749,"title":750,"description":751,"published":752,"category":627,"image":753,"draft":582},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Una clave secreta de Stripe en tu frontend puede mover dinero","Una clave secreta de Stripe expuesta en tu frontend puede reembolsar, cobrar y leer cada ficha de cliente que tienes. Tu clave pk_live_ sí debe estar ahí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":755,"title":756,"description":757,"published":758,"category":627,"image":759,"draft":582},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variables de entorno de Vite expuestas: el prefijo dice publica esto","Variables de entorno de Vite expuestas en tu app: hicieron lo que pedía el prefijo. VITE_ y NEXT_PUBLIC_ significan publica esto, y la IA nunca supo el coste.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":761,"title":762,"description":763,"published":764,"category":627,"image":765,"draft":582},"\u002Fblog\u002Fbase44-source-maps","Seguridad en Base44: qué marca un escaneo y qué te toca arreglar a ti","Seguridad en Base44 en 5.438 apps escaneadas: tres hallazgos en casi todas son de la plataforma, el source map es la insignia de Base44 y lo tuyo es poco.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":767,"title":768,"description":769,"published":770,"category":627,"image":771,"draft":582},"\u002Fblog\u002Fis-cursor-ai-safe","¿Es seguro Cursor AI? El editor, el código y la app que publicaste","¿Es seguro Cursor AI? Tres preguntas en una búsqueda: qué guarda Cursor, en qué falla el código que escribe y si la app que publicaste está abierta.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":773,"title":774,"description":775,"published":776,"category":627,"image":777,"draft":582},"\u002Fblog\u002Fis-replit-safe","¿Es seguro Replit? Lo que vimos en 3.042 aplicaciones Replit en vivo","¿Es seguro Replit? Pasamos 3.042 aplicaciones Replit en vivo por nueve comprobaciones externas. Los hallazgos estaban en la aplicación publicada, no en el host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":441,"title":779,"description":780,"published":781,"category":578,"image":782,"draft":582},"Supabase storage backup: tu copia de la base no tiene archivos","Un Supabase storage backup es una tarea aparte. Las copias de la base guardan la lista de tus archivos y ninguno de ellos, así que cada upload queda roto.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":216,"title":784,"description":785,"published":786,"category":578,"image":787,"draft":582},"Point-in-time recovery de Supabase: precio y límites","El point-in-time recovery de Supabase rebobina tu base de datos a cualquier segundo de la última semana. Cuesta $100 al mes sobre Pro y solo cubre la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":421,"title":789,"description":790,"published":791,"category":578,"image":792,"draft":582},"¿Proyecto de Supabase pausado? Tus datos siguen ahí","Supabase pausó tu proyecto tras una semana sin actividad. No se ha borrado nada, Restaurar está junto al nombre y tienes un año antes de que eso cambie.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":794,"title":795,"description":796,"published":797,"category":627,"image":798,"draft":582},"\u002Fblog\u002Fsafest-ai-app-builder","¿Qué builder de apps con IA es más seguro? 30.998 apps escaneadas","¿Qué builder de apps con IA es más seguro? Escaneamos 30.998 apps activas de Lovable, Base44, Replit, v0 y Bolt. El builder no es lo que decide tu nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":800,"title":801,"description":802,"published":803,"category":627,"image":804,"draft":582},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activa Row Level Security en cada tabla de Supabase y compruébalo","Activar Row Level Security en Supabase sin política cierra la tabla del todo. Una política sin el interruptor no hace nada. Aquí tienes el SQL y la prueba.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":806,"title":807,"description":808,"published":809,"category":627,"image":810,"draft":582},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": lo que el aviso no ve","Supabase marca \"RLS disabled in public\" como error. No dice nada de la política de lectura que deja tu tabla igual de abierta a cualquiera.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":812,"title":813,"description":814,"published":815,"category":627,"image":816,"draft":582},"\u002Fblog\u002Frotate-supabase-service-role-key","Cómo rotar una clave service_role de Supabase filtrada","Supabase dice que primero cierres la fuga. Otras guías dicen que rotes ya. Cuál es lo correcto depende de dónde se filtró tu clave service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":818,"title":819,"description":820,"published":821,"category":627,"image":822,"draft":582},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Escáneres de seguridad vibe coding comparados, el nuestro incluido","El mejor escáner de seguridad para vibe coding depende de tres preguntas que ninguna lista de funciones responde. Diez herramientas, con precios.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":824,"title":825,"description":826,"published":827,"category":627,"image":828,"draft":582},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: haz tú mismo las cinco comprobaciones","Un Supabase security checker lee tu app publicada en lugar de la configuración de tu proyecto. Estas son las cinco comprobaciones y cómo hacer cada una.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":830,"title":831,"description":832,"published":833,"category":627,"image":834,"draft":582},"\u002Fblog\u002Fvibe-coding-security-scanner","Escáner de seguridad para vibe coding: qué se le escapa","Un escáner de seguridad para vibe coding lee tu app en vivo desde fuera. Qué cubre eso, las cuatro cosas que no puede ver y cómo leer el resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":836,"title":837,"description":838,"published":839,"category":627,"image":840,"draft":582},"\u002Fblog\u002Fmissing-security-headers","Faltan cabeceras de seguridad: cuándo importa de verdad","Que falten cabeceras de seguridad es el hallazgo que más imprime nuestro escáner. Contra qué protegen y cuándo son la línea menos urgente de tu informe.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":842,"title":843,"description":844,"published":845,"category":627,"image":846,"draft":582},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Tu clave de API de OpenAI está expuesta en tu frontend. Rótala.","Una clave de API de OpenAI expuesta en tu frontend no se puede atar a un dominio. Rótala hoy, mueve la llamada a tu servidor y limita el gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":848,"title":849,"description":850,"published":851,"category":627,"image":852,"draft":582},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clave de API expuesta en el frontend: qué llevan 30.998 apps","Una clave de API expuesta en tu frontend suele ser una clave de Google Maps. Escaneamos 30.998 apps vibe-coded y contamos qué secretos se filtran de verdad.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":854,"title":855,"description":856,"published":857,"category":578,"image":858,"draft":582},"\u002Fblog\u002Fsupabase-backup-tools-compared","Herramientas de backup de Supabase comparadas, la nuestra incluida","Cuatro tipos de herramienta de backup de Supabase, qué copia cada una y cuándo una GitHub Action gratuita le gana a pagar a cualquiera, nosotros incluidos.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":860,"title":861,"description":862,"published":863,"category":627,"image":864,"draft":582},"\u002Fblog\u002Freplit-secrets-explained","Cómo usar secrets en Replit, y qué se publica de todos modos","Cómo usar secrets en Replit: añadir uno, leerlo y arreglar las dos causas del undefined. Y las claves que la herramienta Secrets no puede mantener privadas.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":233,"title":866,"description":867,"published":868,"category":578,"image":869,"draft":582},"Backups del plan gratuito de Supabase: cómo hacer uno sin terminal","No hay backups en el plan gratuito de Supabase: la copia tienes que hacerla tú. Cómo sacarla desde el panel y qué deja fuera la vía CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":871,"title":872,"description":873,"published":874,"category":627,"image":875,"draft":582},"\u002Fblog\u002Fis-supabase-secure","¿Supabase es seguro? Sí. Tu proyecto es otra pregunta","¿Supabase es seguro? La plataforma está auditada, cifrada y sometida a pentests. Su propia documentación dice dónde termina eso y empiezan tus ajustes.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":877,"title":878,"description":879,"published":880,"category":627,"image":881,"draft":582},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Dónde están tus claves API de Supabase: anon, service_role y URL","La URL del proyecto, la clave anon y la clave service_role están en una sola página del panel. Aquí tienes dónde está, y cuál de los cuatro va en tu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":883,"title":884,"description":885,"published":886,"category":627,"image":887,"draft":582},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy en Supabase. ¿Y ahora?","\"New row violates row-level security policy\" significa que Supabase rechazó una escritura. El arreglo rápido vuelve a abrir la tabla para cualquiera.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":889,"title":890,"description":891,"published":892,"category":627,"image":893,"draft":582},"\u002Fblog\u002Fcors-wildcard-security-risk","¿Es un comodín CORS un riesgo de seguridad? Casi nunca.","¿Es un comodín CORS un riesgo de seguridad? Casi siempre es el ajuste por defecto de tu builder y no entrega nada que tu servidor no diera ya a cualquiera.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":895,"title":896,"description":897,"published":898,"category":578,"image":899,"draft":582},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Supabase branching no es un backup. Solo va hacia adelante.","Por qué el branching de Supabase no es un backup: una rama arranca sin tus datos y un merge solo mueve el esquema. Para qué sirve y qué usar en su lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":303,"title":901,"description":902,"published":903,"category":578,"image":904,"draft":582},"Cómo restaurar un backup de Supabase, y qué se rompe después","Cómo restaurar un backup de Supabase desde el panel o desde un archivo de volcado, qué reemplaza la restauración y por qué tu app puede seguir rota al terminar.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":906,"title":907,"description":908,"published":909,"category":627,"image":910,"draft":582},"\u002Fblog\u002Fsupabase-storage-bucket-public","Tu bucket de Supabase Storage es público. ¿Es un problema?","Un bucket público de Supabase Storage significa que quien tenga la URL de un archivo puede abrirlo. No significa que alguien pueda listar lo que hay dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":912,"title":913,"description":914,"published":915,"category":627,"image":916,"draft":582},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","¿Es un problema una clave de API de Google en tu frontend?","Una clave de API de Google en tu frontend es la clave que más encuentra nuestro escáner, y casi siempre no pasa nada. Un ajuste gratuito decide cuál es cuál.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":918,"title":919,"description":920,"published":921,"category":578,"image":922,"draft":582},"\u002Fblog\u002Fai-agent-deleted-my-database","Un agente de IA borró mis datos de Supabase. ¿Qué puedo recuperar?","Un agente de IA borró datos de tu base. Lo que puedes recuperar ya estaba decidido antes de que se ejecutara, y los próximos minutos deciden el resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":924,"title":925,"description":926,"published":927,"category":627,"image":928,"draft":582},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","¿Puede cualquiera leer tu base de datos Supabase? 3.680 apps","¿Puede cualquiera leer tu base de datos Supabase sin iniciar sesión? Escaneamos 30.998 apps activas hechas con builders de IA y medimos cuántas dicen que sí.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":930,"title":931,"description":932,"published":927,"category":627,"image":933,"draft":582},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expuestos: tu app está publicando su código original","Un source map expuesto deja que cualquiera lea el código original de tu app, comentarios incluidos. La comprobación de 30 segundos y lo que de verdad importa.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":935,"title":936,"description":937,"published":938,"category":627,"image":939,"draft":582},"\u002Fblog\u002Fsupabase-new-api-keys","Las nuevas claves de API de Supabase: ¿cuál va en tu app?","Supabase sustituyó anon y service_role por claves publicables y secretas. ¿Cuál pertenece a tu app y cuál no debe estar nunca?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":253,"title":941,"description":942,"published":943,"category":578,"image":944,"draft":582},"¿Supabase respalda mi base de datos? Depende de tu plan.","¿Supabase respalda tu base de datos? A diario en los planes de pago, y nada en el gratuito. Cómo saber cuál tienes y qué es lo que esa copia no cubre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":946,"title":947,"description":948,"published":949,"category":627,"image":950,"draft":582},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security está activado. Tu tabla sigue pública.","Activar Supabase Row Level Security no protege una tabla. Lo hacen tus políticas, y la que arregló tu app rota puede dejar entrar a cualquiera.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":952,"title":953,"description":954,"published":949,"category":578,"image":955,"draft":582},"\u002Fblog\u002Fversion-history-is-not-a-backup","El historial de versiones no es un backup. No recupera una tabla.","Lovable y Bolt guardan un historial de versiones de tu código. Tu base de datos es un servicio aparte, y volver atrás no te devuelve tus datos.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":957,"title":958,"description":959,"published":960,"category":578,"image":961,"draft":582},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Tres formas de respaldar una base Supabase, y qué falta en cada una","El panel, pg_dump y un servicio gestionado. Qué guarda de verdad cada uno, qué deja fuera sin avisar y cuál sobrevive a perder la cuenta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":963,"title":964,"description":965,"published":960,"category":627,"image":966,"draft":582},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves de API son seguras en el navegador y cuáles no","Tu clave anon de Supabase está pensada para ser pública. Tu clave service_role no, y se salta todas las reglas que pongas. Cómo distinguirlas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618971501]