Pierwsze kroki
Migracja z Supabase
Przenieś bazę, użytkowników i pliki z Supabase do HostBase krok po kroku.
HostBase korzysta z tych samych komponentów co Supabase, więc migracja to przede wszystkim przeniesienie danych i podmiana zmiennych środowiskowych. Typowy projekt przenosi się w 15–30 minut.
0. Przygotowanie
- Utwórz projekt w HostBase w wybranym regionie i zapisz hasło do bazy.
- W Supabase skopiuj connection string (Project Settings → Database, tryb Session lub bezpośredni).
- Zainstaluj klienta Postgres w wersji ≥ wersji źródłowej (np.
postgresql-client-17). - Zaplanuj krótkie okno serwisowe lub wstrzymaj zapisy na czas migracji.
1. Zrzut bazy z Supabase
export SRC="postgresql://postgres.[SUPABASE_REF]:[HASLO]@aws-0-eu-central-1.pooler.supabase.com:5432/postgres"
# role (bez haseł systemowych)
pg_dumpall --roles-only --no-role-passwords -d "$SRC" -f roles.sql
# schemat i dane schematów aplikacji + auth + storage
pg_dump "$SRC" \
--format=custom --no-owner --no-privileges \
--schema=public --schema=auth --schema=storage \
-f supabase.dump
2. Odtworzenie w HostBase
export DST="postgresql://postgres:[HASLO]@db-[HOSTBASE_REF].host.ulewicz.space:5432/postgres?sslmode=require"
psql "$DST" -f roles.sql # błędy "role already exists" można zignorować
pg_restore --no-owner --no-privileges --clean --if-exists \
-d "$DST" supabase.dump
Tabele systemowe auth.* i storage.* mają w HostBase ten sam układ, więc użytkownicy (wraz z hashami haseł bcrypt) przenoszą się bez konieczności resetu haseł.
3. Użytkownicy i JWT
Tokeny sesji wystawione przez Supabase są podpisane innym sekretem JWT — po migracji użytkownicy muszą zalogować się ponownie. Hasła, tożsamości OAuth i metadane pozostają bez zmian. Pamiętaj, aby w HostBase ponownie skonfigurować dostawców OAuth (zmieni się callback URL na https://<ref>.host.ulewicz.space/auth/v1/callback).
4. Pliki w Storage
Metadane plików są w schemacie storage, ale same obiekty trzeba skopiować. Najprościej przez API zgodne z S3:
# rclone: skonfiguruj dwa zdalne S3 — "supabase" i "hostbase"
rclone sync supabase:avatars hostbase:avatars --progress
rclone sync supabase:faktury hostbase:faktury --progress
Alternatywnie skrypt Node.js: pobierz listę obiektów przez storage.from(bucket).list() w źródle i prześlij je upload() do HostBase.
5. Edge Functions i sekrety
Skopiuj katalog supabase/functions i wdroż funkcje ponownie. Ustaw sekrety w panelu HostBase.
6. Przełączenie aplikacji
# przed
NEXT_PUBLIC_SUPABASE_URL=https://xyzcompany.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...supabase
# po
NEXT_PUBLIC_SUPABASE_URL=https://abcdefghijklmnopqrst.host.ulewicz.space
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...hostbase
Kod aplikacji nie wymaga zmian — @supabase/supabase-js działa identycznie.
7. Weryfikacja
-- porównaj liczności w obu bazach
select schemaname, relname, n_live_tup
from pg_stat_user_tables order by n_live_tup desc limit 20;
Potrzebujesz pomocy? W planach Team i Enterprise migrację wykonamy za Ciebie — napisz do nas.