# v2026.10.2

One image for every role, and Kubernetes

One image runs the API, the workers and the migrations. Caddy is optional, and there is a Helm chart for Kubernetes.

## What changed

- Install on Kubernetes with the Helm chart. See [Install on Kubernetes](https://docs.gorunner.io/self-host/install-kubernetes).
- Run behind your own proxy without Caddy. See [Behind your own proxy](https://docs.gorunner.io/self-host/own-proxy).
- Updates replace the app one copy at a time, so nobody sees an error. See [Update](https://docs.gorunner.io/self-host/update).
- If a worker crashes, its runs start again within about 3 minutes (before, about 16). See [Runs](https://docs.gorunner.io/build/runs).
- `ADMIN_EMAIL` reserves the first account for one address. On Kubernetes it is required. See [First sign-in](https://docs.gorunner.io/self-host/first-sign-in).
- Connect your own monitoring (OpenTelemetry, Prometheus, Sentry), keep a complete audit log, and stream events. See [Connect a monitoring tool](https://docs.gorunner.io/self-host/monitoring-tools).

## When you update

> **Warning** This release fixes a security issue in the built-in object storage of v2026.10.0 and v2026.10.1. Update as soon as you can: running the update is all it takes. Report security issues to [security@gorunner.io](mailto:security@gorunner.io).

- Redis must never evict keys: set `maxmemory-policy noeviction` and keep persistence on. The built-in Redis already is. Check a managed one.
- Coming from v2026.10.0 or v2026.10.1, the update moves the installation to the one image and keeps Caddy in front, on the same ports and certificate. Your address is away for about 2 seconds, once, so pick a quiet time. The built-in object storage restarts once.
- Caddy’s trusted proxies are narrowed if they covered Docker’s own networks, and the update prints the old and new value. The Caddyfile moves to `caddy/Caddyfile`.

GoRunner’s image is private for now. With Docker, [sign in to the registry](https://docs.gorunner.io/self-host/install-docker#sign-in-to-the-registry) first. On Kubernetes, [sign Helm in and give the cluster its pull Secret](https://docs.gorunner.io/self-host/install-kubernetes#make-a-namespace). See [Update](https://docs.gorunner.io/self-host/update) for the whole procedure, or [Install with Docker](https://docs.gorunner.io/self-host/install-docker) and [Install on Kubernetes](https://docs.gorunner.io/self-host/install-kubernetes) to install this version anew.

**Docker**

```bash
./deploy.sh v2026.10.2
```

**Kubernetes**

```bash
helm upgrade gorunner oci://ghcr.io/ralve-org/charts/gorunner --version 2026.10.2 -f values.yaml
```

## Going back

Going back to v2026.10.0 or v2026.10.1 works with Caddy in front. Behind your own proxy it is refused, and nothing changes. Restoring the backup you took before the update always works.

Source: https://docs.gorunner.io/changelog/v2026.10.2
