Kong Is Out, Envoy Is In: What the Gateway Switch Means for Self-Hosted Supabase

September 5, 2026
Timo WevelsiepTimo Wevelsiep
pangohost

Kong Is Out, Envoy Is In: What the Gateway Switch Means for Self-Hosted Supabase

Since August 2026 Envoy is the default gateway in self-hosted Supabase. Who breaks, what to do, and why Kong had to go in the first place.

supacloud.de Blog

Content notice: The information in this article was compiled to the best of our knowledge at the time of publication. Technical details, pricing, versions, licensing models and external content are subject to change. Please verify the information independently, especially before making business-critical or security-relevant decisions. This article does not constitute individual professional, legal or tax advice.

WZ-IT operates supacloud. Current hosting starts from €129.90 net/month; setup and service level follow the proposal. Former package prices, location lists and cost comparisons in this dated article describe the previous offer, not current WZ-IT terms. View current service scope.

Anyone running Supabase themselves received an update in August 2026 that was more than a version bump: the default API gateway switched from Kong to Envoy. For most installations it passes through unnoticed; for three configurations it does not. More interesting than the migration itself is the reason behind it, because it says something about what self-hosting an open source stack actually involves. This article explains what changed, who is affected and how to determine that for your installation in ten minutes.


Table of Contents

What changed

With release 0.8.0 of the self-hosted configuration, dated 11 August 2026, Envoy became the default API gateway [2]. Supabase had announced the switch for the week of 9 August 2026 [1].

Concretely [1][2]:

  • The kong service in docker-compose.yml is now api-gw and runs in the container supabase-envoy.
  • The name kong is kept as a network alias so existing connections inside the compose network keep working.
  • Kong becomes an optional override in a new docker-compose.kong.yml.
  • docker-compose.envoy.yml has become a no-op shim now that Envoy is the default anyway.
  • A new variable API_GW_HTTP_PORT falls back to KONG_HTTP_PORT when unset.
  • The Caddy and nginx overrides now forward to api-gw.

The network alias is the considerate part of this release. Without it, every service in the compose network addressing kong as a host would have pointed nowhere immediately.

Who breaks, and who does not

Supabase names the affected cases explicitly in the announcement [1]. There are three, and they can be checked in ten minutes.

First: the HTTPS listener on 8443. Kong shipped its own HTTPS listener on port 8443. Envoy listens on plain HTTP on port 8000 only [1]. Anyone exposing 8443 directly, or addressing it internally, loses that path.

Second: a customised kong.yml. Custom routes, plugins or ACLs in volumes/api/kong.yml have no automatic equivalent in Envoy. They have to be ported to Envoy's configuration [1].

Third: scripts using the service name. Anything addressing kong as a compose service, such as docker compose logs kong, points nowhere because the service is now api-gw [1]. The network alias does not help here: it applies to network resolution, not to the compose service name.

Not affected are users of the Supabase platform and users of the local CLI [1]. Anyone running an unmodified default installation without direct 8443 access gets an ordinary update.

The check, in three questions

Question If yes
Does anything access port 8443 directly? Move TLS in front of the gateway, use the Caddy or nginx override
Is there a customised volumes/api/kong.yml? Port routes, plugins and ACLs to Envoy, or enable the Kong override
Does a script or monitor reference the service name kong? Switch it to api-gw

Three times no means: ordinary update, refresh the configuration files, carry on.

The way out, and why it is not one

Kong can be re-enabled as an override with sh run.sh config add kong [1]. That is the right call when an update is due and there is no time to port anything today.

As a permanent answer it does not hold. Supabase justifies the switch by saying Kong's open source line has effectively stopped advancing and the shipped version is unmaintained [1]. An override sitting on a frozen component only pushes the work back, into a time when the gap has grown.

The second reason given is the friendlier one: Envoy brings config-as-code routing in YAML and first-class support for the new API keys [1].

What is actually interesting about this

Taken alone, the gateway switch is a manageable migration. It becomes notable in context.

Look at what happened to the same configuration between June and August 2026 [2]:

Release Date What hits self-hosters
0.5.0 03 Jun 2026 logs and analytics leave the default compose file, opt-in via an override
0.6.0 17 Jun 2026 Postgres 17 becomes the default; an existing PG 15 data directory cannot be started with it [6]
0.7.0 07 Jul 2026 API_EXTERNAL_URL gains the /auth/v1 path, SAML SSO endpoints move, new required variable
0.8.0 11 Aug 2026 Kong replaced by Envoy

