# Einen Host mit mehreren Palaver-Servern aktualisieren

- Voraussetzung: Host nach der [Anleitung für mehrere Server](INSTALL.md) eingerichtet
- ein `/opt/palaver/bin/palaverd` für alle Server; weitere Server: alte Version bis zum Neustart, gleich nach dem
  Hauptserver neu starten

Platzhalter in den Befehlen:

| Platzhalter | Ersetzen durch |
|---|---|
| `0.3.1` | neue Palaver-Version |
| `https://git.internal.incudex.de/lasse-tech/palaver/releases/download` | Download-Adresse der Versionen; Palavers internes Forgejo, nur vom eigenen Rechner aus erreichbar |
| `palaver.social` | die Domain des Hauptservers; als `palaver.social:` der Host für `scp`; in `/etc/letsencrypt/live/palaver.social/`: den Namen des Zertifikats |
| `guild` | den Namen eines weiteren Servers; ein `-` im Namen wird im Datenbanknamen zu `_` (z. B. `palaver_my_guild`); Befehle mit „für jeden weiteren Server“: einmal für jeden |
| `guild.palaver.social` | die Domain dieses weiteren Servers |
| `8091` | den Port dieses weiteren Servers |
| `2026-10-10` | das heutige Datum (Namen der Sicherungsdateien) |
| `1.13.7` | LiveKit-Version aus den Versionshinweisen |
| `vi` | Editor deiner Wahl |

## Inhalt

