[{"data":1,"prerenderedAt":592},["ShallowReactive",2],{"blog-es-back-up-supabase-free-tier":3,"blog-index-es":350},{"id":4,"title":5,"body":6,"category":308,"cover":309,"coverAlt":310,"description":311,"draft":312,"extension":313,"faq":314,"image":330,"keywords":331,"meta":338,"navigation":339,"ogTitle":340,"path":341,"published":342,"seo":343,"stem":344,"tldr":345,"updated":342,"__hash__":349},"blog_es\u002Fblog\u002Fback-up-supabase-free-tier.md","Backups del plan gratuito de Supabase: cómo hacer uno sin terminal",{"type":7,"value":8,"toc":296},"minimark",[9,13,21,24,29,32,41,45,48,51,54,58,61,125,131,139,142,149,153,159,175,192,197,205,209,216,219,222,226,229,234,252,264,268,288],[10,11,12],"p",{},"Tu proyecto está en el plan gratuito de Supabase y has abierto Database y luego\nBackups buscando una lista de copias con fecha para restaurar. Ahí no hay nada.\nNi fechas, ni botón de restaurar, solo un aviso para mejorar de plan. La página\nno está rota. No hay backups del plan gratuito de Supabase que listar, porque el\nplan no toma ninguno.",[10,14,15,16,20],{},"Aquí es donde se tuerce la mayoría de las respuestas a esto. Te dan un comando\n",[17,18,19],"code",{},"pg_dump",", que es la herramienta correcta y una instrucción que no puedes\nseguir: da por hecho un terminal, una instalación de Postgres y una cadena de\nconexión, y tú montaste esta app en Lovable o Bolt precisamente para no\nnecesitar ninguna de las tres cosas.",[10,22,23],{},"Puedes sacar tus datos desde el panel. Una vía lleva unos diez minutos y te da\ntus filas. La otra lleva más y te da la base de datos.",[25,26,28],"h2",{"id":27},"el-plan-gratuito-de-supabase-incluye-backups","¿El plan gratuito de Supabase incluye backups?",[10,30,31],{},"No. El plan gratuito no toma ninguno, y no hay ningún ajuste que los active. Los\nbackups diarios automáticos empiezan en el plan Pro, y la recuperación a un\npunto en el tiempo es un extra de pago por encima de eso.",[10,33,34,35,40],{},"En qué plan estás es el dato del que depende todo lo demás aquí, y\n",[36,37,39],"a",{"href":38},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","se comprueba en dos minutos",". Si estás\nen el gratuito, la única copia de tus datos es la que hayas hecho tú. El resto\nde este artículo va de cómo hacer una hoy.",[25,42,44],{"id":43},"la-copia-más-rápida-exporta-tus-tablas-a-csv","La copia más rápida: exporta tus tablas a CSV",[10,46,47],{},"Abre el Table Editor, elige una tabla y usa el control de exportación que hay\nsobre la cuadrícula. Te ofrece descargar cada fila como archivo CSV, y ese\narchivo llega a tu carpeta de descargas como cualquier otro.",[10,49,50],{},"Luego repítelo con la siguiente tabla, y con la de después. La exportación\ntrabaja de una tabla en una tabla, que es la parte que nadie suele mencionar:\ntienes que saber qué tablas tiene tu app. La lista de la izquierda del Table\nEditor es esa lista, y vale la pena leerla hasta el final antes de empezar.",[10,52,53],{},"Diez minutos de clics te dan una carpeta de archivos CSV con todas las filas que\nhan creado tus usuarios. Como manera de no perder tus datos esta tarde, son diez\nminutos bien gastados. Lo que tienes al terminar es una copia de las filas, y\nsolo de las filas.",[25,55,57],{"id":56},"qué-se-dejan-atrás-los-archivos-csv","Qué se dejan atrás los archivos CSV",[10,59,60],{},"Cinco cosas, y ninguna de ellas es una fila. Un CSV contiene el contenido de una\ntabla y nada sobre cómo estaba construida esa tabla, así que con lo que te\nquedas es una lista de lo que había en la habitación, sin ninguna de las\nestanterías.",[62,63,64,77],"table",{},[65,66,67],"thead",{},[68,69,70,74],"tr",{},[71,72,73],"th",{},"Qué se queda atrás",[71,75,76],{},"Por qué importa cuando devuelves los datos",[78,79,80,89,97,105,117],"tbody",{},[68,81,82,86],{},[83,84,85],"td",{},"Las relaciones",[83,87,88],{},"Un CSV no tiene ni idea de qué tabla hay que cargar primero, así que la importación falla o deja filas apuntando a cosas que ya no están",[68,90,91,94],{},[83,92,93],{},"Los tipos de las columnas",[83,95,96],{},"Todo llega como texto hasta que algo le diga otra cosa a la base de datos nueva, y una celda vacía y un null de verdad pasan a ser lo mismo",[68,98,99,102],{},[83,100,101],{},"Las políticas de Row Level Security",[83,103,104],{},"Las reglas que deciden quién puede leer qué no están en el archivo, y una tabla recreada sin ellas queda cerrada a todo el mundo o abierta a todo el mundo",[68,106,107,110],{},[83,108,109],{},"Tus cuentas de acceso",[83,111,112,113,116],{},"Están en un esquema ",[17,114,115],{},"auth"," aparte, que es la razón de que no aparezcan en el Table Editor junto a tus propias tablas",[68,118,119,122],{},[83,120,121],{},"Todo lo que subieron tus usuarios",[83,123,124],{},"Supabase Storage vive fuera de la base de datos, así que ningún export de ninguna tabla ha contenido jamás un archivo",[126,127],"diagram",{"alt":128,"caption":129,"src":130},"A la izquierda, tres tablas unidas por líneas, con una persona y un candado enganchados a ellas. A la derecha, el mismo contenido como tres hojas sueltas con una marca de visto y, bajo una línea divisoria, las uniones, el candado y la persona dibujados en tono apagado y tachados.","Las filas cruzan al otro lado. Las líneas entre ellas, las reglas que las cubren y las personas que entran, no.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fwhat-csv-leaves-behind-1600x780.png",[10,132,133,134,138],{},"La última fila es la que sorprende a la gente. Tu base de datos solo guardó\nsiempre la ruta a cada archivo subido, así que una carpeta de CSVs cargada en un\nproyecto nuevo te da una tabla llena de enlaces a\n",[36,135,137],{"href":136},"\u002Fblog\u002Fsupabase-storage-bucket-public","archivos que no están ahí",".",[10,140,141],{},"Esto no hace que la vía del CSV no valga nada. Si lo que te da miedo es un\nborrado desafortunado en una tabla, un CSV de esa tabla es lo que quieres, y\ndevolver unos cientos de filas por el mismo editor es un trabajo que puedes\nhacer tú. Lo que no puede es reconstruir el proyecto entero.",[10,143,144,145,138],{},"Ya que estás mirando tus tablas: nuestro escaneo gratuito lee tu sitio en vivo\ndesde fuera y te dice cuáles de ellas le responden a un desconocido. Tarda unos\n20 segundos y no necesita cuenta: ",[36,146,148],{"href":147},"\u002Fsecurity-scanner","escanea tu app",[25,150,152],{"id":151},"un-backup-de-verdad-sin-abrir-un-terminal","Un backup de verdad, sin abrir un terminal",[10,154,155,156,158],{},"Usa un cliente de base de datos de escritorio. pgAdmin, TablePlus y DBeaver se\nconectan todos a un proyecto de Supabase con una cadena de conexión, y los tres\ntienen un comando de backup o de volcado esperando en un menú. Lo que sale es un\narchivo ",[17,157,19],{}," completo, y no escribes ni un comando para conseguirlo.",[160,161,162,166,169,172],"ol",{},[163,164,165],"li",{},"En tu panel de Supabase, abre Connect y copia una cadena de conexión. Si la\ndirecta se niega a conectar, coge la del session pooler, que es la que usan\nlas propias instrucciones de restauración de Supabase.",[163,167,168],{},"Pégala en el cliente como conexión nueva, junto con la contraseña de tu base\nde datos.",[163,170,171],{},"Busca el comando de backup. En pgAdmin haces clic derecho en la base de datos\ny eliges Backup; en TablePlus y DBeaver está bajo un menú de exportación o de\nvolcado.",[163,173,174],{},"Guarda el archivo en algún sitio que no sea solo tu portátil.",[176,177,179],"callout",{"type":178},"warn",[10,180,181,185,186,188,189,191],{},[182,183,184],"strong",{},"El error con el que es más probable que te topes."," Estas herramientas no\nvuelcan nada por sí mismas. Llaman al programa estándar de Postgres ",[17,187,19],{},"\ninstalado en tu máquina, y ese se niega a funcionar contra un servidor más\nnuevo que él, quejándose de que aborta por una discrepancia de versión del\nservidor. La solución es apuntar el cliente a un ",[17,190,19],{}," más nuevo (en pgAdmin\neso es una ruta a binarios dentro de las preferencias) o instalar un Postgres\nmás reciente en local. Es media hora fastidiosa, y la haces una vez.",[126,193],{"alt":194,"caption":195,"src":196},"Una ventana de terminal y una ventana de aplicación de escritorio, cuyos dos caminos se encuentran en un punto y siguen como una sola flecha hacia un único archivo guardado.","Las dos vías le piden lo mismo a Postgres y producen el mismo archivo. Una de ellas necesita que lo escribas tú.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fone-file-two-ways-1600x560.png",[10,198,199,200,204],{},"Ese archivo se lleva la habitación y las estanterías: tablas, columnas, tipos,\níndices, funciones y tus políticas de Row Level Security. De las vías que tienes\nabiertas en el plan gratuito, es la única capaz de reconstruir el proyecto en\notro sitio, en otra cuenta, un día en el que no puedas entrar en esta. Volver a\nleerlo es un trabajo aparte, y\n",[36,201,203],{"href":202},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","cómo restaurar un backup de Supabase","\nrepasa qué reemplaza una restauración y qué deja roto por detrás.",[25,206,208],{"id":207},"dónde-va-el-archivo-y-cada-cuánto","Dónde va el archivo, y cada cuánto",[10,210,211,212,138],{},"A algún sitio que no sea el mismo portátil ni la misma cuenta de Supabase. Son\ndos fallos distintos: el portátil cubre un disco que muere, la cuenta cubre una\ntarjeta que caducó mientras estabas fuera, un proyecto suspendido, un acceso que\nya nadie recupera. Una copia dentro de la cuenta está detrás de la misma puerta\nque aquello que protegía, y eso es lo que compara vía a vía\n",[36,213,215],{"href":214},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","tres formas de respaldar una base de datos de Supabase",[10,217,218],{},"Sobre cada cuánto, pregúntate cuánto estarías dispuesto a volver a teclear.\nPerder un día de altas es molesto, y una copia cada noche lo cubre. Perder una\nhora de pedidos significa devolverle el dinero a gente, y para eso cada noche ya\nes demasiado lento.",[10,220,221],{},"Luego carga una de tus copias en un proyecto de Supabase de usar y tirar y abre\ntu app contra él. Es el único paso de aquí que te dice si el archivo sirve para\nalgo, y cuesta alrededor de media hora.",[25,223,225],{"id":224},"si-prefieres-no-hacer-esto-a-mano","Si prefieres no hacer esto a mano",[10,227,228],{},"Entonces algo tiene que tomar la copia por ti y comprobarla después. Eso es lo\nque hace Reeve Care.",[126,230],{"alt":231,"caption":232,"src":233},"Un panel de Reeve Care con dos filas. En la primera, una copia de una base de datos sale del contorno discontinuo de la cuenta de Supabase, se repite de forma programada y pasa bajo una lupa. En la segunda, ese mismo archivo viaja de vuelta a la cuenta.","Una copia sale de tu cuenta de Supabase de forma programada, se relee antes de contar como hecha, y hace el camino inverso el día que la necesitas.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcare-backup-cycle-1600x520.png",[235,236,237,240,243,246,249],"ul",{},[163,238,239],{},"Corre de forma programada, varias veces al día según el plan, se acuerde\nalguien o no.",[163,241,242],{},"La copia va cifrada y guardada fuera de tu cuenta de Supabase, así que perder\nla cuenta no se lleva los backups con ella.",[163,244,245],{},"Cada copia se relee y se cuenta contra lo que entró. La fecha que ves en tu\npanel es la de la última copia que pasó esa comprobación, nunca la del último\nintento.",[163,247,248],{},"Restaurar es un botón, y antes de empezar toma una instantánea del estado\nactual, así que hasta la restauración tiene su deshacer.",[163,250,251],{},"Tus archivos subidos se copian también, en cuanto conectes tus buckets de\nStorage.",[10,253,254,255,259,260,138],{},"Deja encendidos también los backups del propio Supabase el día que pases a un\nplan de pago. Dos copias en dos sitios es la idea entera. Lo que incluye cada\nplan está en la ",[36,256,258],{"href":257},"\u002F#pricing","tabla de precios de Care",", y la copia, la\ncomprobación y la restauración están dibujadas paso a paso en la\n",[36,261,263],{"href":262},"\u002Fsupabase-backups","página de backups de Supabase",[25,265,267],{"id":266},"qué-hacer-esta-semana","Qué hacer esta semana",[269,270,271],"key-takeaways",{},[235,272,273,276,279,282,285],{},[163,274,275],{},"Confirma en qué plan está tu proyecto. En el gratuito no se está copiando nada por ti, y todo lo demás de aquí sale de ese dato.",[163,277,278],{},"Exporta hoy tus tablas a CSV si lo único que tienes son diez minutos. Media copia gana a ninguna copia.",[163,280,281],{},"Saca esta semana un volcado completo con un cliente de escritorio y deja el archivo en algún sitio que no sea tu portátil.",[163,283,284],{},"Copia aparte tus archivos de Storage. Ningún backup de base de datos los incluye, por ninguna vía.",[163,286,287],{},"Carga una copia en un proyecto de usar y tirar, para que la primera vez que leas ese archivo no sea el día que lo necesitas.",[10,289,290,291,295],{},"Haz el export a CSV antes de cerrar esta pestaña. Es lo más pequeño y útil de la\nlista y funciona en el plan que ya tienes. La\n",[36,292,294],{"href":293},"\u002Fchecklist","lista de seguridad de 10 minutos"," cubre los backups junto con el\nresto de lo que conviene revisar en una app recién lanzada.",{"title":297,"searchDepth":298,"depth":298,"links":299},"",3,[300,302,303,304,305,306,307],{"id":27,"depth":301,"text":28},2,{"id":43,"depth":301,"text":44},{"id":56,"depth":301,"text":57},{"id":151,"depth":301,"text":152},{"id":207,"depth":301,"text":208},{"id":224,"depth":301,"text":225},{"id":266,"depth":301,"text":267},"Backups","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcover-1200x630.png","Una base de datos, una tabla sacada de ella y, al final de una flecha, una pequeña pila de archivos guardados.","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.",false,"md",[315,318,321,324,327],{"q":316,"a":317},"¿Puedo descargar un backup desde el panel de Supabase en el plan gratuito?","No. La página de backups es una función de pago, y en el plan gratuito no hay nada ahí para descargar, porque nunca se tomó nada. Lo que sí puedes descargar son tus propios datos: el Table Editor exporta cualquier tabla como archivo CSV, y un cliente de base de datos de escritorio conectado a tu proyecto te escribe un volcado completo. Ambas son cosas que haces, no cosas que ocurren solas.",{"q":319,"a":320},"¿Un export a CSV es un backup?","Es medio backup. Un archivo CSV contiene las filas de una tabla y nada sobre cómo estaba construida esa tabla, así que lo que puedes reconstruir con él es una hoja de cálculo y no una base de datos. Le faltan: las relaciones entre tablas, los tipos de las columnas, tus políticas de Row Level Security, tus cuentas de acceso y todos los archivos que subieron tus usuarios. Para devolver una tabla que alguien vació sin querer es justo lo que necesitas. Para reconstruir un proyecto no basta.",{"q":322,"a":323},"¿Cómo hago copia de las cuentas de auth de Supabase?","Tus cuentas de acceso viven en un esquema de base de datos aparte llamado auth, y por eso nunca aparecen en el Table Editor junto a tus tablas ni acaban en un CSV de ellas. Un volcado completo sí puede llevarse ese esquema. Volver a poner esas cuentas en marcha en otro proyecto lo documenta Supabase como una tarea con sus propios pasos, y no como algo que viaje de paquete con tus tablas. Léelo antes de necesitarlo, no durante.",{"q":325,"a":326},"Mi proyecto está pausado. ¿Puedo sacar mis datos igual?","Reanúdalo primero. Supabase pausa los proyectos gratuitos tras un tiempo de poca actividad, y un proyecto pausado responde a cada petición con un error hasta que lo vuelves a levantar desde el panel. Una pausa no es un borrado. Cuando el proyecto esté corriendo otra vez, las dos vías de este artículo funcionan con normalidad, y sacar una copia en ese momento es lo más sensato.",{"q":328,"a":329},"¿No será mejor pasar a Pro y ya está?","Es la forma más barata de tener una copia diaria automática, y merece la pena. No sustituye a guardar una copia tuya, porque las copias que toma Supabase viven dentro de la cuenta de Supabase. Eso te cubre el día que rompes tus propios datos y no el día que pierdes el acceso a la cuenta. Si tu app tiene clientes de verdad, la respuesta suele ser las dos cosas.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",[332,333,334,335,336,337],"backups plan gratuito supabase","backup supabase gratis","exportar base de datos supabase","backup supabase sin cli","descargar base de datos supabase","copia de seguridad supabase gratuita",{},true,"Backups del plan gratuito de Supabase, sin terminal","\u002Fblog\u002Fback-up-supabase-free-tier","2026-08-30",{"title":5,"description":311},"blog\u002Fback-up-supabase-free-tier",[346,347,348],"No existen los backups del plan gratuito de Supabase. No se copia nada a ninguna parte de forma programada, así que la única copia de tus datos es la que hayas hecho tú.","El panel exporta una tabla a CSV en unos clics. Eso saca tus filas y deja atrás la estructura: relaciones, tipos, políticas, cuentas de acceso y archivos.","Para una copia capaz de reconstruir el proyecto, un cliente de base de datos de escritorio hace un volcado completo a golpe de ratón. Sin terminal.","fMTGlqpjyN1PmtRcIaS56LiSufJyOCimOVoFlQacqeQ",[351,357,364,370,376,382,388,394,400,406,412,418,424,430,436,442,448,454,460,466,472,478,484,490,496,497,503,509,515,521,527,532,537,543,549,555,560,566,571,577,582,587],{"path":352,"title":353,"description":354,"published":355,"category":308,"image":356,"draft":312},"\u002Fblog\u002Fsupabase-backup-auth-users","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":358,"title":359,"description":360,"published":361,"category":362,"image":363,"draft":312},"\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","Fundamentos de seguridad","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":365,"title":366,"description":367,"published":368,"category":362,"image":369,"draft":312},"\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":371,"title":372,"description":373,"published":374,"category":362,"image":375,"draft":312},"\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":377,"title":378,"description":379,"published":380,"category":362,"image":381,"draft":312},"\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":383,"title":384,"description":385,"published":386,"category":362,"image":387,"draft":312},"\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":389,"title":390,"description":391,"published":392,"category":362,"image":393,"draft":312},"\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":395,"title":396,"description":397,"published":398,"category":362,"image":399,"draft":312},"\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":401,"title":402,"description":403,"published":404,"category":362,"image":405,"draft":312},"\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":407,"title":408,"description":409,"published":410,"category":308,"image":411,"draft":312},"\u002Fblog\u002Fsupabase-storage-backup","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":413,"title":414,"description":415,"published":416,"category":308,"image":417,"draft":312},"\u002Fblog\u002Fsupabase-point-in-time-recovery","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":419,"title":420,"description":421,"published":422,"category":308,"image":423,"draft":312},"\u002Fblog\u002Fsupabase-project-paused-recover","¿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":425,"title":426,"description":427,"published":428,"category":362,"image":429,"draft":312},"\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":431,"title":432,"description":433,"published":434,"category":362,"image":435,"draft":312},"\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":437,"title":438,"description":439,"published":440,"category":362,"image":441,"draft":312},"\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":443,"title":444,"description":445,"published":446,"category":362,"image":447,"draft":312},"\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":449,"title":450,"description":451,"published":452,"category":362,"image":453,"draft":312},"\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":455,"title":456,"description":457,"published":458,"category":362,"image":459,"draft":312},"\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":461,"title":462,"description":463,"published":464,"category":362,"image":465,"draft":312},"\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":467,"title":468,"description":469,"published":470,"category":362,"image":471,"draft":312},"\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":473,"title":474,"description":475,"published":476,"category":362,"image":477,"draft":312},"\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":479,"title":480,"description":481,"published":482,"category":362,"image":483,"draft":312},"\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":485,"title":486,"description":487,"published":488,"category":308,"image":489,"draft":312},"\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":491,"title":492,"description":493,"published":494,"category":362,"image":495,"draft":312},"\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":341,"title":5,"description":311,"published":342,"category":308,"image":330,"draft":312},{"path":498,"title":499,"description":500,"published":501,"category":362,"image":502,"draft":312},"\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":504,"title":505,"description":506,"published":507,"category":362,"image":508,"draft":312},"\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":510,"title":511,"description":512,"published":513,"category":362,"image":514,"draft":312},"\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":516,"title":517,"description":518,"published":519,"category":362,"image":520,"draft":312},"\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":522,"title":523,"description":524,"published":525,"category":308,"image":526,"draft":312},"\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":202,"title":528,"description":529,"published":530,"category":308,"image":531,"draft":312},"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":136,"title":533,"description":534,"published":535,"category":362,"image":536,"draft":312},"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":538,"title":539,"description":540,"published":541,"category":362,"image":542,"draft":312},"\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":544,"title":545,"description":546,"published":547,"category":308,"image":548,"draft":312},"\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":550,"title":551,"description":552,"published":553,"category":362,"image":554,"draft":312},"\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":556,"title":557,"description":558,"published":553,"category":362,"image":559,"draft":312},"\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":561,"title":562,"description":563,"published":564,"category":362,"image":565,"draft":312},"\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":38,"title":567,"description":568,"published":569,"category":308,"image":570,"draft":312},"¿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":572,"title":573,"description":574,"published":575,"category":362,"image":576,"draft":312},"\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":578,"title":579,"description":580,"published":575,"category":308,"image":581,"draft":312},"\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":214,"title":583,"description":584,"published":585,"category":308,"image":586,"draft":312},"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":588,"title":589,"description":590,"published":585,"category":362,"image":591,"draft":312},"\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",1790150954124]