Four planned interventions in a little over two months, two of them with real breaking potential. This is not a complaint about the project. Supabase moves fast, documents the changes cleanly and has shipped an update.sh plus an upgrades.json since 0.7.1 that gates breaking changes by version [2]. That is more than many projects do.

But it is the honest answer to what self-hosting costs. Not the server. The attention.

The migration path in detail

For anyone running it themselves, in the order that works.

  1. Back up. The data directory above all, and the configuration files. Without a backup there is no way back.
  2. Check exposure using the three questions above. That decides whether this is an update or a project.
  3. Update configuration files. Per the changelog that means docker-compose.yml and .env because of API_GW_HTTP_PORT, plus docker-compose.envoy.yml, the new docker-compose.kong.yml and, if in use, docker-compose.caddy.yml, docker-compose.nginx.yml, the Caddyfile and the nginx template [2].
  4. Sort out TLS if you previously terminated on 8443. Caddy or nginx in front, Envoy behind it on plain HTTP.
  5. Switch scripts and monitoring from kong to api-gw.
  6. Rehearse on a copy, not on the production instance. A gateway that fails to start takes the entire API with it.
  7. Only then go live, with a maintenance window and a rollback plan. Supabase describes the official procedure in its update guide [3], the full compose reference is in the self-hosting handbook [4], and the concrete change is traceable in pull request #48153 [5].

Supabase also added an improvement in 0.7.2 that helps here: update.sh no longer overwrites itself during an update but is staged as update.sh.new for review [2]. A small detail that counts precisely when an update goes wrong halfway through.

Why this matters for choosing a provider

The usual self-hosting calculation is: server plus time. The server part is easy to quantify; the time part is usually underestimated because it arrives irregularly.

A gateway switch does not cost eight hours a month. It costs half a day once, plus the vigilance to notice it at all before the next docker compose pull applies it unasked. The same vigilance was needed in June for the Postgres major upgrade and in July for the changed auth path.

This is exactly where self-hosting differs from operated hosting, regardless of who the provider is. The question is not whether somebody can start Docker. The question is who has it in their calendar that a breaking change is four weeks out.

supacloud: managed Supabase from Germany

We run the open source community edition of Supabase as a dedicated instance, in Germany by default, with a data processing agreement under Article 28 GDPR. The gateway switch is exactly the kind of work we take on: with notice, with a maintenance window, rehearsed on a copy beforehand. Nothing changes for you in terms of project URL or keys.

The price comes from instance size and support tier. In the Germany region S costs EUR 99.90 net per month, M EUR 149.90 and L EUR 249.90; the Business support tier adds EUR 100, Priority EUR 150 and Enterprise EUR 350. For production the Supabase documentation recommends 4 vCPU and 8 GB, meaning size M and up.

What we honestly cannot do either: branching, the platform management API and several projects in one instance exist only in Supabase's cloud platform, not in the open source stack. Separate environments are covered by a second instance.

The trial runs 7 days. A credit card is required to sign up, and after it expires the trial converts automatically into the chosen paid subscription.

See pricing · Get in touch

Conclusion

The move from Kong to Envoy is a well-documented migration with a fallback path and a network alias that cushions the most common breaking point. Anyone without direct 8443 access, without a customised kong.yml and without scripts using the old service name will barely notice it.

The real finding sits next to it: four changes requiring action between June and August, two of them with genuine breaking potential. Supabase does a lot right here, documenting cleanly and shipping tooling. But the work stays with whoever runs the instance. That is the calculation worth making about self-hosting, not the one about the server.


supacloud is an independent managed hosting provider and is not affiliated with Supabase Inc. or Kong Inc. Supabase is open source, its core components under Apache 2.0 and MIT. This article provides context on independently operated products for information purposes and does not constitute legal advice.


Sources

Frequently Asked Questions

