Wiki
Instalar no Windows
Uma linha de PowerShell: código de ativação, PostgreSQL via winget, serviço do Windows, firewall, certificado TLS.
Windows 10, 11 ou Windows Server 2019+ (x64). Instalação com uma única linha de PowerShell.
Instalar
1. Abrir o PowerShell como Administrador
Clique com o botão direito no ícone do PowerShell → Executar como administrador. Caso contrário, o script se recusa a iniciar, e avisa você.
2. Colar o comando de instalação
Uma única linha, para colar tal como está na janela que você acabou de abrir:
iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing | iex
O script então executa, diante dos seus olhos:
- a solicitação do código de ativação, a única pergunta feita: veja a etapa seguinte
- o download do binário e a verificação do arquivo
- a instalação do PostgreSQL via
wingetse estiver ausente (cerca de 2 minutos) - a criação do banco de dados, da função e do serviço do Windows, e a abertura do firewall (8443, mais 8080 de fallback)
- o registro da entrada em Programas e Recursos
- o início do serviço, a geração do certificado TLS autoassinado e, em seguida, a exibição da senha de administrador e da impressão digital SHA-256 do certificado
Tudo acontece na sua janela do PowerShell, você vê cada etapa. É o equivalente no
Windows ao sudo apt install do Linux.
3. Digitar o código de ativação
É a única pergunta feita: todas as outras escolhas passam por
parâmetros, descritos mais abaixo. O campo aceita três formas: o código curto
UV-XXXX-XXXX-XXXX, um caminho para um arquivo que contém sua chave de licença
completa, ou essa chave colada diretamente. Somente com a primeira forma, o script contata
licence.uversion.io para trocar o código pela chave.
4. Anotar o resumo final
A instalação termina com uma caixa: usuário admin, senha
temporária, endereço do servidor e impressão digital do certificado. Anote-os.
Se a janela foi fechada rápido demais, a senha ainda está no disco enquanto não tiver sido alterada:
Get-Content "C:\ProgramData\uVersion\initial-admin-password"
Esse arquivo desaparece assim que você altera a senha: um erro "Cannot find path" significa, portanto, que a alteração já ocorreu.
Em seguida, você pode seguir Primeiro login.
Windows Server 2019 e 2022: PostgreSQL primeiro
O winget não existe no Windows Server 2019 nem no
Windows Server 2022. O script então para imediatamente, com uma mensagem que avisa você
explicitamente. Não é uma falha: instale primeiro o
PostgreSQL 16
manualmente e execute novamente o mesmo comando. O script detecta o serviço PostgreSQL existente
e o utiliza em vez de instalar um.
Variante não interativa (CI, implantação com scripts)
A forma curta iwr ... | iex não pode receber
nenhum parâmetro: ela executa o script sem lhe passar argumentos,
e um -DataDir adicionado ao final seria silenciosamente ignorado. Assim que você quiser
passar uma opção, use a forma abaixo, que constrói um bloco de script explícito.
& ([scriptblock]::Create((iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing).Content)) `
-LicenceKey "UV-XXXX-XXXX-XXXX" -DataDir "D:\uVersion" -DbOnDataDir
Os nove parâmetros aceitos:
| Parâmetro | Padrão | Função |
|---|---|---|
-LicenceKey | (perguntado) | Código de ativação, ou chave de licença completa. Evita a pergunta. |
-InstallDir | C:\Program Files\uVersion |
Onde o binário fica. |
-DataDir | C:\ProgramData\uVersion |
Onde ficam seus dados, a configuração e os segredos. É a pasta que cresce, portanto a que deve ser colocada no seu disco grande. |
-DbOnDataDir | desativado | Coloca também o banco de dados PostgreSQL na pasta de dados, para que um único disco sobrevivente baste para reconstruir o servidor. Veja a caixa abaixo. |
-Port | 8080 |
Porta de fallback em HTTP simples, usada apenas se você desativar o TLS na configuração. A porta HTTPS normal é 8443. |
-BindAddress | 0.0.0.0 |
Interface de escuta. O padrão escuta em todas. |
-DownloadUrl | uversion.io | Origem do arquivo. Altere para instalar a partir de um espelho interno. |
-Reconfigure | desativado | Reescreve o config.toml mesmo que ele já exista. |
-Update | desativado | Atualiza o binário de uma instalação existente e reinicia o serviço, sem mexer no PostgreSQL, na licença nem na configuração. É o que o botão "Atualizar" do painel de administração aciona. |
O -DbOnDataDir decide se um único disco basta para restabelecer
seu servidor. Sem ele, o banco de dados PostgreSQL fica à parte: se a máquina morrer, o
disco de dados sobrevivente contém o conteúdo dos seus arquivos, mas nenhuma revisão,
nenhuma conta, nenhum bloqueio nem nenhuma permissão a mais. Com ele, um único disco mais o PostgreSQL e
este script bastam para reconstruir o servidor em outro lugar. Em contrapartida: esse disco carrega então
também a chave de licença e as senhas, e o banco de dados só pode ser reaberto pela
versão principal do PostgreSQL que o criou.
Onde os arquivos ficam
Tudo vive na pasta de dados, C:\ProgramData\uVersion por padrão:
a configuração (config.toml), o conteúdo dos seus arquivos
versionados (data\chunks), o certificado TLS e sua impressão digital
(data\tls) e a senha de administrador inicial.
Esta pasta também contém três segredos em texto claro:
licence-key (sua chave de licença), db-password (a senha do
banco de dados uVersion) e postgres-superuser-password (a da conta de
administrador do PostgreSQL). Eles são protegidos por permissões reservadas aos administradores. Trate
esta pasta como um cofre: não a copie para um compartilhamento de rede aberto, e apague estes
arquivos antes que um disco deixe de estar sob seu controle.
Após qualquer modificação manual do config.toml, reinicie o serviço para
que ela seja aplicada:
Restart-Service uVersionServer
Verificar a instalação
Quatro verificações independentes. Substitua C:\ProgramData\uVersion pela sua
pasta de dados se você escolheu outra.
1. O serviço está em execução
Get-Service uVersionServer
Esperado: Status: Running.
2. O servidor escuta em HTTPS na 8443
Get-NetTCPConnection -LocalPort 8443 -State Listen
Uma linha deve aparecer. Nada, enquanto o serviço está em execução, geralmente significa que o TLS foi desativado na configuração: o servidor passa então para HTTP simples e a 8443 não escuta mais.
3. Reexibir a impressão digital do certificado
Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"
É a impressão digital que cada estação confirma na sua primeira conexão.
4. Reler a configuração ativa
Get-Content "C:\ProgramData\uVersion\config.toml"
Se o serviço se recusar a iniciar, a maneira mais direta de ver por quê é iniciar o binário em primeiro plano: os erros de inicialização aparecem então diretamente na sua janela. É, aliás, o comando que o script de instalação lhe propõe quando constata a falha.
$env:CONFIG_PATH = 'C:\ProgramData\uVersion\config'
& 'C:\Program Files\uVersion\uversion-server.exe'
Depois pare com Ctrl+C, então Start-Service uVersionServer. Se o serviço nem
chega a iniciar o suficiente para produzir um erro, o Visualizador de Eventos do Windows
(eventvwr.msc) o registra no log Sistema, origem
Service Control Manager. Não procure ali um log de aplicação com o nome
uVersion: o servidor escreve na sua saída padrão, ele não registra uma origem de
eventos do Windows, então um comando do tipo
Get-EventLog -Source uVersionServer nunca retornará nada.
Desinstalar
Duas maneiras equivalentes. Ambas executam o mesmo script
(uninstall.ps1), que gerencia o serviço, o firewall, a variável
de ambiente da máquina, a pasta de dados, o binário, a entrada em Programas e
Recursos e o banco de dados PostgreSQL.
Método 1: via Programas e Recursos
- Win+R →
appwiz.cpl→ Enter - Encontre uVersion Server na lista
- Clique com o botão direito → Desinstalar
- Uma janela do PowerShell de administrador abre e executa o script de forma visível
Método 2: via PowerShell como Administrador
iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex
O script mostra seus dois caminhos no início e, ao final, um bloco de verificação: você deve ver "OK absent" em verde para o serviço, o diretório de instalação, a pasta de dados e a entrada em Programas e Recursos.
Caso de uma instalação personalizada feita antes de agosto de 2026.
O script de desinstalação agora encontra sozinho os caminhos realmente usados:
a instalação os inscreve ao lado da sua entrada em Programas e Recursos, e a
desinstalação os relê. Portanto, você não precisa especificar nada, mesmo que tenha escolhido um
-DataDir personalizado.
Nem sempre foi assim: uma instalação anterior a essa correção não inscreveu
seus caminhos, e a desinstalação recai então nos valores padrão.
Se você está nesse caso e tinha personalizado um caminho, passe-os
explicitamente, caso contrário o banco de dados que o -DbOnDataDir deveria preservar
corre o risco de ser excluído enquanto os segredos, por sua vez, permanecem no lugar:
$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"
Desinstalar o PostgreSQL também?
Por padrão, o uninstall.ps1 não mexe no PostgreSQL: outros aplicativos
podem usá-lo. Para removê-lo também:
$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
A verificação [byte[]] é necessária: dependendo do tipo de conteúdo servido,
o Invoke-WebRequest -UseBasicParsing pode retornar o corpo da resposta como um array
de bytes ou como uma string. O padrão acima funciona nos dois casos.
-RemovePostgreSQL remove
toda instalação do PostgreSQL da máquina, não apenas o
banco de dados do uVersion. Use apenas se tiver certeza de que nada mais o usa.