Windows 10 PCでパスワード管理サーバVaultwardenを起動してみました

おうちのWindows 10 PCで。

資格情報を管理するためのパスワードマネージャである「Vaultwarden」を起動してみました。

起動したばかりで、詳細はまだ理解しておりませんが。

起動手順を記録しておこうと思います。


Podman.exeによるVaultwarden起動手順

例によって起動はWindows版のPodmanを使用しました。

Windows 10 22H2で動かしておりますが、Windows 11でも動作すると思います。

Podman.exeのインストール

DockerかPodmanを使用してイメージを起動したいと思いますが。

まあ理由がいろいろありまして。Podmanを選択します。インストール手順はこちらになります。

https://denor.jp/windows%E7%89%88podman-exe%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86-2022%E5%B9%B410%E6%9C%88%E7%89%88

Podmanマシーンを初期化・スタートして準備完了となります。


Podman.exeによるVaultwarden起動バッチファイル

コマンドプロンプトで、次の3つのコマンドを実行します。

  1. ポッドを作成します。名前はvwd-podにしました。コンテナ側のポート番号80を、ホスト側の8080番で公開しています。
  2. Mariadbコンテナを起動します。パスワードやユーザ名、データベース名は適宜変更して下さい。
  3. Vaultwardenサーバを起動します。URLのユーザ名、パスワード、データベース名は、Mariadbに合わせるかたちです。
rem Vaultwardenポッド作成
podman pod create --name vwd-pod -p=8080:80/tcp
rem Mariadbコンテナ起動
podman run ^
--restart always ^
--pod vwd-pod ^
--name vwd-db ^
-e MYSQL_ROOT_PASSWORD=root-p@ssw0rd ^
-e MYSQL_DATABASE=vaultwarden ^
-e MYSQL_USER=vwduser ^
-e MYSQL_PASSWORD=Passw0rd ^
-d docker.io/library/mariadb
rem Vaultwardenコンテナ起動
podman run ^
--restart always ^
--pod vwd-pod ^
--name vwd-sv ^
-e DATABASE_URL='mysql://vwduser:Passw0rd@localhost/vaultwarden' ^
-e ADMIN_TOKEN=hello_denor.jp ^
-v vwd-pod-vol:/data ^
-v .:/ssl ^
-d docker.io/vaultwarden/server

起動に必要なパラメータを入れましたので、さらっと起動した感じです。


動作確認

Webブラウザで起動したサーバに接続します。

http://localhost:8080

最初に「アカウントの作成」ボタンをクリックして、アカウントを作成しましょう。作成後、ログインすると、保管庫の画面が表示されます。

スマートフォン等からアクセスする場合は、PodmanからWSL2で動かしているため、Windows 10側のポートマッピングが必要になります。

詳細はこちらの記事になります。

https://denor.jp/wsl2%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%84%E4%BB%96%E3%81%AEpc%E3%81%8B%E3%82%89%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%82%8B

このような内容のバッチファイルを作成し、管理者権限で実行すると、外部からアクセス可能になりそうです。

※22.11.25修正:IPアドレスを取り出す構文に不具合がありましたので修正しました。不具合の内容:IPアドレスが0で終わる場合、正しく取り出せませんでした。構文に\.を追加しました。

※22.12.8追記:ファイアウォールのルールが無限に追加されてしまうため、ルールが存在するか判定するIF文を追加しました。

rem podmanマシン起動
podman machine start

rem podmanマシンのIPアドレス取得
FOR /F %%i in ('podman.exe machine ssh "cat /proc/net/fib_trie | sed -e 's/^[ \-\|\+]*[ \-]*//' | grep '[\d]*\.' |grep -v -e '0.0.0.0' -e '^127\.[\d]*' -e '\/' -e '\.0$' -e '\.255$'"') DO set IPADR=%%i

rem ポッド起動
set pod=vwd-pod
podman pod start %pod%

rem ポートフォワード
set PTNB=8080
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=%PTNB% connectaddress=%IPADR% connectport=%PTNB%

rem 受信ルール
netsh advfirewall firewall show rule name= "TCP %PTNB%" dir=in
IF %ERRORLEVEL% GEQ 1 (
netsh advfirewall firewall add rule name= "TCP %PTNB%" dir=in action=allow protocol=TCP localport=%PTNB%
)

rem 送信ルール
netsh advfirewall firewall show rule name= "TCP %PTNB%" dir=out
IF %ERRORLEVEL% GEQ 1 (
netsh advfirewall firewall add rule name= "TCP %PTNB%" dir=out action=allow protocol=TCP localport=%PTNB%
)

<ホスト名>local等のmDNS対応のホスト名でアクセスしたり、PC側のIPアドレスを固定に設定しておくとアクセスしやすくなります。


実用にはhttpsが必要

アプリ画面の右上、歯車アイコンをタップします。

サーバURLに、構築したサーバのURLを指定しておきましょう。

http://外部からアクセス可能なIPアドレスまたはホスト名:8080

とおもったら、localhsot以外はhttpではログイン出来ないのですね。

httpsを有効にする必要があるそうです。下記のどれかの方法で、有効にできそうですが。

  • リーバスプロキシ
  • ROCKET TLS
  • Let’s Encrypt

このあたりは、私にはもう少し研究が必要そうです。

※22.12.6追記:実際にリバースプロキシでSSL化してみました。

https://denor.jp/windows%e7%89%88podman%e3%81%a7vaultwarden%e3%82%92ssl%e5%8c%96%e3%81%97%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f


Vaultwardenは非公式の実装です念のため

rem ログ表示
podman logs vwd-sv
podman logs vwd-db

問題なく起動すると、図のようなログが出力されるようです。

vaultwardenは、Bitwardenの非公式の実装のため、公式チャンネルは使わないでね、との記述があります。ふむふむ。

Bitwardenと互換性がありますので、スマートフォンのアプリ等はそちらを使用する流れかと思いますが。レポート等は、Vaultwarden側へ、という内容です。


構築用スクリプト覚書

ポッドを作り直す場合や、ボリュームの保存に必要なスクリプトの自分用覚書です。

rem コンテナとボリューム全削除
podman container stop --all
podman container rm --all
podman pod stop --all
podman pod rm --all
rem ボリュームマウント先の確認
podman container inspect --format {{.Mounts}} vwd-db
rem /var/lib/mysql/data
podman container inspect --format {{.Mounts}} vwd-sv
rem /data , /ssl
rem SSL関係
podman run --rm -v .:/backup fedora bash
# dnf update
# dnf install openssl

コンテナとポッドを消すと、データが消えますのでご注意下さい。

データを消えないようにするには、mariadbとvaultwardenそれぞれのコンテナのボリュームをバックアップする必要があります。

本格的に使用可能になりましたら、追々、コンテナのバックアップ手順等を追記するかもしれません。


パスワード管理ですが。

正直、日々のインターネット利用時の不安材料の一つです。パスワード管理。

クラウド上にパスワードを保管するのは、私は不安があります。

今回、パスワード管理サーバを、自宅のPCで動かしたということで。

クラウド上に保管するよりは、まあ少しは安心な気もしますが。

その判断は、実際に使ってみてからでしょうか。

簡単ですので、宜しければ起動してみて下さいませ。

※22.12.6追記:実際にSSL化してみました

https://denor.jp/windows%e7%89%88podman%e3%81%a7vaultwarden%e3%82%92ssl%e5%8c%96%e3%81%97%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f

[amazonjs asin=”B09FXCLJHZ” locale=”JP” title=”パスワード管理帳”]

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です