Wiki
Installare su Windows
Una riga di PowerShell: codice di attivazione, PostgreSQL tramite winget, servizio Windows, firewall, certificato TLS.
Windows 10, 11 o Windows Server 2019+ (x64). Installazione con una sola riga di PowerShell.
Installare
1. Aprire PowerShell come amministratore
Fai clic con il tasto destro sull'icona di PowerShell → Esegui come amministratore. Altrimenti lo script si rifiuta di avviarsi, e te lo dice.
2. Incollare il comando di installazione
Una sola riga, da incollare così com'è nella finestra che hai appena aperto:
iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing | iex
Lo script procede quindi, sotto i tuoi occhi:
- la richiesta del codice di attivazione, l'unica domanda posta: vedi il passo successivo
- il download del binario e la verifica dell'archivio
- l'installazione di PostgreSQL tramite
wingetse assente (circa 2 minuti) - la creazione del database, del ruolo e del servizio Windows, e l'apertura del firewall (8443, più 8080 di riserva)
- la registrazione della voce in Programmi e funzionalità
- l'avvio del servizio, la generazione del certificato TLS autofirmato e poi la visualizzazione della password di amministratore e dell'impronta SHA-256 del certificato
Tutto avviene nella tua finestra di PowerShell, vedi ogni passaggio. È l'equivalente
Windows del sudo apt install di Linux.
3. Inserire il codice di attivazione
È l'unica domanda posta: tutte le altre scelte passano da
parametri, descritti più in basso. Il campo accetta tre forme: il codice breve
UV-XXXX-XXXX-XXXX, un percorso a un file contenente la tua chiave di licenza
completa, o quella chiave incollata direttamente. Solo con la prima forma, lo script contatta
licence.uversion.io per scambiare il codice con la chiave.
4. Annotare il riepilogo finale
L'installazione termina con un riquadro: nome utente admin, password
temporanea, indirizzo del server e impronta del certificato. Annotali.
Se la finestra è stata chiusa troppo in fretta, la password è ancora sul disco finché non è stata cambiata:
Get-Content "C:\ProgramData\uVersion\initial-admin-password"
Questo file scompare non appena cambi la password: un errore "Cannot find path" significa quindi che il cambiamento è già avvenuto.
Puoi poi seguire Primo accesso.
Windows Server 2019 e 2022: prima PostgreSQL
winget non esiste su Windows Server 2019 né su
Windows Server 2022. Lo script si ferma allora di netto, con un messaggio che te lo dice
esplicitamente. Non è un guasto: installa prima
PostgreSQL 16
a mano, poi riesegui lo stesso comando. Lo script rileva il servizio PostgreSQL esistente
e lo usa invece di installarne uno.
Variante non interattiva (CI, distribuzione tramite script)
La forma breve iwr ... | iex non può ricevere
alcun parametro: esegue lo script senza trasmettergli argomenti,
e un -DataDir aggiunto alla fine verrebbe ignorato in silenzio. Non appena vuoi
passare un'opzione, usa la forma qui sotto, che costruisce un blocco di script esplicito.
& ([scriptblock]::Create((iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing).Content)) `
-LicenceKey "UV-XXXX-XXXX-XXXX" -DataDir "D:\uVersion" -DbOnDataDir
I nove parametri accettati:
| Parametro | Predefinito | Ruolo |
|---|---|---|
-LicenceKey | (richiesto) | Codice di attivazione, o chiave di licenza completa. Evita la domanda. |
-InstallDir | C:\Program Files\uVersion |
Dove finisce il binario. |
-DataDir | C:\ProgramData\uVersion |
Dove finiscono i tuoi dati, la configurazione e i segreti. È la cartella che cresce, quindi quella da mettere sul tuo disco grande. |
-DbOnDataDir | disattivato | Colloca anche il database PostgreSQL nella cartella dati, in modo che un solo disco superstite basti a ricostruire il server. Vedi il riquadro qui sotto. |
-Port | 8080 |
Porta di riserva in HTTP semplice, usata solo se disattivi il TLS nella configurazione. La porta HTTPS normale è 8443. |
-BindAddress | 0.0.0.0 |
Interfaccia di ascolto. Il valore predefinito ascolta su tutte. |
-DownloadUrl | uversion.io | Origine dell'archivio. Da cambiare per installare da un mirror interno. |
-Reconfigure | disattivato | Riscrive config.toml anche se esiste già. |
-Update | disattivato | Aggiorna il binario di un'installazione esistente e riavvia il servizio, senza toccare PostgreSQL, la licenza né la configurazione. È ciò che attiva il pulsante "Aggiorna" del pannello di amministrazione. |
-DbOnDataDir decide se un solo disco basta a rimettere in piedi
il tuo server. Senza di esso, il database PostgreSQL resta a parte: se la macchina muore, il
disco dati superstite contiene il contenuto dei tuoi file, ma nessuna revisione,
nessun account, nessun blocco né alcun permesso. Con esso, un solo disco più PostgreSQL e
questo script bastano a ricostruire il server altrove. In cambio: quel disco porta allora
anche la chiave di licenza e le password, e il database può essere riaperto solo dalla
versione maggiore di PostgreSQL che lo ha creato.
Dove vanno i file
Tutto vive nella cartella dati, C:\ProgramData\uVersion per impostazione predefinita:
la configurazione (config.toml), il contenuto dei tuoi file
versionati (data\chunks), il certificato TLS e la sua impronta
(data\tls), e la password di amministratore iniziale.
Questa cartella contiene anche tre segreti in chiaro:
licence-key (la tua chiave di licenza), db-password (la password del
database uVersion) e postgres-superuser-password (quella dell'account di
amministratore di PostgreSQL). Sono protetti da permessi riservati agli amministratori. Tratta
questa cartella come una cassaforte: non copiarla su una condivisione di rete aperta, e cancella questi
file prima che un disco esca dal tuo controllo.
Dopo ogni modifica manuale di config.toml, riavvia il servizio affinché
venga applicata:
Restart-Service uVersionServer
Verificare l'installazione
Quattro controlli indipendenti. Sostituisci C:\ProgramData\uVersion con la tua
cartella dati se ne hai scelta un'altra.
1. Il servizio è in esecuzione
Get-Service uVersionServer
Atteso: Status: Running.
2. Il server è in ascolto in HTTPS sulla 8443
Get-NetTCPConnection -LocalPort 8443 -State Listen
Deve comparire una riga. Nulla del tutto mentre il servizio è in esecuzione significa in genere che il TLS è stato disattivato nella configurazione: il server passa allora a HTTP semplice e la 8443 non è più in ascolto.
3. Rivisualizzare l'impronta del certificato
Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"
È l'impronta che ogni postazione conferma alla sua prima connessione.
4. Rileggere la configurazione attiva
Get-Content "C:\ProgramData\uVersion\config.toml"
Se il servizio si rifiuta di avviarsi, il modo più diretto per vedere perché è avviare il binario in primo piano: gli errori di avvio compaiono allora direttamente nella tua finestra. È del resto il comando che lo script di installazione ti propone lui stesso quando constata il fallimento.
$env:CONFIG_PATH = 'C:\ProgramData\uVersion\config'
& 'C:\Program Files\uVersion\uversion-server.exe'
Ferma poi con Ctrl+C, quindi Start-Service uVersionServer. Se il servizio non
si avvia nemmeno abbastanza da produrre un errore, il Visualizzatore eventi di Windows
(eventvwr.msc) lo registra nel log Sistema, origine
Service Control Manager. Non cercarvi un log applicativo con il nome
uVersion: il server scrive sul suo standard output, non registra un'origine di
eventi di Windows, quindi un comando del tipo
Get-EventLog -Source uVersionServer non restituirà mai nulla.
Disinstallare
Due modi equivalenti. Entrambi eseguono lo stesso script
(uninstall.ps1), che gestisce il servizio, il firewall, la variabile
d'ambiente della macchina, la cartella dati, il binario, la voce in Programmi e
funzionalità e il database PostgreSQL.
Metodo 1: tramite Programmi e funzionalità
- Win+R →
appwiz.cpl→ Invio - Trova uVersion Server nell'elenco
- Clic destro → Disinstalla
- Si apre una finestra di PowerShell da amministratore che esegue lo script in modo visibile
Metodo 2: tramite PowerShell come amministratore
iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex
Lo script mostra i tuoi due percorsi all'avvio, poi un blocco di verifica alla fine: dovresti vedere "OK absent" in verde per il servizio, la directory di installazione, la cartella dati e la voce in Programmi e funzionalità.
Caso di un'installazione personalizzata fatta prima di agosto 2026.
Lo script di disinstallazione trova ora da solo i percorsi realmente usati:
l'installazione li iscrive accanto alla sua voce in Programmi e funzionalità, e la
disinstallazione li rilegge. Non devi quindi precisare nulla, anche se avevi scelto un
-DataDir personalizzato.
Non è sempre stato così: un'installazione anteriore a questa correzione non ha iscritto
i suoi percorsi, e la disinstallazione ricade allora sui valori predefiniti.
Se sei in questo caso e avevi personalizzato un percorso, passali
esplicitamente, altrimenti il database che -DbOnDataDir doveva preservare
rischia di essere eliminato mentre i segreti, da parte loro, restano al loro posto:
$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"
Disinstallare anche PostgreSQL?
Per impostazione predefinita uninstall.ps1 non tocca PostgreSQL: altre applicazioni
potrebbero usarlo. Per rimuoverlo anch'esso:
$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
Il controllo [byte[]] è necessario: a seconda del tipo di contenuto servito,
Invoke-WebRequest -UseBasicParsing può restituire il corpo della risposta come array
di byte o come stringa. Lo schema sopra funziona in entrambi i casi.
-RemovePostgreSQL rimuove
ogni installazione di PostgreSQL dalla macchina, non solo il
database di uVersion. Usalo solo se sei sicuro che nient'altro lo utilizzi.