Skip to content

Zone Domain Migration and Release Acceptance ​

When migrating from the legacy managed_domains / inline domain columns of reverse proxy routes to the Zone + Zone Domain model, data import and table structure upgrades are both completed by the automatic goose migration at Server startup — no separate import command is needed.

What Happens During Upgrade ​

When starting (or rolling-upgrading) a Server version that includes the Zone rework, no manual command is required; migrator.Migrate() automatically:

  1. Applies goose SQL: creates of_zones / of_zone_domains (if they do not yet exist).
  2. Automatically imports the legacy route domain columns (and of_managed_domains when routes have no domains) as Zone / Zone Domains, binding proxy_route_id / cert_id (registering root domains via public suffix list parsing).
  3. Continues goose SQL: drops the redundant domain/certificate columns from of_managed_domains and of_proxy_routes.

The import is idempotent: existing domains are skipped or have their route binding back-filled.

If historical data cannot be parsed (conflicting domains, invalid root domains, missing certificates, etc.), startup fails. Fix the data or restore a backup and start again to retry.

1. Back Up Before Upgrading ​

bash
# PostgreSQL example
pg_dump "$DATABASE_URL" > openflare-pre-zone-$(date +%Y%m%d).sql

# Or copy the backup volume / snapshot; for SQLite, copy the database file in the data directory

Optional: note down the current active config version number and checksum in the admin panel for config rollback comparison.

2. Upgrade and Start the Server ​

Deploy the new version and start it. Watch the goose success messages in the startup log; if "Zone migration failed (N conflicts)" appears, fix the source data according to the conflicts listed in the log and restart.

3. Post-Upgrade Checks ​

  1. Admin panel Websites /websites: check whether Zone root domains and domain counts are reasonable.
  2. Zone details: domains, certificates, associated route IDs.
  3. Reverse proxy routes: domain bindings come from Zone Domains, not legacy hand-written fields.

4. Config Preview and Release ​

  1. Review the config diff / preview in the admin panel.
  2. Verify per route: server_name set, certificate paths, WAF Route ID, Pages references.
  3. Allow the redundant domain / domains / cert_ids on routes in old snapshot JSON to disappear.
  4. Do not allow data-plane semantic changes.
  5. After the preview passes, release it; if needed, activate the pre-upgrade version in config versions for config rollback. For database rollback, use the pre-upgrade backup (down migrations do not backfill business domain data).

Released under the Apache License 2.0