Server-poort aanzetten
Boeklinks, het klantportaal en "oplossen met één klik" lopen via jouw Rollout-server. Met de server-poort accepteert de database die verzoeken alleen nog als ze echt van die server komen. Dat kost je vijf minuten en geen downtime.
Waarom dit nodig is
De database staat bij Supabase en is, net als elke cloud-database, via internet bereikbaar. Zonder poort kon iemand de publieke functies rechtstreeks aanroepen, buiten Rollout om, en daarbij zelf een IP-adres verzinnen. Met de poort stuurt jouw server een geheime sleutel mee. Wie die sleutel niet heeft, wordt geweigerd.
Scroll hierheen of druk op afspelen.
Wat de poort beschermt:
| Wat | Zonder poort | Met poort |
|---|---|---|
| Boeklink, klantportaal, tevredenheid | Rechtstreeks aan te roepen met een verzonnen IP | Alleen via jouw server |
| Limiet op mislukte pogingen per IP | Te omzeilen, en te misbruiken om iemand anders te blokkeren | Telt alleen het echte IP |
| Wijzigingsplan starten en afsluiten | Een engineer kon een plan "afsluiten" met verzonnen resultaten | Alleen de server legt resultaten vast |
Aanzetten in vijf stappen
- 1Migratie 0017verandert nog niets
- 2Geheim makenop je eigen computer
- 3In Vercel + deploySensitive, Production
- 4Hash in databasenu staat de poort aan
- 5Controlerengateway: ok
- Migratie 0017 uitvoeren
Heb je in stap 1 alle migraties gedraaid, dan is dit al gebeurd. Anders:
./deploy/migrate.shofsupabase/setup-0017.sqlin de SQL Editor. Zolang er geen hash is ingesteld, werkt alles zoals voorheen. - Geheim maken
Op je eigen computer, in de map van de repository:
Terminal$ node scripts/gateway-secret.mjsROLLOUT_GATEWAY_SECRET=f3Q9xK2vT7pL1mN8rB4wY6zH0cJ5sD2aE9uG4kR1tV8-- Supabase SQL Editor (pas NA het deployen van de server met dit geheim):update platform_settings set gateway_secret_hash = '6b1f…c9e2';Het script geeft twee dingen: het geheim (voor Vercel) en een SQL-regel met de hash (voor de database). Elke keer dat je het draait, krijg je een nieuw geheim; gebruik dus beide uit dezelfde run. Bovenstaande waarden zijn voorbeelden.
- Geheim in Vercel zetten en deployen
Settings → Environment Variables →
ROLLOUT_GATEWAY_SECRET, alleen Production, Sensitive aan.Vercel → project → Settings → Environment VariablesEnvironmentsProductionPreviewDevelopmentNog geen variabelen opgeslagenDaarna Deployments → Redeploy. Controleer
https://<jouw-domein>/api/ready: daar hoort nu"gateway": "not-enforced"te staan (geheim aanwezig, poort nog niet aan). - Hash in de database zetten
Plak de
update-regel uit het script in de SQL Editor en klik Run. Vanaf dit moment staat de poort aan.Supabase → SQL Editor → New queryUntitled query123ResultsNog niets uitgevoerd - Controleren
Open daarna een boeklink in een privévenster: die moet gewoon werken. En een rechtstreekse aanroep moet nu geweigerd worden:
Terminal$ curl -s https://<project-ref>.supabase.co/rest/v1/rpc/resolve_booking_token -H 'apikey: <anon-key>' -H 'Content-Type: application/json' -d '{"token":"bk_test"}'{"code":"P0001","details":null,"hint":null,"message":"Deze functie is alleen via Rollout bereikbaar."}
Wat betekent de status?
gateway in /api/ready | Betekenis | Wat doen |
|---|---|---|
ok | Geheim klopt, poort staat aan | Niets |
not-enforced | Geheim staat op de server, maar er is nog geen hash in de database | Stap 4 doen |
mismatch | Geheim en hash horen niet bij elkaar. Boeklinks werken dan niet | Opnieuw het script draaien en beide waarden zetten |
missing-secret | Geen (geldig) geheim op de server | Stap 3 doen; het geheim moet minstens 32 tekens zijn |
Werken boeklinks niet meer na het aanzetten en lukt herstellen niet meteen? Zet de poort uit met update platform_settings set gateway_secret_hash = null; in de SQL Editor. Alles werkt dan weer zoals voorheen. Zoek daarna rustig uit wat er misging.
Geheim vervangen
Bij een vermoeden van een lek, of als iemand met toegang vertrekt: draai het script opnieuw, zet het nieuwe geheim in Vercel, deploy, en zet de nieuwe hash in de database. Tussen de deploy en de nieuwe hash werken boeklinks even niet; doe het daarom buiten kantoortijd.
Elke installatie (elke MSP) heeft een eigen geheim. Hergebruik het nooit.