Prefer not to manage release notes, merge conflicts and recovery risk yourself? WZ-IT provides managed Supabase hosting and operations with controlled updates, monitoring and backups.
To update self-hosted Supabase is to update more than one container. The stack includes PostgreSQL, Auth, Storage, Realtime, an API gateway, Studio, Functions and other services. Images, environment variables, Compose files, database structures and dependencies can change between releases.
A reliable update process treats each upgrade as a small, repeatable change with inventory, protection, staging, acceptance and rollback.
Why “pull and restart” is risky
Unreviewed upgrades commonly fail because of:
- locally modified Compose files
- new or removed environment variables
- incompatible image combinations
- database changes or major versions
- changed health checks or network paths
- Auth and JWT configuration
- Functions and runtime dependencies
- external SMTP, OAuth or Storage connections
Containers may appear healthy while login, upload, Realtime or an API is already broken. Technical health checks and real user-journey tests serve different purposes and both are required.
1. Capture a reproducible current state
Before updating, record:
| Area | Controls |
|---|---|
| Versions | Image tags or digests, PostgreSQL version, Supabase template state |
| Configuration | Compose files, variables, volumes, proxy and networks |
| Adjustments | Custom services, overrides, hooks, Storage target and SMTP |
| Database | Size, extensions, functions, replication and backup method |
| Application | Clients, SDKs, Functions, integrations and critical journeys |
| Operations | Monitoring, maintenance window, owners and rollback criteria |
Do not let movable tags change images without control. A recorded state is the basis for recreating the same environment.
2. Assess target changes
The official update guide and self-hosting repository are the primary sources. Review:
- changed Compose services
- new, renamed or removed variables
- database migrations
- Auth, gateway and API changes
- required image versions
- breaking changes and manual actions
- known limitations
Also verify application clients and integrations against the target. An update can be technically correct while violating an application assumption.
Key changes in the self-hosting stack (as of October 2026)
The self-hosting changelog shows why each release needs its own assessment:
| Release | Operationally relevant change |
|---|---|
| v0.6.0 (2026-06-17) | PostgreSQL 17 replaces PostgreSQL 15 as the default; Studio and Postgres Meta use the postgres role instead of supabase_admin |
| v0.7.0 (2026-07-07) | Breaking changes: the OpenAPI spec is no longer reachable with the anon key, API_EXTERNAL_URL now includes the /auth/v1 path |
| v0.7.1 (2026-08-03) | update.sh introduced for updates with a three-way merge |
| v0.8.0 (2026-08-11) | Envoy replaces Kong as the default API gateway, Kong remains an opt-in override; new API_GW_HTTP_PORT variable |
| v0.8.1 (2026-09-09) | PgBouncer as an optional pooler, new component versions (including Auth v2.196.0, PostgREST v14.17, Storage v1.74.0) |
| v0.8.2 (2026-09-23) | current release at the time of writing |
Installations still running PostgreSQL 15 must not simply be recreated on PostgreSQL 17 with the new template. The update guide points to a separate upgrade procedure or the docker-compose.pg15.yml override, which keeps PostgreSQL 15 for now.
3. Prepare the right backups
Supabase explicitly notes that its configuration update process does not back up PostgreSQL data or Storage objects.
Before production, require:
- consistent PostgreSQL backup
- separate protection of Storage file bytes
- versioned Compose and override files
- encrypted configuration backup or recovery process
- recorded image versions
- verified recovery runbook
File existence alone is insufficient. Operators need a measured recovery duration and a clear understanding of data loss after rollback.
4. Reconcile official and local changes
Since v0.7.1 Supabase has shipped the update.sh script. It records the installed release in a .supabase-version file, backs up configuration files to backups/ before each run and uses a three-way comparison:
- previous official template
- current official template
- locally modified state
This helps preserve intended adjustments. Merge conflicts still require engineering decisions, particularly around:
- ports and public exposure
- volume paths
- external database or Storage targets
- reverse proxy and TLS
- custom secret variables
- resource limits
- logging and monitoring
Review the result in version control. Secrets do not belong in the repository.
5. Test in a production-like environment
Useful staging reproduces:
- architecture and relevant configuration
- anonymised or representative data
- the same Auth providers in test mode
- Functions and extensions
- realistic Storage and Realtime scenarios
At minimum test:
- Studio and administration
- REST and GraphQL access
- login, logout, refresh and password reset
- positive and negative RLS cases
- upload, download and signed URLs
- Realtime connections
- Functions and secrets
- SMTP, OAuth, webhooks and external APIs
- backups after the update
6. Production runbook
An executable runbook contains:
- approval and start time
- verification of the latest successful backup
- optional write freeze or maintenance mode
- retrieval of pinned images
- configuration and database steps in order
- restart and technical health checks
- smoke tests for critical journeys
- go/no-go decision
- enhanced observation period
- closure and documentation
Every step has an owner, expected result and abort criterion.
7. Rollback is more than an image rollback
Restarting old images is insufficient when an update changes database state. The rollback plan answers:
- Are schema changes backward-compatible?
- Is a full database recovery required?
- What happens to writes accepted after the update?
- Will Storage metadata and files still match?
- Which DNS, proxy or secret changes need reversal?
For high-risk changes, a prepared parallel target can be safer than an in-place update.
8. Observe and document
After updating, observe:
- error rates and latency
- database connections, locks and resources
- Auth failures
- Storage and Function errors
- Realtime connections
- queue or webhook backlogs
- unexpected restarts
Then update the version inventory, runbook and known deviations. Lessons from incidents or manual work feed the next cycle.










