> ## Documentation Index
> Fetch the complete documentation index at: https://docs.artbucket.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrading

> Any release upgrades from any earlier one by starting it.

Start the new version. Before it serves anything, it applies every database
migration it has that the database doesn't, in order, in one transaction. If
one fails, the server stops rather than run on the wrong schema, and the
database is as it was.

```bash theme={null}
# Docker Compose
docker compose --profile app pull && docker compose --profile app up -d
# Docker
docker pull ghcr.io/pwnera/artbucket:1 && docker rm -f artbucket && docker run ... ghcr.io/pwnera/artbucket:1
```

## What makes that hold

* Migrations are only ever added. A released one is never edited, and CI fails
  a pull request that changes one.
* CI fails when the schema has a change no migration makes.
* CI migrates a database at the previous version, filled with a library in
  use, to the new one, on every pull request.
* Several instances starting at once take turns: the first migrates, the
  others find nothing left to do.

Take a backup before a major upgrade anyway: `pg_dump` for the database, and
your bucket's `assets/` prefix for the originals.

## Which tag to run

`ghcr.io/pwnera/artbucket:1` follows every 1.x release: fixes and additions,
never a change that breaks an integration ([Stability](/developers/stability)).
Pin `1.0` to take fixes only, or `1.0.0` to move only when you say.

Before 1.0 the API changed between minor versions (0.8 to 0.9); the release
notes said how. From 0.9, upgrading to 1.0 changes nothing you call.

## Notes by version

**1.2.** Nothing to do. The app icon moved to `public/icon.svg`; page titles
follow each organization's brand.

**1.1.** Nothing to do. Portals on their own domains need the proxy in front
to issue certificates for them: see [Portals](/guides/portals#tls).

**1.0.** Nothing to do. `/api/v1` and the MCP tools are frozen from here.

**0.9.** Deleting an asset now keeps it restorable for 30 days. Browser uploads
started before the upgrade and finished after it need to be started again.
