Wiki
Windows へのインストール
PowerShell 一行:アクティベーションコード、winget 経由の PostgreSQL、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 ウィンドウ内で行われ、各ステップを確認できます。Linux の
sudo apt install に相当する Windows 版です。
3. アクティベーションコードを入力する
尋ねられる唯一の質問です:ほかの選択はすべて、後述のパラメータで
行います。入力欄は 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
受け付けられる 9 つのパラメータ:
| パラメータ | 既定値 | 役割 |
|---|---|---|
-LicenceKey | (尋ねられる) | アクティベーションコード、または完全なライセンスキー。質問を省きます。 |
-InstallDir | C:\Program Files\uVersion |
バイナリの配置先。 |
-DataDir | C:\ProgramData\uVersion |
データ、設定、シークレットの配置先。容量が増えていくフォルダなので、大きな ディスクに置くべきものです。 |
-DbOnDataDir | 無効 | PostgreSQL データベースもデータフォルダに置き、残った 1 台のディスクだけで サーバーを再構築できるようにします。下の囲みを参照してください。 |
-Port | 8080 |
プレーン HTTP のフォールバックポート。設定で TLS を無効にした場合にのみ 使われます。通常の HTTPS ポートは 8443 です。 |
-BindAddress | 0.0.0.0 |
待ち受けインターフェース。既定ではすべてで待ち受けます。 |
-DownloadUrl | uversion.io | アーカイブの取得元。内部ミラーからインストールする場合に変更します。 |
-Reconfigure | 無効 | すでに存在していても config.toml を書き換えます。 |
-Update | 無効 | 既存インストールのバイナリを更新してサービスを再起動します。PostgreSQL、 ライセンス、設定には手を触れません。管理パネルの「更新」ボタンが起動するのが これです。 |
-DbOnDataDir は、1 台のディスクだけでサーバーを
復旧できるかどうかを決めます。これがないと PostgreSQL データベースは別に残ります:
マシンが壊れた場合、残ったデータディスクにはファイルの内容は入っていますが、リビジョンも、
アカウントも、ロックも、権限も一切ありません。これがあれば、1 台のディスクに加えて
PostgreSQL とこのスクリプトがあれば、別の場所でサーバーを再構築できます。引き換えに:その
ディスクはライセンスキーとパスワードも保持することになり、データベースはそれを作成した
PostgreSQL のメジャーバージョンでしか再び開けません。
ファイルの保存先
すべては既定でデータフォルダ C:\ProgramData\uVersion に置かれます:
設定(config.toml)、バージョン管理されたファイルの内容
(data\chunks)、TLS 証明書とそのフィンガープリント
(data\tls)、そして初期管理者パスワードです。
このフォルダには 3 つのシークレットも平文で入っています:
licence-key(ライセンスキー)、db-password(uVersion
データベースのパスワード)、postgres-superuser-password(PostgreSQL の
管理者アカウントのパスワード)。これらは管理者専用の権限で保護されています。この
フォルダを金庫のように扱ってください:オープンなネットワーク共有にコピーせず、ディスクが
あなたの管理下を離れる前にこれらのファイルを消去してください。
config.toml を手動で変更したら、反映させるためにサービスを再起動して
ください:
Restart-Service uVersionServer
インストールの確認
独立した 4 つの確認です。別のデータフォルダを選んだ場合は
C:\ProgramData\uVersion をそれに置き換えてください。
1. サービスが動いている
Get-Service uVersionServer
期待される結果:Status: Running。
2. サーバーが 8443 で HTTPS を待ち受けている
Get-NetTCPConnection -LocalPort 8443 -State Listen
1 行が表示されるはずです。サービスが動いているのに何も出ない場合は、たいてい設定で 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 のようなコマンドは何も返しません。
アンインストール
同等の方法が 2 つあります。どちらも同じスクリプト(uninstall.ps1)を実行し、
サービス、ファイアウォール、マシンの環境変数、データフォルダ、バイナリ、プログラムと機能の
エントリ、PostgreSQL データベースを処理します。
方法 1:プログラムと機能から
- Win+R →
appwiz.cpl→ Enter - リストから uVersion Server を見つけます
- 右クリック → アンインストール
- 管理者権限の PowerShell ウィンドウが開き、スクリプトが表示されながら実行されます
方法 2:PowerShell を管理者として実行
iwr https://uversion.io/downloads/server/uninstall.ps1 -UseBasicParsing | iex
スクリプトは開始時に 2 つのパスを表示し、最後に検証ブロックを表示します:サービス、 インストールフォルダ、データフォルダ、プログラムと機能のエントリについて、緑色の "OK absent" が表示されるはずです。
2026 年 8 月より前に行ったカスタムインストールの場合。
アンインストールスクリプトは、実際に使われたパスを今では自動で見つけます:インストールが
それらをプログラムと機能のエントリの隣に記録し、アンインストールがそれを読み戻します。
したがって、カスタムの -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 は uVersion のデータベースだけでなく、
マシン上のすべての PostgreSQL インストールを削除します。他に何も
これを使用していないと確信できる場合にのみ使用してください。