Wiki
Installer sur Windows
Une ligne PowerShell : code d'activation, PostgreSQL via winget, service Windows, pare-feu, certificat TLS.
Windows 10, 11 ou Windows Server 2019+ (x64). Installation en une ligne PowerShell.
Installer
1. Ouvrir PowerShell en Administrateur
Clic droit sur l'icône PowerShell → Exécuter en tant qu'administrateur. Le script refuse de se lancer autrement, et vous le dit.
2. Coller la commande d'installation
Une seule ligne, à coller telle quelle dans la fenêtre que vous venez d'ouvrir :
iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing | iex
Le script enchaîne alors, sous vos yeux :
- la demande du code d'activation, seule question posée : voir l'étape suivante
- le téléchargement du binaire et la vérification de l'archive
- l'installation de PostgreSQL via
wingets'il est absent (environ 2 minutes) - la création de la base, du rôle et du service Windows, et l'ouverture du pare-feu (8443, plus 8080 en repli)
- l'enregistrement de l'entrée Programmes et fonctionnalités
- le démarrage du service, la génération du certificat TLS auto-signé, puis l'affichage du mot de passe administrateur et de l'empreinte SHA-256 du certificat
Tout se passe dans votre fenêtre PowerShell, vous voyez chaque étape. C'est
l'équivalent Windows du sudo apt install de Linux.
3. Saisir le code d'activation
C'est la seule question posée : tous les autres choix passent par des
paramètres, décrits plus bas. Le champ accepte trois formes : le code court
UV-XXXX-XXXX-XXXX, un chemin vers un fichier contenant votre clé de licence
complète, ou cette clé collée directement. Avec la première forme seulement, le script contacte
licence.uversion.io pour échanger le code contre la clé.
4. Noter le récapitulatif de fin
L'installation se termine sur un encadré : identifiant admin, mot de passe
temporaire, adresse du serveur et empreinte du certificat. Notez-les.
Si la fenêtre a été fermée trop vite, le mot de passe est encore sur le disque tant qu'il n'a pas été changé :
Get-Content "C:\ProgramData\uVersion\initial-admin-password"
Ce fichier disparaît dès que vous changez le mot de passe : une erreur « Cannot find path » signifie donc que le changement a déjà eu lieu.
Vous pouvez ensuite suivre Premier login.
Windows Server 2019 et 2022 : PostgreSQL d'abord
winget n'existe pas sur Windows Server 2019 ni sur
Windows Server 2022. Le script s'arrête alors net, avec un message qui vous le dit
explicitement. Ce n'est pas une panne : installez d'abord
PostgreSQL 16
à la main, puis relancez la même commande. Le script détecte le service PostgreSQL existant
et l'utilise au lieu d'en installer un.
Variante non interactive (CI, déploiement scripté)
La forme courte iwr ... | iex ne peut recevoir
aucun paramètre : elle exécute le script sans lui transmettre d'arguments,
et un -DataDir ajouté à la fin serait silencieusement ignoré. Dès que vous voulez
passer une option, utilisez la forme ci-dessous, qui construit un bloc de script explicite.
& ([scriptblock]::Create((iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing).Content)) `
-LicenceKey "UV-XXXX-XXXX-XXXX" -DataDir "D:\uVersion" -DbOnDataDir
Les neuf paramètres acceptés :
| Paramètre | Défaut | Rôle |
|---|---|---|
-LicenceKey | (demandé) | Code d'activation, ou clé de licence complète. Évite la question. |
-InstallDir | C:\Program Files\uVersion |
Où atterrit le binaire. |
-DataDir | C:\ProgramData\uVersion |
Où atterrissent vos données, la configuration et les secrets. C'est le dossier qui grossit, donc celui à placer sur votre grand disque. |
-DbOnDataDir | désactivé | Place aussi la base PostgreSQL dans le dossier de données, pour qu'un seul disque survivant suffise à reconstruire le serveur. Voir l'encadré ci-dessous. |
-Port | 8080 |
Port de repli en HTTP simple, utilisé seulement si vous désactivez TLS dans la configuration. Le port HTTPS normal est 8443. |
-BindAddress | 0.0.0.0 |
Interface d'écoute. Le défaut écoute sur toutes. |
-DownloadUrl | uversion.io | Source de l'archive. À changer pour installer depuis un miroir interne. |
-Reconfigure | désactivé | Réécrit config.toml même s'il existe déjà. |
-Update | désactivé | Met à jour le binaire d'une installation existante et redémarre le service, sans retoucher PostgreSQL, la licence ni la configuration. C'est ce que déclenche le bouton « Mettre à jour » du panneau d'administration. |
-DbOnDataDir décide si un seul disque suffit à remonter
votre serveur. Sans lui, la base PostgreSQL reste à part : si la machine meurt, le
disque de données survivant contient le contenu de vos fichiers, mais plus aucune révision,
aucun compte, aucun verrou ni aucune permission. Avec lui, un seul disque plus PostgreSQL et
ce script suffisent à reconstruire le serveur ailleurs. Contrepartie : ce disque porte alors
aussi la clé de licence et les mots de passe, et la base ne peut être rouverte que par la
version majeure de PostgreSQL qui l'a créée.
Où vont les fichiers
Tout vit dans le dossier de données, C:\ProgramData\uVersion par défaut :
la configuration (config.toml), le contenu de vos fichiers
versionnés (data\chunks), le certificat TLS et son empreinte
(data\tls), et le mot de passe administrateur initial.
Ce dossier contient aussi trois secrets en clair :
licence-key (votre clé de licence), db-password (le mot de passe de
la base uVersion) et postgres-superuser-password (celui du compte administrateur
de PostgreSQL). Ils sont protégés par des permissions réservées aux administrateurs. Traitez
ce dossier comme un coffre : ne le copiez pas sur un partage réseau ouvert, et effacez ces
fichiers avant qu'un disque ne quitte votre contrôle.
Après toute modification manuelle de config.toml, redémarrez le service pour
qu'elle soit prise en compte :
Restart-Service uVersionServer
Vérifier l'installation
Quatre contrôles indépendants. Remplacez C:\ProgramData\uVersion par votre
dossier de données si vous en avez choisi un autre.
1. Le service tourne
Get-Service uVersionServer
Attendu : Status: Running.
2. Le serveur écoute en HTTPS sur 8443
Get-NetTCPConnection -LocalPort 8443 -State Listen
Une ligne doit apparaître. Rien du tout alors que le service tourne signifie en général que TLS a été désactivé dans la configuration : le serveur passe alors en HTTP simple et 8443 n'écoute plus.
3. Réafficher l'empreinte du certificat
Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"
C'est l'empreinte que chaque poste confirme à sa première connexion.
4. Relire la configuration active
Get-Content "C:\ProgramData\uVersion\config.toml"
Si le service refuse de démarrer, le moyen le plus direct de voir pourquoi est de lancer le binaire en avant-plan : les erreurs de démarrage s'affichent alors directement dans votre fenêtre. C'est d'ailleurs la commande que le script d'installation vous propose lui-même quand il constate l'échec.
$env:CONFIG_PATH = 'C:\ProgramData\uVersion\config'
& 'C:\Program Files\uVersion\uversion-server.exe'
Arrêtez ensuite avec Ctrl+C, puis Start-Service uVersionServer. Si le service ne
démarre même pas assez loin pour produire une erreur, l'Observateur d'événements Windows
(eventvwr.msc) le consigne dans le journal Système, source
Service Control Manager. N'y cherchez pas de journal applicatif au nom
d'uVersion : le serveur écrit sur sa sortie standard, il n'enregistre pas de source
d'événements Windows, donc une commande du type
Get-EventLog -Source uVersionServer ne retournera jamais rien.
Désinstaller
Deux manières équivalentes. Les deux exécutent le même script
(uninstall.ps1), qui gère le service, le pare-feu, la variable
d'environnement machine, le dossier de données, le binaire, l'entrée Programmes et
fonctionnalités, et la base PostgreSQL.
Méthode 1 : par Programmes et fonctionnalités
- Win+R →
appwiz.cpl→ Entrée - Trouvez uVersion Server dans la liste
- Clic droit → Désinstaller
- Une fenêtre PowerShell administrateur s'ouvre et déroule le script de façon visible
Méthode 2 : par PowerShell en Administrateur
iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex
Le script affiche vos deux chemins au démarrage, puis un bloc de vérification à la fin : vous devez y voir « OK absent » en vert pour le service, le dossier d'installation, le dossier de données et l'entrée Programmes et fonctionnalités.
Cas d'une installation personnalisée faite avant août 2026.
Le script de désinstallation retrouve désormais tout seul les chemins réellement utilisés :
l'installation les inscrit à côté de son entrée Programmes et fonctionnalités, et la
désinstallation les relit. Vous n'avez donc rien à préciser, même si vous aviez choisi un
-DataDir personnalisé.
Cela n'a pas toujours été le cas : une installation antérieure à ce correctif
n'a pas inscrit ses chemins, et la désinstallation retombe alors sur les valeurs par défaut.
Si vous êtes dans ce cas et que vous aviez personnalisé un chemin, passez-les
explicitement, sinon la base que -DbOnDataDir devait préserver risque d'être
supprimée pendant que les secrets, eux, restent en place :
$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"
Aussi désinstaller PostgreSQL ?
Par défaut, uninstall.ps1 ne touche pas à PostgreSQL : d'autres applications
peuvent s'en servir. Pour le retirer également :
$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
Le test [byte[]] est nécessaire : selon le type de contenu servi,
Invoke-WebRequest -UseBasicParsing peut renvoyer le corps de la réponse sous
forme de tableau d'octets ou de chaîne. Le motif ci-dessus fonctionne dans les deux cas.
-RemovePostgreSQL retire
toute installation PostgreSQL de la machine, pas seulement la
base d'uVersion. Ne l'utilisez que si vous êtes certain que rien d'autre ne s'en sert.