// palaver · doku · mehrere server aktualisieren · release-dateien

Mehrere Palaver-Server aktualisieren (Release-Dateien)

zuletzt geändert

Platzhalter in den Befehlen:

Platzhalter Ersetzen durch
0.3.2 neue Palaver-Version; aktuelle Version: Schritt 2
palaver.social die Domain des Hauptservers; in /etc/letsencrypt/live/palaver.social/: den Namen des Zertifikats
<server> den Namen eines weiteren Servers; ein - im Namen wird im Datenbanknamen zu _ (z. B. my-server → palaver_my_server); Befehle mit „für jeden weiteren Server“: einmal für jeden
<domain> die Domain dieses weiteren Servers
<port> den Port dieses weiteren Servers
2026-10-11 das heutige Datum (Namen der Sicherungsdateien)
1.13.7 LiveKit-Version aus den Versionshinweisen
vi Editor deiner Wahl

1. Versionshinweise

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

Zeige die installierte Version an.

/opt/palaver/bin/palaverd version

2. Palaver herunterladen

Auf dem Host, in deinem Home-Verzeichnis: Zeige die aktuelle Version an.

curl -fsS https://palaver.social/download/latest

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

curl -fLO https://palaver.social/download/v0.3.2/palaverd-0.3.2-linux-amd64
curl -fLO https://palaver.social/download/v0.3.2/palaver-web-0.3.2.tar.gz
curl -fLO https://palaver.social/download/v0.3.2/SHA256SUMS

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

sha256sum -c SHA256SUMS

3. Hauptserver sichern

Sichere die Datenbank.

sudo -u palaver pg_dump -Fc palaver > palaver-2026-10-11.dump

Sichere die Konfiguration.

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

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

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

4. Weitere Server sichern

Zeige die weiteren Server an.

ls /opt/palaver/instances/

Für jeden weiteren Server: Sichere seine Datenbank.

sudo -u palaver-<server> pg_dump -Fc palaver_<server> > palaver-<server>-2026-10-11.dump

Sichere ihre Konfiguration.

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

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

ls -l palaver-*.dump

5. palaverd

Installiere das neue palaverd.

sudo install -m 755 palaverd-0.3.2-linux-amd64 /opt/palaver/bin/palaverd

6. Web-Client

Entpacke den neuen Web-Client neben den alten.

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

Tausche sie.

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 Sites ändern. Öffne das Web-Snippet in einem Editor.

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

Öffne die Site des Hauptservers in einem Editor.

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

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

sudo vi /etc/nginx/sites-available/palaver-<server>

Ändere:

  • was die Versionshinweise sagen, in jeder Datei oben

Prüfe und lade sie.

sudo nginx -t && sudo systemctl reload nginx

8. Neu starten

Starte den Hauptserver neu.

sudo systemctl restart palaverd

Starte gleich danach jeden weiteren Server neu.

sudo systemctl restart 'palaverd@*'

Zeige ihren Zustand an; erwartet: jeweils active.

systemctl list-units --all 'palaverd*'

9. LiveKit

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

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

Lade sie von GitHub herunter.

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.

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.

sudo systemctl restart livekit

10. Prüfen

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

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.

sudo -u palaver-<server> /opt/palaver/bin/palaverd -env /opt/palaver/instances/<server>/palaverd.env doctor

Zeige die installierte Version an.

/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).

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

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

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

Entferne die heruntergeladenen Dateien.

rm palaverd-0.3.2-linux-amd64 palaver-web-0.3.2.tar.gz SHA256SUMS

Zurück zur vorigen Version

  • für: neue Version funktioniert nicht
  • Datenbankänderungen werden nicht zurückgenommen; falls nötig: Sicherung zurückspielen

Setze das vorige palaverd wieder ein.

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

Setze den vorigen Web-Client wieder ein.

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

Starte den Hauptserver neu.

sudo systemctl restart palaverd

Starte jeden weiteren Server mit dem vorigen palaverd neu.

sudo systemctl restart 'palaverd@*'

Sicherung zurückspielen

Hauptserver: Halte ihn an.

sudo systemctl stop palaverd

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

sudo -u postgres dropdb palaver

Lege sie neu an, lade die Sicherung aus Schritt 3 und starte ihn.

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

Für jeden weiteren Server: Halte ihn an.

