# Updates

> Neue Versionen erkennen und installieren – per Skript oder mit einem Klick über den Updater-Container.

## Update-Hinweis

Der Worker fragt alle paar Stunden beim zentralen Update-Server (`https://updates.cyrellian.com/docsello`) nach, ob
es eine neue Version gibt. Übertragen werden nur die installierte Version, der Kanal und eine zufällige
Installations-ID. Mit `UPDATE_SERVER_URL=off` schaltest du die Prüfung ab – die Installation funktioniert auch ganz
ohne Internetverbindung zum Update-Server.

In der Verwaltung zeigt **System & Updates** (unten in der Seitenleiste) die installierte Version, den Kanal, wann
zuletzt geprüft wurde, und **Jetzt prüfen**. Gibt es eine neue Version, erscheinen *Update verfügbar: vX.Y.Z* mit den
Release Notes aller Versionen dazwischen, ein Hinweis auf der Übersicht und ein Punkt im Menü. Wichtige Updates
(Sicherheit) sind mit *Wichtig* markiert.

:::info
**System & Updates** sehen auf einer selbst gehosteten Installation die Workspace-Inhaber und der Betreiber.
:::

## Update per Skript

Auf dem Server im Docsello-Ordner:

```bash
./deploy/update.sh            # neueste Version
./deploy/update.sh v0.2.0     # bestimmte Version
```

Das Skript holt die Version aus Git, baut die Images neu und startet die Dienste; die Datenbank-Migration läuft
automatisch vor dem Neustart. Hat sich die nginx-Konfiguration geändert, weist es darauf hin.

Mit fertigen Images statt eigenem Build:

```bash
# in .env: DOCSELLO_VERSION=0.2.0 (oder latest)
docker compose pull
docker compose up -d
docker image prune -f
```

## Update mit einem Klick

Mit dem optionalen **Updater-Container** installierst du Updates direkt aus der Verwaltung (**vX.Y.Z installieren**).
Er baut die neue Version, migriert die Datenbank und startet neu. Startet die neue Version nicht, läuft die bisherige
weiter. Fortschritt und Protokoll stehen in **System & Updates**.

Einrichten in der `.env`:

```ini
COMPOSE_FILE=docker-compose.yml:deploy/docker-compose.nginx.yml:deploy/docker-compose.updater.yml
UPDATER_TOKEN=<openssl rand -hex 32>
APP_DIR=/mnt/storage/docsello/app      # absoluter Pfad des Checkouts auf dem Server
```

```bash
docker compose up -d --build updater web
```

:::warning
Der Updater hat Zugriff auf den Docker-Socket und damit Root-Rechte auf dem Server. Er hat keinen offenen Port und
verlangt bei jeder Anfrage das `UPDATER_TOKEN`. Ohne Updater zeigt **System & Updates** stattdessen den passenden
`./deploy/update.sh`-Befehl an.
:::

Versionen, deren Release Notes **„Manuelle Schritte“** enthalten, lassen sich nie mit einem Klick installieren: Führe
die beschriebenen Schritte aus und aktualisiere dann per Skript.

Vor einem Update lohnt sich ein [Backup](doc:backups). Was sich geändert hat, steht unter
[Neuigkeiten](page:neuigkeiten).
