Pick your host
Every host runs identical code against your Supabase project. Pick on preference, not compatibility.
Because your content and uploads live in Supabase, there is nothing to store on the server. No permanent disk requirement, no database service to provision, no object storage to bolt on, and no per-host code changes — except one line on Netlify.
So pick on price, control and how much server administration you want to do.
Pterodactyl
Easiest. You already have a game panel — the store sits beside your Minecraft servers.
VPS + nginx
Best control. Your own domain, HTTPS and reverse proxy, on hardware you control.
Vercel
Least admin. Git push to deploy, HTTPS and CDN handled for you.
Netlify
Like Vercel. Needs one small config change first.
Coolify & Dokploy
Self-hosted deploy panels. Push to deploy on your own box.
Which one is right for you?
| Difficulty | Cost | You maintain | |
|---|---|---|---|
| Pterodactyl | Easy | Already paying for it | The panel |
| VPS + nginx | Hard | From ~$5/month | Everything |
| Vercel | Easy | Free tier is usually enough | Nothing |
| Netlify | Easy | Free tier is usually enough | Nothing |
| Coolify / Dokploy | Medium | Cost of the server it runs on | The server |
Straight recommendations
- You already rent a Pterodactyl panel: Pterodactyl. No new bill, no new thing to learn.
- You want a real domain and full control: VPS + nginx.
- You never want to touch a server: Vercel.
You can move later. Point the new host at the same Supabase project and your content comes with you — settings, page text, logo, everything.
What every route needs
The same four things, in the same way.
The same environment variables
Every host reads the identical set. On managed hosts you paste them into a form instead of a file. → Environment variables
A seeded Supabase project
bun run seed, run once, from anywhere. It creates the tables, the default
content and your admin login. Every guide below assumes you have already done it.
→ Install and seed
SUPABASE_URL present at build time
The build bakes your Supabase hostname into the image loader and the Content-Security-Policy. Miss it and the site deploys fine but your uploaded logo is blocked in the browser.
NEXT_PUBLIC_SITE_URL matching the real address
Exactly — including https://, any port, and www or no www. A mismatch makes
"add to basket" fail with a 403 once you are live.
After it is live
- Open
https://yourdomain.com/adminand log in. - Change the seeded admin password if you used the default.
- Set your brand name, logo and colours: Admin panel.
- Check the store lists packages, and that a test basket reaches Tebex checkout.
- Remove the theme's development-only origins from
next.config.ts— see Security and headers.
Backups
Your servers hold nothing but code — wiping and rebuilding one loses no data. Back up in the Supabase dashboard instead: Database → Backups for your content, and your Storage bucket for uploaded images.