What's Changing?#
The week of Aug 9, 2026, the default self-hosted Supabase API gateway will change from Kong to Envoy. Envoy has shipped as an optional override (docker-compose.envoy.yml) for the last several releases; it now becomes the default in docker-compose.yml, and Kong moves to an optional override.
This is a breaking change for a subset of self-hosters (see below) - most notably anyone relying on Kong's built-in HTTPS listener, a customized kong.yml, or tooling that references the gateway by service/container name.
- The gateway service in
docker-compose.ymlbecomesapi-gw, running Envoy (containersupabase-envoy). It keepskongas a network alias for backward compatibility. - Kong is now opt-in via a new
docker-compose.kong.ymloverride:sh run.sh config add kong. - The gateway HTTP port is now configured with
API_GW_HTTP_PORT(defaulting to the existingKONG_HTTP_PORT, then8000), so existing.envfiles keep working. - The default gateway listens on plain HTTP only (port
8000). Kong's built-in HTTPS listener on8443is not part of the Envoy default. Terminate TLS with the shippeddocker-compose.caddy.ymlordocker-compose.nginx.ymloverrides, or opt back into Kong. docker-compose.envoy.ymlbecomes a no-op shim for one release cycle so existing overrides don't break, then is removed.
Why?#
- Kong's open-source line has effectively stopped advancing. The OSS Kong we currently ship (
kong:3.9.1) is roughly a year old; subsequent 3.9.x releases have been security/nginx backports only, with no feature cadence, and Kong removed free (unlicensed) mode in 3.10. Continuing on the frozen OSS Kong line carries growing security and compliance risk for self-hosters. - One gateway, config-as-code. Envoy's routing, filters, and access control live in versioned YAML under
volumes/api/envoy/, with no plugin runtime to manage. - First-class support for the new API keys. The Envoy configuration translates opaque
sb_publishable_*/sb_secret_*keys into internal JWTs. See New API Keys and Asymmetric Authentication. - Hardened defaults. Path normalization, header-smuggling rejection, edge-proxy client-IP handling, and a locked-down admin interface. See the Envoy API Gateway guide.
- Consistency. Aligns the self-hosted default with the direction of the wider Supabase stack.
Am I Affected?#
You are affected if you run self-hosted Supabase from the ./docker directory and pull updates from master, and any of the following apply:
- You rely on Kong's built-in
:8443HTTPS listener directly (no reverse proxy in front). The Envoy default does not expose8443. Put Caddy/Nginx in front for TLS, or opt back into Kong. - You maintain a customized
kong.yml(custom routes, plugins, ACLs). These do not carry over to Envoy and will silently stop applying. Opt back into Kong to keep them, or port the customizations to the Envoy config. - You have scripts or tooling that reference the gateway by service/container name (
kong/supabase-kong) - for exampledocker compose logs kongorrun.sh restart kong. The service is nowapi-gwand the container issupabase-envoy. Thekonghostname still resolves via a network alias. - You currently run the Envoy override (
docker-compose.envoy.ymlin yourCOMPOSE_FILE). No behavior change now, but you should remove that entry fromCOMPOSE_FILEonce you pull the update, since Envoy is the base default.
You are not affected if you:
What Should I Do?#
If you pull the updated docker-compose.yml and .env.example together with no gateway customizations, no action is required beyond being aware that requests now flow through Envoy.
If you want to stay on Kong:
_10sh run.sh config add kong_10sh run.sh recreate
Kong remains available as an override for compatibility and migration, but note it tracks the frozen OSS 3.9.x line - we recommend it as a transition aid, not a long-term default.
If you customized kong.yml: opt back into Kong (config add kong) to keep your config, or port your routes/rules to the Envoy config under volumes/api/envoy/. See the Envoy API Gateway guide.
If you already run the Envoy override: remove docker-compose.envoy.yml from COMPOSE_FILE (or run sh run.sh config remove envoy) after pulling the update.
If you'd rather defer: pin your checkout, or add the Kong override so your gateway behavior is unchanged. This is a default change, not a removal - but we recommend migrating to Envoy, since the OSS Kong line is no longer actively maintained.
Rollout#
| Date | Change |
|---|---|
| 2026-07-17 | This changelog published |
| [TBD ~Aug 13] | Updated self-hosting gateway docs published |
| [TBD ~Aug 13] | Default change ships in the next self-hosted Supabase release |