Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 03:51
9ab4dce

Several instances, tested properly. Running slonbase as a fleet, behind a balancer, behind
PgBouncer and with projects on other servers, was run for real (scripts/fleet-test, also in CI),
which found problems that are fixed here, and a scaling guide now says what
works, what was measured and where the limits are.

Added

  • database.listen_url (--database-listen-url, SLONBASE_DATABASE_LISTEN_URL): a direct
    connection for LISTEN/NOTIFY, so slonbase works behind PgBouncer in transaction mode. Without
    it, behind such a pooler, instances started and answered requests but stopped sharing schema
    changes, settings, realtime events and rate limits, with no error.
  • Health checks for a fleet: sync (each instance sends itself a notification every minute
    and shows an error, naming a transaction-mode pooler and the fix, if it doesn't arrive) and
    connections (PostgreSQL's connections in use against its limit, a warning from 80% and an
    error from 95%, since several instances and projects multiply them).
  • Sign out everywhere: POST /api/collections/{collection}/records/{id}/revoke-tokens gives a
    record a new token key, so every token it holds stops working on every instance; a user may
    call it for themselves, a superuser for anyone. The dashboard's record menu has the action.
    (Tokens are stateless, so there is no per-device logout, as in PocketBase.)
  • Scaling and deployment topologies: five layouts with diagrams (one
    instance; projects on several servers; a load balancer; PgBouncer; managed failover), the
    connection budget N × (18 + 5 × projects) with measured numbers, what is shared and what is per
    instance, sessions and sign-out across instances, upgrades, nginx, HAProxy and PgBouncer
    recipes, and the limits.
  • scripts/fleet-test: several instances behind a balancer with no affinity, checking tokens,
    schema and settings propagation, shared rate limits, realtime forwarding and projects, run in
    CI directly and through PgBouncer.

Changed

  • Idle project pools release their connections after two minutes, so many projects don't each
    hold a few connections for nothing.
  • Pooler-safe session state: the backup lock is a transaction lock on a dedicated connection,
    and the SQL console's and JavaScript hooks' SETs are SET LOCAL inside a transaction, so
    nothing leaks onto the next user of a pooled connection (a leak that was possible even without a
    pooler).
  • A realtime subscribe request that was forwarded to an instance that has died answers after two
    seconds instead of five.
  • The website's scale-out section and the documentation say what was tested, including the
    limits (connections, local files, no rolling upgrades).

Website, documentation and discovery

Added

  • Easier to find, for search engines and for AI assistants: a sitemap, a robots.txt that
    welcomes search and AI crawlers, canonical addresses and Open Graph cards on every page,
    structured data (software, FAQ, breadcrumbs, articles), a 404 page, llms.txt and
    llms-full.txt with every guide also served as Markdown (/docs/<page>.md), and an IndexNow
    ping on each deploy.
  • New guides: About, Features, a five-minute
    quickstart, slonbase and PocketBase,
    slonbase vs PostgREST and the benchmarks.

Changed

  • slonbase is described as what it is now: a backend platform on PostgreSQL (many projects,
    roles and API keys, an SQL console, designers, scale-out), compatible with the PocketBase SDKs,
    not "PocketBase's API on PostgreSQL". The README, the site, the package descriptions and the
    documentation lead with that.

  • The documentation site uses the dashboard's colours, and passes the accessibility checks.

  • A new look for https://slonbase.com, built from the dashboard's own colours, type and
    components, with a screencast of the real dashboard, every dashboard screen (the command
    center for projects, the SQL console, settings and the email designer included) and the
    benchmark numbers of 2.2.

  • Benchmarks of 2.2.0 against PocketBase 0.40.6 and PostgREST 16.5, with memory, binary size
    and start-up time (bench/; the runs are kept in bench/published/2.2.0). The binary is 22 MB
    on disk (10 MB to download), not the 8 MB the page said.

  • The dashboard screenshots are taken, and the tour recorded, by scripts/demo/run.sh, from a
    seeded demo installation.

Install

  • Docker: ghcr.io/ayeshrodz/slonbase:2.3.0
  • Debian/Ubuntu: slonbase_2.3.0_amd64.deb / _arm64.deb
  • Fedora/RHEL: slonbase-2.3.0-1.x86_64.rpm / .aarch64.rpm
  • Binaries: slonbase-2.3.0-linux-{amd64,arm64}.tar.gz

Verify downloads with sha256sum --ignore-missing -c SHA256SUMS. See the installation guide.