# 2.7.0: Runnel Server 2.7: Postgres 17 and a smaller image

2026-09-29 · https://galley.themes.dev/changelog/v2-7-self-hosted-server/

> The self-hosted server supports Postgres 17, its image is 61% smaller, and upgrades now run migrations without downtime.

## Runnel Server

This release is mostly for teams who run Runnel Server themselves. Runnel Cloud got the same changes on 22 September.

### Postgres 17

Runnel Server now supports Postgres 15, 16 and 17, and is tested against all three. On 17, queue polling uses less CPU under load: in our benchmark with 2,000 workers, database CPU dropped from 71% to 48%.

### A smaller image

The `runnel/server` image is now 84 MB, down from 216 MB. It is built on a distroless base, runs as a non-root user and has no shell.

### Upgrades without downtime

Migrations now run in two phases. `runnel-server migrate --phase expand` adds what the new version needs while the old version keeps running; start the new version, then run `--phase contract` to remove what is no longer used. A single `runnel-server migrate` still does both for teams that can take a short pause.

## Improved

- `/healthz` reports database latency and queue depth, for your load balancer and alerts.
- Prometheus metrics include `runnel_runs_queued` per job.

## Fixes

- The server could miss a schedule tick if it restarted within the same second.
- Long `payload` values were logged in full at debug level. They are now cut at 1 KB.
- Fixed a race where two servers could both start the same delayed run.

Read [Self-hosting](/docs/guides/self-hosting/) before upgrading from 2.5 or earlier.
