【Umbrel】tailscale->UmbrelのSSL接続を中継するラズパイの作り方

【Umbrel】tailscale->UmbrelのSSL接続を中継するラズパイの作り方

Umbrelにtailscaleを入れて任意のUmbrelアプリ(例:BTC pay server)にリバースプロキシ接続するWebサーバをようと思ったけどUmbrelの動作を阻害しないようにアレコレするのが面倒くさい。なのでウチで余っているラズパイ3を中継専用マシンにしてみたら上手くできたので、その設置工程をメモした。

前提条件

以下の記事の1)から5)を参考にしてtailscaleのMagicDNSとHTTPSを有効にすること。6)以下は不要。

tailscale管理ページのログインは下記URLの右上にあるLog inから。

工程概要

1.Raspberry Pi ImagerでマイクロSDカードにラズパイOSを書き込む。
2.ラズパイ3起動してSSHでログイン
3.tailscaleをインストール
4.Caddy(Webサーバ)をインストール
5.Caddyが任意のUmbrelアプリへSSH接続を転送するように設定(リバースプロキシ)
6.Umbrelにて、SSL接続の転送を邪魔しないための設定を追加。

工程詳細

1.Raspberry Pi ImagerでマイクロSDカードにラズパイOSを書き込む。

下記ページでRaspberry Pi Imagerをダウンロードしてインストール。
このツールはUmbrelOSをマイクロSDカードに書き込みする場合にも使える。

Operating SystemにRASPBERRY PI OS LITE(64-BIT)を選択。
Storageに作業用PCに接続したマイクロSDカードライタを指定。

右下の歯車アイコンをクリックして、下記設定をする。
・Enable SSH をチェック入れる。Use password authenticationを選ぶ。
・Set username and passwordをチェック入れる。
 任意のユーザ名とパスワードを入力。
・WiFiを使うならConfigure wifiをチェック入れる。
 SSIDとPasswordを入力。Wifi countryをJPとする。
ここまでやったらSAVEをクリック。

WRITEをクリックしてマイクロSDカードにラズパイOSを書き込む。
書き込み完了したらRaspberry Pi Imagerを終了し、マイクロSDカードライタからマイクロSDカード抜いてラズパイ3に入れる。

<メモ>
Raspberry Pi Imagerを使ってUmbrelOSを書き込む場合、上記歯車アイコン後の設定は不要。というかやるな。試しにやってみたがWiFi接続できなかった。デフォルトアカウントはUmbrelが用意するので設定不要。過去のspotlight記事を参照してWiFi設定してください。

2.ラズパイ3起動してSSHでログイン

ラズパイ3の電源ONして起動。
私の自宅ネットワークではホームゲートウェイがDHCPによって自動的にIPアドレスを割り振るので、ラズパイ3に割り振られたIPアドレスでSSHログインした。
※ここは各自の環境にてIPアドレスを特定し、SSHログインしてください。

3.tailscaleをインストール

以下コマンドを実行する。
インストール工程が表示され、tailscaleがインストールされる。

curl -fsSL https://tailscale.com/install.sh | sh

※コマンドは以下ページより引用。

コマンド実行完了したら次は以下コマンドを実行する。

sudo tailscale up

ログインするためのURLが表示される。


このURLをWebブラウザにコピペ。
スマホやPCなどラズパイ3へ接続中継したい端末と同じアカウントでログインする。「Authorization successful」となったらWebページは閉じる。
ログイン完了するとSSH画面にてSuccess.と表示される。

以下コマンドを実行し、ラズパイ3のドメイン名を確認しておく。
確認するだけで証明書発行は必要ない。

tailscale cert

" "で囲まれた所がドメイン名。

4.Caddy(Webサーバ)をインストール

SSHにて以下コマンドを実行する。
インストール工程が表示され、Caddyがインストールされる。

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

※コマンドは以下ページより引用。

5.Caddyが任意のUmbrelアプリへSSL接続を転送するように設定(リバースプロキシ)

Caddyのインストール完了したら次は以下コマンドにてCaddyの設定ファイル(Caddyfile)を編集する。

cd /etc/caddy
sudo nano Caddyfile

Caddyfileの中身は以下

<さっき確認したラズパイ3のドメイン名>
reverse_proxy <UmbrelのローカルIPアドレス>:3003

私の実験用UmbrelのローカルIPアドレスが192.168.1.105、BTC pay serverのポート番号は3003番なので上記設定になっている。Webブラウザからこのドメイン名で接続するとBTC pay serverに転送されるようになる。

次は以下コマンドを実行。
CaddyでtailscaleからSSL証明書を取得できるようにするため、/etc/default/tailscaledファイルの末行に TS_PERMIT_CERT_UID=caddy を追加する。

cd /etc/default/
sudo nano tailscaled

以上の設定変更を反映するために以下コマンドを実行してcaddyとtailscaleを再起動する。

sudo systemctl restart caddy tailscaled

ここまで出来たら中継ラズパイの完成。

6.Umbrelにて、SSL接続の転送を邪魔しないための設定を追加

Umbrel v0.5.0は外からのSSL接続転送が上手くできなかった。
v0.5.1から転送可能とする対策が追加された。その対策をBTC pay serverに施す。

UmbrelにSSHログインする。
以下コマンドを実行。

cd ~/umbrel/app-data/btcpay-server
echo "PROXY_TRUST_UPSTREAM=true" > .env.app_proxy

次に以下コマンドを実行し、BTC pay serverを停止開始することで再起動して上記設定を有効にする。

cd ~/umbrel/scripts
./app stop btcpay-server
./app start btcpay-server

以上で対策完了。

あとはtailscaleに追加しているスマホやPCのブラウザで
https://ラズパイ3のドメイン名
とするとBTC pay serverのログインページに接続される。

<終わり>

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

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

Share

Popular stories

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

273

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

146

【Umbrel】LNDのtls.certってどんな時使うの?

102