Supabase je sjajan. volim Supabase. Ali u trenutku kada sam vidio "Backups" sede iza plaćenog plana, moj mozak je radio ono što svaki slomljeni mozak osnivača radi: “I can build that.” I da, možete. Na besplatnom planu. S pravom automatizacijom. Bez servera. Bez buđenja u 2 ujutro da se setite "oh da, trebao bih baciti moju bazu podataka." Ovaj članak pokazuje kako sam stvorio Korišćenje , plus sve uznemirujuće male greške koje ćete vjerojatno pogoditi (tako da ne morate). automatic Supabase Postgres backups every 12 hours GitHub Actions Šta gradimo Jednokratni setup koji: Trčanje svakih 12 sati Povezuje se sa vašom bazom podataka Supabase Postgres Kreira .dump rezervnu datoteku (komprimirano, u odgovarajućem formatu) Skladišta ga u privatnom GitHub repo kao verzije datoteke Nema plaćenog Supabase plana. Nema usluga treće strane. Nema VPS. Samo GitHub radi dosadan posao. Jedina stvar koju treba shvatiti Backup baze podataka je kao kišobran. Ako čekate da počne kiša, već ste mokri. Također, "Ja ću ga samo recriate" je laž koju kažete sebi kada ga nikada niste recriated, Supabase besplatni plan je u osnovi crna rupa, ako dobijete hakiran, nema povijesti da se vratite na. Korak 0: Kreirajte privatni repo Stvaranje A GitHub repozitorij nazvao nešto poput: private Uslovi korišćenja myapp-db-backups Izrada backup-a notpayingforshiii-db-backups (ako si ti ja) Ovaj repo će pohraniti vaše backup datoteke. GitHub repo posvećen backup-u Korak 1: Dobijte ispravan string za vezu Supabase (ovaj deo je važan) Idite na svoj Supabase projekt: Korišćenje Settings → Database → Connection string A evo i zamke: Koristite Session Pooler (ne direktno) Ako ste na besplatnom planu, Supabase često prikazuje: Neposredna veza: Nije IPv4 kompatibilan IPv4 kompatibilan GitHub trkači su obično IPv4. Ako koristite Direct, vaš tok posla će propasti i misliti da vas svemir mrzi. Set za: Metoda: Session pooler Ključna reč: URI Dobićete poveznicu kao što je: postgresql://postgres.<your-project-ref>:YOUR_PASSWORD@aws-1-<region>.pooler.supabase.com:5432/postgres Važno je: Zamijenite držač mesta [YOUR-PASSWORD] sa lozinkom za Supabase, ako se ne sećate, postoji link za resetovanje lozinke db na pop-upu za tu vezu. Korak 2: Dodajte niz veza kao GitHub tajnu U vašem GitHub repo: Settings → Secrets and variables → Actions → New repository secret Stvorite svoju tajnu: Uslovi korišćenja: SUPABASE_DB_URL Vrijednost: umetnite punu struku Session Pooler poveznice Nemojte dodavati dodatne prostorije. Nemojte dodavati novu liniju. Nemojte biti slatki. Dodaj svoju tajnu Korak 3: Dodajte datoteku toka posla GitHub Akcije U svom repo-u kreirajte ovu datoteku: .github/workflows/backup.yml Da, uključujući tačke. GitHub će automatski kreirati fascikle. Sada unesite ovaj puni tok posla: name: Supabase Backupon: schedule: - cron: "0 */12 * * *" workflow_dispatch:jobs: backup: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install matching PostgreSQL client env: DATABASE_URL: ${{ secrets.SUPABASE_DB_URL }} run: | sudo apt-get update sudo apt-get install -y wget ca-certificates lsb-release postgresql-client SERVER_VERSION=$(psql "$DATABASE_URL" -tAc "SHOW server_version_num;" | cut -c1-2) echo "SERVER_VERSION=$SERVER_VERSION" >> $GITHUB_ENV wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt-get update sudo apt-get install -y postgresql-client-$SERVER_VERSION - name: Run pg_dump env: DATABASE_URL: ${{ secrets.SUPABASE_DB_URL }} run: | mkdir -p backups /usr/lib/postgresql/$SERVER_VERSION/bin/pg_dump "$DATABASE_URL" \ --format=custom \ --file=backups/supabase_$(date +%F_%H-%M).dump - name: Commit backup run: | git config user.name "supabase-backup-bot" git config user.email "backup@github.com" git add backups git commit -m "Automated Supabase backup" || echo "No changes" git pushWhat this does: Otkrije Supabase DB Postgres verziju Instalira odgovarajuće pg_dump Kreiranje .dump datoteke Uključite ga u svoj repo Ova verzija je Ako Supabase ažurira Postgres kasnije, tok posla se prilagođava. future-proof Korak 4: Dajte GitHub Actions dozvolu za guranje Učinite ovo , jer će backup ne uspjeti kada pokuša da Vratite se u svoj rep. before you run the workflow save (commit + push) the database dump Evo kako to omogućiti: Repo → Settings → Actions → General → Workflow dozvole Izaberite: ✅ Dozvole za čitanje i pisanje Klikni . Save Korak 5: Pokrenite ga ručno jednom Sada, testirajte ga da biste bili sigurni da radi prije nego što se opustite. Dođite na vaš repo: Actions → Supabase Backup → Run workflow Ako je uspio: Videćete novu fasciklu: Backups/ fajl poput: supabase_2026-01-24_00-15.dump Što je sa skladišnim kutijama? Ova podrška je za vaše . Postgres database Ne uključuje: Supabase Storage datoteke (slika, video zapisa, učitavanja) Edge funkcionalni kod logovi Ako vam trebaju i rezervne kopije skladišta, poželićete zaseban proces (S3-kompatibilna sinhronizacija ili skript – mogao bih ovo proširiti da bih sve to učinio, ali samo mi je potrebna baza podataka u mom slučaju). Bonus: Držite svoj repo od rastu zauvijek (opcionalno) Ako ne želite da se beskonačne rezervne kopije nagomilavaju, možete automatski izbrisati starije datoteke (na primer, sačuvajte posljednjih 30). Završne misli Ne treba vam plaćen plan da biste imali odrasle rezervne kopije. Samo vam je potrebno: GitHub repo aplikacija Jedna tajna Jedan tok posla Jedna dozvola toggle A sada vaša baza podataka ima rezervne kopije svakih 12 sati dok spavate, isporučujete i pretvarate se da niste odgovorni za proizvodnju. Ako ste ovo pronašli korisno, slobodno ga ukrasti.