Před půl rokem jsem se rozhodl, že Supabase Cloud free tier nestačí. Měl jsem 4 projekty, každý chtěl vlastní instanci, a $25/měsíc za Pro plán × 4 mi přišlo jako peníze, které mi zachrání jeden vlastní LXC kontejner. Spoiler: zachránily.
Setup
LXC 108 na Proxmox 1. 4 jádra, 8 GB RAM, 80 GB disku. Ubuntu 24.04. Supabase běží přes Docker Compose s 12 servisy:
- PostgreSQL 15
- PostgREST 12
- GoTrue (Auth)
- Realtime
- Storage API
- Kong (API gateway)
- Imgproxy
- Edge functions (Deno)
Doména supabase.ajtak.it, HTTPS přes Cloudflare Tunnel, žádný veřejný port.
Co funguje
1. Multi-schema pattern. Místo 4 instancí mám jednu s 8 schématy:
craftio, tastly, signage, jindrich, eshop, hotel, workspace, svjapp.
PostgREST přes Accept-Profile header rozlišuje kontext. Žádné kolize, žádné duplikované Auth.
2. RLS všude. 100% pokrytí. Audit query pouštím každých 6 měsíců — bez RLS
neexistuje tabulka. Žádný SECURITY DEFINER bez explicitního search_path.
3. Backup strategie. PBS každou hodinu, ZFS snapshot každých 6 hodin, restic do Hetzner Storage Box každý den. Tři vrstvy. Nikdy nebyl výpadek.
4. Cena. $0/měsíc navíc. Disková kapacita roste, ale 80 GB pojme všechno i s historií 2 let.
Co bych udělal jinak
Connection pooling. PgBouncer jsem nasadil až po 4 měsících, kdy jsem viděl 500+ otevřených connections z Next.js apek. Pgcat by byl lepší — má rewrite plánu, hodí se pro RLS scenario.
Realtime channels. Měl jsem 200+ kanálů otevřených na produktivní app a paměť realtime servisu dosáhla 4 GB. Restart pomohl, ale lepší by bylo channel cleanup.
Migrations. Začal jsem ručně psát SQL. Zlomil jsem si zub. Teď používám Prisma jen na schema migrations, business logic přes raw SQL views.
Audit query
Po 6 měsících je nutné mít automatizovaný audit. Já jedu tohle 1× za 6 měsíců na každém projektu — viz snippet.
Výsledek
3 produktivní projekty (CraftIO, Tastly, Beamcast), 5 v develop fázi.
0 výpadků kvůli platformě (1 výpadek kvůli mně — DELETE bez WHERE,
restore z PBS za 4 minuty).
Pohoda. Doporučuju.