uVersion
Deutsch
Herunterladen →

Wiki

Auf Ubuntu / Debian installieren

Das .deb-Paket: die drei Fragen, das Datenverzeichnis, Offline-Installation, Sicherung und Deinstallation.

Ubuntu 24.04+, Debian 13+ (x86_64). Zwei Befehle, drei Fragen.

Installieren

1. Paket herunterladen

Von der Maschine aus, die den Server beherbergen wird, in einer gewöhnlichen Sitzung:

cd /tmp && wget -N https://uversion.io/downloads/server/uversion-server_latest_amd64.deb

Die URL _latest_ zeigt immer auf die zuletzt veröffentlichte Version. Das Flag -N weist wget an, nur dann erneut herunterzuladen, wenn die entfernte Datei neuer ist: praktisch zum Aktualisieren, ohne Kopien wie .deb.1, .deb.2 usw. anzuhäufen. cd /tmp vermeidet eine kosmetische apt-Warnung ("unsandboxed as root"), wenn die .deb in Ihrem Home-Verzeichnis liegt.

2. Die Installation starten

Ein einziger Befehl, in dem Verzeichnis, in das Sie das Paket gerade heruntergeladen haben:

sudo apt install ./uversion-server_latest_amd64.deb

Das Installationsprogramm stellt dann drei Fragen, in der Reihenfolge der drei folgenden Schritte. Sie erscheinen in einem blauen Vollbild-Dialog: Sie bewegen sich mit Tab und bestätigen mit Enter.

3. Antworten: das Datenverzeichnis

Standard: /var/lib/uversion. Hier landet der Inhalt Ihrer versionierten Dateien, also das Verzeichnis, das wächst, also dasjenige, das Sie auf Ihrer großen Platte haben wollen. Nicht jeder Pfad wird akzeptiert: der Abschnitt Ein Datenverzeichnis wählen nennt die vier Regeln, und das Installationsprogramm lehnt ab und benennt dabei die verletzte Regel.

Die erste Frage des Debian-Installationsprogramms, in einem blauen Vollbild-Dialog: der Pfad des Datenverzeichnisses, vorausgefüllt mit /var/lib/uversion.

4. Antworten: die Datenbank auch auf das Datenverzeichnis legen?

Standard: nein. Das ist die folgenreichste Frage der Installation, und dieser Standard hat einen Preis, den man kennen sollte, bevor man ihn so belässt.

Diese Antwort entscheidet, ob eine einzige Platte genügt, um Ihren Server wiederherzustellen.

  • Nein (Standard): Die PostgreSQL-Datenbank bleibt im Systemverzeichnis (/var/lib/postgresql), getrennt von Ihren Daten. Stirbt die Maschine, enthält die überlebende Datenplatte den Dateiinhalt, aber keine Revision mehr, kein Konto, keine Sperre und keine Berechtigung. Das ist kein Server, den man neu startet: es ist ein Haufen Bytes.
  • Ja: Das Installationsprogramm legt eine eigene Datenbank innerhalb des Datenverzeichnisses an und schreibt dort eine Wiederherstellungsprozedur hinein. Eine einzige überlebende Platte, plus PostgreSQL und dieses Paket, genügen dann, um den Server auf einer anderen Maschine neu aufzubauen.

Zwei Kehrseiten, die man vor einem Ja kennen sollte. Dieses Datenbankverzeichnis lässt sich nur von der Hauptversion von PostgreSQL, die es erstellt hat, wieder öffnen, sodass ein Wiederaufbau in mehreren Jahren erfordern kann, diese Version ausdrücklich zu installieren. Und die Platte trägt dann auch den Lizenzschlüssel, das JWT-Geheimnis und das Datenbankpasswort: behandeln Sie sie als Geheimnis. Diese Antwort lässt sich später mit sudo dpkg-reconfigure uversion-server ändern.

5. Antworten: der Aktivierungscode

Erforderlich, außer eine Lizenz ist bereits auf der Maschine oder auf der in Schritt 3 gewählten Platte vorhanden: in diesem Fall kündigt das Installationsprogramm es Ihnen in einer eigenen Meldung an und stellt die Frage nicht, denn ein Aktivierungscode ist zur einmaligen Verwendung, und Ihrer wurde bereits von der Maschine verbraucht, von der diese Platte stammt.

Das Feld akzeptiert drei Formen, was Ihr Ausweg ist, wenn die Maschine kein Internet hat: der Kurzcode UV-XXXX-XXXX-XXXX, ein absoluter Pfad zu einer Datei, die Ihren vollständigen Lizenzschlüssel enthält, oder dieser vollständige Schlüssel direkt eingefügt (eine lange Zeichenkette, die mit eyJ beginnt). Nur bei der ersten Form kontaktiert das Installationsprogramm licence.uversion.io, um den Code gegen den vollständigen Schlüssel einzutauschen.

