Owly Post
Self-hosted

Updating

Pulling a new image, how migrations run, and how breaking changes are handled

Update to the latest version

Terminal
docker compose pull
docker compose up -d

The one-shot migrate service applies any pending database migrations before app and worker start. Confirm with:

Terminal
docker compose logs migrate

Expected: one Applied migration … line per new migration, or Database schema is up to date.

Pin a version

Releases are tagged x.y.z on GitHub (no v prefix) and published to ghcr.io/esmeepeters/owlypost as x.y.z, x.y and latest. Pin in .env:

.env
OWLYPOST_TAG=1.1.0

Release notes are published as GitHub Releases on each tag; there is no changelog file in the repository.

Migrations

Schema changes are SQL files in db/migrations/, applied in filename order, each in its own transaction, and tracked in the schema_migrations table. Applying them is idempotent: running migrate twice is safe, and so is running it against an existing database. You can also run them by hand:

Terminal
docker compose exec app node scripts/migrate.ts

There are no down migrations. Running an older image against a newer schema is unsupported; to go back, restore a backup taken before the upgrade.

Breaking changes

There is no published compatibility or deprecation policy yet. Read the release notes before upgrading across a minor version, and take a backup first. Known cases so far:

  • Renamed variables. ANTHROPIC_MODEL_DIGEST and ANTHROPIC_MODEL_SUMMARY became LLM_MODEL_DIGEST and LLM_MODEL_SUMMARY. The old names are ignored, so an install that still sets them falls back to the default models.
  • Migration 0002 refuses to run while two categories have the same name in different casing: categories has case-insensitive duplicate names (…). Merge or rename them, then re-run migrations. Rename one in the app and run docker compose up -d again.
  • Migration 0003 creates the btree_gist extension. On some managed Postgres providers that needs superuser rights; enable the extension from the provider's dashboard first.

On this page