Naar de inhoud
RolloutDocs
EN
5Livegang, stap voor stap· stap 5 van 7

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.

Met de server-poort
Stap 0 / 6
Medewerkerboeklink
Rollout-serverkent het geheim
Databasekent alleen de hash
Iemand andersrechtstreeks op de API
Opent boeklink
Vrije tijden?x-rollout-gateway
↻ Hash klopt
Tijdsloten
Rechtstreeks, met vals IP
Alleen via Rollout bereikbaar

Scroll hierheen of druk op afspelen.

Wat de poort beschermt:

WatZonder poortMet poort
Boeklink, klantportaal, tevredenheidRechtstreeks aan te roepen met een verzonnen IPAlleen via jouw server
Limiet op mislukte pogingen per IPTe omzeilen, en te misbruiken om iemand anders te blokkerenTelt alleen het echte IP
Wijzigingsplan starten en afsluitenEen engineer kon een plan "afsluiten" met verzonnen resultatenAlleen de server legt resultaten vast

Aanzetten in vijf stappen

Volgorde (geen downtime)
  1. 1
    Migratie 0017
    verandert nog niets
  2. 2
    Geheim maken
    op je eigen computer
  3. 3
    In Vercel + deploy
    Sensitive, Production
  4. 4
    Hash in database
    nu staat de poort aan
  5. 5
    Controleren
    gateway: ok
  1. Migratie 0017 uitvoeren

    Heb je in stap 1 alle migraties gedraaid, dan is dit al gebeurd. Anders: ./deploy/migrate.sh of supabase/setup-0017.sql in de SQL Editor. Zolang er geen hash is ingesteld, werkt alles zoals voorheen.

  2. Geheim maken

    Op je eigen computer, in de map van de repository:

    Terminal
    $ node scripts/gateway-secret.mjs
    ROLLOUT_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.

  3. Geheim in Vercel zetten en deployen

    Settings → Environment Variables → ROLLOUT_GATEWAY_SECRET, alleen Production, Sensitive aan.

    Vercel → project → Settings → Environment Variables
    EnvironmentsProductionPreviewDevelopment
    Nog geen variabelen opgeslagen

    Daarna Deployments → Redeploy. Controleer https://<jouw-domein>/api/ready: daar hoort nu "gateway": "not-enforced" te staan (geheim aanwezig, poort nog niet aan).

  4. 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 query
    Untitled query
    1
    2
    3
    ResultsNog niets uitgevoerd
  5. 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/readyBetekenisWat doen
okGeheim klopt, poort staat aanNiets
not-enforcedGeheim staat op de server, maar er is nog geen hash in de databaseStap 4 doen
mismatchGeheim en hash horen niet bij elkaar. Boeklinks werken dan nietOpnieuw het script draaien en beide waarden zetten
missing-secretGeen (geldig) geheim op de serverStap 3 doen; het geheim moet minstens 32 tekens zijn
Noodknop

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.

Server-poort aanzetten · Rollout Docs