What changed in self-hosted Supabase?▼
The default API gateway in docker-compose.yml switched from Kong to Envoy. The service is now called api-gw and runs in the container supabase-envoy; the name kong is kept as a network alias so existing connections keep working. Kong became an optional override. The change is in release 0.8.0 of the self-hosted configuration dated 11 August 2026; it was announced for the week of 9 August 2026.
Who does this break for?▼
Three groups. First, anyone using Kong's built-in HTTPS listener on port 8443 directly: Envoy listens on plain HTTP on port 8000 only. Second, anyone with a customised kong.yml, meaning custom routes, plugins or ACLs. Third, scripts and automation that address the gateway by service name, for example docker compose logs kong. Platform users and local CLI users are not affected.
Can I stay on Kong?▼
Yes, for now. Kong remains available as an opt-in override and can be re-enabled with sh run.sh config add kong. That is the right move when an update is due and there is no time to port anything. As a permanent answer it holds up less well: Supabase justifies the switch by saying Kong's open source line has effectively stopped advancing. An override sitting on a frozen component postpones work rather than deciding anything.
Why did Supabase replace Kong?▼
Supabase gives two reasons in the announcement. First, Kong's open source line has effectively stopped advancing and the shipped version is unmaintained. Second, Envoy offers config-as-code routing in YAML and first-class support for the new API keys. The switch is therefore less a technical preference than a reaction to a core component of the stack losing its free development path.
What about HTTPS if Envoy only speaks HTTP?▼
TLS then belongs in front of the gateway. Supabase ships overrides for Caddy and nginx that forward to api-gw; both were adjusted in the same release. In practice this is the cleaner architecture: termination in the reverse proxy, plain HTTP behind it on the internal network. But anyone who previously exposed Kong's 8443 directly has to make that move deliberately.
Which configuration files do I have to touch?▼
Per the changelog, docker-compose.yml and .env need updating because the new variable API_GW_HTTP_PORT is introduced; it falls back to KONG_HTTP_PORT when unset. Then there is docker-compose.envoy.yml, now only a no-op shim, the new docker-compose.kong.yml for the override, plus docker-compose.caddy.yml, docker-compose.nginx.yml, the Caddyfile and the nginx template if you use either reverse proxy.
Is this the only breaking change this year?▼
No, and that is the actual point. Between June and August 2026 alone there were several changes affecting self-hosters: logs and analytics left the default compose file with 0.5.0; with 0.6.0 Postgres 17 became the default and an existing Postgres 15 data directory cannot simply be started with it; with 0.7.0 the auth path changed; and 0.8.0 brought the gateway switch. Running it yourself therefore meant four planned interventions in three months.
How do I check whether my setup is affected?▼
Three questions are enough for a first assessment. Does anything access port 8443 directly? Is there a customised volumes/api/kong.yml with custom routes, plugins or ACLs? Does a script, a monitor or a log collector reference the service name kong? If any answer is yes, preparation is needed. Three times no means it is an ordinary update.
Does supacloud take this migration off my hands?▼
Yes, that is precisely the service. We run version changes with notice and a maintenance window, rehearse them on a copy beforehand and handle the configuration file changes. Nothing changes for you in terms of project URL or keys. That a gateway switch, an auth path change and a Postgres major upgrade all land in the same three months is not an outlier, it is the normal case for a project moving at this speed.
What does managed Supabase hosting cost at supacloud?▼
The price comes from instance size and support tier. In the Germany region size S costs EUR 99.90 net per month with 2 vCPU, 4 GB RAM and 80 GB NVMe, M costs EUR 149.90 and L EUR 249.90. The Business support tier adds EUR 100, Priority EUR 150 and Enterprise EUR 350. For production the Supabase documentation recommends 4 vCPU and 8 GB, meaning size M and up. Billing is monthly only.
Which edition of Supabase do you operate?▼
The open source community edition, that is the same stack that sits behind Supabase Cloud: Postgres, GoTrue for auth, PostgREST, Realtime, Storage, Edge Functions and Studio. Not included is the vendor's platform layer, meaning branching, the platform management API and several projects in one account.
Timo Wevelsiep

Written by

Timo Wevelsiep

Co-founder, WZ-IT

Founder of WZ-IT. Managed Supabase hosting from Germany, focused on Postgres operations, migrations and data sovereignty.

LinkedIn

Request Managed Supabase

We operate your dedicated Supabase instance including hosting, updates, monitoring and support. Tell us about your application, expected data volume and whether you want to migrate an existing Supabase project. We will get back to you within 24 hours.

Your contacts at WZ-IT

Timo Wevelsiep and Robin Zins

Founders of WZ-IT

Discuss your project with Timo and Robin

By submitting, you agree to our Privacy Policy.