概要
”Tailscaleを使う” があまりにも強力なので、見守りカメラを使ってその一部を紹介します。
前準備
"Tailscaleを使う" の続き
これは、”Tailscaleを使う” の続編です。 ”Tailscale”のインストール、アカウントの作製等、初期設定が完了している事を前提にしています。
"UV4Lで見守りカメラの製作" を使う
”Tailscale" から"UV4Lで見守りカメラの製作" のサーバに必要な証明書と鍵(自作では無く正式版)を得て、それをRaspberry PI のサーバに適用しています。 カメラが動く様になっていればその効果を実際に体験出来ます。
Python Server を自動起動に
”Tailscale” の機能検証中、何回か Raspberry PI を Reboot する機会が有り、 その度に Python Server をコマンドで起動するのが面倒だったので、 "起動時にプログラムを自動実行" を参照に Python Server を自動起動する様にしています。
Ubuntuに ”Tailscale” をインストール
”Tailscaleを使う”では スマホから Raspberry PI にアクセスしましたが、今回はPCから "Tailscale" を使って Raspberry PI にアクセスします。先ずは PC に ”Tailscale" をインストール。 インストールは簡単。ターミナルで下記を実行。
インストール後Tailscaleを有効化するために sudo tailscale up を実行します。
実行すると、ターミナルに https://login.tailscale.com/a/xxxxxx のようなURLが表示されます。 このURLにアクセスするとTailscaleログイン画面(下記1)が表示されます。 今回はログイン時に注意が必要です。
- 現在登録しているアカウントでログイン。このPCが同じグループに登録されます。
- Connectボタンを押してPCを接続。
- 接続完了。
しばらくすると画面が下記に変わります。PCが追加され接続している事が分かります。
これでスマホの時同様、IPアドレスまたは MagicDNS を使って Raspberry PI にアクセス出来る様になりました。
公式の秘密鍵と証明書をゲット
ここからが本題です。Tailscale ネットワーク内(言い方が正しいか疑問)で使える "公式秘密鍵と証明書" を Tailscale が発行してくれる事が分かりました。ドメインの申請無しに"公式秘密鍵と証明書"がもらえるんです。 その申請手順は以下の通り。
*Tailscaleの管理画面
ブラウザで "https://login.tailscale.com/admin/machines" (管理画面)にアクセス。画面上部に有る "DNS" タブを選び DNS管理画面に移動。
*DNS 管理画面
- 上部、"Tailnet DNS name"
- ここでドメイン名の調整が出来ます
- Tailscale はドメイン名を次の様に設定しています。" [マシン名] . [テイルネット名] . ts.net "。
- ちなみに現在のドメイン名は、”rasp.taila0f22a.ts.net" です。
- [テイルネット名] を幾つかの候補から選んで変更する事が出来ます。
- Tailnet... ボタンを押すと、候補が表示されます。ここで[テイルネット名]を変更出来ます。
- 下から2番めの "MagicDNS"
- ここで "MagicDNS" の設定を行います。
- ボタンの表示が "Disable MagicDNS" ならON。"Enable MagicDNS" ならOFFです。
- 現行は "Disable MagicDNS" なのでON。ここは ON に設定して下さい。
- 一番下の "HTTPS Certificates"
- ここで秘密鍵と証明書を申請します。
- この時点で設定しているドメイン名で申請されます。今回は "rasp.taila0f22a.ts.net"。
- 申請は簡単。"Enable HTTPS..." ボタンを押すだけです。これで申請完了。
- ボタンを押すと、"Enable HTTPS..." が "Disable HTTPS..." に変わります。
"MagicDNS"、"HTTPS Certificates" 共に "Disable" にセットして下さい。 これで申請完了です。後は申請した秘密鍵と証明書を受け取るだけです。
受取方とサーバへの適用
受取は簡単。ターミナルで "tailscale cert + ドメイン名" を実行。ファイルがダウンロードされます。 今回使用するのは Raspberry PI の Python サーバ。これは "monitor" フォルダにあるので "monitor" フォルダに 移動。ドメイン名は "rasp.taila0f22a.ts.net" なのでコマンドは下記の様になります。
コマンド実行後、証明書:”rasp.taila0f22a.ts.net.crt” と 鍵: "rasp.taila0f22a.ts.net.key" がダウンロードされました。 さっそく、これらをPythonサーバとUV4Lコンフィグファイルに適用して行きます。
Pythonサーバ
Pythonサーバ "monitor.py" への適応箇所は以下。コードの112行目辺りに有る秘密鍵と証明書指定箇所 (下記上段)を今回取得したファイルに変更(下記下段)。
UV4Lコンフィグファイル
UV4Lコンフィグファイルは "/etc/uv4l/uv4l-uvc.conf" 。このファイルの最後で秘密鍵と証明書を指定しています。上段が変更前、下段が変更後です。
修正後、Raspberry PI をリブート。立ち上がったらPCのブラウザからアクセスします。
ブラウザからアクセス
"Tailscale" はインストールの設定で起動時自動起動する設定になっています。 (設定を変更したいなら "systemctl” を使ってサービス ”tailscaled" を変更して下さい) ブラウザでの Raspberry PI へのアクセスですが、 "Tailscale" ネット内では Raspberry PI のドメイン名は "rasp.taila0f22a.ts.net" 。 よってブラウザのURL欄には "https://rasp.taila0f22a.ts.net" と入力します。下記は実行結果。
Chrome, FirFox 共に問題無くアクセス出来ました。
- 自前の証明書の時に有った危険警告がなくなった。
- 当然だが、ブラウザへの危険登録無しにつながった。
- PCではこのコードが "Chrome" で動かなかったが、今回は問題無く動く。
同じ事をスマホで確認したのですが、"Chrome", "FireFox" 共に問題無くアクセス出来ました。 さすが公式秘密鍵と証明書です。
最後に
"Tailscale"のネット内ならルータの変更無しで
- Raspberry PI を遠方に置き、自宅の PC で Raspberry PI の Streaming を確認出来る。
- 自宅の Raspberry PI を出先から、モバイルまたは WiFi を利用してスマホで確認出来る。
- 完璧なSSL認証(公式証明書と鍵)でブラウザの動きに問題無し。
という事。さらに秘密鍵と証明書の更新も "Tailscale" が自動で行ってくれるそうです。 ここまで出来て使用料が無料。なんて素晴らしいサービスでしょう。
まだ使い初めたばかりです。今後なにか新しい事が分かったらまた報告したいと思います。