【Umbrel】VaultwardenをTorじゃなくてtailscaleで使いたい

【Umbrel】VaultwardenをTorじゃなくてtailscaleで使いたい

注意:Umbrel v0.5.3以上に対応

パスワード管理ツールBitwardenのオープン実装VaultwardenがUmbrelアプリにあるが、こいつインストールしてクリックすると「Torで使ってね!」って言ってくる。
クライアント(Webブラウザ、スマホアプリ)とサーバ(Umbrel)間を暗号化したいならTorでなくてもtailscaleがあるじゃないかと思いついたのでやってみた。

1.TLS(SSL)証明書を発行

tailscaleならVPNなので端末間は暗号通信になるけどVaultwardenはそんなのわからないし、httpなのでアカウント登録させてくれない。なのでUmbrel側にTLS証明書を発行してhttpsにすればいい。tailscaleはtailscaleネットワークでのみ通用するTLS証明書発行する機能があるのでこれを活用する。
 具体的にはたがえる氏の以下の記事を参考にしてtailscale内で通用する証明書を発行する。

tailscaleのdockerコンテナに入って /var/libに移動する。
以下コマンド例

docker exec -it tailscale_web_1 sh

・コンテナに入った後
cd /var/lib/
tailscale cert

・上記コマンドを打つとドメイン名が分かる
Usage: tailscale cert [flags] <domain>
For domain, use "<あなたのtailscaleドメイン名>".

・証明書を発行
tailscale cert <あなたのtailscaleドメイン名>

2.vaultwardenアプリの接続待受IPアドレスを設定

Umbrel v0.5.3からVault wardenに割り当てられるUmbrel専用DockerネットワークのIPアドレスが固定されなくなった。リバースプロキシで転送するのに固定IPアドレスがないと不便なので固定IPアドレスを割当てる。

UmbrelアプリストアでVault wardenをインストールし、/home/umbrel/umbrel/scripts/appスクリプトで止める。その後Vault wardenのdocker-compose.ymlを編集、appスクリプトで再開する。

Vault wardenの停止
cd /home/umbrel/umbrel/scripts
./app stop vaultwarden

停止している間に/home/umbrel/umbrel/app-data/vaultwarden/docker-compose.ymlを編集する。

Vault wardenの開始
cd /home/umbrel/umbrel/scripts
./app start vaultwarden

docker-compose.ymlの末尾に以下3行を追加。インデント(行頭からの空白)は他と揃えること。

    networks:
      default:
        ipv4_address: 10.21.21.229

こんな感じになる。

編集完了したらappスクリプトで再開。

3.リバースプロキシ用のnginxコンテナとnginx用設定ファイルの作成

Umbrelはhttpsの待受ポート番号443番を使っていない。
今回の目的はhttpsを使いたいわけなので、443番だけのリバースプロキシを用意してそこからVaultwardenに転送する。

/home/umbrel にrvnginxディレクトリを作成する。(名称はなんでも良いけど)
※/home/umbrel/umbrelには作らない。アップデートで消えるから。

/home/umbrel/rvnginxにdocker-compose.ymlを作成する。
一応10.21.21.230をこのnginxに割り当ててるが、将来他のUmbrelアプリが使うかもしれない。

version: '3.7'

services:
  main:
    image: nginx:1.17.8@sha256:380eb808e2a3b0dd954f92c1cae2f845e6558a15037efefcabc5b4e03d666d03
    volumes:
      - /home/umbrel/rvnginx:/etc/nginx
      - /home/umbrel/umbrel/app-data/tailscale/data:/data:ro
    restart: on-failure
    stop_grace_period: 30s
    ports:
    - "443:443"
    networks:
      umbrel_main_network:
        ipv4_address: 10.21.21.230

networks:
  umbrel_main_network:
    external: true

同じく/home/umbrel/rvnginxにnginx.confを作成する。
以下のURLで同一tailscaleネットワークに追加しているPCやスマホから以下のURLで接続できるようにした。
https://<Umbrelに割り当てられたドメイン名>/vw/

# Warning: it's not recommended to modify these files directly. Any
# modifications you make can break the functionality of your umbrel. These files
# are automatically reset with every Umbrel update.

user nginx;
worker_processes 1;

error_log /dev/stdout info;

events {
	worker_connections 1024;
}

http {
	access_log /dev/stdout;

	proxy_read_timeout 600;

	default_type application/octet-stream;

	server {
		listen 443 ssl;
		ssl on;
		ssl_certificate     /data/<割り当てられたドメイン名>.crt;
		ssl_certificate_key /data/<割り当てられたドメイン名>.key;

		server_name <割り当てられたドメイン名>;
		
		# VaultWarden
		location /vw/ {
		    proxy_pass http://10.21.21.229:8089/;
		}
	}

}

今後Vaultwarden以外のアプリに対して転送したいケースが出てくるかもしれない。その場合は location {} の箇所を増やす。

4.リバースプロキシ開始

以下のように実行すればこのリバースプロキシしてくれるコンテナがバックグランドで作成・起動する。

cd /home/umbrel/rvnginx
コンテナの開始
docker-compose up -d

コンテナの停止
docker-compose stop

ここまで出来たら後はブラウザやBitwardenスマホアプリで以下のURLに接続すれば良い。
https://<Umbrelに割り当てられたドメイン名>/vw/

終わり

<メモ>
・このやり方でBTCPay serverに転送したい場合、locationを/ にする。それ以外だと上手く行かないっぽい。

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

甘いもの大好きメタボ猫。マイペースなのはしょうがない。 nostr:npub10zeurmg22wc89l8m3npw9cyu45cun0lvs6w3ep69cdpa25pna65s0994qz

Share

Popular stories

【Umbrel】BlueWallet Lightning & tailscaleで便利で快適なLightningウォレットを作ろう!

499

【Umbrel】LNURLが使いたいから自分で環境つくってみた

270

Bitcoin CPUソロマイニング(マイニングプール無し)

236