# Einen Palaver-Server aktualisieren

Voraussetzung: Server nach der [Installationsanleitung](INSTALL.md)

Platzhalter in den Befehlen:

| Platzhalter | Ersetzen durch |
|---|---|
| `0.3.1` | neue Palaver-Version |
| `https://<release host>/lasse-tech/palaver/releases/download` | Download-Adresse der Versionen, wie in der [Installationsanleitung](INSTALL.md) |
| `chat.example.org` | deinen Domainnamen (Blöcke der Installationsanleitung) |
| `<cert-name>` | Name des Zertifikats, falls er von der Domain abweicht |
| `vi` | Editor deiner Wahl |

## Inhalt

1. [Versionshinweise](#1-release-notes)
2. [Sicherung](#2-backup)
3. [Palaver herunterladen](#3-download-palaver)
4. [palaverd](#4-palaverd)
5. [Web-Client](#5-web-client)
6. [Neu starten](#6-restart)
7. [LiveKit](#7-livekit)
8. [Prüfen](#8-check)
- [Einmalig: mit install.sh eingerichtete Server](#once-servers-installed-with-installsh)
- [Zurück zur vorigen Version](#back-to-the-previous-version)

## 1. Versionshinweise

- lesen: Versionshinweise jeder Version nach der installierten
- umsetzen: die dort genannten Änderungen (Konfigurationsdateien, Units, nginx, LiveKit-Version)

Zeige die installierte Version an.

```sh
/opt/palaver/bin/palaverd version
```

## 2. Sicherung

Sichere die Datenbank.

```sh
sudo -u palaver pg_dump -Fc palaver > "palaver-$(date +%F).dump"
```

Sichere die Konfiguration.

```sh
sudo tar -czf "palaver-etc-$(date +%F).tar.gz" -C /opt/palaver etc
```

Behalte das aktuelle palaverd für den Weg zurück.

```sh
sudo cp /opt/palaver/bin/palaverd /opt/palaver/bin/palaverd.old
```

## 3. Palaver herunterladen

Lade Server, Web-Client und Prüfsummen herunter.

```sh
curl -fLO "https://<release host>/lasse-tech/palaver/releases/download/v0.3.1/palaverd-0.3.1-linux-amd64"
curl -fLO "https://<release host>/lasse-tech/palaver/releases/download/v0.3.1/palaver-web-0.3.1.tar.gz"
curl -fLO "https://<release host>/lasse-tech/palaver/releases/download/v0.3.1/SHA256SUMS"
```

Prüfe beide Dateien; jede Zeile muss auf `OK` enden.

```sh
sha256sum -c --ignore-missing SHA256SUMS
```

## 4. palaverd

Installiere das neue palaverd.

```sh
sudo install -m 755 palaverd-0.3.1-linux-amd64 /opt/palaver/bin/palaverd
```

## 5. Web-Client

Entpacke den neuen Web-Client neben den alten.

```sh
sudo install -d -m 755 /opt/palaver/web.new
sudo tar -xzf palaver-web-0.3.1.tar.gz --no-same-owner -C /opt/palaver/web.new
sudo chmod -R u=rwX,go=rX /opt/palaver/web.new
```

Tausche sie aus.

```sh
sudo mv /opt/palaver/web /opt/palaver/web.old
sudo mv /opt/palaver/web.new /opt/palaver/web
```

## 6. Neu starten

Starte palaverd neu.

```sh
sudo systemctl restart palaverd
```

## 7. LiveKit

Nur bei neuerem LiveKit in den Versionshinweisen. Zeige die installierte Version an.

```sh
/opt/palaver/bin/livekit-server --version
```

Download und Installation: [Schritt 7 der Installationsanleitung](INSTALL.md#7-livekit), ohne die Konfiguration.

Starte LiveKit neu; laufende Gespräche brechen ab.

```sh
sudo systemctl restart livekit
```

## 8. Prüfen

Führe doctor aus; erwartet: kein Befund.

```sh
sudo -u palaver /opt/palaver/bin/palaverd -env /opt/palaver/etc/palaverd.env doctor
```

Öffne den Web-Client und melde dich an.

**Destruktiv:** Entferne den vorigen Web-Client (`/opt/palaver/web.old`, nur Dateien der Version).

```sh
sudo rm -r /opt/palaver/web.old
```

**Destruktiv:** Entferne das vorige palaverd (`/opt/palaver/bin/palaverd.old`).

```sh
sudo rm /opt/palaver/bin/palaverd.old
```

## Einmalig: mit install.sh eingerichtete Server

- für: mit `install.sh` eingerichtete Server (Palaver 0.2.x)
- einmalig, nach [Schritt 8](#8-check)
- Altlasten: Hilfsskript, Installationsprotokoll, nginx-Site ohne Web-Snippet

Zeige den Namen des Zertifikats an.

```sh
sudo ls /etc/letsencrypt/live/
```

Bewahre die alte nginx-Site außerhalb der nginx-Verzeichnisse auf.

```sh
sudo cp /etc/nginx/sites-available/palaver "/root/nginx-palaver-$(date +%F).conf"
```

Web-Snippet `/etc/nginx/snippets/palaver-web.conf`: wie in [Schritt 9 der Installationsanleitung](INSTALL.md#9-web-client).

Site `/etc/nginx/sites-available/palaver`: vollständige Site wie in [Schritt 10 der Installationsanleitung](INSTALL.md#10-nginx-and-certificate).

Name des Zertifikats weicht von der Domain ab: öffne `/etc/nginx/sites-available/palaver` in einem Editor.

```sh
sudo vi /etc/nginx/sites-available/palaver
```

Ändere:

- `ssl_certificate`, `ssl_certificate_key`: `/etc/letsencrypt/live/chat.example.org/` → `/etc/letsencrypt/live/<cert-name>/`

Prüfe und lade sie.

```sh
sudo nginx -t && sudo systemctl reload nginx
```

**Destruktiv:** Entferne das Hilfsskript (`/usr/local/sbin/palaverctl`).

```sh
sudo rm /usr/local/sbin/palaverctl
```

**Destruktiv:** Entferne das Installationsprotokoll (`/var/log/palaver-install.log`).

```sh
sudo rm /var/log/palaver-install.log
```

**Destruktiv:** Entferne die Datei mit dem Zertifikatsnamen von install.sh (`/opt/palaver/etc/cert`), falls vorhanden.

```sh
sudo rm /opt/palaver/etc/cert
```

## Zurück zur vorigen Version

- für: neue Version funktioniert nicht
- Datenbankänderungen bleiben; falls nötig: Sicherung aus [Schritt 2](#2-backup), wie unter
  [Installationsanleitung, Wiederherstellen](INSTALL.md#restore)

Setze das vorige palaverd wieder ein.

```sh
sudo cp /opt/palaver/bin/palaverd.old /opt/palaver/bin/palaverd
```

Setze den vorigen Web-Client wieder ein.

```sh
sudo mv /opt/palaver/web /opt/palaver/web.failed
sudo mv /opt/palaver/web.old /opt/palaver/web
```

Starte palaverd neu.

```sh
sudo systemctl restart palaverd
```