1. [Versionshinweise](#1-release-notes)
2. [Palaver herunterladen](#2-download-palaver)
3. [Hauptserver sichern](#3-back-up-the-main-server)
4. [Weitere Server sichern](#4-back-up-the-further-servers)
5. [palaverd](#5-palaverd)
6. [Web-Client](#6-web-client)
7. [nginx](#7-nginx)
8. [Neu starten](#8-restart)
9. [LiveKit](#9-livekit)
10. [Prüfen](#10-check)
- [Zurück zur vorigen Version](#back-to-the-previous-version)
- [Einmalig: mit palaver-host eingerichtete Hosts](#once-hosts-set-up-with-palaver-host)
- [Einmalig: der Rechner, auf dem palaver-ops lief](#once-the-machine-palaver-ops-ran-on)

## 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. Palaver herunterladen

Auf deinem eigenen Rechner: Lade den Server und den Web-Client herunter.

```sh
curl -fLO -H "Authorization: token $FORGEJO_TOKEN" https://git.internal.incudex.de/lasse-tech/palaver/releases/download/v0.3.1/palaverd-0.3.1-linux-amd64
curl -fLO -H "Authorization: token $FORGEJO_TOKEN" https://git.internal.incudex.de/lasse-tech/palaver/releases/download/v0.3.1/palaver-web-0.3.1.tar.gz
```

Kopiere beide in dein Home-Verzeichnis auf dem Host.

```sh
scp palaverd-0.3.1-linux-amd64 palaver-web-0.3.1.tar.gz palaver.social:
```

- ab hier: auf dem Host, in deinem Home-Verzeichnis

## 3. Hauptserver sichern

Sichere die Datenbank.

```sh
sudo -u palaver pg_dump -Fc palaver > palaver-2026-10-10.dump
```

Sichere die Konfiguration.

```sh
sudo tar -czf palaver-etc-2026-10-10.tar.gz -C /opt/palaver etc
```

Behalte das bisherige palaverd für den Rückweg.

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

## 4. Weitere Server sichern

Zeige die weiteren Server an.

```sh
ls /opt/palaver/instances/
```

Für jeden weiteren Server: Sichere seine Datenbank.

```sh
sudo -u palaver-guild pg_dump -Fc palaver_guild > palaver-guild-2026-10-10.dump
```

Sichere ihre Konfiguration.

```sh
sudo tar -czf palaver-instances-2026-10-10.tar.gz -C /opt/palaver instances
```

Prüfe die Sicherungen; erwartet: eine je Server, keine leer.

```sh
ls -l palaver-*.dump
```

## 5. palaverd

Installiere das neue palaverd.

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

## 6. 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.

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

## 7. nginx

Nur, wenn die Versionshinweise das Web-Snippet oder die Site ändern. Öffne das Snippet des Hauptservers in einem Editor.

```sh
sudo vi /etc/nginx/snippets/palaver-web.conf
```

Öffne die Site des Hauptservers in einem Editor.

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

Für jeden weiteren Server: Öffne sein Snippet in einem Editor; `wss://guild.palaver.social` bleibt.

```sh
sudo vi /etc/nginx/snippets/palaver-web-guild.conf
```

Für jeden weiteren Server: Öffne seine Site in einem Editor; Port, Logs und Snippet bleiben.

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

Ändere:

- was die Versionshinweise sagen, in jeder Datei oben

Prüfe und lade sie.

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

## 8. Neu starten

Starte den Hauptserver neu.

```sh
sudo systemctl restart palaverd
```

Starte gleich danach jeden weiteren Server neu.

```sh
sudo systemctl restart 'palaverd@*'
```

Zeige ihren Zustand an; erwartet: jeweils `active`.

```sh
systemctl list-units --all 'palaverd*'
```

## 9. LiveKit

Nur bei einer neueren LiveKit-Version in den Versionshinweisen. Zeige die installierte Version an.

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

Lade sie von GitHub herunter.

```sh
curl -fLO https://github.com/livekit/livekit/releases/download/v1.13.7/livekit_1.13.7_linux_amd64.tar.gz
```

Entpacke und installiere das Programm.

```sh
tar -xzf livekit_1.13.7_linux_amd64.tar.gz livekit-server
sudo install -m 755 livekit-server /opt/palaver/bin/livekit-server
```

Starte LiveKit neu; Gespräche auf allen Servern brechen ab.

```sh
sudo systemctl restart livekit
```

## 10. Prüfen

Führe doctor für den Hauptserver aus; erwartet: keine Befunde.

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

Für jeden weiteren Server: Führe doctor aus; erwartet: keine Befunde.

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

Zeige die Version an, die alle Server ausführen.

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

Öffne den Web-Client des Hauptservers und eines weiteren Servers 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
```

Entferne die heruntergeladenen Dateien.

```sh
rm palaverd-0.3.1-linux-amd64 palaver-web-0.3.1.tar.gz
```

## Zurück zur vorigen Version

- für: neue Version funktioniert nicht
- Datenbankänderungen werden nicht zurückgenommen; falls nötig: [Sicherung zurückspielen](#restore-a-dump)

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 den Hauptserver neu.

```sh
sudo systemctl restart palaverd
```

Starte jeden weiteren Server mit dem vorigen palaverd neu.

```sh
sudo systemctl restart 'palaverd@*'
```

### Sicherung zurückspielen

Hauptserver: Halte ihn an.

```sh
sudo systemctl stop palaverd
```

**Destruktiv:** Lösche die Datenbank des Hauptservers (`palaver`, alle Konten und Nachrichten seit der Sicherung).

```sh
sudo -u postgres dropdb palaver
```

Lege sie neu an, lade die Sicherung aus [Schritt 3](#3-back-up-the-main-server) und starte ihn.

```sh
sudo -u postgres createdb -O palaver palaver
sudo -u palaver pg_restore -d palaver palaver-2026-10-10.dump
sudo systemctl start palaverd
```

Für jeden weiteren Server: Halte ihn an.

```sh
sudo systemctl stop palaverd@guild
```

**Destruktiv:** Lösche seine Datenbank (`palaver_guild`, alle Konten und Nachrichten seit der Sicherung).

```sh
sudo -u postgres dropdb palaver_guild
```

Lege sie neu an, lade die Sicherung aus [Schritt 4](#4-back-up-the-further-servers) und starte ihn.

```sh
sudo -u postgres createdb -O palaver-guild palaver_guild
sudo -u palaver-guild pg_restore -d palaver_guild palaver-guild-2026-10-10.dump
sudo systemctl start palaverd@guild
```

## Einmalig: mit palaver-host eingerichtete Hosts

- für: Hosts, die mit `palaver-host` und dem `install.sh` des offenen Bundles eingerichtet wurden
- einmalig, nach [Schritt 10](#10-check)
- Reste: Werkzeuge, gespeicherte Vorlagen, Logs, nginx-Sites mit eingebettetem Web-Client

### Hauptserver

- palaver.social: Landingpage unter `/`, Snippet und Site wie in `docs/server.md` von palaver-social
- Ubuntu 26.04: sudo-rs ohne `sudoedit`, als root bearbeiten

Zeige die Zertifikatsnamen an.

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

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

```sh
sudo cp /etc/nginx/sites-available/palaver /root/nginx-palaver-2026-10-10.conf
```

Öffne `/etc/nginx/snippets/palaver-web.conf` in einem Editor.

```sh
sudo vi /etc/nginx/snippets/palaver-web.conf
```

Inhalt:

```nginx
root /opt/palaver/web;
index index.html;

location / {
    try_files $uri /index.html;
    add_header Cache-Control "no-cache" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; font-src 'self'; connect-src 'self' wss://palaver.social; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer" always;
    add_header Permissions-Policy "camera=(), geolocation=(), payment=()" always;
    add_header Strict-Transport-Security "max-age=31536000" always;
}

location /assets/ {
    try_files $uri =404;
    add_header Cache-Control "public, max-age=31536000, immutable" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; font-src 'self'; connect-src 'self' wss://palaver.social; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Strict-Transport-Security "max-age=31536000" always;
}
```

Öffne `/etc/nginx/sites-available/palaver` in einem Editor.

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

Inhalt; Zertifikatsname von oben in beiden `ssl_certificate`-Zeilen:

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name palaver.social;

    access_log /var/log/nginx/palaver/access.log;
    error_log /var/log/nginx/palaver/error.log;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name palaver.social;

    ssl_certificate /etc/letsencrypt/live/palaver.social/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/palaver.social/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    access_log /var/log/nginx/palaver/access.log;
    error_log /var/log/nginx/palaver/error.log;

    client_max_body_size 64k;

    # server push, one WebSocket per client
    location = /api/events {
        proxy_pass http://127.0.0.1:8090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;
    }

    # profile pictures, server icon: 5 MiB
    location ~ ^/api/(me/avatar|server/icon)$ {
        client_max_body_size 5m;
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # attachments: 25 MiB
    location ~ ^/api/channels/[0-9]+/attachments$ {
        client_max_body_size 25m;
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # LiveKit signalling; the trailing slash strips /livekit
    location /livekit/ {
        proxy_pass http://127.0.0.1:7880/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;
    }

    include snippets/palaver-web.conf;
}
```

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 Installationslog (`/var/log/palaver-install.log`).

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

**Destruktiv:** Entferne den Zertifikatsvermerk von install.sh (`/opt/palaver/etc/cert`, eine Zeile).

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

### Jeder weitere Server

Für jeden weiteren Server: Zeige Domain, Port und Zertifikatsnamen an.

```sh
sudo grep -E '^PALAVER_(PUBLIC_URL|LISTEN)=' /opt/palaver/instances/guild/palaverd.env
sudo cat /opt/palaver/instances/guild/cert
```

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

```sh
sudo cp /etc/nginx/sites-available/palaver-guild /root/nginx-palaver-guild-2026-10-10.conf
```

Öffne `/etc/nginx/snippets/palaver-web-guild.conf` in einem Editor.

```sh
sudo vi /etc/nginx/snippets/palaver-web-guild.conf
```

Inhalt:

```nginx
root /opt/palaver/web;
index index.html;

location / {
    try_files $uri /index.html;
    add_header Cache-Control "no-cache" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; font-src 'self'; connect-src 'self' wss://guild.palaver.social; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer" always;
    add_header Permissions-Policy "camera=(), geolocation=(), payment=()" always;
    add_header Strict-Transport-Security "max-age=31536000" always;
}

location /assets/ {
    try_files $uri =404;
    add_header Cache-Control "public, max-age=31536000, immutable" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; font-src 'self'; connect-src 'self' wss://guild.palaver.social; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Strict-Transport-Security "max-age=31536000" always;
}
```

Öffne `/etc/nginx/sites-available/palaver-guild` in einem Editor.

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

Inhalt; sein Port in jedem `proxy_pass` zu palaverd, sein Zertifikatsname in beiden `ssl_certificate`-Zeilen:

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name guild.palaver.social;

    access_log /var/log/nginx/palaver/guild.access.log;
    error_log /var/log/nginx/palaver/guild.error.log;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name guild.palaver.social;

    ssl_certificate /etc/letsencrypt/live/palaver.social/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/palaver.social/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    access_log /var/log/nginx/palaver/guild.access.log;
    error_log /var/log/nginx/palaver/guild.error.log;

    client_max_body_size 64k;

    # server push, one WebSocket per client
    location = /api/events {
        proxy_pass http://127.0.0.1:8091;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;
    }

    # profile pictures, server icon: 5 MiB
    location ~ ^/api/(me/avatar|server/icon)$ {
        client_max_body_size 5m;
        proxy_pass http://127.0.0.1:8091;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # attachments: 25 MiB
    location ~ ^/api/channels/[0-9]+/attachments$ {
        client_max_body_size 25m;
        proxy_pass http://127.0.0.1:8091;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:8091;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # LiveKit signalling, shared; the trailing slash strips /livekit
    location /livekit/ {
        proxy_pass http://127.0.0.1:7880/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;
    }

    include snippets/palaver-web-guild.conf;
}
```

Prüfe und lade sie.

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

Öffne `/opt/palaver/instances/guild/palaverd.env` in einem Editor.

```sh
sudo vi /opt/palaver/instances/guild/palaverd.env
```

Ändere:

- die Kommentarzeilen von palaver-host (`#`) entfernen
- am Ende hinzufügen, für die Hinweise von doctor:

```ini
PALAVER_CTL="sudo -u palaver-guild /opt/palaver/bin/palaverd -env /opt/palaver/instances/guild/palaverd.env"
PALAVER_UNIT=palaverd@guild
PALAVER_ENV_FILE=/opt/palaver/instances/guild/palaverd.env
```

Prüfe sie.

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

**Destruktiv:** Entferne den Zertifikatsvermerk von palaver-host (`/opt/palaver/instances/guild/cert`, eine Zeile).

```sh
sudo rm /opt/palaver/instances/guild/cert
```

### Der Host

Die Unit-Vorlage bleibt. Zeige sie an; erwartet: `User=palaver-%i`, `EnvironmentFile=/opt/palaver/instances/%i/palaverd.env`,
`ExecStart=/opt/palaver/bin/palaverd serve`, `LogNamespace=palaver`.

```sh
grep -v '^#' /etc/systemd/system/palaverd@.service
```

Zeige die aktivierten Sites an.

```sh
ls /etc/nginx/sites-enabled/
```

Mit `palaver-catch-all`: Öffne sie in einem Editor.

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

Inhalt:

```nginx
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    location /.well-known/acme-challenge/ { root /var/www/html; }
    location / { return 301 https://palaver.social/; }
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    ssl_certificate /etc/letsencrypt/live/palaver.social/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/palaver.social/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    return 301 https://palaver.social/;
}
```

Prüfe und lade sie.

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

**Destruktiv:** Entferne das Werkzeug (`/usr/local/sbin/palaver-host`).

```sh
sudo rm /usr/local/sbin/palaver-host
```

**Destruktiv:** Entferne die gespeicherten nginx-Vorlagen (`/opt/palaver/hosting/templates/`, zwei Dateien).

```sh
sudo rm -r /opt/palaver/hosting
```

**Destruktiv:** Entferne das Log von palaver-host (`/var/log/palaver-hosting.log`).

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

**Destruktiv:** Entferne entpackte Bundles und Tarballs in deinem Home-Verzeichnis (`palaver-server-*`,
`palaver-hosting-*`); erst auflisten, dann mit Rückfrage entfernen.

```sh
ls -d ~/palaver-server-* ~/palaver-hosting-*
rm -ri ~/palaver-server-* ~/palaver-hosting-*
```

## Einmalig: der Rechner, auf dem palaver-ops lief

**Destruktiv:** Entferne `palaver-ops` (`~/.local/bin/palaver-ops`).

```sh
rm ~/.local/bin/palaver-ops
```

**Destruktiv:** Entferne seine Serverliste (`~/.config/palaver-ops/servers.json`).

```sh
cat ~/.config/palaver-ops/servers.json
rm -r ~/.config/palaver-ops
```