sudo systemctl stop palaverd@<server>

Destruktiv: Lösche seine Datenbank (palaver_<server>, alle Konten und Nachrichten seit der Sicherung).

sudo -u postgres dropdb palaver_<server>

Lege sie neu an, lade die Sicherung aus Schritt 4 und starte ihn.

sudo -u postgres createdb -O palaver-<server> palaver_<server>
sudo -u palaver-<server> pg_restore -d palaver_<server> palaver-<server>-2026-10-11.dump
sudo systemctl start palaverd@<server>

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
  • Reste: Werkzeuge, gespeicherte Vorlagen, Logs, nginx-Sites mit eingebettetem Web-Client

Web-Snippet

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

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

Inhalt:

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://$host; 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://$host; 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;
}

Für jeden weiteren Server mit eigenem Snippet (palaver-web-<server>.conf): Öffne seine Site in einem Editor.

sudo vi /etc/nginx/sites-available/palaver-<server>

Ändere:

  • include snippets/palaver-web-<server>.conf; → include snippets/palaver-web.conf;

Prüfe und lade nginx.

sudo nginx -t && sudo systemctl reload nginx

Destruktiv: Für jeden weiteren Server mit eigenem Snippet: Entferne es (/etc/nginx/snippets/palaver-web-<server>.conf).

sudo rm /etc/nginx/snippets/palaver-web-<server>.conf

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.

sudo ls /etc/letsencrypt/live/

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

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

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

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

Inhalt; Zertifikatsname von oben in beiden ssl_certificate-Zeilen:

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;

    # largest default body: a minutes update, 1 MiB
    client_max_body_size 2m;

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

sudo nginx -t && sudo systemctl reload nginx

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

sudo rm /usr/local/sbin/palaverctl

Destruktiv: Entferne das Installationslog (/var/log/palaver-install.log).

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

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

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.

sudo grep -E '^PALAVER_(PUBLIC_URL|LISTEN)=' /opt/palaver/instances/<server>/palaverd.env
sudo cat /opt/palaver/instances/<server>/cert

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

sudo cp /etc/nginx/sites-available/palaver-<server> /root/nginx-palaver-<server>-2026-10-11.conf

Öffne /etc/nginx/sites-available/palaver-<server> in einem Editor.

sudo vi /etc/nginx/sites-available/palaver-<server>

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

server {
    listen 80;
    listen [::]:80;
    server_name <domain>;

    access_log /var/log/nginx/palaver/<server>.access.log;
    error_log /var/log/nginx/palaver/<server>.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 <domain>;

    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/<server>.access.log;
    error_log /var/log/nginx/palaver/<server>.error.log;

    # largest default body: a minutes update, 1 MiB
    client_max_body_size 2m;

    # server push, one WebSocket per client
    location = /api/events {
        proxy_pass http://127.0.0.1:<port>;
        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:<port>;
        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:<port>;
        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:<port>;
        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.conf;
}

Prüfe und lade sie.

sudo nginx -t && sudo systemctl reload nginx

Öffne /opt/palaver/instances/<server>/palaverd.env in einem Editor.

sudo vi /opt/palaver/instances/<server>/palaverd.env

Ändere:

  • die Kommentarzeilen von palaver-host (#) entfernen
  • am Ende hinzufügen, für die Hinweise von doctor:
PALAVER_CTL="sudo -u palaver-<server> /opt/palaver/bin/palaverd -env /opt/palaver/instances/<server>/palaverd.env"
PALAVER_UNIT=palaverd@<server>
PALAVER_ENV_FILE=/opt/palaver/instances/<server>/palaverd.env

Prüfe sie.

sudo -u palaver-<server> /opt/palaver/bin/palaverd -env /opt/palaver/instances/<server>/palaverd.env doctor

Destruktiv: Entferne den Zertifikatsvermerk von palaver-host (/opt/palaver/instances/<server>/cert, eine Zeile).

sudo rm /opt/palaver/instances/<server>/cert

Der Host

Zeige die aktivierten Sites an.

ls /etc/nginx/sites-enabled/

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

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

Inhalt:

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.

sudo nginx -t && sudo systemctl reload nginx

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

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

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

sudo rm -r /opt/palaver/hosting

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

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.

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).

rm ~/.local/bin/palaver-ops

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

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