uVersion
Deutsch
Herunterladen →

Wiki

Unter Windows installieren

Eine PowerShell-Zeile: Aktivierungscode, PostgreSQL über winget, Windows-Dienst, Firewall, TLS-Zertifikat.

Windows 10, 11 oder Windows Server 2019+ (x64). Installation mit einer einzigen PowerShell-Zeile.

Installieren

1. PowerShell als Administrator öffnen

Rechtsklick auf das PowerShell-Symbol → Als Administrator ausführen. Das Skript weigert sich, andernfalls zu starten, und teilt Ihnen das mit.

2. Den Installationsbefehl einfügen

Eine einzige Zeile, unverändert in das gerade geöffnete Fenster einzufügen:

iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing | iex

Das Skript läuft dann vor Ihren Augen ab:

  • die Abfrage des Aktivierungscodes, die einzige gestellte Frage: siehe den nächsten Schritt
  • der Download der Binärdatei und die Prüfung des Archivs
  • die Installation von PostgreSQL über winget, falls es fehlt (etwa 2 Minuten)
  • die Erstellung der Datenbank, der Rolle und des Windows-Dienstes sowie die Öffnung der Firewall (8443, dazu 8080 als Fallback)
  • die Registrierung des Eintrags unter Programme und Features
  • der Start des Dienstes, die Erzeugung des selbstsignierten TLS-Zertifikats und danach die Anzeige des Administrator-Passworts und des SHA-256-Fingerabdrucks des Zertifikats

Alles läuft in Ihrem PowerShell-Fenster ab, Sie sehen jeden Schritt. Es ist das Windows-Äquivalent zu Linux' sudo apt install.

3. Den Aktivierungscode eingeben

Das ist die einzige gestellte Frage: alle anderen Entscheidungen laufen über Parameter, die weiter unten beschrieben sind. Das Feld akzeptiert drei Formen: den kurzen Code UV-XXXX-XXXX-XXXX, einen Pfad zu einer Datei mit Ihrem vollständigen Lizenzschlüssel, oder diesen Schlüssel direkt eingefügt. Nur bei der ersten Form kontaktiert das Skript licence.uversion.io, um den Code gegen den Schlüssel einzutauschen.

4. Die abschließende Übersicht notieren

Die Installation endet mit einem Kasten: Benutzername admin, temporäres Passwort, Serveradresse und Zertifikat-Fingerabdruck. Notieren Sie sie.

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

Wenn das Fenster zu schnell geschlossen wurde, liegt das Passwort noch auf der Platte, solange es nicht geändert wurde:

Get-Content "C:\ProgramData\uVersion\initial-admin-password"

Diese Datei verschwindet, sobald Sie das Passwort ändern: ein Fehler „Cannot find path" bedeutet also, dass die Änderung bereits stattgefunden hat.

Anschließend können Sie Erste Anmeldung folgen.

Windows Server 2019 und 2022: zuerst PostgreSQL

winget gibt es weder auf Windows Server 2019 noch auf Windows Server 2022. Das Skript hält dann sofort an, mit einer Meldung, die Ihnen das ausdrücklich mitteilt. Das ist keine Störung: Installieren Sie zuerst PostgreSQL 16 von Hand und führen Sie dann denselben Befehl erneut aus. Das Skript erkennt den vorhandenen PostgreSQL-Dienst und verwendet ihn, statt einen zu installieren.

Nicht-interaktive Variante (CI, skriptgesteuerte Bereitstellung)

Die Kurzform iwr ... | iex kann keinen Parameter entgegennehmen: Sie führt das Skript aus, ohne ihm Argumente zu übergeben, und ein am Ende angehängtes -DataDir würde stillschweigend ignoriert. Sobald Sie eine Option übergeben möchten, verwenden Sie die untenstehende Form, die einen expliziten Skriptblock aufbaut.

