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.
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.
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
/homenoch 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 Bookeingehängt wird, tappt genau darein. - Ein absoluter Pfad, das heißt beginnend mit
/. - Jedes übergeordnete Verzeichnis muss die Konten
uversionundpostgresdurchlassen. Das ist die unauffälligste Falle, und sie zeigt sich nicht, wenn man alsrootinstalliert: ein von Hand angelegtes und geschlossenes übergeordnetes Verzeichnis (etwa ein/perforcemitroot:root0750, 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 mitstatus=200/CHDIRverweigert, 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
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 DATABASEohne 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 -rfdes 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)