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.
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:
| Parameter | Standard | Rolle |
|---|---|---|
-LicenceKey | (wird abgefragt) | Aktivierungscode oder vollständiger Lizenzschlüssel. Erspart die Frage. |
-InstallDir | C:\Program Files\uVersion |
Wohin die Binärdatei landet. |
-DataDir | C:\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. |
-DbOnDataDir | deaktiviert | Legt auch die PostgreSQL-Datenbank in den Datenordner, damit eine einzige überlebende Platte genügt, um den Server neu aufzubauen. Siehe den Kasten unten. |
-Port | 8080 |
Fallback-Port in einfachem HTTP, nur verwendet, wenn Sie TLS in der Konfiguration deaktivieren. Der normale HTTPS-Port ist 8443. |
-BindAddress | 0.0.0.0 |
Lausch-Schnittstelle. Der Standard lauscht auf allen. |
-DownloadUrl | uversion.io | Quelle des Archivs. Ändern Sie sie, um aus einem internen Spiegel zu installieren. |
-Reconfigure | deaktiviert | Schreibt config.toml neu, auch wenn es bereits existiert. |
-Update | deaktiviert | 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
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
- Win+R →
appwiz.cpl→ Enter - Suchen Sie uVersion Server in der Liste
- Rechtsklick → Deinstallieren
- 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.
-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.