Wiki
Установка в Windows
Одна строка PowerShell: код активации, PostgreSQL через winget, служба Windows, брандмауэр, сертификат TLS.
Windows 10, 11 или Windows Server 2019+ (x64). Установка одной строкой PowerShell.
Установить
1. Откройте PowerShell от имени администратора
Щёлкните правой кнопкой по значку PowerShell → Запуск от имени администратора. Иначе скрипт отказывается запускаться и сообщает вам об этом.
2. Вставьте команду установки
Одна строка, которую нужно вставить как есть в только что открытое окно:
iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing | iex
Затем скрипт выполняет у вас на глазах:
- запрос кода активации, единственный заданный вопрос: см. следующий шаг
- загрузку бинарного файла и проверку архива
- установку PostgreSQL через
winget, если его нет (около 2 минут) - создание базы данных, роли и службы Windows и открытие брандмауэра (8443, плюс 8080 в качестве запасного)
- регистрацию записи в разделе «Программы и компоненты»
- запуск службы, генерацию самоподписанного сертификата TLS, затем отображение пароля администратора и отпечатка SHA-256 сертификата
Всё происходит в вашем окне PowerShell, вы видите каждый шаг. Это Windows-аналог
команды sudo apt install в Linux.
3. Введите код активации
Это единственный заданный вопрос: все остальные решения задаются
параметрами, описанными ниже. Поле принимает три формы: короткий код
UV-XXXX-XXXX-XXXX, путь к файлу, содержащему ваш полный лицензионный ключ,
или этот ключ, вставленный напрямую. Только при первой форме скрипт обращается к
licence.uversion.io, чтобы обменять код на ключ.
4. Запишите итоговую сводку
Установка завершается рамкой: имя пользователя admin, временный пароль,
адрес сервера и отпечаток сертификата. Запишите их.
Если окно было закрыто слишком быстро, пароль всё ещё находится на диске, пока он не был изменён:
Get-Content "C:\ProgramData\uVersion\initial-admin-password"
Этот файл исчезает, как только вы меняете пароль: поэтому ошибка "Cannot find path" означает, что изменение уже произошло.
Затем вы можете перейти к Первый вход.
Windows Server 2019 и 2022: сначала PostgreSQL
winget отсутствует и в Windows Server 2019, и в
Windows Server 2022. В этом случае скрипт сразу останавливается, с сообщением, которое
прямо вам об этом говорит. Это не сбой: сначала установите
PostgreSQL 16
вручную, затем запустите ту же команду снова. Скрипт обнаруживает существующую службу
PostgreSQL и использует её вместо установки новой.
Неинтерактивный вариант (CI, скриптовое развёртывание)
Короткая форма iwr ... | iex не может получить
никакого параметра: она выполняет скрипт, не передавая ему аргументов,
и добавленный в конец -DataDir будет молча проигнорирован. Как только вы захотите
передать опцию, используйте форму ниже, которая строит явный блок скрипта.
& ([scriptblock]::Create((iwr https://uversion.io/downloads/server/install.ps1 -UseBasicParsing).Content)) `
-LicenceKey "UV-XXXX-XXXX-XXXX" -DataDir "D:\uVersion" -DbOnDataDir
Девять принимаемых параметров:
| Параметр | По умолчанию | Роль |
|---|---|---|
-LicenceKey | (запрашивается) | Код активации или полный лицензионный ключ. Избавляет от вопроса. |
-InstallDir | C:\Program Files\uVersion |
Куда попадает бинарный файл. |
-DataDir | C:\ProgramData\uVersion |
Куда попадают ваши данные, конфигурация и секреты. Это папка, которая растёт, поэтому её стоит разместить на вашем большом диске. |
-DbOnDataDir | отключено | Размещает базу данных PostgreSQL также в папке данных, чтобы одного уцелевшего диска хватило для восстановления сервера. См. рамку ниже. |
-Port | 8080 |
Запасной порт по простому HTTP, используется только если вы отключаете TLS в конфигурации. Обычный порт HTTPS — 8443. |
-BindAddress | 0.0.0.0 |
Интерфейс прослушивания. По умолчанию слушает на всех. |
-DownloadUrl | uversion.io | Источник архива. Измените, чтобы установить из внутреннего зеркала. |
-Reconfigure | отключено | Перезаписывает config.toml, даже если он уже существует. |
-Update | отключено | Обновляет бинарный файл существующей установки и перезапускает службу, не затрагивая PostgreSQL, лицензию и конфигурацию. Именно это запускает кнопка «Обновить» в панели администрирования. |
-DbOnDataDir решает, хватит ли одного диска, чтобы поднять
ваш сервер заново. Без него база данных PostgreSQL остаётся отдельно: если машина
умирает, уцелевший диск данных содержит содержимое ваших файлов, но больше ни одной ревизии,
ни одной учётной записи, ни одной блокировки и ни одного разрешения. С ним одного диска плюс
PostgreSQL и этого скрипта достаточно, чтобы восстановить сервер в другом месте. Взамен: этот
диск тогда несёт также лицензионный ключ и пароли, а базу данных можно вновь открыть только
той старшей версией PostgreSQL, которая её создала.
Куда попадают файлы
Всё живёт в папке данных, по умолчанию C:\ProgramData\uVersion:
конфигурация (config.toml), содержимое ваших версионируемых
файлов (data\chunks), сертификат TLS и его отпечаток
(data\tls) и начальный пароль администратора.
Эта папка также содержит три секрета в открытом виде:
licence-key (ваш лицензионный ключ), db-password (пароль базы
данных uVersion) и postgres-superuser-password (пароль учётной записи
администратора PostgreSQL). Они защищены разрешениями, зарезервированными для администраторов.
Относитесь к этой папке как к сейфу: не копируйте её в открытый сетевой ресурс и стирайте эти
файлы, прежде чем диск выйдет из-под вашего контроля.
После любого ручного изменения config.toml перезапустите службу, чтобы оно
вступило в силу:
Restart-Service uVersionServer
Проверьте установку
Четыре независимые проверки. Замените C:\ProgramData\uVersion на вашу
папку данных, если вы выбрали другую.
1. Служба работает
Get-Service uVersionServer
Ожидается: Status: Running.
2. Сервер слушает HTTPS на 8443
Get-NetTCPConnection -LocalPort 8443 -State Listen
Должна появиться одна строка. Полное отсутствие вывода при работающей службе обычно означает, что TLS был отключён в конфигурации: сервер тогда переходит на простой HTTP, и 8443 больше не слушает.
3. Снова показать отпечаток сертификата
Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"
Это отпечаток, который каждое рабочее место подтверждает при первом подключении.
4. Перечитать активную конфигурацию
Get-Content "C:\ProgramData\uVersion\config.toml"
Если служба отказывается запускаться, самый прямой способ увидеть почему — запустить бинарный файл на переднем плане: ошибки запуска тогда отображаются прямо в вашем окне. Это, кстати, та самая команда, которую скрипт установки предлагает сам, когда обнаруживает сбой.
$env:CONFIG_PATH = 'C:\ProgramData\uVersion\config'
& 'C:\Program Files\uVersion\uversion-server.exe'
Затем остановите с помощью Ctrl+C, потом Start-Service uVersionServer. Если служба
даже не запускается достаточно, чтобы выдать ошибку, средство просмотра событий Windows
(eventvwr.msc) записывает её в журнал Система, источник
Service Control Manager. Не ищите там журнал приложения с именем
uVersion: сервер пишет в свой стандартный вывод, он не регистрирует источник событий
Windows, поэтому команда вроде
Get-EventLog -Source uVersionServer никогда ничего не вернёт.
Удаление
Два равнозначных способа. Оба выполняют один и тот же скрипт
(uninstall.ps1), который управляет службой, брандмауэром, системной
переменной среды, папкой данных, бинарным файлом, записью в разделе «Программы и
компоненты» и базой данных PostgreSQL.
Способ 1: через «Программы и компоненты»
- Win+R →
appwiz.cpl→ Enter - Найдите uVersion Server в списке
- Щёлкните правой кнопкой → Удалить
- Откроется окно PowerShell с правами администратора и выполнит скрипт в видимом режиме
Способ 2: через PowerShell от имени администратора
iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex
Скрипт показывает ваши два пути при запуске, а в конце — блок проверки: для службы, каталога установки, папки данных и записи в разделе «Программы и компоненты» вы должны увидеть зелёное "OK absent".
Случай пользовательской установки, сделанной до августа 2026 года.
Скрипт удаления теперь сам находит реально использованные пути:
установка записывает их рядом со своей записью в разделе «Программы и компоненты», а
удаление их перечитывает. Поэтому вам не нужно ничего указывать, даже если вы выбрали
пользовательский -DataDir.
Так было не всегда: установка до этого исправления не записывала
свои пути, и удаление тогда откатывается к значениям по умолчанию.
Если вы в этом случае и настраивали путь, передайте их
явно, иначе база данных, которую должен был сохранить -DbOnDataDir, может быть
удалена, тогда как секреты, со своей стороны, останутся на месте:
$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"
Удалить также PostgreSQL?
По умолчанию uninstall.ps1 не трогает PostgreSQL: его могут использовать
другие приложения. Чтобы удалить и его:
$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
Проверка [byte[]] необходима: в зависимости от типа отдаваемого содержимого
Invoke-WebRequest -UseBasicParsing может вернуть тело ответа как массив
байт или как строку. Приведённый выше шаблон работает в обоих случаях.
-RemovePostgreSQL удаляет
все установки PostgreSQL на машине, а не только базу данных
uVersion. Используйте её, только если уверены, что ничего другого её не использует.