You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The week of June 15, 2026, the default db image in the self-hosted Supabasedocker-compose.yml will move from Postgres 15 to Postgres 17.
⚠️ If your database uses timescaledb, plv8, plcoffee, or plls, you cannot upgrade to the Supabase images of PG 17 - these extensions are no longer included.
This affects the default image tag only. Pinning to a specific supabase/postgres 15.x tag will continue to work, and the PG 15 images on Docker Hub will remain available.
Existing Postgres 15 data directories will not auto-upgrade. Bringing up the new compose file against a PG 15 volume will fail to start - PG 17 cannot read a PG 15 data directory directly.
Why?
Postgres 17 is what we currently default to on the Supabase platform, and aligning the self-hosted default keeps behavior consistent across deployment models.
PG 15 has been the self-hosted default for a long time; PG 17 brings several years of upstream improvements.
Pinning to PG 15 remains supported for anyone who needs more time.
Am I Affected?
You are affected if all of the following are true:
You run self-hosted Supabase from the ./docker directory
You pull updates from master without pinning the supabase/postgres image tag
This is the lowest-friction option if you're not ready to upgrade. We'll continue publishing PG 15 images, but new features and fixes will land on PG 17 first (and subsequently on PG 18).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
What's Changing?
The week of June 15, 2026, the default
dbimage in the self-hosted Supabasedocker-compose.ymlwill move from Postgres 15 to Postgres 17.timescaledb,plv8,plcoffee, orplls, you cannot upgrade to the Supabase images of PG 17 - these extensions are no longer included.This affects the default image tag only. Pinning to a specific
supabase/postgres15.x tag will continue to work, and the PG 15 images on Docker Hub will remain available.Existing Postgres 15 data directories will not auto-upgrade. Bringing up the new compose file against a PG 15 volume will fail to start - PG 17 cannot read a PG 15 data directory directly.
Why?
Am I Affected?
You are affected if all of the following are true:
./dockerdirectorymasterwithout pinning thesupabase/postgresimage tagYou are not affected if you:
supabase start) - it's a different deployment optionWhat Should I Do?
If you have a self-hosted Supabase instance with data to preserve, you have two options.
Option 1: Upgrade in place (via a utility script)
This is the recommended path for existing data. Read the upgrade how-to guide to learn more.
Before running the script, create your own backup of
./volumes/db/dataand thepgsodiumkey.The script will perform the following steps (high-level):
pg_upgradein a temporary PG 15 containerVACUUM ANALYZEin a temporary PG 17 container./volumes/db/data.bak.pg15)Rollback to PG 15 is supported - the script keeps the original data directory, and the guide has the exact steps.
Option 2: Stay on Postgres 15 and migrate later
Pin the PG 15 image in your docker-compose file:
This is the lowest-friction option if you're not ready to upgrade. We'll continue publishing PG 15 images, but new features and fixes will land on PG 17 first (and subsequently on PG 18).
Rollout
Beta Was this translation helpful? Give feedback.
All reactions