6. Notieren, was am Ende angezeigt wird

Die Installation endet mit einem farbigen Kasten: admin-Benutzername, temporäres Passwort, Serveradresse und Zertifikat-Fingerabdruck. Notieren Sie sie: die Datei, die dieses Passwort enthält, wird gelöscht, sobald Sie es ändern.

Die am Ende der Installation angezeigte Übersicht: Admin-Benutzername, temporäres Passwort und Serveradresse.

Anschließend können Sie mit Erste Anmeldung fortfahren.

Eine unterbrochene Installation lässt sich gefahrlos erneut starten. Wenn Sie das Fenster schließen, das Netz ausfällt oder das Installationsprogramm mit einem Fehler stoppt, führen Sie einfach denselben apt install-Befehl erneut aus. Ihr Aktivierungscode ist nicht wieder verloren: sobald er eingetauscht wurde, wird der erhaltene Schlüssel auf die Platte geschrieben und bei späteren Versuchen wiederverwendet. Und um nachträglich auf jede beliebige Antwort zurückzukommen, ohne neu zu installieren: sudo dpkg-reconfigure uversion-server. Das ist der universelle Nachhol-Befehl dieser Seite.

Ein Datenverzeichnis wählen, das das Installationsprogramm akzeptiert

Vier Regeln. Die ersten drei werden vor dem Verbrauch Ihres Aktivierungscodes geprüft, eine Ablehnung kostet Sie also nichts: Sie korrigieren und beginnen von vorn.

  • Weder unter /home noch unter /root. Der Server läuft unter einem Systemkonto, dem jeder Zugriff auf persönliche Verzeichnisse bewusst entzogen ist: es könnte dort niemals lesen oder schreiben und würde nicht starten.
  • Kein Leerzeichen im Pfad. Der Pfad wird unverändert in die Diensteinstellungen kopiert, wo ein Leerzeichen zwei Werte trennt. Eine externe Platte, die automatisch unter einem Namen wie /media/jean/My Book eingehängt wird, tappt genau darein.
  • Ein absoluter Pfad, das heißt beginnend mit /.
  • Jedes übergeordnete Verzeichnis muss die Konten uversion und postgres durchlassen. Das ist die unauffälligste Falle, und sie zeigt sich nicht, wenn man als root installiert: ein von Hand angelegtes und geschlossenes übergeordnetes Verzeichnis (etwa ein /perforce mit root:root 0750, von einem Helix-Depot geerbt) lässt die ganze Installation durch und blockiert dann den Dienst beim ersten Zugriff. Das Symptom ist ein Dienst, der den Start mit status=200/CHDIR verweigert, oder ein "Permission denied" beim ersten Schreiben.

Um diesen letzten Punkt vor dem Start der Installation zu prüfen, zeigen Sie die Berechtigungen der gesamten Verzeichniskette an, die zu Ihrer Wahl führt:

namei -l /srv/uversion        # remplacez par le chemin que vous voulez utiliser

Jede Zeile muss ein x in der letzten Berechtigungsspalte tragen (der für die „anderen“). Fehlt eines, benennt das Installationsprogramm das schuldige Verzeichnis und den genauen Befehl, den Sie ausführen müssen, in der Art sudo chmod o+x /le/dossier. Es ändert niemals selbst ein Verzeichnis, das ihm nicht gehört: einen Zugang in Ihrem Baum zu öffnen, ist Ihre Entscheidung, nicht seine.

Wohin die Dateien gehen

Zwei Orte, und nur einer der beiden folgt Ihnen, wenn Sie das Datenverzeichnis ändern.

Im Datenverzeichnis (dem aus Frage 1): der Inhalt Ihrer versionierten Dateien (unter data/chunks), das TLS-Zertifikat und sein Fingerabdruck (unter data/tls), die Serveridentität (server-id, last-validated-at), das anfängliche Administratorpasswort (initial-admin-password, gelöscht, sobald Sie es ändern), die PostgreSQL-Datenbank (pgdata) und das Wiederherstellungspaket (recovery), falls Sie Frage 2 mit Ja beantwortet haben.

In /etc/uversion/, das sich nie bewegt: die Konfigurationsdatei config.toml, die nackte Kopie des Lizenzschlüssels (licence-key) und das Datenbankpasswort (db-password).

Alle Befehle auf dieser Seite verwenden <data-dir> anstelle eines fest verdrahteten Pfads, weil dieser Pfad derjenige ist, den Sie gewählt haben. Um den echten Wert auf einer bereits installierten Maschine zu lesen:

sudo sed -n 's/^WorkingDirectory=//p' /etc/systemd/system/uversion-server.service.d/10-data-dir.conf

Installation überprüfen

