資格情報を管理するためのパスワードマネージャである「Vaultwarden」を起動してみました。
起動したばかりで、詳細はまだ理解しておりませんが。
起動手順を記録しておこうと思います。
目次
Podman.exeによるVaultwarden起動手順
例によって起動はWindows版のPodmanを使用しました。
Windows 10 22H2で動かしておりますが、Windows 11でも動作すると思います。
Podman.exeのインストール
DockerかPodmanを使用してイメージを起動したいと思いますが。
まあ理由がいろいろありまして。Podmanを選択します。インストール手順はこちらになります。
Podmanマシーンを初期化・スタートして準備完了となります。
Podman.exeによるVaultwarden起動バッチファイル
コマンドプロンプトで、次の3つのコマンドを実行します。
- ポッドを作成します。名前はvwd-podにしました。コンテナ側のポート番号80を、ホスト側の8080番で公開しています。
- Mariadbコンテナを起動します。パスワードやユーザ名、データベース名は適宜変更して下さい。
- 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側のポートマッピングが必要になります。
詳細はこちらの記事になります。
このような内容のバッチファイルを作成し、管理者権限で実行すると、外部からアクセス可能になりそうです。
※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化してみました。
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化してみました