Einen Host mit mehreren Palaver-Servern aktualisieren
- Voraussetzung: Host nach der Anleitung für mehrere Server eingerichtet
- ein
/opt/palaver/bin/palaverdfür alle Server; weitere Server: alte Version bis zum Neustart, gleich nach dem Hauptserver neu starten
1. Hauptserver: Versionshinweise, Sicherung
Palavers UPDATE.md, Schritte 1–2; bleib im Arbeitsverzeichnis aus Schritt 2.
2. Weitere Server sichern
Zeige die weiteren Server an.
ls /opt/palaver/instances/
Sichere die Datenbank jedes Servers ins Arbeitsverzeichnis.
for NAME in $(ls /opt/palaver/instances/); do sudo -u "palaver-$NAME" pg_dump -Fc "palaver_${NAME//-/_}" > "palaver-$NAME-$(date +%F).dump"; done
Sichere ihre Konfiguration.
sudo tar -czf "palaver-instances-$(date +%F).tar.gz" -C /opt/palaver instances
Prüfe die Sicherungen; erwartet: keine leer.
ls -l palaver-*.dump
3. Hauptserver: das Update
Palavers UPDATE.md, Schritte 3–8.
/opt/palaver/web.old,/opt/palaver/bin/palaverd.oldbis Schritt 6 behalten- Neustart von LiveKit: Gespräche auf allen Servern brechen ab
- ändern die Versionshinweise Palavers Site (
INSTALL.md, Schritt 10): auch jede/etc/nginx/sites-available/palaver-<name>, mit Port, Logs und Snippet dieses Servers
4. Web-Snippets
- für: Versionshinweise ändern das Web-Snippet (
palaver-web.conf) - je Server:
NAME,DOMAINsetzen; Anleitung für mehrere Server, Schritt 11, Block „Schreibe das Web-Snippet des Servers“
Prüfe und lade sie.
sudo nginx -t && sudo systemctl reload nginx
5. Weitere Server neu starten
Starte jeden weiteren Server neu; Datenbank-Update beim Start, Clients verbinden sich neu.
sudo systemctl restart 'palaverd@*'
Zeige ihren Zustand an; erwartet: jeweils active.
systemctl list-units --all 'palaverd*'
6. Prüfen
Führe doctor für jeden weiteren Server aus; erwartet: kein Befund.
for NAME in $(ls /opt/palaver/instances/); do echo "== $NAME"; sudo -u "palaver-$NAME" /opt/palaver/bin/palaverd -env "/opt/palaver/instances/$NAME/palaverd.env" doctor; done
Zeige die Version an, mit der jeder Server läuft.
/opt/palaver/bin/palaverd version
Öffne den Web-Client eines weiteren Servers und melde dich an.
Entferne /opt/palaver/web.old, /opt/palaver/bin/palaverd.old: Palavers UPDATE.md, Ende von Schritt 8.
Zurück zur vorigen Version
- für: neue Version funktioniert nicht
Hauptserver: Palavers UPDATE.md, Zurück zur vorigen Version.
Starte jeden weiteren Server mit dem vorigen palaverd neu.
sudo systemctl restart 'palaverd@*'
- Datenbankänderungen bleiben; falls nötig: Sicherung aus Schritt 2, Anleitung für mehrere Server, Wiederherstellen, ohne den Server neu anzulegen
Einmalig: mit palaver-host eingerichtete Hosts
- für: mit
palaver-hostund deminstall.shdes offenen Pakets eingerichtete Hosts - einmalig, nach Schritt 6
- Altlasten: Werkzeug, gespeicherte Vorlagen, Protokoll, nginx-Sites mit eingebettetem Web-Client
Hauptserver
Palavers UPDATE.md, Einmalig: mit install.sh eingerichtete Server.
- palaver.social: Landingpage unter
/, nginx wie indocs/server.mdvon palaver-social - palaver.social: Wildcard-Zertifikat
palaver.social, beidessl_certificate-Zeilen korrigieren - Ubuntu 26.04: sudo-rs ohne
sudoedit, als root bearbeiten
sudo nano /etc/nginx/sites-available/palaver
Destruktiv: Entferne die Zertifikatsnotiz von install.sh (/opt/palaver/etc/cert, eine Zeile).
sudo cat /opt/palaver/etc/cert
sudo rm /opt/palaver/etc/cert
Jeder weitere Server
Je Server: setze den Namen und lies seine Einstellungen.
NAME=guild
SRV_USER=palaver-$NAME
CONF=/opt/palaver/instances/$NAME
UNIT=palaverd@$NAME
DOMAIN=$(sudo sed -n 's#^PALAVER_PUBLIC_URL=https://##p' "$CONF/palaverd.env"); echo "$DOMAIN"
PORT=$(sudo sed -n 's/^PALAVER_LISTEN=.*://p' "$CONF/palaverd.env"); echo "$PORT"
CERT=$(sudo cat "$CONF/cert"); echo "$CERT"
Bewahre die alte nginx-Site außerhalb der nginx-Verzeichnisse auf.
sudo cp "/etc/nginx/sites-available/palaver-$NAME" "/root/nginx-palaver-$NAME-$(date +%F).conf"
Schreibe das Web-Snippet und die vollständige Site: Anleitung für mehrere Server, Schritt 11, Blöcke „Schreibe das Web-Snippet des Servers“ und „Schreibe die vollständige Site“.
Prüfe und lade sie.
sudo nginx -t && sudo systemctl reload nginx
Ergänze die Zeilen für doctor in der Konfiguration.
sudo tee -a "$CONF/palaverd.env" >/dev/null <<EOF
PALAVER_CTL="sudo -u $SRV_USER /opt/palaver/bin/palaverd -env $CONF/palaverd.env"
PALAVER_UNIT=$UNIT
PALAVER_ENV_FILE=$CONF/palaverd.env
EOF
Zeige die Kommentarzeilen von palaver-host in der Konfiguration an.
sudo grep '^#' "$CONF/palaverd.env"
Entferne sie.
sudo sed -i '/^#/d' "$CONF/palaverd.env"
Prüfe sie.
sudo -u "$SRV_USER" /opt/palaver/bin/palaverd -env "$CONF/palaverd.env" doctor
Destruktiv: Entferne die Zertifikatsnotiz von palaver-host ($CONF/cert, eine Zeile); steht jetzt in der Site.
sudo rm "$CONF/cert"
Der Host
Die Unit-Vorlage bleibt. Vergleiche sie mit Anleitung für mehrere Server, Schritt 5.
grep -v '^#' /etc/systemd/system/palaverd@.service
Zeige die aktiven Sites an. Mit palaver-catch-all: neu schreiben, Anleitung für mehrere Server, Optional: unbekannte
Namen zum Hauptserver, ab „Schreibe die Catch-all-Site“.
ls /etc/nginx/sites-enabled/
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 Protokoll von palaver-host (/var/log/palaver-hosting.log).
sudo rm /var/log/palaver-hosting.log
Destruktiv: Entferne entpackte Pakete und Archive 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
Updating a host with several Palaver servers
- prerequisite: host set up per the guide for several servers
- one
/opt/palaver/bin/palaverdfor all servers; further servers: old version until restarted, restart right after the main server
1. Main server: release notes, backup
Palaver's UPDATE.md, steps 1–2; stay in the working directory of step 2.
2. Back up the further servers
Show the further servers.
ls /opt/palaver/instances/
Dump every server's database into the working directory.
for NAME in $(ls /opt/palaver/instances/); do sudo -u "palaver-$NAME" pg_dump -Fc "palaver_${NAME//-/_}" > "palaver-$NAME-$(date +%F).dump"; done
Save their configuration.
sudo tar -czf "palaver-instances-$(date +%F).tar.gz" -C /opt/palaver instances
Check the dumps; expected: none empty.
ls -l palaver-*.dump
3. Main server: the update
Palaver's UPDATE.md, steps 3–8.
- keep
/opt/palaver/web.old,/opt/palaver/bin/palaverd.olduntil step 6 - LiveKit restart: calls on every server drop
- release notes changing Palaver's site (
INSTALL.md, step 10): also every/etc/nginx/sites-available/palaver-<name>, with that server's port, logs and snippet
4. Web snippets
- for: release notes change the web snippet (
palaver-web.conf) - per server: set
NAME,DOMAIN; the guide for several servers, step 11, block "Write the server's web snippet"
Check and load them.
sudo nginx -t && sudo systemctl reload nginx
5. Restart the further servers
Restart every further server; database update on start, clients reconnect.
sudo systemctl restart 'palaverd@*'
Show their state; expected: active each.
systemctl list-units --all 'palaverd*'
6. Check
Run doctor for every further server; expected: no findings.
for NAME in $(ls /opt/palaver/instances/); do echo "== $NAME"; sudo -u "palaver-$NAME" /opt/palaver/bin/palaverd -env "/opt/palaver/instances/$NAME/palaverd.env" doctor; done
Show the version every server runs.
/opt/palaver/bin/palaverd version
Open one further server's web client and log in.
Remove /opt/palaver/web.old, /opt/palaver/bin/palaverd.old: Palaver's UPDATE.md, end of step 8.
Back to the previous version
- for: new version does not work
Main server: Palaver's UPDATE.md, Back to the previous version.
Restart every further server on the previous palaverd.
sudo systemctl restart 'palaverd@*'
- database changes are not undone; if needed: dump from step 2, the guide for several servers, Restore without adding the server again
Once: hosts set up with palaver-host
- for: hosts set up with
palaver-hostand the open bundle'sinstall.sh - once, after step 6
- leftovers: tool, saved templates, log, nginx sites with the web client inline
Main server
Palaver's UPDATE.md, Once: servers installed with install.sh.
- palaver.social: landing page at
/, snippet from Palaver'sINSTALL.md, Optional: landing page at / - palaver.social: wildcard certificate
palaver.social, correct bothssl_certificatelines - Ubuntu 26.04: sudo-rs without
sudoedit, edit as root
sudo nano /etc/nginx/sites-available/palaver
Destructive: remove install.sh's certificate note (/opt/palaver/etc/cert, one line).
sudo cat /opt/palaver/etc/cert
sudo rm /opt/palaver/etc/cert
Every further server
Per server: set the name and read its settings.
NAME=guild
SRV_USER=palaver-$NAME
CONF=/opt/palaver/instances/$NAME
UNIT=palaverd@$NAME
DOMAIN=$(sudo sed -n 's#^PALAVER_PUBLIC_URL=https://##p' "$CONF/palaverd.env"); echo "$DOMAIN"
PORT=$(sudo sed -n 's/^PALAVER_LISTEN=.*://p' "$CONF/palaverd.env"); echo "$PORT"
CERT=$(sudo cat "$CONF/cert"); echo "$CERT"
Keep the old nginx site outside nginx's directories.
sudo cp "/etc/nginx/sites-available/palaver-$NAME" "/root/nginx-palaver-$NAME-$(date +%F).conf"
Write the web snippet and the full site: the guide for several servers, step 11, blocks "Write the server's web snippet" and "Write the full site".
Check and load them.
sudo nginx -t && sudo systemctl reload nginx
Add the doctor lines to the configuration.
sudo tee -a "$CONF/palaverd.env" >/dev/null <<EOF
PALAVER_CTL="sudo -u $SRV_USER /opt/palaver/bin/palaverd -env $CONF/palaverd.env"
PALAVER_UNIT=$UNIT
PALAVER_ENV_FILE=$CONF/palaverd.env
EOF
Show palaver-host's comment lines in the configuration.
sudo grep '^#' "$CONF/palaverd.env"
Remove them.
sudo sed -i '/^#/d' "$CONF/palaverd.env"
Check it.
sudo -u "$SRV_USER" /opt/palaver/bin/palaverd -env "$CONF/palaverd.env" doctor
Destructive: remove palaver-host's certificate note ($CONF/cert, one line); now in the site.
sudo rm "$CONF/cert"
The host
Unit template stays. Compare with the guide for several servers, step 5.
grep -v '^#' /etc/systemd/system/palaverd@.service
Show the enabled sites. With palaver-catch-all: rewrite it, the guide for several servers, Optional: unknown names to the main
server, from "Write the catch-all site".
ls /etc/nginx/sites-enabled/
Destructive: remove the tool (/usr/local/sbin/palaver-host).
sudo rm /usr/local/sbin/palaver-host
Destructive: remove the saved nginx templates (/opt/palaver/hosting/templates/, two files).
sudo rm -r /opt/palaver/hosting
Destructive: remove palaver-host's log (/var/log/palaver-hosting.log).
sudo rm /var/log/palaver-hosting.log
Destructive: remove unpacked bundles and tarballs in your home directory (palaver-server-*,
palaver-hosting-*); list, then remove with confirmation.
ls -d ~/palaver-server-* ~/palaver-hosting-*
rm -ri ~/palaver-server-* ~/palaver-hosting-*
Once: the machine palaver-ops ran on
Destructive: remove palaver-ops (~/.local/bin/palaver-ops).
rm ~/.local/bin/palaver-ops
Destructive: remove its list of servers (~/.config/palaver-ops/servers.json).
cat ~/.config/palaver-ops/servers.json
rm -r ~/.config/palaver-ops