Drei unabhängige Prüfungen, in dieser Reihenfolge durchzuführen: der Dienst läuft, er lauscht, und er hat nichts gemeldet.

1. Der Dienst läuft

systemctl status uversion-server

Erwartet: active (running). Jeder andere Wert verweist auf die Fehlerbehebung.

2. Der Server lauscht über HTTPS auf 8443

ss -tlnp | grep 8443

Eine Zeile muss erscheinen. Kommt nichts heraus, obwohl der Dienst läuft, wurde in der Regel TLS in der Konfiguration deaktiviert: der Server wechselt dann in einfaches HTTP, und 8443 lauscht überhaupt nicht mehr.

3. Die Protokolle zeigen keinen Fehler

sudo journalctl -u uversion-server -n 50

journalctl ist der Protokoll-Leser des Systems: hier schreibt der Server, was er tut, und es ist der erste Ort, an dem man nachsieht, wenn etwas nicht startet.

Den Zertifikat-Fingerabdruck erneut anzeigen

Indem Sie <data-dir> durch den oben gelesenen Wert ersetzen:

sudo cat <data-dir>/data/tls/fingerprint

Das anfängliche Administratorpasswort erneut anzeigen

Solange es nicht geändert wurde, ist es noch auf der Platte:

sudo cat <data-dir>/initial-admin-password

„No such file or directory“ bedeutet hier, dass das Passwort bereits geändert wurde: das ist das erwartete Verhalten, die Datei wird in diesem Moment gelöscht.

Nicht-interaktive und Offline-Installation

Zwei verschiedene Bedürfnisse, ein und dieselbe Mechanik: die Antworten vorab ausfüllen, bevor man apt startet, sodass keine Frage erscheint. Das System, das diese Antworten speichert, heißt debconf und wird über die Kommandozeile gesteuert.

1. Die drei Antworten vorab ausfüllen

Eine Zeile pro Frage, genau die drei aus der interaktiven Installation:

echo 'uversion-server uversion-server/data-dir string /srv/uversion' | sudo debconf-set-selections
echo 'uversion-server uversion-server/db-on-data-dir boolean true'   | sudo debconf-set-selections
echo 'uversion-server uversion-server/licence-key string UV-XXXX-XXXX-XXXX' | sudo debconf-set-selections

2. Ohne Dialog installieren

Da die Antworten bereits gesetzt sind, fragt die Installation nichts mehr:

sudo DEBIAN_FRONTEND=noninteractive apt install -y ./uversion-server_latest_amd64.deb

Offline-Variante: den Schlüssel statt des Codes angeben

In einem Netz ohne Internetzugang kann der Aktivierungscode nicht eingetauscht werden: es ist niemand da, den man erreichen könnte. Holen Sie dann Ihren vollständigen Lizenzschlüssel aus Ihrem Kontobereich auf einem verbundenen Arbeitsplatz, legen Sie ihn auf der Maschine ab und geben Sie in Schritt 1 oben den Dateipfad statt des Codes an. Das ist der einzige Ausweg, und er ist vorgesehen:

echo 'uversion-server uversion-server/licence-key string /root/uversion-licence.key' | sudo debconf-set-selections

Die Datei muss den Schlüssel allein enthalten, in einer Zeile, ohne Anführungszeichen oder sonstigen Inhalt drumherum. Eine versehentlich angegebene ganze config.toml wird ausdrücklich abgelehnt. Dritte mögliche Form, falls Sie keine Datei ablegen möchten: den vollständigen Schlüssel direkt in den Wert einfügen, anstelle des Pfads.

Vor jedem riskanten Vorgang sichern

Drei Dinge zu kopieren, und sie werden nicht auf dieselbe Weise gesichert: die Datenbank (Konten, Revisionen, Sperren, Berechtigungen), das Datenverzeichnis (der Dateiinhalt) und die Konfiguration, die woanders lebt und die man vergisst.

1. Die Datenbank

Sie wird als Konto postgres gesichert, niemals als root: PostgreSQL hat keine „Rolle“ (sein Wort für ein Datenbankkonto) namens root, sodass der direkt als root ausgeführte Befehl mit einer Meldung fehlschlägt, die wie ein Ausfall aussieht, während es eine Frage der Identität ist.

Wenn Sie die Frage zur Datenbank mit nein beantwortet haben (der Standard), lebt sie im System-Cluster:

sudo -u postgres pg_dump -Fc uversion > /tmp/uversion.dump

Wenn Sie mit ja geantwortet haben, lebt sie in einem separaten Cluster, den man ausdrücklich benennen muss, sonst sichern Sie den falschen:

pg_lsclusters                                    # repere la ligne "uversion" et sa version
sudo -u postgres pg_dump --cluster <major>/uversion -Fc uversion > /tmp/uversion.dump