& ([scriptblock]::Create((iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing).Content)) `
    -LicenceKey "UV-XXXX-XXXX-XXXX" -DataDir "D:\uVersion" -DbOnDataDir

Die neun akzeptierten Parameter:

ParameterStandardRolle
-LicenceKey(wird abgefragt) Aktivierungscode oder vollständiger Lizenzschlüssel. Erspart die Frage.
-InstallDirC:\Program Files\uVersion Wohin die Binärdatei landet.
-DataDirC:\ProgramData\uVersion Wohin Ihre Daten, die Konfiguration und die Geheimnisse landen. Es ist der Ordner, der wächst, also der, den Sie auf Ihre große Platte legen sollten.
-DbOnDataDirdeaktiviert Legt auch die PostgreSQL-Datenbank in den Datenordner, damit eine einzige überlebende Platte genügt, um den Server neu aufzubauen. Siehe den Kasten unten.
-Port8080 Fallback-Port in einfachem HTTP, nur verwendet, wenn Sie TLS in der Konfiguration deaktivieren. Der normale HTTPS-Port ist 8443.
-BindAddress0.0.0.0 Lausch-Schnittstelle. Der Standard lauscht auf allen.
-DownloadUrluversion.io Quelle des Archivs. Ändern Sie sie, um aus einem internen Spiegel zu installieren.
-Reconfiguredeaktiviert Schreibt config.toml neu, auch wenn es bereits existiert.
-Updatedeaktiviert Aktualisiert die Binärdatei einer bestehenden Installation und startet den Dienst neu, ohne PostgreSQL, die Lizenz oder die Konfiguration anzutasten. Genau das löst die Schaltfläche „Aktualisieren" im Admin-Panel aus.

-DbOnDataDir entscheidet, ob eine einzige Platte genügt, um Ihren Server wiederherzustellen. Ohne es bleibt die PostgreSQL-Datenbank getrennt: Stirbt die Maschine, enthält die überlebende Datenplatte den Inhalt Ihrer Dateien, aber keine Revision, kein Konto, keine Sperre und keine Berechtigung mehr. Mit ihm genügen eine einzige Platte plus PostgreSQL und dieses Skript, um den Server anderswo neu aufzubauen. Gegenstück: Diese Platte trägt dann auch den Lizenzschlüssel und die Passwörter, und die Datenbank kann nur von der Hauptversion von PostgreSQL wieder geöffnet werden, die sie erstellt hat.

Wohin die Dateien kommen

Alles lebt im Datenordner, standardmäßig C:\ProgramData\uVersion: die Konfiguration (config.toml), der Inhalt Ihrer versionierten Dateien (data\chunks), das TLS-Zertifikat und sein Fingerabdruck (data\tls) sowie das anfängliche Administrator-Passwort.

Dieser Ordner enthält außerdem drei Geheimnisse im Klartext: licence-key (Ihr Lizenzschlüssel), db-password (das Passwort der uVersion-Datenbank) und postgres-superuser-password (das des PostgreSQL- Administratorkontos). Sie sind durch Berechtigungen geschützt, die Administratoren vorbehalten sind. Behandeln Sie diesen Ordner wie einen Tresor: Kopieren Sie ihn nicht auf eine offene Netzwerkfreigabe und löschen Sie diese Dateien, bevor eine Platte Ihre Kontrolle verlässt.

Nach jeder manuellen Änderung an config.toml starten Sie den Dienst neu, damit sie wirksam wird:

Restart-Service uVersionServer

Installation überprüfen

Vier unabhängige Prüfungen. Ersetzen Sie C:\ProgramData\uVersion durch Ihren Datenordner, falls Sie einen anderen gewählt haben.

1. Der Dienst läuft

Get-Service uVersionServer

Erwartet: Status: Running.

2. Der Server lauscht auf HTTPS auf 8443

Get-NetTCPConnection -LocalPort 8443 -State Listen

Eine Zeile sollte erscheinen. Gar nichts, während der Dienst läuft, bedeutet in der Regel, dass TLS in der Konfiguration deaktiviert wurde: Der Server wechselt dann zu einfachem HTTP und 8443 lauscht nicht mehr.

3. Den Fingerabdruck des Zertifikats erneut anzeigen

Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"

Das ist der Fingerabdruck, den jeder Arbeitsplatz bei seiner ersten Verbindung bestätigt.

4. Die aktive Konfiguration erneut lesen

Get-Content "C:\ProgramData\uVersion\config.toml"

Wenn sich der Dienst weigert zu starten, ist der direkteste Weg, zu sehen warum, die Binärdatei im Vordergrund zu starten: Die Startfehler erscheinen dann direkt in Ihrem Fenster. Es ist übrigens der Befehl, den das Installationsskript selbst vorschlägt, wenn es den Fehlschlag feststellt.

$env:CONFIG_PATH = 'C:\ProgramData\uVersion\config'
& 'C:\Program Files\uVersion\uversion-server.exe'

Stoppen Sie danach mit Strg+C, dann Start-Service uVersionServer. Wenn der Dienst nicht einmal weit genug startet, um einen Fehler zu erzeugen, hält die Windows-Ereignisanzeige (eventvwr.msc) es im System-Protokoll fest, Quelle Service Control Manager. Suchen Sie dort kein Anwendungsprotokoll mit dem Namen uVersion: Der Server schreibt auf seine Standardausgabe, er registriert keine Windows- Ereignisquelle, ein Befehl wie Get-EventLog -Source uVersionServer gibt daher nie etwas zurück.

Deinstallieren

Achtung: Die folgenden Befehle löschen Ihre Repositories, den Verlauf, die Benutzerkonten und die Konfigurationen. Sichern Sie die Datenbank und kopieren Sie Ihren Datenordner, wenn Sie zurückkehren können möchten.

Zwei gleichwertige Wege. Beide führen dasselbe Skript (uninstall.ps1) aus, das den Dienst, die Firewall, die Maschinen-Umgebungsvariable, den Datenordner, die Binärdatei, den Eintrag unter Programme und Features sowie die PostgreSQL-Datenbank verwaltet.

Methode 1: über Programme und Features

  1. Win+R → appwiz.cpl → Enter
  2. Suchen Sie uVersion Server in der Liste
  3. Rechtsklick → Deinstallieren
  4. Ein Administrator-PowerShell-Fenster öffnet sich und führt das Skript sichtbar aus

Methode 2: über PowerShell als Administrator

iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex

Das Skript zeigt beim Start Ihre beiden Pfade an, dann am Ende einen Prüfblock: Für den Dienst, das Installationsverzeichnis, den Datenordner und den Eintrag unter Programme und Features sollten Sie grün "OK absent" sehen.

Fall einer benutzerdefinierten Installation vor August 2026. Das Deinstallationsskript findet die tatsächlich verwendeten Pfade nun von selbst: Die Installation trägt sie neben ihrem Eintrag unter Programme und Features ein, und die Deinstallation liest sie wieder aus. Sie müssen daher nichts angeben, selbst wenn Sie ein benutzerdefiniertes -DataDir gewählt hatten.

Das war nicht immer so: Eine Installation vor dieser Korrektur hat ihre Pfade nicht eingetragen, und die Deinstallation fällt dann auf die Standardwerte zurück. Wenn Sie in diesem Fall sind und einen Pfad angepasst hatten, übergeben Sie sie explizit, sonst wird die Datenbank, die -DbOnDataDir bewahren sollte, womöglich gelöscht, während die Geheimnisse ihrerseits an Ort und Stelle bleiben:

$body = (iwr "https://uversion.io/downloads/server/uninstall.ps1" -UseBasicParsing).Content
if ($body -is [byte[]]) { $body = [Text.Encoding]::UTF8.GetString($body) }
& ([scriptblock]::Create($body)) -InstallDir "D:\uVersion\bin" -DataDir "D:\uVersion"

Auch PostgreSQL deinstallieren?

Standardmäßig rührt uninstall.ps1 PostgreSQL nicht an: Andere Anwendungen könnten es nutzen. Um es ebenfalls zu entfernen:

$body = (iwr "https://uversion.io/downloads/server/uninstall.ps1" -UseBasicParsing).Content
if ($body -is [byte[]]) { $body = [Text.Encoding]::UTF8.GetString($body) }
& ([scriptblock]::Create($body)) -RemovePostgreSQL

Die [byte[]]-Prüfung ist notwendig: Je nach ausgeliefertem Content-Type kann Invoke-WebRequest -UseBasicParsing den Body der Antwort als Byte-Array oder als String zurückgeben. Das obige Muster funktioniert in beiden Fällen.

Achtung: -RemovePostgreSQL entfernt jede PostgreSQL-Installation auf der Maschine, nicht nur die uVersion-Datenbank. Verwenden Sie es nur, wenn Sie sicher sind, dass nichts anderes es nutzt.