uVersion
Русский
Скачать →

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, временный пароль, адрес сервера и отпечаток сертификата. Запишите их.

Сводка, выводимая в конце установки: имя пользователя 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(запрашивается) Код активации или полный лицензионный ключ. Избавляет от вопроса.
-InstallDirC:\Program Files\uVersion Куда попадает бинарный файл.
-DataDirC:\ProgramData\uVersion Куда попадают ваши данные, конфигурация и секреты. Это папка, которая растёт, поэтому её стоит разместить на вашем большом диске.
-DbOnDataDirотключено Размещает базу данных PostgreSQL также в папке данных, чтобы одного уцелевшего диска хватило для восстановления сервера. См. рамку ниже.
-Port8080 Запасной порт по простому HTTP, используется только если вы отключаете TLS в конфигурации. Обычный порт HTTPS — 8443.
-BindAddress0.0.0.0 Интерфейс прослушивания. По умолчанию слушает на всех.
-DownloadUrluversion.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: через «Программы и компоненты»

  1. Win+R → appwiz.cpl → Enter
  2. Найдите uVersion Server в списке
  3. Щёлкните правой кнопкой → Удалить
  4. Откроется окно 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. Используйте её, только если уверены, что ничего другого её не использует.