2. Das Datenverzeichnis

Dienst gestoppt, für eine konsistente Kopie:

sudo systemctl stop uversion-server
sudo tar czf /tmp/uversion-data.tar.gz -C <data-dir> .
sudo systemctl start uversion-server

3. Die Konfiguration

/etc/uversion/ folgt nicht dem Datenverzeichnis und ist nicht in der Datenbank: sie trägt den Lizenzschlüssel, das Geheimnis, das die Sitzungen signiert, und das Datenbankpasswort. Ohne sie beginnt eine Wiederherstellung auf einer neuen Maschine mit einem neuen Geheimnis, sodass das ganze Team auf einen Schlag abgemeldet wird und man erneut eine Lizenz anfordern muss.

sudo tar czf /tmp/uversion-etc.tar.gz -C /etc uversion

Deinstallieren

Achtung: Diese Befehle löschen Ihre Repositories, den Verlauf, die Benutzerkonten und die Konfigurationen. Erstellen Sie zuerst die Sicherung aus dem vorigen Abschnitt, wenn Sie zurückgehen können möchten.

1. Das Paket bereinigen

Die Bereinigung entfernt das Binary, den Dienst, die Konfigurationsantworten, /etc/uversion/ und das Systemkonto uversion. Sie bewahrt bewusst die Datenbank und das Datenverzeichnis: das sind Ihre Dateien, ein Paketmanager löscht sie nicht hinter Ihrem Rücken.

sudo systemctl stop uversion-server 2>/dev/null
sudo apt purge -y uversion-server

Führen Sie nach dieser Deinstallation nicht sudo apt autoremove --purge aus. PostgreSQL kam als Abhängigkeit dieses Pakets, apt wird also anbieten, es zu entfernen, und seine eigene Bereinigung löscht alle Datenbanken der Maschine, auch die, die nichts mit uVersion zu tun haben. Das Paket setzt bei der Installation Schutzvorkehrungen, aber der Befehl bleibt zu vermeiden.

2. Der Sequenz folgen, die die Bereinigung soeben angezeigt hat

Die Datenbank und das Datenverzeichnis sind immer noch da, und die Befehle, um sie zu entfernen, hängen von Ihrer Maschine ab: deshalb werden sie berechnet und auf den Bildschirm gedruckt, statt hier geschrieben zu sein.

Lesen Sie, was die Bereinigung anzeigt: das Weitere hängt von Ihrer Maschine ab. Das Deinstallationsskript sieht nach, wo Ihre Datenbank wirklich liegt, und druckt dann die genaue Befehlssequenz für Ihren Fall auf den Bildschirm, Pfade und Versionsnummer inbegriffen. Folgen Sie jener statt einem generischen Rezept: ein ungefährer Befehl zerstört entweder die falsche Datenbank oder gar nichts.

Zwei Fallen, die diese Sequenz vermeidet und die erklären, warum sie für Sie berechnet statt aus einem Leitfaden kopiert wird:

  • Ein DROP DATABASE ohne Nennung des Clusters zielt auf den falschen Datenbankserver. Wenn Sie die Frage zur Datenbank mit ja beantwortet haben, lebt Ihre in einem eigenen Cluster: der Standardbefehl wendet sich an den System-Cluster, findet nichts zu löschen und lässt Sie glauben, es sei erledigt.
  • Ein rm -rf des Datenverzeichnisses, ohne zuerst den Cluster entfernt zu haben, hinterlässt eine Phantom-Datenbank, die dem System noch gemeldet ist und bei jedem Start der Maschine fehlschlägt, indem sie ein Verzeichnis verlangt, das nicht mehr existiert. Die Reihenfolge zählt: pg_dropcluster --stop, dann das Löschen des Verzeichnisses.

3. Das Wiederherstellungspaket entfernen

Zu tun, wenn die Platte Ihre Kontrolle verlassen muss (Weiterverkauf, Rückgabe eines Leasings, Verschrottung): dieses Verzeichnis enthält Ihren Lizenzschlüssel, das JWT-Geheimnis und das Datenbankpasswort, und es überlebt die Bereinigung bauartbedingt.

sudo rm -rf <data-dir>/recovery

4. Sicherstellen, dass das Systemkonto weg ist

Es ist normalerweise bereits durch die Bereinigung entfernt. Der Befehl bleibt wirkungslos, wenn es verschwunden ist:

sudo deluser --system uversion 2>/dev/null || true

5. Prüfen, dass nichts übrig bleibt

Vier Prüfungen, jede mit dem, was Sie daneben lesen sollten:

systemctl status uversion-server         # "not-found" ou "inactive"
ls /etc/uversion 2>&1                    # "No such file"
id uversion                              # "no such user"
sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='uversion';"   # (vide)