[{"data":1,"prerenderedAt":965},["ShallowReactive",2],{"blog-uk-download-your-supabase-backup":3,"blog-index-uk":619},{"id":4,"title":5,"body":6,"category":576,"cover":577,"coverAlt":578,"description":579,"draft":580,"extension":581,"faq":582,"image":597,"keywords":598,"meta":608,"navigation":609,"ogTitle":5,"path":610,"published":611,"seo":612,"stem":613,"tldr":614,"updated":611,"__hash__":618},"blog_uk\u002Fblog\u002Fdownload-your-supabase-backup.md","Чому ви не можете завантажити резервну копію Supabase",{"type":7,"value":8,"toc":562},"minimark",[9,13,21,24,29,46,127,135,139,147,150,163,169,173,181,202,205,235,240,244,247,255,258,262,265,271,291,305,309,318,328,335,342,366,369,373,376,393,398,401,415,423,427,430,443,450,458,462,493,497,502,543,555],[10,11,12],"p",{},"Ви на платному тарифі Supabase, отже, резервні копії у вас є. Ви відкриваєте\nDatabase, потім Backups, і ось вони: список щоденних копій із датами, у кожної\nкнопка Restore. Ви шукаєте кнопку, яка дозволить завантажити резервну копію\nSupabase і тримати її десь у себе, а її немає.",[10,14,15,16,20],{},"Нічого не зламано. Ось що старіші інструкції досі подають неправильно: ",[17,18,19],"strong",{},"на\nсучасному проєкті немає щоденної резервної копії, яку можна завантажити.","\nSupabase перевів свої щоденні копії на інший тип резервних копій, такий, який\nвін може відновити для вас і не може вам віддати. Кнопка завантаження з тих\nінструкцій належала старому типу. Файл, який лежить у вас, тепер ви робите самі,\nі це інший тип файлу.",[10,22,23],{},"Найпростіше уявити різницю на прикладі телефона. Резервна копія, яку він щоночі\nробить сам собі, повна й точна, і за один крок повертається на телефон, що\nувійшов у той самий обліковий запис. Відкрити її на ноутбуці й витягти звідти\nфотографії ви не можете. Щоб мати фотографії, які можна зберігати будь-де, ви\nїх експортуєте, і отримуєте теку звичайних файлів. Щоденна резервна копія\nSupabase тепер першого типу. Файл, який ви можете тримати у себе, другого.",[25,26,28],"h2",{"id":27},"чи-можу-я-завантажити-свою-резервну-копію-supabase","Чи можу я завантажити свою резервну копію Supabase?",[10,30,31,32,39,40,45],{},"Щоденну ні, якщо ваш проєкт працює на Postgres 15.8.1.079 або новішому.\nДокументація Supabase про резервні копії каже, що\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fbackups",[37],"nofollow","усі проєкти на цій версії й новіших використовують фізичні резервні копії",",\nа нотатки з усунення проблем кажуть, що з увімкненими фізичними копіями Supabase\n",[33,41,44],{"href":42,"rel":43},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Fdownload-logical-backups",[37],"більше не створює файл резервної копії для завантаження",".\nВідновлювати ці копії можна будь-коли. Забрати з собою жодну не можна.",[47,48,49,64],"table",{},[50,51,52],"thead",{},[53,54,55,58,61],"tr",{},[56,57],"th",{},[56,59,60],{},"Щоденна резервна копія Supabase (фізична)",[56,62,63],{},"Дамп, який ви робите самі (логічний)",[65,66,67,79,95,106,117],"tbody",{},[53,68,69,73,76],{},[70,71,72],"td",{},"Що це",[70,74,75],{},"Знімок файлів, які Postgres тримає на диску",[70,77,78],{},"SQL: інструкції, як відбудувати кожну таблицю, а потім рядки",[53,80,81,84,87],{},[70,82,83],{},"Хто відновлює",[70,85,86],{},"Supabase, коли ви натискаєте Restore",[70,88,89,90,94],{},"Ви, через ",[91,92,93],"code",{},"psql",", у будь-який Postgres",[53,96,97,100,103],{},[70,98,99],{},"Куди може потрапити",[70,101,102],{},"У цей проєкт або в новий у тому самому регіоні",[70,104,105],{},"В інший проєкт, інший обліковий запис, на ваш ноутбук, ваш сервер",[53,107,108,111,114],{},[70,109,110],{},"Чи можна завантажити",[70,112,113],{},"Ні",[70,115,116],{},"Це вже файл",[53,118,119,122,124],{},[70,120,121],{},"Чи переживе втрату доступу до облікового запису",[70,123,113],{},[70,125,126],{},"Так, якщо ви зберігаєте його деінде",[10,128,129,130,134],{},"Останній рядок варто перечитати. Supabase пише, що під час видалення проєкту він\nвидаляє всі повʼязані дані,\n",[33,131,133],{"href":35,"rel":132},[37],"зокрема резервні копії, збережені в S3",".\nВидаліть проєкт, і його щоденні копії зникнуть тим самим кроком.",[25,136,138],{"id":137},"чим-фізична-резервна-копія-відрізняється-від-логічної","Чим фізична резервна копія відрізняється від логічної?",[10,140,141,142,146],{},"Тим, звідки береться копія. Фізична резервна копія копіює файли, які сам\nPostgres записує на диск, і Supabase описує це як\n",[33,143,145],{"href":35,"rel":144},[37],"знімок базового каталогу бази даних",".\nЛогічна резервна копія просить базу описати саму себе мовою SQL, таблиця за\nтаблицею і рядок за рядком, і записує цей опис у текстовий файл.",[10,148,149],{},"Кожна добре робить щось своє. Фізичну копію швидко зробити і швидко повернути,\nі вона повертається точно такою, якою була. Прочитати її може лише такий самий\nтип інсталяції Postgres, з якого вона походить, а в Supabase це означає власні\nмашини Supabase. Логічна копія довше програється і займає більше місця, зате її\nможе завантажити будь-який Postgres тієї самої версії або новішої. Це знову\nрезервна копія телефона й експортована тека, і лише друге є файлом, який ви\nможете тримати у себе.",[10,151,152,153,158,159,162],{},"Кнопка завантаження, яку люди памʼятають, належала логічному типу. Власна\n",[33,154,157],{"href":155,"rel":156},"https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\u002Fblob\u002Fb34da8d7eca562be5e1341413d140dd76ee19f25\u002Fapps\u002Fdocs\u002Fcontent\u002Fguides\u002Fplatform\u002Fbackups.mdx",[37],"документація Supabase 2025 року","\nказала, що щоденне завдання запускало ",[91,160,161],{},"pg_dumpall",", стискало SQL-файл і\nзберігало його, а фізичні резервні копії менше навантажують базу й не\nблокують ваші таблиці надовго. На тій самій сторінці було сказано, що фізичні\nкопії не можна завантажити з розділу Backups на панелі.",[164,165],"diagram",{"alt":166,"caption":167,"src":168},"Дві смуги. У верхній запечатаний знімок усередині пунктирної межі Supabase доходить до двох проєктів у ній, обидва з галочками, а третю стрілку перекреслено на межі, перед проєктом Supabase, ноутбуком і сервером, намальованими сірим. У нижній простий файл поза будь-якою межею доходить до тих самих трьох, підсвічених і з галочками.","Щоденна копія може повернутися в Supabase і більше нікуди. Дамп, який ви робите самі, потрапляє будь-куди, де працює Postgres.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fwhere-each-copy-can-go-1600x640.png",[25,170,172],{"id":171},"як-дізнатися-яка-саме-в-мого-проєкту","Як дізнатися, яка саме в мого проєкту?",[10,174,175,176,180],{},"Пошукайте можливість завантаження на сторінці Backups. Відкрийте Database, потім\nBackups, на панелі Supabase. Якщо кожну копію з датою можна якось завантажити,\nваш проєкт досі на логічних резервних копіях. Якщо кожна пропонує лише Restore і\nбільше нічого, він на фізичних, і\n",[33,177,179],{"href":155,"rel":178},[37],"старіша документація Supabase використовувала саме цю перевірку",".",[10,182,183,184,187,188,191,192,195,196,199,200,180],{},"Друга перевірка це номер версії. Він показаний у Project Settings, далі\nGeneral. Усе, починаючи з ",[91,185,186],{},"15.8.1.079",", означає фізичні резервні копії. Читайте\nзліва направо: версія, що починається з ",[91,189,190],{},"17",", новіша за будь-яку ",[91,193,194],{},"15",", а\n",[91,197,198],{},"15.8.1.100"," новіша за ",[91,201,186],{},[10,203,204],{},"Два випадки взагалі не потребують перевірки:",[206,207,208,224],"ul",{},[209,210,211,218,219,223],"li",{},[17,212,213,217],{},[33,214,216],{"href":215},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Відновлення на момент часу","\nувімкнене."," Воно за визначенням працює на фізичних резервних копіях.\nSupabase також пише, що, якщо ви\n",[33,220,222],{"href":35,"rel":221},[37],"вимкнете відновлення на момент часу",",\nвін і далі робитиме фізичні копії, тож завантаження не повернеться.",[209,225,226,229,230,234],{},[17,227,228],{},"Ви на безкоштовному тарифі."," На сторінці Backups немає нічого ні для\nзавантаження, ні для відновлення, бо безкоштовний тариф не дає вам щоденних\nрезервних копій, якими можна скористатися.\n",[33,231,233],{"href":232},"\u002Fblog\u002Fback-up-supabase-free-tier","Зробити копію без термінала"," це те, з\nчого варто почати.",[164,236],{"alt":237,"caption":238,"src":239},"Два списки по пʼять копій із датами поруч, один очолює простий файл, другий запечатаний знімок. У лівому списку кожен рядок має позначку відновлення й позначку завантаження. У правому кожен рядок має ту саму позначку відновлення, а там, де була позначка завантаження, порожній пунктирний контур.","Та сама сторінка у двох проєктах. Ліворуч старі логічні резервні копії, кожна із завантаженням. Праворуч фізичні: лише відновлення.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fwhich-one-you-have-1600x620.png",[25,241,243],{"id":242},"від-чого-захищає-кожна-з-них","Від чого захищає кожна з них?",[10,245,246],{},"Щоденна резервна копія захищає вас від того, що щось зламається всередині\nпроєкту. Файл, який лежить у вас, покриває ще й втрату самого проєкту.",[10,248,249,250,254],{},"Перший тип втрати ви спричиняєте самі. Видалення, яке зачепило більше рядків,\nніж ви хотіли, міграція, яку написав ШІ-агент, а ви схвалили, скрипт, спрямований\nне на ту таблицю. Щоденна копія саме для цього: обираєте вчора, натискаєте\nRestore, і проєкт повертається на місце. Наскільки далеко вона сягає, залежить\nвід вашого тарифу, а\n",[33,251,253],{"href":252},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","на якому тарифі ви",", зʼясовується\nприблизно за дві хвилини.",[10,256,257],{},"Другий тип взагалі не повʼязаний з помилкою в базі. Картка, термін якої минув,\nпоки вас не було, вхід, який ви не можете відновити, проєкт, який хтось видалив.\nКопії лежать за тими самими дверима, що й проєкт, і зачинилися саме двері.\nРезервна копія вашого телефона поводиться так само: вона рятує, якщо телефон\nупав у море, і нічим не допоможе того дня, коли ви не можете увійти в обліковий\nзапис, де вона лежить. Supabase тримає свої резервні копії разом із платформою,\nбо саме це дозволяє відновлювати одним натисканням. Копія, яка переживе\nобліковий запис, має лежати деінде, а в Supabase це означає логічний дамп,\nвинесений з нього.",[25,259,261],{"id":260},"що-означає-відновлення-для-кожної-з-них","Що означає відновлення для кожної з них?",[10,263,264],{},"Зі щоденною копією роботу робить Supabase, а ви обираєте, куди вона потрапить. З\nфайлом, який лежить у вас, роботу робите ви, і він може потрапити будь-куди.",[10,266,267,270],{},[17,268,269],{},"Відновлення щоденної копії в той самий проєкт"," замінює базу даних обраною\nкопією. Supabase пише, що проєкт недоступний, поки це триває, і що більша база\nпотребує більше часу.",[10,272,273,276,277,282,283,286,287,290],{},[17,274,275],{},"Відновлення в новий проєкт"," це платна функція, яку Supabase називає\n",[33,278,281],{"href":279,"rel":280},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fclone-project",[37],"Restore to a New Project",",\nдосі позначена як бета. Вона створює окремий проєкт у тому самому регіоні, з\nвашими користувачами та хешами їхніх паролів, і рахунок за нього виставляють як\nза другий проєкт. Одне попередження на тій самій сторінці легко пропустити.\nВона копіює всю базу даних, зокрема розширення, що діють назовні, як-от\n",[91,284,285],{},"pg_cron"," і ",[91,288,289],{},"pg_net",", і ці завдання запускаються одразу після завершення\nвідновлення. Якщо заплановане завдання у вашому застосунку надсилає листи або\nзвертається до платіжного API, новий проєкт теж починає це робити з тієї миті,\nяк зʼявився.",[10,292,293,296,297,299,300,304],{},[17,294,295],{},"Відновлення файлу, який лежить у вас,"," означає програти його через ",[91,298,93],{}," у\nте, що ви вкажете: новий проєкт Supabase, проєкт в іншому обліковому записі або\nPostgres на вашому власному компʼютері.\n",[33,301,303],{"href":302},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase","\nрозбирає команди, а також те, що лишається зламаним, коли вони завершилися.",[25,306,308],{"id":307},"як-отримати-копію-моєї-бази-supabase-у-вигляді-файлу","Як отримати копію моєї бази Supabase у вигляді файлу?",[10,310,311,312,317],{},"Зробіть логічний дамп самі. Supabase публікує його у своїй\n",[33,313,316],{"href":314,"rel":315},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fmigrating-within-supabase\u002Fbackup-restore",[37],"інструкції з резервного копіювання та відновлення","\nяк три команди, кожна з яких записує один файл:",[319,320,325],"pre",{"className":321,"code":323,"language":324},[322],"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,326,323],{"__ignoreMap":327},"",[10,329,330,331,334],{},"Рядок підключення беріть з кнопки Connect угорі вашого проєкту, з паролем до\nбази даних замість заповнювача. Supabase CLI потрібен встановлений Docker, бо\nвін запускає ",[91,332,333],{},"pg_dump"," усередині контейнера, а не бере його з вашого компʼютера.",[10,336,337,338,180],{},"Зберігайте всі три файли. Другий сам по собі це форма ваших таблиць без жодного\nрядка всередині, а\n",[33,339,341],{"href":340},"\u002Fblog\u002Fsupabase-backup-auth-users","ваші користувачі є лише в третьому",[10,343,344,345,347,348,353,354,356,357,362,363,365],{},"Можна також запустити ",[91,346,333],{}," напряму. Спершу дві речі.\n",[33,349,352],{"href":350,"rel":351},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fself-hosting\u002Frestore-from-platform",[37],"Supabase пише",",\nщо «сирий» ",[91,355,333],{}," забирає разом із вашими схемами внутрішні схеми Supabase і\nщо їх програвання призводить до помилок доступу на зворотному шляху. А\n",[33,358,361],{"href":359,"rel":360},"https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fapp-pgdump.html",[37],"Postgres документує",",\nщо ",[91,364,333],{}," не робить дамп із сервера, основна версія якого новіша за його\nвласну, тож стара копія на вашому компʼютері відмовиться запускатися, а не\nзапише поганий файл.",[10,367,368],{},"Покладіть файли кудись, що не є вашим обліковим записом Supabase, і не лише на\nсвій ноутбук.",[25,370,372],{"id":371},"чи-можу-я-відновити-резервну-копію-supabase-на-власному-компʼютері","Чи можу я відновити резервну копію Supabase на власному компʼютері?",[10,374,375],{},"Логічну так, у Postgres тієї самої основної версії або новішої. Фізичну щоденну\nкопію не можна відновити ніде, крім Supabase.",[10,377,378,379,383,384,388,389,392],{},"Правило версій походить від самого Postgres. Його документація каже, що дамп\n",[33,380,382],{"href":359,"rel":381},[37],"має завантажуватися в новіші версії","\nі що завантаження в старішу не гарантоване, навіть у ту, з якої він походить.\nІнструкція Supabase з\n",[33,385,387],{"href":350,"rel":386},[37],"перенесення проєкту з платформи на самостійно розгорнутий Supabase","\nпоказує, як це виглядає. Платформа може працювати на Postgres 17, тоді як\nсамостійно розгорнутий образ за замовчуванням працює на 15, і тоді файл даних\nмістить рядок ",[91,390,391],{},"SET transaction_timeout = 0",", якого Postgres 15 не розпізнає.",[164,394],{"alt":395,"caption":396,"src":397},"Дві смуги. У верхній файл виходить з бази з позначкою 15 і доходить до бази з позначкою 17, з галочкою. У нижній файл виходить з бази з позначкою 17 і зупиняється перед базою з позначкою 15, перекреслений.","Дамп рухається вперед. Помилки починаються тоді, коли його завантажують у старіший Postgres, ніж той, з якого він походить.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fforwards-not-backwards-1600x560.png",[10,399,400],{},"Ці самі три файли також є способом піти із Supabase зовсім. Та інструкція\nописує, як запустити Supabase на власному сервері, і розбіжність версій це\nперше, про що вона попереджає.",[10,402,403,404,407,408,410,411,414],{},"На вашому власному компʼютері Supabase CLI піднімає локальну копію Supabase в\nDocker, коли ви вводите ",[91,405,406],{},"supabase start",". Програйте туди три файли командою\n",[91,409,93],{}," з інструкції Supabase з резервного копіювання та відновлення, вказавши\n",[91,412,413],{},"postgresql:\u002F\u002Fpostgres:postgres@localhost:54322\u002Fpostgres",", і ваші дані можна\nчитати на власному компʼютері без жодного облікового запису.",[10,416,417,418,422],{},"Є одне місце, де Supabase досі пропонує резервну копію для завантаження.\nБезкоштовний проєкт, призупинений довше за своє вікно відновлення, замінює\nкнопку Restore на завантаження останньої копії, зробленої перед паузою, а\n",[33,419,421],{"href":420},"\u002Fblog\u002Fsupabase-project-paused-recover","що робити з цим файлом",", розповідає\nокрема стаття.",[25,424,426],{"id":425},"чого-немає-в-жодній-із-двох-копій","Чого немає в жодній із двох копій?",[10,428,429],{},"Ваших завантажених файлів, ваших Edge Functions і більшості налаштувань\nпроєкту.",[10,431,432,433,437,438,442],{},"Supabase пише, що резервні копії бази даних\n",[33,434,436],{"href":35,"rel":435},[37],"не містять обʼєктів, збережених через Storage API",".\nБаза тримає рядок, який описує кожен файл, а сам файл лежить деінде, тож жодна\nрезервна копія бази на жодному тарифі не містить того, що завантажили ваші\nкористувачі.\n",[33,439,441],{"href":440},"\u002Fblog\u002Fsupabase-storage-backup","Резервне копіювання Storage"," це окреме\nзавдання.",[10,444,445,446,449],{},"Список, який Supabase наводить для\n",[33,447,281],{"href":279,"rel":448},[37],",\nдобре підходить як перелік решти: Edge Functions, налаштування автентифікації та\nключі API, налаштування Realtime, налаштування розширень і репліки для читання\nдоведеться налаштувати вручну заново.",[10,451,452,453,457],{},"Одна прогалина стосується лише файлу, який лежить у вас. Якщо ваш застосунок\nзберігає секрети в Supabase Vault або використовує зашифровані стовпці, Supabase\nпише, що\n",[33,454,456],{"href":314,"rel":455},[37],"файли резервних копій ніколи не містять кореневого ключа",",\nлише зашифровані дані. Новий проєкт стартує з власним ключем, тож ці значення\nприходять нечитабельними, доки старий ключ не скопіюють. А старий ключ можна\nотримати лише доти, доки старий проєкт активний. Щойно цей проєкт призупинено\nабо видалено, ключ більше не отримати, як і нічого з того, що ним зашифровано.",[25,459,461],{"id":460},"що-зробити-цього-тижня","Що зробити цього тижня",[463,464,465],"key-takeaways",{},[206,466,467,470,473,484,487,490],{},[209,468,469],{},"Відкрийте Database, потім Backups, і пошукайте можливість завантаження. Якщо кожна копія пропонує лише Restore, у вас фізичні резервні копії, і забрати звідти нічого.",[209,471,472],{},"Зробіть сьогодні логічний дамп трьома командами і зберігайте всі три файли разом.",[209,474,475,476,479,480,483],{},"Пошукайте ",[91,477,478],{},"auth.users"," у ",[91,481,482],{},"data.sql",", перш ніж на нього покладатися. Саме в цьому файлі ваші облікові записи, якщо вони там взагалі є.",[209,485,486],{},"Зберігайте файли в місці, яке не є вашим обліковим записом Supabase.",[209,488,489],{},"Якщо ви використовуєте Supabase Vault або зашифровані стовпці, прочитайте, як переноситься кореневий ключ, ще до того, як він знадобиться. У файлі його немає.",[209,491,492],{},"Один раз програйте дамп у тестовий проєкт або локальний Supabase, щоб уперше ви відкрили його не того дня, коли він вам потрібен.",[25,494,496],{"id":495},"де-тут-reeve-care","Де тут Reeve Care",[10,498,499],{},[17,500,501],{},"Care робить логічну копію за вас, зберігає її поза Supabase, і кожна копія це\nфайл, який можна завантажити.",[206,503,504,521,527,533],{},[209,505,506,509,510,513,514,516,517,520],{},[17,507,508],{},"Завантажте будь-яку копію як zip."," Усередині ",[91,511,512],{},"schema.sql",", ",[91,515,482],{}," і\n",[91,518,519],{},"roles.sql",", маніфест, що рахує рядки в кожній таблиці, і нотатка про те, як\nзавантажити все це в будь-який Postgres. Це стандартний дамп, тож його\nвідкриє будь-який розробник, як і будь-який інший хостинг.",[209,522,523,526],{},[17,524,525],{},"Зберігається поза вашим обліковим записом Supabase",", зашифрованою, тож\nлишається на місці того дня, коли облікового запису вже немає.",[209,528,529,532],{},[17,530,531],{},"Перечитується, перш ніж зарахувати."," Дата на вашій панелі це остання\nкопія, яку відкрили й перевірили, а ніколи не остання спроба.",[209,534,535,538,539,542],{},[17,536,537],{},"Ваші користувачі в ній є."," Схема ",[91,540,541],{},"auth"," їде разом із вашими таблицями, а\nфайли, які завантажили ваші користувачі, теж потрапляють туди, щойно ви\nпідключите доступ до Storage.",[10,544,545,546,195,550,554],{},"Care зберігає копію вашої бази даних Supabase. Залиште щоденні резервні копії\nSupabase увімкненими поруч із нею: це найшвидший шлях назад після невдалої\nміграції, а файл це те, що лишиться, якщо ви втратите обліковий запис. Як копію\nроблять, перевіряють і завантажують, покроково намальовано на\n",[33,547,549],{"href":548},"\u002Fsupabase-backups","сторінці про резервні копії Supabase",[33,551,553],{"href":552},"\u002Fpricing","що входить у кожен тариф",", написано на сторінці цін.",[10,556,557,558,561],{},"Перш ніж закрити цю вкладку, відкрийте Database, потім Backups, і подивіться\nпоруч зі своєю найновішою копією. Якщо там нічого завантажити, наступний файл,\nякий у вас буде, це той, що ви зробите самі, а\n",[33,559,560],{"href":340},"що робить дамп повним",", варто прочитати ще до\nтого, як його робити.",{"title":327,"searchDepth":563,"depth":563,"links":564},3,[565,567,568,569,570,571,572,573,574,575],{"id":27,"depth":566,"text":28},2,{"id":137,"depth":566,"text":138},{"id":171,"depth":566,"text":172},{"id":242,"depth":566,"text":243},{"id":260,"depth":566,"text":261},{"id":307,"depth":566,"text":308},{"id":371,"depth":566,"text":372},{"id":425,"depth":566,"text":426},{"id":460,"depth":566,"text":461},{"id":495,"depth":566,"text":496},"Backups","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcover-1200x630.png","Чотири щоденні знімки бази даних у корпусі Supabase, передній підсвічений і запечатаний, поруч порожній сірий лоток для завантаження.","Завантажити резервну копію Supabase на сучасному проєкті не вийде: щоденна копія там фізична. Як це перевірити і як тримати власну копію.",false,"md",[583,585,587,590,592,594],{"q":28,"a":584},"Щоденну ні, якщо ваш проєкт працює на Postgres 15.8.1.079 або новішому. Supabase пише, що всі проєкти на цих версіях використовують фізичні резервні копії і що після їх увімкнення він більше не створює файл резервної копії для завантаження. Відновлювати ці копії з панелі ви можете й далі. Щоб отримати файл, який можна зберегти, самі зробіть логічний дамп через Supabase CLI або pg_dump.",{"q":138,"a":586},"Фізична резервна копія копіює файли, які Postgres тримає на диску. Вона відновлюється швидко й точно, але лише на такому самому типі інсталяції Postgres, з якого походить, а в Supabase це означає, що відновлює її для вас Supabase. Логічна резервна копія це SQL: інструкції, як відбудувати кожну таблицю, а за ними рядки. Вона довше програється і завантажується в будь-який Postgres тієї самої версії або новішої, зокрема на вашому власному компʼютері.",{"q":588,"a":589},"Чому зникла кнопка завантаження?","Бо того, що вона завантажувала, більше не створюють. Кнопка належала старим щоденним логічним резервним копіям, SQL-файлам, які Supabase стискав і зберігав. Коли проєкт переходить на фізичні резервні копії, Supabase перестає створювати цей файл, і сторінка Backups пропонує Restore без жодного завантаження поруч. Вимкнення відновлення на момент часу її не повертає, бо Supabase і після цього робить фізичні копії.",{"q":308,"a":591},"Виконайте три команди, які Supabase публікує у своїй інструкції з резервного копіювання та відновлення: supabase db dump з --role-only, потім без прапорців для схеми, потім з --data-only і --use-copy для рядків. CLI потрібен Docker, бо він запускає pg_dump усередині контейнера. Зберігайте всі три файли разом, у місці, яке не є вашим обліковим записом Supabase.",{"q":372,"a":593},"Логічну так, у Postgres тієї самої основної версії або новішої. Postgres документує, що дамп завантажується вперед і що завантаження в старішу версію не гарантоване, а Supabase наводить приклад: його платформа може працювати на Postgres 17, тоді як самостійно розгорнутий Supabase за замовчуванням працює на 15. Фізичну щоденну копію не можна відновити ніде, крім Supabase.",{"q":595,"a":596},"Чи дає тариф Pro резервну копію, яку можна завантажити?","Не на проєкті з Postgres 15.8.1.079 або новішим. Там Pro дає щоденні фізичні резервні копії, які зберігаються сім днів і які можна відновити в той самий проєкт або, поки функція в беті, у новий проєкт у тому самому регіоні. Жоден із цих шляхів не дає вам файлу. Копію, яку можна завантажити, ви робите самі або платите комусь, щоб її робили.","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",[599,600,601,602,603,604,605,606,607],"download supabase backup","завантажити резервну копію supabase","фізична резервна копія supabase","логічна резервна копія supabase","файл резервної копії supabase","копія моєї бази даних supabase","резервну копію supabase не можна завантажити","завантажити щоденну копію supabase","експорт резервної копії supabase",{},true,"\u002Fblog\u002Fdownload-your-supabase-backup","2026-09-26",{"title":5,"description":579},"blog\u002Fdownload-your-supabase-backup",[615,616,617],"Ви не можете завантажити резервну копію Supabase на проєкті з Postgres 15.8.1.079 або новішим. Щоденні копії там є фізичними знімками: Supabase може відновити їх для вас, а завантажити їх ви не можете.","Кнопка завантаження, яку описують старіші інструкції, належала логічним резервним копіям, тобто SQL-файлам. Вона є лише в проєктах, що досі на старіших версіях.","Щоб мати власний файл, ви самі робите логічний дамп через Supabase CLI або pg_dump. Це єдина копія, яка переживе втрату доступу до облікового запису.","ELoXCG7GhKf_oycVyx0pTY-76ZLACXNX-ePjQmuy_-4",[620,627,633,639,645,651,657,663,669,675,681,687,693,699,705,706,711,717,723,728,734,740,746,752,758,764,770,776,781,786,791,797,803,809,815,821,827,833,839,845,851,857,863,868,874,880,886,892,898,903,909,915,921,927,932,938,943,949,954,960],{"path":621,"title":622,"description":623,"published":624,"category":625,"image":626,"draft":580},"\u002Fblog\u002Fbase44-security-scan","Сканування безпеки Base44: те, що бачить лише воно","Сканування безпеки Base44 перевіряє сім видів проблем зсередини. Ось половина, яку читає тільки воно, і половина, на яку воно ніколи не дивиться.","2026-10-10","Основи безпеки","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":628,"title":629,"description":630,"published":631,"category":625,"image":632,"draft":580},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Ваш API-ключ витік. Порядок дій","API-ключ витік, і ви не знаєте, що робити першим. Не кожен ключ у вашому фронтенді є витоком, а порядок важить більше за швидкість.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":634,"title":635,"description":636,"published":637,"category":625,"image":638,"draft":580},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" без вимкнення RLS","\"Infinite recursion detected in policy for relation\" означає, що ваша policy запитала таблицю, яку вона захищає. Ось як розірвати коло.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":640,"title":641,"description":642,"published":643,"category":625,"image":644,"draft":580},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" у Supabase, і хибне виправлення","\"No API key found in request\" означає, що запит дійшов до Supabase без ключа. Більшість відповідей натомість вказують на правила вашої бази.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":646,"title":647,"description":648,"published":649,"category":625,"image":650,"draft":580},"\u002Fblog\u002Fis-base44-safe","Чи безпечний Base44? Дані 5 442 застосунків","Чи безпечний Base44? Ми прогнали дев’ять перевірок на 5 442 робочих застосунках Base44. Майже всі отримали B з причин, яких власник ніколи не обирав.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":652,"title":653,"description":654,"published":655,"category":625,"image":656,"draft":580},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Сховати ключ API: перенесіть його в Supabase Edge Function","Сховати ключ API означає прибрати його з браузера, а Supabase Edge Function це найменше місце, куди його покласти. Два кроки поруч важать більше.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":658,"title":659,"description":660,"published":661,"category":625,"image":662,"draft":580},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Чи відкритий ваш файл .env? Дванадцять шляхів для перевірки","Чи відкритий ваш файл .env на вашому власному вебсервері? Дванадцять адрес скажуть це за хвилину, а влучання означає, що все в ньому вже публічне.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":664,"title":665,"description":666,"published":667,"category":625,"image":668,"draft":580},"\u002Fblog\u002Fis-v0-safe","Безпека v0: усі 1 790 просканованих застосунків v0 отримали A","Безпека v0 на 1 790 живих застосунках v0: усі отримали A. Лише 17 згадували базу даних, і саме це здебільшого вимірює оцінка A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":670,"title":671,"description":672,"published":673,"category":625,"image":674,"draft":580},"\u002Fblog\u002Fis-bolt-safe","Чи безпечний Bolt? Що показали 1 123 застосунки Bolt","Чи безпечний Bolt? Ми прогнали 1 123 живі застосунки Bolt через дев’ять перевірок. Хостинг був чистим. Знахідки: ключі й відкриті таблиці в самих застосунках.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":676,"title":677,"description":678,"published":679,"category":625,"image":680,"draft":580},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase не працює чи проблема у вашому застосунку? Як розрізнити","Supabase не працює чи зламався ваш застосунок? Пауза, повна база й ваша власна помилка виглядають однаково. Чотири перевірки їх розрізняють.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":682,"title":683,"description":684,"published":685,"category":625,"image":686,"draft":580},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Чи шифрує Supabase мої дані? Так. Ось від чого це захищає","Чи шифрує Supabase дані? Так: AES-256 у стані спокою, TLS під час передавання, SOC 2 та ISO 27001. Що покриває кожне і який витік не зупиняє жодне.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":688,"title":689,"description":690,"published":691,"category":625,"image":692,"draft":580},"\u002Fblog\u002Fsupabase-free-plan-limits","Ліміти безкоштовного тарифу Supabase і що стається на кожному","Ліміти безкоштовного тарифу Supabase: 500 МБ бази, 5 ГБ egress і жодних резервних копій. Що стається на кожній межі і що змінює Pro за $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":694,"title":695,"description":696,"published":697,"category":576,"image":698,"draft":580},"\u002Fblog\u002Ftest-your-supabase-backup","Перевірте резервну копію Supabase до того, як вона знадобиться","Як перевірити резервну копію Supabase: відновити в тестовий проєкт, порахувати рядки, увійти й знайти рядок, якого бракує обрізаному файлу.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":700,"title":701,"description":702,"published":703,"category":576,"image":704,"draft":580},"\u002Fblog\u002Fsupabase-backup-github-action","Безкоштовна резервна копія Supabase через GitHub Action і підступ","Резервна копія Supabase через GitHub Action безкоштовна й годиться багатьом застосункам. Робочий процес, потрібний рядок підключення та egress.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":610,"title":5,"description":579,"published":611,"category":576,"image":597,"draft":580},{"path":707,"title":708,"description":709,"published":611,"category":625,"image":710,"draft":580},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": бракує GRANT","З 30 жовтня нова таблиця в Supabase відповідає \"permission denied for table\", доки ви не дасте доступ. Лист показує лише половину виправлення.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":712,"title":713,"description":714,"published":715,"category":625,"image":716,"draft":580},"\u002Fblog\u002Fopen-api-endpoint-exposed","Чи є відкритий API-ендпоінт проблемою безпеки? Читайте JSON","Ваше сканування позначило відкритий API-ендпоінт. Чи це важливо, залежить від того, що повернулося, і більшість знайдених належали платформі.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":718,"title":719,"description":720,"published":721,"category":625,"image":722,"draft":580},"\u002Fblog\u002Flovable-security-scan","Сканування безпеки Lovable: чого воно не доведе","Сканування безпеки Lovable: що перевіряють Quick scan і Deep scan, коли запускається кожне, і єдине, чого не доведе жодне сканування зсередини.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":340,"title":724,"description":725,"published":726,"category":576,"image":727,"draft":580},"Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":729,"title":730,"description":731,"published":732,"category":625,"image":733,"draft":580},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":735,"title":736,"description":737,"published":738,"category":625,"image":739,"draft":580},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":741,"title":742,"description":743,"published":744,"category":625,"image":745,"draft":580},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":747,"title":748,"description":749,"published":750,"category":625,"image":751,"draft":580},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":753,"title":754,"description":755,"published":756,"category":625,"image":757,"draft":580},"\u002Fblog\u002Fvite-and-next-public-env-vars","Змінні оточення Vite відкриті: префікс означає опублікувати це","Змінні оточення Vite відкриті у вашому застосунку, бо так просив префікс. VITE_ і NEXT_PUBLIC_ означають опублікувати це, а ШІ, який їх додав, не знав ціни.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":759,"title":760,"description":761,"published":762,"category":625,"image":763,"draft":580},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":765,"title":766,"description":767,"published":768,"category":625,"image":769,"draft":580},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":771,"title":772,"description":773,"published":774,"category":625,"image":775,"draft":580},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":440,"title":777,"description":778,"published":779,"category":576,"image":780,"draft":580},"Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":215,"title":782,"description":783,"published":784,"category":576,"image":785,"draft":580},"Point-in-time recovery у Supabase: ціна та межі","Point-in-time recovery у Supabase відмотує базу на будь-яку секунду за останній тиждень. Коштує $100 на місяць понад Pro і покриває лише базу даних.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":420,"title":787,"description":788,"published":789,"category":576,"image":790,"draft":580},"Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":792,"title":793,"description":794,"published":795,"category":625,"image":796,"draft":580},"\u002Fblog\u002Fsafest-ai-app-builder","Який білдер застосунків з ШІ найбезпечніший? 30 998 тестів","Який білдер застосунків з ШІ найбезпечніший? Ми просканували 30 998 живих застосунків з Lovable, Base44, Replit, v0 і Bolt. Оцінку вирішує не білдер.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":798,"title":799,"description":800,"published":801,"category":625,"image":802,"draft":580},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Увімкніть Row Level Security на кожній таблиці Supabase і перевірте","Row Level Security у Supabase без політики закриває таблицю повністю. Політика без увімкненого перемикача не робить нічого. Ось SQL, і ось перевірка.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":804,"title":805,"description":806,"published":807,"category":625,"image":808,"draft":580},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": чого не бачить попередження","Supabase позначає \"RLS disabled in public\" як помилку. Про політику читання, яка лишає вашу таблицю так само відкритою, він не каже нічого.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":810,"title":811,"description":812,"published":813,"category":625,"image":814,"draft":580},"\u002Fblog\u002Frotate-supabase-service-role-key","Як замінити злитий ключ service_role у Supabase","Supabase каже спершу закрити витік. Інші посібники кажуть міняти негайно. Що правильно, залежить від того, куди саме потрапив ваш ключ service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":816,"title":817,"description":818,"published":819,"category":625,"image":820,"draft":580},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":822,"title":823,"description":824,"published":825,"category":625,"image":826,"draft":580},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":828,"title":829,"description":830,"published":831,"category":625,"image":832,"draft":580},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":834,"title":835,"description":836,"published":837,"category":625,"image":838,"draft":580},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":840,"title":841,"description":842,"published":843,"category":625,"image":844,"draft":580},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Ваш ключ API OpenAI відкритий у фронтенді. Замініть його.","Ключ API OpenAI, відкритий у фронтенді, не можна прив'язати до домену. Замініть його сьогодні, перенесіть виклик на свій сервер і обмежте витрати.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":846,"title":847,"description":848,"published":849,"category":625,"image":850,"draft":580},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Ключ API у фронтенді: що насправді віддають 30 998 застосунків","Ключ API, відкритий у вашому фронтенді, зазвичай є ключем Google Maps. Ми просканували 30 998 vibe-coded застосунків і порахували, що витікає насправді.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":852,"title":853,"description":854,"published":855,"category":576,"image":856,"draft":580},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":858,"title":859,"description":860,"published":861,"category":625,"image":862,"draft":580},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":232,"title":864,"description":865,"published":866,"category":576,"image":867,"draft":580},"Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":869,"title":870,"description":871,"published":872,"category":625,"image":873,"draft":580},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":875,"title":876,"description":877,"published":878,"category":625,"image":879,"draft":580},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Де знайти API-ключі Supabase: anon, service_role і URL","URL проєкту, ключ anon і ключ service_role лежать на одній сторінці панелі. Ось де вона, і яке з чотирьох значень має бути у вашому застосунку.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":881,"title":882,"description":883,"published":884,"category":625,"image":885,"draft":580},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy в Supabase. Що далі?","\"New row violates row-level security policy\" означає, що Supabase відмовив у записі. Швидке виправлення знову відкриває таблицю для всіх.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":887,"title":888,"description":889,"published":890,"category":625,"image":891,"draft":580},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":893,"title":894,"description":895,"published":896,"category":576,"image":897,"draft":580},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Branching у Supabase це не бекап. Він іде тільки вперед.","Чому branching у Supabase це не бекап: гілка стартує без ваших даних, а мердж переносить саму лише схему. Для чого він потрібен і що брати замість нього.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":302,"title":899,"description":900,"published":901,"category":576,"image":902,"draft":580},"Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":904,"title":905,"description":906,"published":907,"category":625,"image":908,"draft":580},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":910,"title":911,"description":912,"published":913,"category":625,"image":914,"draft":580},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Чи є проблемою ключ API Google у вашому браузері?","Ключ API Google у відкритому коді сторінки наш сканер знаходить найчастіше, і зазвичай усе гаразд. Вирішує це одне безкоштовне налаштування.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":916,"title":917,"description":918,"published":919,"category":576,"image":920,"draft":580},"\u002Fblog\u002Fai-agent-deleted-my-database","ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":922,"title":923,"description":924,"published":925,"category":625,"image":926,"draft":580},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Чи може будь-хто прочитати вашу базу Supabase? 3 680 застосунків","Чи може будь-хто прочитати вашу базу даних Supabase без входу? Ми просканували 30 998 живих застосунків, зроблених ШІ-білдерами, і виміряли, як часто так.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":928,"title":929,"description":930,"published":925,"category":625,"image":931,"draft":580},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":933,"title":934,"description":935,"published":936,"category":625,"image":937,"draft":580},"\u002Fblog\u002Fsupabase-new-api-keys","Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":252,"title":939,"description":940,"published":941,"category":576,"image":942,"draft":580},"Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":944,"title":945,"description":946,"published":947,"category":625,"image":948,"draft":580},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":950,"title":951,"description":952,"published":947,"category":576,"image":953,"draft":580},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":955,"title":956,"description":957,"published":958,"category":576,"image":959,"draft":580},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Три способи зробити резервну копію бази Supabase, і чого бракує","Панель, pg_dump і керований сервіс. Що насправді зберігає кожен спосіб, що тихо лишає осторонь і який із них переживе втрату акаунта.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":961,"title":962,"description":963,"published":958,"category":625,"image":964,"draft":580},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Які API-ключі безпечні у браузері, а які ні","Ваш ключ anon у Supabase створений, щоб бути публічним. Ключ service_role для цього не створений, і він ігнорує всі правила, які ви задали. Як їх розрізнити.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618973997]