本記事では、Linuxに接続したUSBカメラの映像を、
Tailscale を使って外出先(スマホなど)から安全に閲覧する方法を解説します。
🧠 全体構成
USBカメラ → 自宅PC(配信) → Tailscale → スマホ(閲覧)
👉 インターネットに直接公開せず、安全にアクセスできるのがポイント
🧰 前提
- Linux PC(カメラ接続済み)
- USBカメラ(UVC対応)
- Tailscaleインストール済み&ログイン済み
- スマホにもTailscale導入済み
🔎 1. USBカメラの確認
ls /dev/video*
解説
-
/dev/video0などが見えればOK - 複数ある場合は番号が変わる
🔎 2. 動作確認(任意)
sudo apt install fswebcam
fswebcam test.jpg
👉 静止画が撮れればカメラOK
🛠 3. 簡易ストリーミングサーバ構築
ここでは軽量な方法として mjpg-streamer を使います。
sudo apt install mjpg-streamer
▶️ 起動
mjpg_streamer -i "input_uvc.so -d /dev/video0" \
-o "output_http.so -p 8081"
解説
-
input_uvc.so→ USBカメラ入力 -
-d /dev/video0→ デバイス指定 -
output_http.so→ HTTP配信 -
-p 8081→ ポート番号
👉 これでWebサーバとして映像配信開始
🔎 4. ローカル確認
ブラウザで:
http://localhost:8081
👉 映像が見えればOK
🌐 5. Tailscale IP確認
tailscale ip -4
例:
***.***.***.***
📱 6. 外からアクセス
スマホ(Tailscale接続状態)で:
http://***.***.***.***:8081
👉 自宅カメラ映像が表示される
🧠 仕組み
スマホ → Tailscale → 自宅PC → カメラ
- ポート開放不要
- NAT越えOK
- VPN内通信で安全
⚠️ トラブルシュート
❌ 接続拒否される
ss -tln
👉 0.0.0.0:8081 が LISTEN しているか確認
❌ 途中で切断される
原因:
- ProtonVPNと競合
- Wi-Fi切替
- スリープ
👉 対処:
- VPNを切る
- 同一ネットワーク確認
❌ 映像が重い
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 10" \
-o "output_http.so -p 8081"
👉 解像度・FPSを下げる
🔒 セキュリティ
- Tailscale内のみアクセス可能
- 外部公開されない
- IP直アクセスでもVPN内限定
👉 非常に安全
🚀 まとめ
- USBカメラをLinuxに接続
- mjpg-streamerでHTTP配信
- Tailscaleで外からアクセス
💡 一言
「ポート開放なしで自宅監視ができる最短ルート」
必要なら:
- スマホアプリで見る方法
- 録画機能追加
- motionとの比較
なども追加できます。